@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_efcba84-module__mYh70G__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_efcba84-module__mYh70G__variable{--font-sans:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.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.2htf8h-pf57mm.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.3skwie1wjplzh.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.3zhbgtelpa5ua.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.3vf5yzuqk3fsd.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.1wmoa0e_blxrz.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.1zakzi6q17d4o.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.2htf8h-pf57mm.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.3skwie1wjplzh.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.3zhbgtelpa5ua.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.3vf5yzuqk3fsd.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.1wmoa0e_blxrz.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_ec76ef60-module__y36ooG__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_ec76ef60-module__y36ooG__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#071813;--surface:#0f1a17;--surface2:#13201c;--surface3:#17261f;--ink:#e5f0ed;--soft:#8fa39d;--faint:#7d8f89;--line:#ffffff16;--line2:#ffffff2b;--acc:#2bd4a1;--acc-ink:#042017;--acc-dim:#2bd4a126;--acc-hover:#4fe8ba;--nav-bg:#071813d1;--glass:#0f1a17b8;--ov:#040e0b99;--photo-bg:#061511;--ov-ink:#e5f0ed;--ov-acc:#2bd4a1;--ov-scrim:4, 14, 11;--nav-h:64px;--maxw:1320px}html[data-theme=light]{--bg:#f1f9f7;--surface:#f0faf7;--surface2:#ebf5f2;--surface3:#e2efeb;--ink:#101916;--soft:#4f5f5a;--faint:#5a6c66;--line:#1019161a;--line2:#10191638;--acc:#00775a;--acc-ink:#f1fffb;--acc-dim:#00775a24;--acc-hover:#1a614d;--nav-bg:#f1f9f7d9;--glass:#f0faf7c7;--ov:#e1efea99;--photo-bg:#e6f2ee}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-sans),system-ui,sans-serif;-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}img{display:block}button{font-family:inherit}.mono{font-family:var(--font-mono),monospace}.lab{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--soft);font-size:11.5px}.acc{color:var(--acc)}a:focus-visible,button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:2px}.btn{font-size:14px;font-weight:500;font-family:var(--font-mono),monospace;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:9px;align-items:center;gap:8px;padding:12px 20px;transition:transform .15s,background .15s,border-color .15s,color .15s,filter .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn.fill{background:var(--acc);color:var(--acc-ink)}.btn.fill:hover{background:var(--acc-hover);filter:brightness(1.1)}.btn.ghost{border-color:var(--line2);color:var(--ink)}.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}.btn.sm{padding:9px 15px;font-size:12.5px}.tag{font-family:var(--font-mono),monospace;border:1px solid var(--line2);color:var(--soft);white-space:nowrap;border-radius:6px;padding:4px 10px;font-size:11px;transition:background .18s,color .18s}.tag:hover{background:var(--acc);color:var(--acc-ink)}.now{font-family:var(--font-mono),monospace;color:var(--soft);align-items:center;gap:9px;font-size:12.5px;display:inline-flex}.now .dot{background:var(--acc);width:7px;height:7px;box-shadow:0 0 0 4px var(--acc-dim);border-radius:50%;animation:2.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 0 4px var(--acc-dim)}50%{box-shadow:0 0 0 7px #2bd4a10d}}.now b{color:var(--ink);font-weight:500}@media (prefers-reduced-motion:reduce){.btn,.tag,.now .dot{transition:none;animation:none}}.pfnav{height:var(--nav-h);z-index:100;background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);align-items:center;gap:24px;padding:0 30px;display:flex;position:fixed;top:0;left:0;right:0}.thbtn{border:1px solid var(--line2);width:44px;height:44px;color:var(--soft);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;font-size:15px;transition:all .15s;display:flex}.thbtn:hover{color:var(--acc);border-color:var(--acc)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pfnav .logo{font-family:var(--font-mono),monospace;letter-spacing:.01em;cursor:pointer;color:inherit;background:0 0;border:none;padding:0;font-size:16px;font-weight:500}.pfnav .logo .dev{color:var(--soft)}.pfnav .logo b{color:var(--acc)}.pfnav .links{gap:4px;margin-left:10px;display:flex}.pfnav .links a{color:var(--soft);cursor:pointer;border-radius:8px;padding:8px 14px;font-size:14px;transition:color .18s;position:relative}.pfnav .links a:hover{color:var(--ink)}.pfnav .links a.on{color:var(--ink);background:var(--surface2)}.pfnav .links a:after{content:"";background:var(--acc);width:0;height:1.5px;transition:width .22s;position:absolute;bottom:-2px;left:0}.pfnav .links a:hover:after,.pfnav .links a.on:after{width:100%}.pfnav .right{align-items:center;gap:14px;margin-left:auto;display:flex}.langtog{border:1px solid var(--line2);font-family:var(--font-mono),monospace;border-radius:8px;font-size:12px;display:flex;overflow:hidden}.langtog a{appearance:none;color:var(--soft);cursor:pointer;background:0 0;border:none;padding:13px;text-decoration:none;transition:all .15s;display:block}.langtog a.on{background:var(--acc);color:var(--acc-ink)}@media (max-width:760px){.pfnav .links a{padding:8px 9px;font-size:13px}.pfnav .right .btn{display:none}.pfnav{gap:10px;padding:0 16px}}@media (max-width:520px){.pfnav{gap:6px;padding:0 10px}.pfnav .logo{font-size:14px}.pfnav .logo .dev{display:none}.pfnav .links{gap:0;margin-left:0}.pfnav .links a{padding:8px 6px;font-size:12.5px}.pfnav .right{gap:6px}.langtog a{padding:13px 10px}}@media (max-width:380px){.pfnav{gap:4px;padding:0 8px}.pfnav .links a{padding:8px 4px;font-size:12px}.langtog a{padding:13px 8px}}#view{top:var(--nav-h);position:fixed;bottom:0;left:0;right:0;overflow:hidden}.view{width:100%;height:100%;animation:.45s fade}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.pfnav .links a:after,.view{transition:none;animation:none}}.tile{border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:26px;transition:border-color .2s,transform .2s,background .2s,box-shadow .2s;position:relative;overflow:hidden}a.tile,button.tile{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;display:block}a.tile:hover,button.tile:hover{border-color:var(--line2);transform:translateY(-3px);box-shadow:0 20px 48px #00000061}.tile .go{border:1px solid var(--line2);width:30px;height:30px;color:var(--soft);border-radius:50%;justify-content:center;align-items:center;font-size:15px;transition:all .2s;display:flex;position:absolute;top:22px;right:24px}a.tile:hover .go,button.tile:hover .go{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);transform:rotate(-45deg)}@media (prefers-reduced-motion:reduce){a.tile,a.tile:hover,.tile .go{transition:none;transform:none}}body{min-height:100vh;padding:0}@media print{body{background:#fff}#view{position:static;overflow:visible}}
.navbtns{z-index:5;gap:10px;display:flex;position:absolute}.navbtns button{border:1px solid var(--line2);background:var(--glass);color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,background .15s,color .15s;display:flex}.navbtns button:hover:not(:disabled){background:var(--acc);color:var(--acc-ink);border-color:var(--acc);transform:scale(1.12)}.navbtns button:disabled{opacity:.35;cursor:default}.t-photo{grid-column:span 2;padding:0}.t-photo .row{grid-template-columns:repeat(3,1fr);height:100%;display:grid}.t-photo .cell{border-right:1px solid var(--line);background:var(--surface2);position:relative;overflow:hidden}.t-photo .cell:last-child{border-right:none}.t-photo .cell img{object-fit:cover;width:100%;height:100%}.t-photo .lblrow{background:linear-gradient(transparent, rgba(var(--ov-scrim), .7));pointer-events:none;z-index:2;justify-content:space-between;align-items:flex-end;padding:14px 18px;display:flex;position:absolute;bottom:0;left:0;right:0}.t-photo .lblrow .lab{color:var(--ink)}.t-cta{background:var(--acc);color:var(--acc-ink);border:none;flex-direction:column;grid-column:span 2;justify-content:center;padding-right:72px;display:flex}.t-cta:hover{background:var(--acc-hover)}.t-cta .go{color:var(--acc-ink);opacity:.85;border-color:currentColor}.t-cta:hover .go{background:var(--acc-ink);color:var(--acc);opacity:1}.t-cta h3{letter-spacing:-.02em;color:var(--acc-ink);margin:0;font-size:clamp(20px,2.6vh,26px);font-weight:600}.b-cta:hover{border-color:var(--line2);transform:translateY(-3px);box-shadow:0 20px 48px #00000061}.b-cta .cta-link{color:inherit;cursor:pointer;display:block}.copybtn{cursor:pointer;font-family:inherit}.copybtn:hover,.copybtn:focus-visible{background:var(--acc-ink);color:var(--acc);opacity:1}@media (prefers-reduced-motion:reduce){.navbtns button:hover:not(:disabled),.b-cta:hover{transform:none}}.t-cta .m{font-family:var(--font-mono),monospace;color:var(--acc-ink);opacity:.8;margin-top:10px;font-size:13px}.bhome{height:100%;overflow:hidden auto}.bwrap{max-width:var(--maxw);margin:0 auto;padding-left:30px;padding-right:30px}.bhero{padding-top:6vh;padding-bottom:4vh}.btop{color:var(--soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;font-size:13px;display:flex}.btop b{font-weight:500}.bname{letter-spacing:-.045em;flex-direction:column;margin:2.5vh 0 0;font-size:clamp(52px,9vw,148px);font-weight:700;line-height:.92;display:flex}.bname .a{color:var(--acc)}.bline{display:block;overflow:hidden}.bline i{font-style:normal;display:block}.bsub{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:3vh;display:flex}.bsub p{max-width:46ch;color:var(--soft);margin:0;font-size:16.5px;line-height:1.6}.bsub .ctas{gap:10px;display:flex}.bmarq{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:2vh;padding:13px 0;display:flex;overflow:hidden}.bmarq .in{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--soft);white-space:nowrap;flex-shrink:0;gap:30px;padding-right:30px;font-size:12.5px;animation:30s linear infinite bmarq;display:flex}.bmarq .in .a{color:var(--acc)}@keyframes bmarq{to{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){.bmarq .in{animation:none}}.bgrid{grid-template-columns:repeat(12,1fr);gap:14px;padding-top:24px;padding-bottom:44px;display:grid}.bfeat{border:1px solid var(--line);border-radius:18px;grid-column:span 7;height:min(52vh,470px);display:block;position:relative;overflow:hidden}.bfeat img{object-fit:cover;width:100%;height:100%;transition:transform .5s}.bfeat:hover img{transform:scale(1.03)}.bfeat .ov{background:linear-gradient(transparent, rgba(var(--ov-scrim), .85));padding:26px;position:absolute;bottom:0;left:0;right:0}.bfeat .ov .k{font-family:var(--font-mono),monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--ov-acc);font-size:11px}.bfeat .ov h3{letter-spacing:-.02em;color:var(--ov-ink);margin:8px 0 0;font-size:30px;font-weight:600}.bfeat .go{background:rgba(var(--ov-scrim), .55);width:34px;height:34px;color:var(--ov-ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:absolute;top:20px;right:22px}.bfeat:hover .go{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);transform:rotate(-45deg)}.bcol{flex-direction:column;grid-column:span 5;gap:14px;display:flex}.bcol .tile{flex:1}.b-stats{align-items:center;gap:36px;display:flex}.b-stats .n{letter-spacing:-.02em;font-size:clamp(30px,4vh,42px);font-weight:600}.b-stats .n b{color:var(--acc)}.b-stats .l{font-family:var(--font-mono),monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--soft);margin-top:4px;font-size:11px}.b-about h3,.b-work h3{letter-spacing:-.01em;margin:10px 0 0;font-size:clamp(17px,2.2vh,22px);font-weight:600}.b-cta{justify-content:center}.b-photo{grid-column:span 8;height:190px;padding:0}.b-work{flex-direction:column;grid-column:span 4;justify-content:center;display:flex}@media (max-width:920px){.bgrid{grid-template-columns:1fr}.bfeat,.bcol,.b-photo,.b-work{grid-column:span 1}.bfeat{height:300px}.b-photo{height:150px}}.exh{height:100%;overflow-y:auto}.exh .carousel{height:100%;position:relative}.exh .carousel:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}.exh .track{height:100%;display:flex;overflow:auto hidden}.exh .track::-webkit-scrollbar{height:0}.exh .pane{flex:0 0 100%;height:100%;display:flex;position:relative}.exh .proj .media{background:var(--surface);flex:1.25;position:relative;overflow:hidden}.exh .proj .media img{object-fit:cover;width:100%;height:100%}.exh .proj .meta{border-left:1px solid var(--line);flex-direction:column;flex:1;justify-content:center;min-width:380px;padding:7vh 4.5vw;display:flex}.exh .proj .idx{font-family:var(--font-mono),monospace;color:var(--acc);font-size:13px}.exh .proj .k{font-family:var(--font-mono),monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--soft);margin-top:16px;font-size:12px}.exh .proj h2{letter-spacing:-.02em;margin:12px 0 16px;font-size:clamp(32px,3.6vw,52px);font-weight:600;line-height:1.02}.exh .proj p{color:var(--soft);max-width:44ch;margin:0 0 20px;font-size:16px;line-height:1.6}.exh .proj .rolerow{gap:30px;margin-bottom:20px;display:flex}.exh .proj .rolerow .lab{margin-bottom:5px;display:block}.exh .proj .rolerow .v{font-size:14px}.exh .proj .tags{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.exh .proj .actions{flex-wrap:wrap;gap:10px;display:flex}.exh .navbtns{bottom:32px;right:38px}.exh .navbtns button{width:48px;height:48px;font-size:18px}.exh .progress{z-index:5;gap:7px;display:flex;position:absolute;top:24px;left:50%;transform:translate(-50%)}.exh .progress i{background:var(--line2);border-radius:2px;width:24px;height:3px;transition:all .25s}.exh .progress i.on{background:var(--acc);width:38px}.exh .count{font-family:var(--font-mono),monospace;color:var(--soft);z-index:5;font-size:12px;position:absolute;top:22px;left:38px}@media (max-width:820px){.exh .pane{flex-direction:column}.exh .proj .media{flex:none;height:42%}.exh .proj .meta{border-left:none;border-top:1px solid var(--line);flex:none;min-width:0;height:58%;padding:24px;overflow-y:auto}}.exh .archive{max-width:var(--maxw);margin:0 auto;padding:64px 40px 90px}.exh .archive h2{font-family:var(--font-mono),monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin:0 0 24px;font-size:12px}.exh .archive-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;display:grid}.exh .acard{background:var(--surface);border:1px solid var(--line);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.exh .acard .ath{aspect-ratio:4/3;background:var(--surface2);overflow:hidden}.exh .acard .ath img{object-fit:cover;width:100%;height:100%}.exh .acard .ab{flex-direction:column;flex:1;gap:8px;padding:16px;display:flex}.exh .acard .ak{font-family:var(--font-mono),monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--soft);font-size:11px}.exh .acard h3{margin:0;font-size:17px;font-weight:600}.exh .acard .tags{flex-wrap:wrap;gap:6px;margin:2px 0 4px;display:flex}.exh .acard .actions{flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:6px;display:flex}.csov{z-index:200;background:var(--ov);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;pointer-events:none;justify-content:flex-end;transition:opacity .3s;display:flex;position:fixed;inset:0}.csov.open{opacity:1;pointer-events:auto}.csov .sheet{background:var(--bg);border-left:1px solid var(--line2);width:min(720px,92vw);height:100%;transition:transform .35s;overflow-y:auto;transform:translate(40px)}.csov.open .sheet{transform:none}.csov .hero{height:300px;position:relative;overflow:hidden}.csov .hero img{object-fit:cover;width:100%;height:100%}.csov .hero .grad{background:linear-gradient(transparent 30%, var(--bg));position:absolute;inset:0}.csov .close{border:1px solid var(--line2);background:var(--nav-bg);width:38px;height:38px;color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:3;border-radius:50%;font-size:18px;position:absolute;top:18px;right:18px}.csov .body{margin-top:-40px;padding:0 44px 60px;position:relative}.csov .body .k{font-family:var(--font-mono),monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--acc);font-size:12px}.csov .body h2{letter-spacing:-.02em;margin:10px 0 6px;font-size:40px;font-weight:600}.csov .body .meta{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:26px;margin:18px 0 30px;padding-bottom:24px;display:flex}.csov .body .meta .lab{margin-bottom:5px;display:block}.csov .body .meta .v{font-size:14px}.csov section{margin-top:30px}.csov section h3{font-family:var(--font-mono),monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin:0 0 12px;font-size:12px}.csov section p{color:var(--ink);margin:0;font-size:16px;line-height:1.65}.csov .steps{flex-direction:column;gap:14px;display:flex}.csov .step{grid-template-columns:34px 1fr;gap:16px;display:grid}.csov .step .num{font-family:var(--font-mono),monospace;color:var(--acc);padding-top:2px;font-size:13px}.csov .step p{color:var(--soft);font-size:15px}.csov .outcome{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px}.csov .outcome p{color:var(--ink)}.csov .links{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.csov .tags{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.photo{background:var(--photo-bg);height:100%;position:relative;overflow:hidden}.pbgs{z-index:0;position:absolute;inset:0}.pbg{filter:blur(70px)saturate(1.3)brightness(.5);opacity:0;background-position:50%;background-size:cover;transition:opacity 1.1s;position:absolute;inset:-40px;transform:scale(1.08)}.pbg.on{opacity:1}.pscroll{z-index:1;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:contain;position:absolute;inset:0;overflow:hidden auto}.pscroll::-webkit-scrollbar{width:0;display:none}.pstage{height:100%;position:sticky;top:0;overflow:hidden}.pspacer{width:1px}.prail{will-change:transform;align-items:center;height:100%;display:flex;transform:translate(0,0)}.photo .frame{flex-direction:column;flex:none;justify-content:center;align-items:center;width:clamp(320px,62vw,880px);height:100%;padding:8vh 3.4vw 12vh;display:flex;position:relative}.photo .frame-in{will-change:transform;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.photo .frame-in img{object-fit:contain;border-radius:4px;width:100%;max-width:100%;height:100%;max-height:100%;display:block}.photo .cap{z-index:2;will-change:transform,opacity;align-items:baseline;gap:16px;margin-top:22px;display:flex}.photo .cap .pn{color:var(--acc);font-family:var(--font-mono),monospace;font-size:13px}.photo .cap h3{letter-spacing:-.01em;color:#fff;text-shadow:0 2px 20px #00000080;margin:0;font-size:20px;font-weight:600}.photo .cap a{font-family:var(--font-mono),monospace;color:var(--acc);border-bottom:1px solid var(--acc-dim);white-space:nowrap;font-size:12px}.photo .intro,.photo .outro{justify-content:center;align-items:flex-start;width:min(88vw,860px);padding:0 5vw;position:relative}.photo .outro:before{content:"";background:var(--bg);z-index:-1;-webkit-mask-image:linear-gradient(90deg, transparent, var(--bg) 34%, var(--bg) 66%, transparent);position:absolute;inset:0 -40vw;mask-image:linear-gradient(90deg,#0000,#000 34% 66%,#0000)}.photo .intro .lab,.photo .outro .lab{font-family:var(--font-mono),monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--acc);font-size:12px}.photo .intro h2{letter-spacing:-.035em;color:var(--ink);margin:16px 0 22px;font-size:clamp(46px,7vw,104px);font-weight:600;line-height:.94}.photo .intro h2 .a{color:var(--acc)}.photo .intro p,.photo .outro p{color:color-mix(in oklab, var(--ink), transparent 26%);max-width:46ch;margin:0;font-size:17px;line-height:1.55}.photo .scrollcue{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--soft);align-items:center;gap:12px;margin-top:40px;font-size:12px;display:flex}.photo .scrollcue .bar{background:color-mix(in oklab, var(--ink), transparent 78%);width:64px;height:2px;position:relative;overflow:hidden}.photo .scrollcue .bar:after{content:"";background:var(--acc);width:40%;animation:1.9s cubic-bezier(.6,0,.3,1) infinite cueslide;position:absolute;inset:0}@keyframes cueslide{0%{transform:translate(-100%)}60%,to{transform:translate(260%)}}.photo .outro{align-items:flex-start}.photo .outro h2{letter-spacing:-.02em;color:var(--ink);margin:14px 0;font-size:clamp(34px,4.4vw,60px);font-weight:600;line-height:1.02}.photo .outro .btn{margin-top:20px}.photo .navbtns{bottom:30px;right:34px}.photo .navbtns button{width:46px;height:46px;font-size:17px}.pruler{z-index:6;align-items:center;height:26px;display:flex;position:absolute;bottom:38px;left:34px;right:120px}.pruler .line{background:color-mix(in oklab, var(--ink), transparent 80%);height:1px;position:absolute;top:50%;left:0;right:0}.pruler .fill{background:var(--acc);transform-origin:0;will-change:width;height:1px;position:absolute;top:50%;left:0}.pruler .tick{cursor:pointer;flex-direction:column;align-items:center;gap:7px;display:flex;position:absolute;top:50%;transform:translate(-50%,-50%)}.pruler .tick .dot{background:color-mix(in oklab, var(--ink), transparent 62%);border-radius:50%;width:7px;height:7px;transition:all .2s}.pruler .tick .tn{font-family:var(--font-mono),monospace;letter-spacing:.1em;color:var(--soft);opacity:0;font-size:10px;transition:all .2s;position:absolute;top:-19px}.pruler .tick:hover .dot{background:var(--acc);transform:scale(1.3)}.pruler .tick:hover .tn{opacity:1}.pruler .tick.on .dot{background:var(--acc);width:9px;height:9px;box-shadow:0 0 0 4px color-mix(in oklab, var(--acc), transparent 78%)}.pruler .tick.on .tn{opacity:1;color:var(--acc)}@media (max-width:820px){.photo .frame{width:86vw;padding:6vh 4vw 14vh}.photo .intro,.photo .outro{width:90vw;padding:0 6vw}.pruler{bottom:78px;right:34px}.photo .navbtns{bottom:28px;left:34px;right:auto}}@media (prefers-reduced-motion:reduce){.photo .scrollcue .bar:after{animation:none}.pbg{transition:none}}.about{height:100%;overflow-y:auto}.about .wrap{max-width:920px;margin:0 auto;padding:60px 40px 90px}.about h1{letter-spacing:-.02em;margin:0 0 16px;font-size:clamp(36px,5vw,60px);font-weight:600;line-height:1}.about-intro{align-items:flex-start;gap:2rem;margin-bottom:2.5rem;display:flex}.about-intro .portrait{object-fit:cover;object-position:top center;border:2px solid var(--acc);border-radius:50%;flex-shrink:0;width:110px;height:110px}.about-intro-text{flex:1}@media (max-width:600px){.about-intro{flex-direction:column;gap:1.2rem}}.about h1 .a{color:var(--acc)}.about .bio{color:var(--ink);max-width:64ch;font-size:19px;line-height:1.7}.about h4{font-family:var(--font-mono),monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin:42px 0 16px;font-size:12px}.about .exprow{border-top:1px solid var(--line);grid-template-columns:180px 1fr auto;gap:26px;padding:22px 0;display:grid}.about .exprow .when{font-family:var(--font-mono),monospace;color:var(--soft);padding-top:4px;font-size:12.5px}.about .exprow h3{margin:0;font-size:21px;font-weight:600}.about .exprow .co{font-family:var(--font-mono),monospace;color:var(--soft);margin:4px 0 9px;font-size:13px}.about .exprow p{color:var(--ink);max-width:64ch;margin:0;font-size:14.5px;line-height:1.55}.about .badge{font-family:var(--font-mono),monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--acc-ink);background:var(--acc);border-radius:6px;height:max-content;padding:4px 10px;font-size:10.5px}.about .tags{flex-wrap:wrap;gap:8px;display:flex}.about .foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:54px;padding-top:40px;display:flex}.about .foot h2{letter-spacing:-.02em;margin:0;font-size:34px;font-weight:600}.about .foot h2 .a{color:var(--acc)}.about .socials{flex-wrap:wrap;gap:8px;display:flex}@media (max-width:680px){.about .exprow{grid-template-columns:1fr;gap:6px}}.csov.casepage{z-index:auto;-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1;pointer-events:auto;background:0 0;display:block;position:static;inset:auto}.csov.casepage .sheet{border-left:none;width:min(860px,92vw);height:auto;margin:0 auto;overflow:visible;transform:none}.csov.casepage .body h1{letter-spacing:-.02em;margin:0 0 6px;font-size:clamp(28px,5vw,46px);line-height:1.05}.csov.casepage .translation-note{font-family:var(--font-mono),monospace;color:var(--soft);border-left:2px solid var(--acc);margin:10px 0 0;padding-left:10px;font-size:12px}.cv{height:100%;padding:40px 20px 90px;overflow-y:auto}.cv-actions{justify-content:flex-end;max-width:900px;margin:0 auto 20px;display:flex}.cv-sheet{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr 240px;gap:40px;max-width:900px;margin:0 auto;padding:48px;display:grid}.cv-main h1{letter-spacing:-.02em;margin:0;font-size:32px;font-weight:600}.cv-role{font-family:var(--font-mono),monospace;color:var(--acc);margin-top:6px;font-weight:600}.cv-role-sub{color:var(--soft);margin-top:2px;font-size:14px}.cv-main h2{font-family:var(--font-mono),monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);border-top:1px solid var(--line);margin:32px 0 14px;padding-top:20px;font-size:12px}.cv-profile{max-width:62ch;color:var(--ink);line-height:1.6}.cv-job{margin-bottom:18px}.cv-job-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.cv-job-title{font-size:15px;font-weight:600}.cv-job-when{font-family:var(--font-mono),monospace;color:var(--soft);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px}.cv-job-co{font-family:var(--font-mono),monospace;color:var(--soft);margin:3px 0 6px;font-size:12.5px}.cv-job p{color:var(--ink);max-width:60ch;margin:0;font-size:14px;line-height:1.55}.cv-side h3{font-family:var(--font-mono),monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--soft);margin:24px 0 10px;font-size:11px}.cv-side h3:first-of-type{margin-top:0}.cv-side ul{margin:0;padding:0;font-size:13px;list-style:none}.cv-side li{margin-bottom:6px}.cv-contact div{word-break:break-word;margin-bottom:5px;font-size:12.5px}.cv-contact a{color:var(--ink)}@media (max-width:720px){.cv-sheet{grid-template-columns:1fr;padding:28px}}@media print{.pfnav,.cv-actions{display:none}.cv{padding:0;overflow:visible}.cv-sheet{color:#111;background:#fff;border:none;border-radius:0;max-width:7.5in;padding:0}.cv-main h1,.cv-job-title,.cv-profile,.cv-job p{color:#111}.cv-role,.cv-role-sub,.cv-job-when,.cv-job-co,.cv-side h3,.cv-contact a{color:#2f6b4f}}.notfound{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:0 24px;display:flex}.notfound h1{font-family:var(--font-mono),monospace;color:var(--acc);font-size:clamp(48px,10vh,96px);font-weight:600;line-height:1}.notfound h2{letter-spacing:-.01em;font-size:clamp(20px,3vh,28px);font-weight:600}.notfound p{color:var(--soft);max-width:40ch}.notfound .btn{margin-top:14px}
