@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:300;font-display:swap;src:url(../media/5f841e19a104a2f1-s.p.1two88yljb5sr.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:300;font-display:swap;src:url(../media/6d62c74c8e468ef4-s.0eam1vlzr7y9e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:300;font-display:swap;src:url(../media/9d978ba009f47915-s.p.1x4h7xumh6h0q.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/53e45098eac42afb-s.p.1uklb5el4zgvl.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/85ea1b3aadcead52-s.05i4gb4p0piv4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/3c285486269019b7-s.p.2g-0we2o5_ngd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/625a092f804baad3-s.p.1zvg0ggiaivzo.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6afabefbb32d7517-s.0jaqhc1tb-5xm.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a4f4f75ad654963f-s.p.1hvvd1t-trplq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a3bcb02a0e9e5d11-s.p.25pbmqxk8u2s7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b35fd19aef91b293-s.0n_ln9vqskgts.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/8f46d218c8f79e34-s.p.2wu4yy186g04j.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8ffc259da9d23054-s.p.10uaeld2xxvpt.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9e486ba39c38fb8a-s.2bbpeapf-lbjw.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6f42e0a3b0519c4d-s.p.13y-iz2lazqtb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/fcf129058e6e31f2-s.p.1ubek13yfcpkr.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/7b74840ea7c05e95-s.0t1_atrj_pkiu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/3eca85881bcfa204-s.p.0unco9n87mni8.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro Fallback;src:local(Arial);ascent-override:90.61%;descent-override:24.01%;line-gap-override:0.0%;size-adjust:110.36%}.be_vietnam_pro_c525cbbc-module__4T49KW__className{font-family:Be Vietnam Pro,Be Vietnam Pro Fallback;font-style:normal}.be_vietnam_pro_c525cbbc-module__4T49KW__variable{--font-body-src:"Be Vietnam Pro", "Be Vietnam Pro Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_dc20af1-module__0tTcpW__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_dc20af1-module__0tTcpW__variable{--font-jbmono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0e10;--surface:#151517;--surface-2:#1c1c1f;--text:#ededec;--text-muted:#a3a3a1;--text-subtle:#737371;--border:#252527;--border-strong:#363639;--accent:#8b8ff5;--accent-hover:#a4a8f8;--accent-soft:#8b8ff521;--on-accent:#0e0e10;--success:#3cc68a;--danger:#ef6a6a;--shadow:0 1px 2px #0006, 0 12px 32px -12px #0009;--container:1600px;--gutter:clamp(16px, 4vw, 64px);--section-y:clamp(80px, 10vw, 136px);--radius-sm:8px;--radius:14px;--radius-lg:20px;--header-h:70px;--ease:cubic-bezier(.22, 1, .36, 1);--font-body:var(--font-body-src), system-ui, sans-serif;--font-mono:var(--font-jbmono), ui-monospace, monospace}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f7f5;--surface:#fff;--surface-2:#efefec;--text:#151515;--text-muted:#5c5c59;--text-subtle:#8a8a86;--border:#e2e2de;--border-strong:#cdcdc8;--accent:#5b5fe0;--accent-hover:#4a4ec9;--accent-soft:#5b5fe017;--on-accent:#fff;--success:#1f9d61;--danger:#d84343;--shadow:0 1px 2px #14141e0d, 0 12px 32px -14px #14143c2e}::view-transition-old(root){animation-duration:.35s;animation-timing-function:var(--ease)}::view-transition-new(root){animation-duration:.35s;animation-timing-function:var(--ease)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:1rem;line-height:1.65;overflow-x:clip}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}h1,h2,h3,h4{text-wrap:balance;font-weight:600;line-height:1.15}p{text-wrap:pretty}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{left:var(--gutter);z-index:100;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);padding:10px 16px;font-weight:600;position:absolute;top:-100px}.skip-link:focus{top:12px}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--section-y) calc(var(--section-y) + 8px)}.section+.section{border-top:1px solid var(--border)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.kicker{font-family:var(--font-mono);color:var(--text-muted);align-items:center;gap:12px;margin-bottom:20px;font-size:.8rem;display:flex}.kicker span{color:var(--accent)}.section-head{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;gap:24px 48px;margin-bottom:clamp(40px,6vw,72px);display:grid}.section-title{letter-spacing:-.03em;font-size:clamp(2rem,2.2vw + 1.3rem,3.4rem);line-height:1.1}.section-intro{color:var(--text-muted);max-width:46ch}@media (scripting:enabled) and (prefers-reduced-motion:no-preference){.reveal:not(.is-visible){opacity:0;transform:translateY(18px)}.reveal{transition:opacity .7s var(--ease), transform .7s var(--ease);transition-delay:var(--delay,0s)}}.btn{white-space:nowrap;cursor:pointer;height:46px;transition:background-color .2s, border-color .2s, color .2s, transform .2s var(--ease);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:.95rem;font-weight:600;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)scale(.98)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{border-color:var(--border-strong);background:var(--surface)}.btn-secondary:hover{border-color:var(--text-subtle)}.btn svg{flex-shrink:0}.link-arrow{color:var(--text);transition:color .2s, gap .2s var(--ease);align-items:center;gap:6px;font-weight:600;display:inline-flex}.link-arrow:hover{color:var(--accent);gap:9px}.tag{border:1px solid var(--border);background:var(--surface);height:26px;font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;border-radius:6px;align-items:center;padding:0 10px;font-size:.72rem;display:inline-flex}.tags{flex-wrap:wrap;gap:6px;display:flex}:root{--primary:var(--accent);--primary-glow:#8b8ff559;--surface-hover:var(--surface-2);--glass:#111117c7;--gradient-accent:linear-gradient(135deg, var(--accent), var(--accent-hover));--font-heading:var(--font-body);--transition:all .3s cubic-bezier(.4, 0, .2, 1)}[data-theme=light]{--primary-glow:#5b5fe02e;--glass:#ffffffd1}#header{z-index:1000;width:100%;transition:var(--transition);background:0 0;border-bottom:1px solid #0000;position:fixed;top:0;left:0}#header.scrolled{background:var(--glass);-webkit-backdrop-filter:blur(10px)saturate(150%);border-bottom-color:var(--border)}.nav-pill{justify-content:space-between;align-items:center;padding:16px 0;display:flex}.logo{min-width:0;font-size:1.2rem;font-weight:800;font-family:var(--font-heading);color:var(--text);align-items:center;gap:8px;transition:transform .3s cubic-bezier(.4,0,.2,1);display:inline-flex}.logo-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.logo-mark{filter:drop-shadow(0 0 10px var(--primary-glow));border-radius:7px}.logo:hover{transform:scale(1.03)}.nav-links{gap:8px;list-style:none;display:flex}.nav-link{color:var(--text-muted);transition:var(--transition);border-radius:999px;padding:8px 16px;font-size:.9rem;font-weight:500;position:relative}.nav-link:hover{color:var(--text)}.nav-link.active{color:var(--text);background:var(--surface-hover)}.nav-link.active:after{content:"";background:var(--gradient-accent);border-radius:2px;height:2px;position:absolute;bottom:3px;left:16px;right:16px}.lang-switcher{background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex}.lang-btn{color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;transition:var(--transition);background:0 0;border:none;border-radius:999px;padding:6px 11px;font-size:.72rem;font-weight:600}.lang-btn:hover{color:var(--text)}.lang-btn.active{background:var(--gradient-accent);color:#fff}.nav-actions{align-items:center;gap:10px;display:flex}.theme-toggle{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;width:38px;height:38px;transition:var(--transition);border-radius:50%;justify-content:center;align-items:center;display:flex}.theme-toggle:hover{border-color:var(--primary);color:var(--primary);transform:rotate(15deg)}.theme-toggle-icon{display:flex}.theme-toggle-icon-pop{animation:.4s cubic-bezier(.34,1.56,.64,1) theme-icon-pop}@keyframes theme-icon-pop{0%{opacity:0;transform:rotate(-90deg)scale(.4)}to{opacity:1;transform:rotate(0)scale(1)}}.menu-toggle{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;z-index:1001;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:none}footer.site-footer{border-top:1px solid var(--border);text-align:center;color:var(--text-muted);margin-top:auto;padding:40px 0;font-size:.85rem;position:relative}.footer-socials{justify-content:center;gap:18px;margin-bottom:22px;display:flex}.social-link{color:var(--text-muted);border:1px solid var(--border);background:var(--surface);width:42px;height:42px;transition:var(--transition);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.social-link:hover{color:var(--primary);border-color:var(--primary);box-shadow:0 8px 20px -8px var(--primary-glow);transform:translateY(-3px)}@media (max-width:768px){.nav-links{display:none}.menu-toggle{display:flex}}@media (max-width:480px){.logo-text{display:none}.nav-actions{gap:6px}}main{padding-top:var(--header-h)}.hero{isolation:isolate;padding-block:clamp(40px,6vw,88px) clamp(16px,2vw,24px);position:relative;overflow:clip}.hero-bg{z-index:-1;background:radial-gradient(48% 56% at 74% 38%, var(--accent-soft), transparent 70%), linear-gradient(var(--border) 1px, transparent 1px) 0 0 / 56px 56px, linear-gradient(90deg, var(--border) 1px, transparent 1px) 0 0 / 56px 56px;-webkit-mask-composite:source-in;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 120px),radial-gradient(80% 70% at 60% 40%,#000 40%,#0000 85%);mask-image:linear-gradient(#0000,#000 120px),radial-gradient(80% 70% at 60% 40%,#000 40%,#0000 85%);-webkit-mask-composite:source-in;mask-composite:intersect}.hero-grid{grid-template-columns:minmax(0,6fr) minmax(0,6fr);align-items:center;gap:clamp(40px,5vw,72px);display:grid}.hero-title{letter-spacing:-.04em;margin-bottom:24px;font-size:clamp(2.2rem,2.6vw + .9rem,4rem);line-height:1.08}.hero-title span{color:var(--accent)}.hero-lead{color:var(--text-muted);max-width:44ch;margin-bottom:32px;font-size:clamp(1.08rem,.5vw + .98rem,1.25rem);line-height:1.6}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.hero-by{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:4px 12px;max-width:44ch;margin-top:32px;padding-top:20px;display:flex}.hero-by strong{font-weight:600}.hero-by span{font-family:var(--font-mono);color:var(--text-subtle);font-size:.8rem}.collage{--mx:0;--my:0;aspect-ratio:1.08;width:100%;max-width:760px;margin-inline:auto;position:relative}.shot{background:var(--surface);border:1px solid var(--border-strong);transform:translate3d(calc(var(--mx) * var(--depth) * 1px), calc(var(--my) * var(--depth) * 1px), 0) rotate(var(--rot,0deg));transition:transform .6s var(--ease);margin:0;position:absolute;overflow:hidden;box-shadow:0 30px 60px -24px #0a0a1e73,0 8px 20px -10px #0a0a1e4d}.shot img{width:100%;height:auto;display:block}.shot-site{--rot:-2deg;border-radius:12px;width:80%;top:2%;left:0}.browser-bar{background:var(--surface-2);border-bottom:1px solid var(--border);align-items:center;gap:6px;height:26px;padding:0 10px;display:flex}.browser-bar span{background:var(--border-strong);border-radius:50%;width:8px;height:8px}.browser-bar em{background:var(--bg);font-family:var(--font-mono);color:var(--text-subtle);border-radius:6px;margin-left:10px;padding:1px 10px;font-size:.62rem;font-style:normal}.shot-mac{--rot:1.5deg;border-radius:10px;width:64%;top:40%;right:0}.shot-pos{--rot:-4deg;border:5px solid #111114;border-radius:22px;width:25%;bottom:0;left:8%}.chip{border:1px solid var(--border);background:var(--glass);-webkit-backdrop-filter:blur(8px);font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:.7rem;position:absolute}.chip-site{top:0;right:14%}.chip-mac{bottom:4%;right:6%}.chip-pos{bottom:5%;left:36%}.stats{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(48px,6vw,80px);display:grid}.stat{flex-direction:column;gap:4px;padding:24px 24px 0 0;display:flex}.stat+.stat{border-left:1px solid var(--border);padding-left:24px}.stat dt{color:var(--text-muted);order:2;font-size:.92rem}.stat dd{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:clamp(2rem,2.5vw + 1rem,3rem);font-weight:600;line-height:1.1}.services{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(32px,5vw,72px);display:grid}.service{border-top:1px solid var(--border);grid-template-columns:44px minmax(0,1fr);gap:0 12px;padding-block:32px 36px;display:grid}.service-index{font-family:var(--font-mono);color:var(--accent);padding-top:6px;font-size:.8rem}.service h3{letter-spacing:-.02em;margin-bottom:10px;font-size:1.35rem}.service p{color:var(--text-muted)}.service-examples{color:var(--text-subtle);margin-top:14px;font-size:.85rem}.filters{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.filter{border:1px solid var(--border);background:var(--surface);height:38px;color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:.9rem;font-weight:500;transition:color .2s,background-color .2s,border-color .2s;display:inline-flex}.filter span{font-family:var(--font-mono);color:var(--text-subtle);font-size:.72rem}.filter:hover{color:var(--text);border-color:var(--border-strong)}.filter[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--bg)}.filter[aria-pressed=true] span{color:var(--bg);opacity:.7}.work-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,24px);display:grid}.work-card{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);transition:border-color .2s, transform .3s var(--ease), box-shadow .3s var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.work-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-3px)}.work-media{aspect-ratio:16/10;background:var(--surface-2);border-bottom:1px solid var(--border);position:relative;overflow:hidden}.work-media img{object-fit:cover;object-position:top center;transition:transform .8s var(--ease)}.work-card:hover .work-media img{transform:scale(1.03)}.work-body{flex-direction:column;flex:1;padding:20px 22px 22px;display:flex}.work-meta{font-family:var(--font-mono);color:var(--text-subtle);justify-content:space-between;gap:12px;margin-bottom:10px;font-size:.74rem;display:flex}.work-meta span:first-child{color:var(--accent)}.work-card h3{letter-spacing:-.025em;font-size:1.3rem;line-height:1.2}.work-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.work-link:focus-visible{outline:none}.work-card:has(.work-link:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.work-subtitle{color:var(--text-muted);margin-top:4px;font-size:.95rem;font-weight:500}.work-sentence{color:var(--text-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:12px 0 18px;font-size:.95rem;line-height:1.6;display:-webkit-box;overflow:hidden}.work-card .tags{margin-top:auto}.work-read{margin-top:22px}.work-card:hover .work-read{color:var(--accent);gap:9px}.work-card.is-lead{grid-column:1/-1;grid-template-columns:minmax(0,7fr) minmax(0,5fr);display:grid}.work-card.is-lead .work-media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--border);min-height:clamp(340px,26vw,480px)}.work-card.is-lead .work-body{justify-content:center;padding:clamp(24px,3vw,44px)}.work-card.is-lead h3{font-size:clamp(1.7rem,1.5vw + 1rem,2.4rem)}.work-card.is-lead .work-subtitle{font-size:1.1rem}.work-card.is-lead .work-sentence{-webkit-line-clamp:4;font-size:1.02rem}.work-card.is-lead .tags{margin-top:0}.media{aspect-ratio:16/10;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);display:block;position:relative;overflow:hidden}.media img{object-fit:cover;object-position:top center}.media-fallback{background:linear-gradient(var(--border) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, var(--border) 1px, transparent 1px) 0 0 / 32px 32px, var(--surface);letter-spacing:-.03em;align-items:flex-end;padding:clamp(20px,3vw,32px);font-size:clamp(1.4rem,2vw + .6rem,2.2rem);font-weight:600;line-height:1.1;display:flex;position:absolute;inset:0}.media-fallback span{color:var(--accent)}.project-meta{font-family:var(--font-mono);color:var(--text-subtle);flex-wrap:wrap;gap:6px 16px;margin-bottom:14px;font-size:.78rem;display:flex}.project-meta .idx{color:var(--accent)}.steps{counter-reset:step;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 clamp(20px,3vw,40px);list-style:none;display:grid}.step{border-top:1px solid var(--border-strong);padding-top:24px}.step-index{font-family:var(--font-mono);color:var(--accent);margin-bottom:18px;font-size:.8rem;display:block}.step h3{letter-spacing:-.015em;margin-bottom:8px;font-size:1.15rem}.step p{color:var(--text-muted);font-size:.95rem}.about-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:clamp(40px,6vw,88px);display:grid}.about-intro{letter-spacing:-.01em;margin-bottom:28px;font-size:clamp(1.2rem,.6vw + 1.05rem,1.45rem);line-height:1.55}.facts{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);margin-bottom:24px;padding:6px 20px}.facts div{grid-template-columns:112px minmax(0,1fr);gap:12px;padding-block:12px;display:grid}.facts div+div{border-top:1px solid var(--border)}.facts dt{font-family:var(--font-mono);color:var(--text-subtle);padding-top:2px;font-size:.75rem}.facts dd{font-size:.95rem}.sub-title{font-size:.8rem;font-family:var(--font-mono);color:var(--text-subtle);margin-bottom:12px;font-weight:400}.timeline{border-top:1px solid var(--border)}.timeline details{border-bottom:1px solid var(--border)}.timeline summary{cursor:pointer;grid-template-columns:136px minmax(0,1fr) 20px;align-items:start;gap:16px;padding-block:18px;list-style:none;display:grid}.timeline summary::-webkit-details-marker{display:none}.timeline summary:hover strong{color:var(--accent)}.timeline .when{font-family:var(--font-mono);color:var(--text-subtle);padding-top:3px;font-size:.78rem}.timeline .who{flex-direction:column;gap:4px;display:flex}.timeline strong{letter-spacing:-.01em;font-size:1.08rem;font-weight:600;transition:color .2s}.timeline .org{color:var(--text-muted);align-items:center;gap:8px;font-size:.92rem;display:inline-flex}.timeline .org img{object-fit:contain;background:#fff;border-radius:5px;width:20px;height:20px}.timeline .chev{color:var(--text-subtle);transition:transform .25s var(--ease);margin-top:3px}.timeline details[open] .chev{transform:rotate(180deg)}.timeline details p{color:var(--text-muted);padding:0 36px 20px 152px;font-size:.95rem;line-height:1.65}.skills-block{margin-top:clamp(56px,7vw,88px)}.skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,4vw,56px);display:grid}.skill{border-top:1px solid var(--border);grid-template-columns:160px minmax(0,1fr);gap:8px 16px;padding-block:14px;display:grid}.skill dt{padding-top:4px;font-size:.95rem;font-weight:600}.skill dd{flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:6px;display:flex}.chip-skill{background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:3px 10px;font-size:.85rem}.contact-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:clamp(40px,6vw,96px);display:grid}.contact-title{letter-spacing:-.045em;margin-bottom:20px;font-size:clamp(2.4rem,3.4vw + 1rem,4.2rem);line-height:1.05}.contact-text{color:var(--text-muted);max-width:40ch;margin-bottom:36px;font-size:1.08rem}.contact-list{border-top:1px solid var(--border);list-style:none}.contact-list li{border-bottom:1px solid var(--border)}.contact-list a,.contact-list span{color:var(--text);align-items:center;gap:14px;padding-block:16px;transition:color .2s;display:flex}.contact-list a:hover{color:var(--accent)}.contact-list svg{color:var(--text-subtle);flex-shrink:0}.contact-list small{font-family:var(--font-mono);color:var(--text-subtle);margin-left:auto;font-size:.72rem}.form-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:clamp(24px,3vw,40px)}.form-card h3{letter-spacing:-.02em;margin-bottom:24px;font-size:1.3rem}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field.full{grid-column:1/-1}.field label{font-size:.85rem;font-weight:500}.field label span{color:var(--text-subtle);font-weight:400}.input{border:1px solid var(--border-strong);background:var(--bg);border-radius:10px;width:100%;height:46px;padding:0 14px;transition:border-color .2s,box-shadow .2s}textarea.input{resize:vertical;height:auto;min-height:132px;padding:12px 14px;line-height:1.55}.input::placeholder{color:var(--text-subtle)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.form-submit{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:16px;margin-top:4px;display:flex}.form-submit small{color:var(--text-subtle);font-size:.82rem}.form-honeypot{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}.form-status{border-radius:10px;grid-column:1/-1;align-items:flex-start;gap:10px;padding:12px 14px;font-size:.92rem;display:flex}.form-status.ok{background:color-mix(in srgb, var(--success) 12%, transparent);color:var(--success)}.form-status.error{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.form-status strong{color:var(--text);display:block}.form-status svg{flex-shrink:0;margin-top:2px}.case-head{padding-block:clamp(32px,5vw,64px) clamp(32px,4vw,48px)}.back-link{color:var(--text-muted);transition:color .2s, gap .2s var(--ease);align-items:center;gap:6px;margin-bottom:clamp(32px,5vw,56px);font-size:.9rem;display:inline-flex}.back-link:hover{color:var(--text);gap:9px}.case-title{letter-spacing:-.045em;max-width:18ch;margin-bottom:24px;font-size:clamp(2.3rem,4vw + 1rem,4.6rem);line-height:1.05}.case-lead{color:var(--text-muted);max-width:54ch;font-size:clamp(1.1rem,.6vw + 1rem,1.35rem);line-height:1.6}.case-actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.case-cover{aspect-ratio:16/9;border-radius:var(--radius-lg);width:100%;max-height:78vh}.case-body{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(40px,6vw,96px);padding-block:clamp(56px,7vw,96px);display:grid}.case-facts{top:calc(var(--header-h) + 32px);flex-direction:column;align-self:start;display:flex;position:sticky}.case-facts div{border-top:1px solid var(--border);padding-block:16px}.case-facts dt{font-family:var(--font-mono);color:var(--text-subtle);margin-bottom:6px;font-size:.75rem}.case-facts dd{font-size:.95rem}.case-facts dd a{color:var(--accent);word-break:break-word}.case-facts .tags{margin-top:2px}.prose{max-width:68ch}.prose h2{letter-spacing:-.025em;margin:56px 0 18px;font-size:clamp(1.45rem,1vw + 1rem,1.85rem)}.prose h2:first-child{margin-top:0}.prose p{color:var(--text-muted);margin-bottom:1em;font-size:1.05rem}.prose ul{flex-direction:column;gap:12px;margin-bottom:1.2em;list-style:none;display:flex}.prose li{color:var(--text-muted);padding-left:26px;font-size:1.02rem;position:relative}.prose li:before{content:"";background:var(--accent);width:10px;height:1.5px;position:absolute;top:.72em;left:4px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(16px,2vw,24px);padding-bottom:clamp(56px,7vw,96px);display:grid}.gallery>div:first-child:nth-last-child(odd){grid-column:1/-1}.gallery .media img{object-fit:contain;object-position:center}.case-nav{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.case-nav a{flex-direction:column;gap:6px;padding-block:36px 44px;transition:color .2s;display:flex}.case-nav a:hover strong{color:var(--accent)}.case-nav .next{text-align:right;align-items:flex-end}.case-nav span{font-family:var(--font-mono);color:var(--text-subtle);align-items:center;gap:6px;font-size:.75rem;display:inline-flex}.case-nav strong{letter-spacing:-.025em;font-size:clamp(1.15rem,1vw + .9rem,1.6rem);font-weight:600;transition:color .2s}.error-page{min-height:calc(100dvh - var(--header-h) - 130px);padding:64px var(--gutter);text-align:center;place-items:center;display:grid}.error-code{font-family:var(--font-mono);color:var(--accent);margin-bottom:16px}.error-title{letter-spacing:-.04em;margin-bottom:12px;font-size:clamp(2.2rem,3vw + 1rem,3.6rem)}.error-subtitle{color:var(--text-muted);max-width:44ch;margin:0 auto 32px}.error-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}@media (max-width:1024px){.steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px clamp(20px,3vw,40px)}}@media (max-width:860px){.section-head,.hero-grid,.about-grid,.contact-grid,.case-body{grid-template-columns:minmax(0,1fr)}.section-head{align-items:start}.hero-grid{gap:48px}.collage{max-width:520px}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work-card.is-lead{grid-template-columns:minmax(0,1fr)}.work-card.is-lead .work-media{aspect-ratio:16/10;border-right:0;border-bottom:1px solid var(--border);min-height:0}.case-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;display:grid;position:static}.case-facts .wide{grid-column:1/-1}}@media (max-width:640px){.services,.work-grid,.skills,.form-grid,.gallery,.steps,.stats{grid-template-columns:minmax(0,1fr)}.stat,.stat+.stat{border-left:0;border-bottom:1px solid var(--border);flex-direction:row;justify-content:space-between;align-items:baseline;padding:18px 0}.stat dd{font-size:1.8rem}.timeline summary{grid-template-columns:minmax(0,1fr) 20px;gap:4px 12px}.timeline .when{grid-column:1/-1}.timeline details p{padding:0 0 18px}.skill{grid-template-columns:minmax(0,1fr)}.facts div{grid-template-columns:96px minmax(0,1fr)}.case-nav{grid-template-columns:minmax(0,1fr)}.case-nav .next{border-top:1px solid var(--border)}.case-nav>span:empty{display:none}.hero-actions .btn,.case-actions .btn{flex:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important}}
