@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #08090c;--bg-soft: #0f1116;--bg-card: #101219;--bg-elevated: #141721;--border: #22262f;--border-soft: #191c24;--border-strong: #2c313d;--text: #edeef2;--text-dim: #a2abba;--text-faint: #6a7383;--accent: #7c6cff;--accent-soft: #9a8dff;--accent-2: #22d3ee;--accent-ink: #ffffff;--accent-glow: color-mix(in srgb, var(--accent) 55%, transparent);--danger: #f0b400;--radius-lg: 20px;--radius: 14px;--radius-sm: 10px;--maxw: 1120px;--pad: clamp(1rem, 4vw, 2rem);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 10px 30px -12px rgba(0, 0, 0, .7);--shadow-lg: 0 30px 60px -20px rgba(0, 0, 0, .75);--shadow-glow: 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 18px 50px -14px var(--accent-glow);--ease: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur: .55s;--font: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Space Grotesk Variable", var(--font);--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.65;font-feature-settings:"cv02","cv03","cv04","ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(70ch 50ch at 12% -8%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),radial-gradient(60ch 45ch at 100% 0%,color-mix(in srgb,var(--accent-2) 9%,transparent),transparent 65%);pointer-events:none}body:after{content:"";position:fixed;inset:0;z-index:-1;opacity:.035;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none;transition:color .18s var(--ease)}a:hover{color:var(--text)}img{max-width:100%;display:block}::selection{background:color-mix(in srgb,var(--accent) 40%,transparent);color:#fff}h1,h2,h3{font-family:var(--font-display);line-height:1.1;font-weight:600;letter-spacing:-.025em;color:var(--text);text-wrap:balance}h1{font-size:clamp(2.05rem,5.5vw,3.5rem)}h2{font-size:clamp(1.5rem,4vw,2.1rem)}h3{font-size:1.15rem;letter-spacing:-.01em}p{color:var(--text-dim)}.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}section{padding-block:clamp(3.25rem,8vw,6rem);position:relative}section+section{border-top:1px solid var(--border-soft)}.eyebrow{display:inline-flex;align-items:center;gap:.55rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);font-weight:600}.eyebrow:before{content:"";width:1.75rem;height:1px;background:linear-gradient(90deg,var(--accent),transparent)}.lead{font-size:clamp(1.05rem,2vw,1.2rem);color:var(--text-dim);max-width:48ch;line-height:1.6}.btn{position:relative;display:inline-flex;align-items:center;gap:.5rem;padding:.72rem 1.2rem;border-radius:var(--radius-sm);font-weight:550;font-size:.94rem;border:1px solid var(--border-strong);background:var(--bg-soft);transition:background .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease),color .2s var(--ease)}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(180deg,var(--accent-soft),var(--accent));border-color:transparent;color:var(--accent-ink);box-shadow:0 8px 24px -10px var(--accent-glow)}.btn-primary:hover{color:var(--accent-ink);box-shadow:0 14px 36px -10px var(--accent-glow)}.btn-ghost:hover{background:var(--bg-elevated);border-color:var(--border-strong)}.btn .arr{transition:transform .25s var(--ease)}.btn:hover .arr{transform:translate(3px)}.tag{display:inline-block;font-size:.75rem;padding:.24rem .62rem;border-radius:999px;border:1px solid var(--border);color:var(--text-dim);background:color-mix(in srgb,var(--bg-soft) 70%,transparent);white-space:nowrap;transition:border-color .18s var(--ease),color .18s var(--ease)}a:hover>.tag,a.tag:hover{border-color:var(--accent);color:var(--text)}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}.status{font-size:.7rem;font-weight:600;padding:.24rem .6rem;border-radius:999px;letter-spacing:.01em;white-space:nowrap}.status.live-both,.status.live-play{background:#0f2e1e;color:#57d98a;border:1px solid #1c5138}.status.shipped-q{background:#2c2410;color:#e8c15c;border:1px solid #574717}.status.build{background:#14203a;color:#7aa7f0;border:1px solid #24406e}.status.prototype,.status.template{background:#201d2c;color:#b3a0e0;border:1px solid #3a3352}.sample-tag{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#16110a;background:var(--danger);padding:.08rem .35rem;border-radius:4px;vertical-align:middle}.sample-banner{background:color-mix(in srgb,var(--danger) 10%,var(--bg));border-bottom:1px solid color-mix(in srgb,var(--danger) 25%,transparent);color:#e8c15c;font-size:.82rem;text-align:center;padding:.5rem var(--pad)}.grid{display:grid;gap:1.15rem}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 860px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.grid-2,.grid-3{grid-template-columns:1fr}}.card{display:block;position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.35rem;transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease)}a.card:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));transform:translateY(-4px);background:var(--bg-elevated);box-shadow:var(--shadow-md),0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent);color:inherit}.device{aspect-ratio:9 / 19;border-radius:26px;border:2px solid var(--border-strong);background:linear-gradient(160deg,color-mix(in srgb,var(--frame-accent) 24%,var(--bg-soft)),var(--bg-soft));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1rem;position:relative;overflow:hidden}.device:before{content:"";position:absolute;top:11px;width:32%;height:6px;border-radius:999px;background:var(--border-strong)}.device .d-name{font-weight:600;font-size:.95rem;font-family:var(--font-display)}.device .d-note{font-size:.7rem;color:var(--text-faint);margin-top:.35rem}.device .d-dot{width:46px;height:46px;border-radius:13px;background:var(--frame-accent);margin-bottom:.75rem;box-shadow:0 8px 26px -6px color-mix(in srgb,var(--frame-accent) 60%,transparent)}.device-real{aspect-ratio:9 / 19.5;border-radius:30px;border:3px solid #05060a;outline:1px solid var(--border-strong);background:#05060a;padding:5px;overflow:hidden;position:relative;box-shadow:var(--shadow-lg),inset 0 0 0 1px #ffffff0a;transition:transform .4s var(--ease),box-shadow .4s var(--ease)}.device-real:before{content:"";position:absolute;top:9px;left:50%;transform:translate(-50%);width:34%;height:7px;border-radius:999px;background:#000;z-index:2}.device-real img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;border-radius:24px}.cs-hero .device-real:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:var(--shadow-lg),0 40px 80px -24px var(--accent-glow)}.shot-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(160px,210px);gap:1rem;overflow-x:auto;padding:.25rem .25rem 1rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.shot-row .device,.shot-row .device-real{min-width:0;scroll-snap-align:start}.shot-row .device-real{transition:transform .35s var(--ease),box-shadow .35s var(--ease)}.shot-row .device-real:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg),0 30px 60px -24px var(--accent-glow)}.shot-row::-webkit-scrollbar{height:6px}.shot-row::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}.site-header{position:sticky;top:0;z-index:30;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:color-mix(in srgb,var(--bg) 72%,transparent);border-bottom:1px solid transparent;transition:border-color .3s var(--ease),background .3s var(--ease),padding .3s var(--ease)}.site-header.scrolled{border-bottom-color:var(--border-soft);background:color-mix(in srgb,var(--bg) 88%,transparent)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;padding-block:1rem;transition:padding .3s var(--ease)}.site-header.scrolled .wrap{padding-block:.7rem}.site-header nav{display:flex;gap:.35rem;font-size:.9rem}.site-header nav a{color:var(--text-dim);padding:.4rem .7rem;border-radius:8px;position:relative;transition:color .18s var(--ease),background .18s var(--ease)}.site-header nav a:hover{color:var(--text);background:var(--bg-soft)}.site-header nav a[aria-current=page]{color:var(--text)}.site-header nav a[aria-current=page]:after{content:"";position:absolute;left:.7rem;right:.7rem;bottom:.05rem;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.brand{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap}@media (max-width: 560px){.site-header .wrap{padding-block:.75rem;gap:.75rem}.brand{font-size:.92rem}.brand:before{width:7px;height:7px}.site-header nav{gap:.1rem;font-size:.82rem}.site-header nav a{padding:.35rem .5rem}}.brand:before{content:"";width:9px;height:9px;border-radius:3px;background:linear-gradient(140deg,var(--accent-soft),var(--accent-2));box-shadow:0 0 12px var(--accent-glow)}.site-footer{border-top:1px solid var(--border-soft);padding-block:3rem;color:var(--text-faint);font-size:.88rem;background:var(--bg-soft)}.site-footer .wrap{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center}.site-footer a{color:var(--text-dim)}.site-footer a:hover{color:var(--accent-soft)}.ln{background-image:linear-gradient(var(--accent-soft),var(--accent-soft));background-size:0% 1.5px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .3s var(--ease),color .18s var(--ease);color:var(--accent-soft);font-weight:550}.ln:hover{background-size:100% 1.5px;color:var(--accent-soft)}.stat-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--border-soft);border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden}@media (max-width: 860px){.stat-bar{grid-template-columns:repeat(3,1fr)}}@media (max-width: 480px){.stat-bar{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--bg-card);padding:1.15rem 1rem;transition:background .25s var(--ease)}.stat:hover{background:var(--bg-elevated)}.stat .n{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,1.9rem);font-weight:600;letter-spacing:-.03em;background:linear-gradient(180deg,var(--text),var(--text-dim));-webkit-background-clip:text;background-clip:text;color:transparent}.stat .l{font-size:.8rem;color:var(--text-faint);margin-top:.15rem}.cs-hero{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(1.5rem,5vw,3.5rem);align-items:start}@media (max-width: 780px){.cs-hero{grid-template-columns:1fr}.cs-hero>div:last-child{max-width:260px}}.cs-title-row{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem}.cs-title-row img{border-radius:10px;display:block;flex:none}.cs-title{font-size:clamp(1.9rem,5vw,2.4rem);margin-bottom:.7rem}.cs-storelinks{display:flex;gap:.6rem;margin-top:1.2rem;flex-wrap:wrap}.cs-meta{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;font-size:.9rem;color:var(--text-dim)}.cs-section{margin-top:2.75rem}.cs-section h2{font-size:1.3rem;margin-bottom:.85rem;padding-bottom:.5rem;border-bottom:1px solid var(--border-soft)}.bullets{list-style:none;display:grid;gap:.7rem}.bullets li{padding-left:1.5rem;position:relative;color:var(--text-dim)}.bullets li:before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:2px;background:linear-gradient(140deg,var(--accent-soft),var(--accent-2))}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}@media (max-width: 560px){.metric-grid{grid-template-columns:1fr}}.metric{background:linear-gradient(180deg,var(--bg-elevated),var(--bg-card))}.metric .v{font-family:var(--font-display);font-size:1.55rem;font-weight:600;letter-spacing:-.02em}.metric .k{font-size:.82rem;color:var(--text-faint);margin-top:.2rem}.draft-note{border:1px dashed #574717;background:#191509;color:#e8c15c;border-radius:var(--radius-sm);padding:.75rem .95rem;font-size:.85rem;margin-top:1rem}.back-link{font-size:.88rem;color:var(--text-faint);display:inline-flex;gap:.35rem;align-items:center}.back-link:hover{color:var(--text-dim)}.back-link .arr{transition:transform .22s var(--ease)}.back-link:hover .arr{transform:translate(-3px)}.skill-group h3{font-size:.92rem;margin-bottom:.6rem;color:var(--text)}.pill-wrap{display:flex;flex-wrap:wrap;gap:.4rem}.pill{font-size:.8rem;padding:.3rem .65rem;border-radius:8px;background:var(--bg-soft);border:1px solid var(--border-soft);color:var(--text-dim);transition:border-color .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}.pill:hover{border-color:var(--border-strong);color:var(--text);transform:translateY(-1px)}.field{padding:.8rem .9rem;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:inherit;font-size:.95rem;transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}.field::placeholder{color:var(--text-faint)}.field:focus{outline:none;border-color:var(--accent);background:var(--bg-card);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.about-head{display:grid;grid-template-columns:1fr minmax(190px,280px);gap:clamp(1.5rem,5vw,3rem);align-items:start}.about-head .portrait{position:sticky;top:6rem}.about-head .portrait img{width:100%;height:auto;aspect-ratio:1 / 1;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);filter:grayscale(1) contrast(1.03);transition:filter .4s var(--ease),transform .4s var(--ease),box-shadow .4s var(--ease);box-shadow:var(--shadow-md)}.about-head .portrait img:hover{filter:grayscale(0);transform:translateY(-3px);box-shadow:var(--shadow-lg)}@media (max-width: 720px){.about-head{grid-template-columns:1fr;gap:1.5rem}.about-head .portrait{order:-1;max-width:210px;position:static}}.js [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out);transition-delay:var(--reveal-delay, 0ms)}.js [data-reveal].in{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.js [data-reveal]{opacity:1;transform:none;transition:none}}@keyframes rise{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}.hero-in>*{animation:rise .85s var(--ease-out) both}.hero-in>*:nth-child(2){animation-delay:.08s}.hero-in>*:nth-child(3){animation-delay:.16s}.hero-in>*:nth-child(4){animation-delay:.24s}@media (prefers-reduced-motion: reduce){.hero-in>*{animation:none}}@media (max-width: 640px){body{font-size:15.5px}section{padding-block:2.75rem}h1{font-size:clamp(1.75rem,7.5vw,2.6rem);letter-spacing:-.02em}h2{font-size:clamp(1.4rem,6vw,1.7rem)}.lead{font-size:1rem}.hero-cta{display:grid;gap:.6rem;margin-top:1.5rem}.hero-cta .btn{justify-content:center;width:100%}.stat{padding:.9rem .85rem}.stat .n{font-size:1.45rem}.stat .l{font-size:.75rem;line-height:1.35}.card{padding:1.15rem}.project-card{padding-top:2.7rem}.pc-status{top:.95rem;left:1.15rem}.pc-tagline{font-size:.92rem}.cs-section{margin-top:2rem}.cs-section h2{font-size:1.2rem}.cs-meta{gap:.35rem 1rem;font-size:.88rem}.cs-storelinks{display:grid;grid-template-columns:1fr 1fr}.cs-storelinks .btn{justify-content:center}.cs-hero .device-real:hover{transform:none}.metric-grid{grid-template-columns:1fr 1fr}.shot-row{grid-auto-columns:64%;gap:.75rem;scroll-snap-type:x mandatory}.hero-logos{gap:.35rem 1rem;font-size:.75rem}.hero-logos span:not(:last-child):after{display:none}.about-head .portrait{max-width:160px}.contact-row{flex-wrap:wrap;gap:.15rem 1rem}.cr-v{font-size:.88rem;word-break:break-word}.site-footer .wrap{flex-direction:column;align-items:flex-start;gap:.75rem}}@media (max-width: 360px){.metric-grid{grid-template-columns:1fr}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
