@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-cyrillic-ext-wght-normal-okcGN4Nq.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-cyrillic-wght-normal-BS41q_Tv.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-greek-ext-wght-normal-DQgQPNk4.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-greek-wght-normal-sS1B39LI.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-vietnamese-wght-normal-TKKdAiBA.woff2)format("woff2-variations");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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-latin-ext-wght-normal-B4u9PlvR.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-tight-latin-wght-normal-DX-nOvPD.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");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}:root{--bg-scene:#080a07;--bg-project:#0e100b;--surface:#11160f;--surface-button:#141a0e;--surface-button-hover:#182110;--surface-placeholder:#151b0f;--gutter-black:#000;--lime:#b6f36a;--lime-soft:#c8e490;--lime-border:#b6f36a47;--lime-border-strong:#b6f36a8c;--lime-glow:#b6f36a52;--hairline:#303425;--cream:#e5ecdc;--white:#f2f4ee;--text-1:#d6d9ce;--text-2:#a0a39a;--text-3:#7b7e77;--text-mono:#8c917d;--text-label:#7c866e;--text-faint:#616858;--font-display:"Inter Tight Variable", "Inter Tight", system-ui, sans-serif;--font-body:"Manrope Variable", "Manrope", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--fs-mono-xs:10px;--fs-mono-sm:11px;--fs-sm:12px;--fs-base:14px;--fs-md:16px;--fs-headline:clamp(30px, 2.4vw, 40px);--fs-title:clamp(36px, 6.1vw, 100px);--tracking-mono:.16em;--tracking-display:-.04em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--radius-sm:6px;--radius-md:10px;--radius-full:999px;--gutter:clamp(20px, 4.2vw, 64px);--header-h:113px;--header-center:55px;--btn-h:44px;--btn-w:56px;--z-scene:0;--z-page:10;--z-vignette:20;--z-header:30;--z-ui:40;--z-cursor:100}html[data-layout=mobile]{--header-h:92px;--header-center:46px}*,:before,:after{box-sizing:border-box}html{background:var(--bg-scene);color:var(--text-2);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;transition:background-color var(--ui-route-background) var(--ease-out);font-size:16px;line-height:1.5}html[data-route=home]{overscroll-behavior:none;overflow:hidden}html[data-route=project]{background:var(--bg-project);overflow-y:auto}html[data-home=list][data-route=home]{overscroll-behavior:auto;overflow:hidden auto}html[data-layout=mobile] .dev-panel{display:none}body,h1,h2,h3,p,figure{margin:0}body{min-height:100dvh}button{font:inherit;color:inherit;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}::selection{background:var(--lime);color:#0b0d0a}:focus-visible{outline:1px solid var(--lime);outline-offset:3px}@media (hover:hover) and (pointer:fine){html,html *{cursor:none!important}}.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}html[data-route=home] .vignette{display:none}.vignette{z-index:var(--z-vignette);pointer-events:none;background:radial-gradient(120% 95% at 50% 45%,#0000 52%,#0000008c 100%);position:fixed;inset:0}.grain{z-index:var(--z-vignette);pointer-events:none;opacity:0;transition:opacity var(--ui-route-background) var(--ease-out);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.72  0 0 0 0 0.95  0 0 0 0 0.42  0 0 0 0.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:fixed;inset:0}html[data-route=project] .grain{opacity:.05}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.cursor{z-index:var(--z-cursor);pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-out);will-change:transform;position:fixed;top:0;left:0}.cursor[data-visible=true]{opacity:1}.cursor__arrow{transform-origin:2px 2px;filter:drop-shadow(0 0 5px #b6f36a73);transition:transform var(--ui-cursor) var(--ease-out);display:block;transform:translate(-2px,-2px)}.cursor[data-hover=true] .cursor__arrow{transform:translate(-2px,-2px)scale(1.18)}.cursor[data-down=true] .cursor__arrow{transform:translate(-2px,-2px)scale(.86)}@media (hover:none),(pointer:coarse){.cursor{display:none}}.dev-panel{z-index:var(--z-ui);left:var(--gutter);bottom:var(--space-5);align-items:center;gap:var(--space-2);font:500 var(--fs-mono-xs) / 1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);border-radius:var(--radius-sm);background:#080a07b3;border:1px dashed #b6f36a2e;padding:6px 8px;display:flex;position:fixed}.dev-panel i{background:#b6f36a2e;width:1px;height:12px}.dev-panel button{color:var(--text-label);letter-spacing:inherit;text-transform:inherit;border-radius:3px;padding:4px 6px}.dev-panel button:hover{color:var(--lime)}.dev-panel button[data-active=true]{color:#0b0d0a;background:var(--lime)}.logo{z-index:var(--z-ui);top:var(--header-center);left:var(--gutter);color:var(--lime);transition:color var(--ui-hover) var(--ease-out);align-items:center;display:grid;position:fixed;transform:translateY(-50%)}.logo[data-tone=cream]{color:var(--cream)}.logo[data-interactive]{left:calc(var(--gutter) - 14px);font:inherit;text-align:left;background:0 0;border:0;padding:14px}.logo[data-interactive]>span{transition-duration:var(--ui-profile-expand)}.logo>span{white-space:nowrap;transition:opacity var(--ui-logo-swap) var(--ease-out), transform var(--ui-logo-swap) var(--ease-out), filter var(--ui-logo-swap) var(--ease-out), text-shadow var(--ui-logo-swap) var(--ease-out);grid-area:1/1}.logo__full{font:500 24px/1 var(--font-display);letter-spacing:-.045em;text-shadow:0 0 16px #b6f36a8c}.logo__initials{font:600 22px/1 var(--font-mono);letter-spacing:.2em;margin-right:-.2em}.logo[data-variant=full] .logo__initials,.logo[data-variant=initials] .logo__full{opacity:0;filter:blur(6px);transform:translateY(4px)}.logo[data-variant=initials] .logo__full{transform:translateY(-4px)}.logo[data-tone=cream] .logo__full{text-shadow:none}.halftone{aspect-ratio:4/3;background:#000;width:100%;display:block}.scr-word{white-space:nowrap;display:inline-block}.scr-ch{position:relative}.scr-final{opacity:0}.scr-ghost{text-align:center;width:100%;color:var(--scr-ghost,var(--lime));opacity:.85;pointer-events:none;position:absolute;top:0;left:0}.profile{--pad:22px;z-index:var(--z-header);left:max(8px, calc(var(--gutter) - var(--pad)));top:calc(var(--header-center) - 26px);width:min(calc(clamp(300px, 22.8vw, 380px) + var(--pad) * 2), calc(100vw - 16px));filter:drop-shadow(0 26px 44px #0000008c);visibility:hidden;pointer-events:none;transition:visibility 0s linear var(--ui-profile-collapse);position:fixed}.profile[data-open=true]{visibility:visible;pointer-events:auto;transition-delay:0s}.profile__card{box-sizing:border-box;max-height:calc(100vh - var(--header-center) - 10px);max-height:calc(100dvh - var(--header-center) - 10px);padding:58px var(--pad) var(--pad);overscroll-behavior:contain;scrollbar-width:none;border:1px solid var(--lime-border);clip-path:inset(0 calc(100% - 100px) calc(100% - 56px) 0 round 14px);opacity:0;transition:clip-path var(--ui-profile-collapse) var(--ease-in-out), opacity var(--ui-profile-collapse) var(--ease-out);background:#080a07f2;border-radius:14px;overflow-y:auto}.profile__card::-webkit-scrollbar{display:none}.profile[data-open=true] .profile__card{clip-path:inset(0 round 14px);opacity:1;transition:clip-path var(--ui-profile-expand) var(--ease-out), opacity var(--ui-hover) var(--ease-out)}.profile__item{opacity:0;filter:blur(4px);transition:opacity var(--ui-profile-collapse) var(--ease-out), transform var(--ui-profile-collapse) var(--ease-out), filter var(--ui-profile-collapse) var(--ease-out);transform:translateY(10px)}.profile[data-open=true] .profile__item{opacity:1;filter:none;transition:opacity var(--ui-profile-item) var(--ease-out), transform var(--ui-profile-item) var(--ease-out), filter var(--ui-profile-item) var(--ease-out);transition-delay:calc(var(--i,0) * 70ms + .16s);transform:none}.profile__item+.profile__item{margin-top:22px}.profile__portrait{aspect-ratio:1;border-radius:8px}.profile .intro__headline{margin-top:22px;font-size:clamp(26px,2vw,33px)}.profile .intro__p{margin-top:0;font-size:14px;line-height:24px}.profile .intro__p+.intro__p{margin-top:10px}.profile__facts{border-top:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 16px;margin-bottom:0;padding-top:20px;display:grid}.profile__fact--wide{grid-column:1/-1}.profile__facts dt{font:400 var(--fs-mono-xs) / 1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-label)}.profile__facts dd{font:500 14px / 1.35 var(--font-body);letter-spacing:-.01em;color:var(--text-1);overflow-wrap:anywhere;margin:6px 0 0}.profile__facts a{color:var(--lime-soft);transition:color var(--ui-hover) var(--ease-out);text-decoration:none}.profile__facts a:hover,.profile__facts a:focus-visible{color:var(--lime)}@media (width<=480px){.profile{--pad:14px}.profile__card{padding-top:52px}.profile__portrait{aspect-ratio:5/4}}@media (height<=1040px){.profile__more{display:none}}@media (height<=960px){.profile__portrait{aspect-ratio:5/4}}@media (height<=900px){.profile__portrait{aspect-ratio:4/3}.profile .intro__p{font-size:13px;line-height:21px}}@media (height<=820px){.profile__portrait{aspect-ratio:3/2}.profile .intro__headline{margin-top:16px;font-size:clamp(24px,1.9vw,28px)}.profile__item+.profile__item{margin-top:16px}.profile__facts{gap:10px 16px;padding-top:16px}}@media (height<=700px){.profile__portrait{display:none}}@media (height<=520px){.profile .intro__p{display:none}.profile .intro__headline{margin-top:6px;font-size:24px}.profile__item+.profile__item{margin-top:14px}.profile__facts{gap:10px;padding-top:14px}}@media (prefers-reduced-motion:reduce){.profile__item{filter:none;transform:none}}.project-header{z-index:var(--z-header);height:var(--header-h);background:var(--bg-project);border-bottom:1px solid var(--hairline);position:fixed;inset:0 0 auto}.project-header__actions{top:var(--header-center);right:var(--gutter);align-items:center;gap:var(--space-5);display:flex;position:absolute;transform:translateY(-50%)}.project-header__back{align-items:center;gap:var(--space-3);font:500 var(--fs-base) / 1 var(--font-body);letter-spacing:-.01em;color:var(--lime-soft);transition:color var(--ui-hover) var(--ease-out);display:inline-flex}.project-header__back:hover{color:var(--lime)}.project-header__back:focus-visible{outline-offset:6px}.project-header__back svg{transition:transform var(--ui-hover) var(--ease-out)}.project-header__back:hover svg{transform:rotate(90deg)}.skip-link{z-index:200;top:-64px;left:var(--gutter);font:500 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#0b0d0a;background:var(--lime);border-radius:var(--radius-sm);transition:top var(--ui-hover) var(--ease-out);padding:12px 16px;position:fixed}.skip-link:focus{outline-offset:3px;top:12px}.contact{z-index:var(--z-ui);top:calc(var(--header-center) + var(--btn-h) / 2 + 12px);right:calc(var(--gutter) - 5px);box-sizing:border-box;border:1px solid var(--lime-border);transform-origin:100% 0;opacity:0;visibility:hidden;pointer-events:none;width:min(330px,100vw - 24px);transition:opacity var(--ui-profile-collapse) var(--ease-out), transform var(--ui-profile-collapse) var(--ease-out), visibility 0s linear var(--ui-profile-collapse);background:#080a07f5;border-radius:14px;padding:20px 22px 22px;position:fixed;transform:translateY(-8px)scale(.97);box-shadow:0 26px 60px #0000008c}.contact[data-open=true]{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--ui-profile-item) var(--ease-out), transform var(--ui-profile-item) var(--ease-out), visibility 0s;transform:none}.contact__label{font:400 var(--fs-mono-xs) / 1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-label)}.contact__text{font:500 14px / 22px var(--font-body);letter-spacing:-.01em;color:var(--text-2);margin-top:10px}.contact__address{font:500 clamp(16px, 4.6vw, 19px) / 1.25 var(--font-display);letter-spacing:-.02em;color:var(--lime);overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;transition:color var(--ui-hover) var(--ease-out);margin-top:16px;display:block}.contact__address:hover,.contact__address:focus-visible{color:#d4ff96}.contact__actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.contact__btn{min-height:40px;font:500 13px / 1 var(--font-body);letter-spacing:-.005em;color:var(--text-1);background:var(--surface-button);border:1px solid var(--lime-border);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--ui-hover) var(--ease-out), border-color var(--ui-hover) var(--ease-out), color var(--ui-hover) var(--ease-out);align-items:center;gap:6px;padding:0 14px;display:inline-flex}.contact__btn:hover,.contact__btn:focus-visible{background:var(--surface-button-hover);border-color:var(--lime-border-strong)}.contact__btn[data-done=true]{color:var(--lime);border-color:var(--lime-border-strong)}.contact__btn--primary{color:var(--lime)}.top-actions{z-index:var(--z-ui);top:calc(var(--header-center) - var(--btn-h) / 2);right:calc(var(--gutter) - 5px);justify-content:flex-end;gap:var(--space-3);transition:opacity var(--ui-profile-expand) var(--ease-out);display:flex;position:fixed}@media (width<=560px){html[data-profile=open] .top-actions{opacity:0;pointer-events:none}}.icon-btn{height:var(--btn-h);min-width:var(--btn-w);padding:0 calc((var(--btn-w) - 22px) / 2);color:var(--lime);background:var(--surface-button);border:1px solid var(--lime-border);border-radius:var(--radius-sm);transition:background-color var(--ui-hover) var(--ease-out), border-color var(--ui-hover) var(--ease-out), box-shadow var(--ui-cta-expand) var(--ease-out);justify-content:center;align-items:center;display:inline-flex;box-shadow:0 0 #b6f36a00}.icon-btn:hover,.icon-btn:focus-visible{background:var(--surface-button-hover);border-color:var(--lime-border-strong);box-shadow:0 0 26px var(--lime-glow)}.icon-btn svg{flex:none}.lang-btn{gap:7px;padding:0 16px}.lang-btn__code{font:500 13px / 1 var(--font-mono);letter-spacing:.1em;color:var(--text-faint);transition:color var(--ui-hover) var(--ease-out)}.lang-btn__code[data-active=true]{color:var(--lime);font-weight:700}.lang-btn__sep{font:400 13px / 1 var(--font-mono);color:var(--hairline)}.lang-btn:hover .lang-btn__code[data-active=false],.lang-btn:focus-visible .lang-btn__code[data-active=false]{color:var(--text-1)}button.icon-btn{cursor:pointer}.icon-btn__label{white-space:nowrap;opacity:0;max-width:0;font:500 var(--fs-base) / 1 var(--font-body);letter-spacing:-.01em;color:var(--text-1);transition:max-width var(--ui-cta-expand) var(--ease-out), margin-right var(--ui-cta-expand) var(--ease-out), opacity var(--ui-cta-expand) var(--ease-out);margin-right:0;overflow:hidden}.icon-btn--cta:hover .icon-btn__label,.icon-btn--cta:focus-visible .icon-btn__label{opacity:1;max-width:96px;margin-right:10px}.transition-cover{z-index:25;background:var(--bg-project);opacity:0;pointer-events:none;transition:opacity var(--ui-cover) var(--ease-out);position:fixed;inset:0}.transition-cover[data-on=true]{opacity:1;pointer-events:auto}.card-nav{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.card-nav ul{margin:0;padding:0;list-style:none}.card-nav a:focus-visible{outline:none}.hover-label{--scr-ghost:var(--accent);z-index:var(--z-ui);color:var(--accent,var(--lime));white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--ui-label-fade) var(--ease-out);align-items:baseline;gap:14px;display:flex;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.hover-label[data-visible=true]{opacity:1;transition-duration:var(--dur-fast)}.hover-label__num{font:500 15px / 1 var(--font-mono);letter-spacing:.06em}.hover-label__title{font:500 18px / 1 var(--font-body);letter-spacing:-.01em}.hover-label__arrow{font:500 15px / 1 var(--font-body)}@media (pointer:coarse){.hover-label{bottom:calc(env(safe-area-inset-bottom,0px) + 40px);border:1px solid color-mix(in srgb, var(--accent,var(--lime)) 55%, transparent);border-radius:var(--radius-full);box-shadow:0 0 28px color-mix(in srgb, var(--accent,var(--lime)) 22%, transparent);background:#080a07d1;padding:15px 22px}.hover-label[data-visible=true]{pointer-events:auto;-webkit-tap-highlight-color:transparent}}.intro__headline{font:500 var(--fs-headline) / 1.15 var(--font-display);letter-spacing:var(--tracking-display);color:var(--white);margin-top:26px}.intro__line{display:block}.intro__line--accent{color:var(--lime)}.intro__p{font:500 15px / 26px var(--font-body);letter-spacing:-.01em;color:var(--text-3);margin-top:18px}.intro__headline+.intro__p{margin-top:26px}.intro__p--lead{color:var(--text-2)}@media (height<=760px){.intro__headline,.intro__headline+.intro__p{margin-top:18px}.intro__p{margin-top:12px;font-size:14px;line-height:23px}}@media (height<=600px){.intro__p:not(.intro__p--lead){display:none}}.mhome{z-index:var(--z-page);min-height:100dvh;padding:104px var(--gutter) 168px;background:radial-gradient(60% 30% at 85% 96%, #96be5a14, transparent 70%), var(--bg-scene);position:relative}.mhome:focus{outline:none}.mhome__fade{z-index:30;pointer-events:none;background:linear-gradient(var(--bg-scene) 45%, transparent);height:96px;position:fixed;inset:0 0 auto}.mhome__intro .halftone{aspect-ratio:1}.mhome__intro .intro__headline{margin-top:22px}.mhome__work{margin-top:56px}.mhome__label{font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;color:var(--text-mono);justify-content:space-between;margin:0 0 20px;display:flex}.mstack{--card-h:176px;--peek:112px;margin:0;padding:0;list-style:none}.mstack li{z-index:calc(var(--i) + 1);margin-top:calc(var(--peek) - var(--card-h));position:relative}.mstack li:first-child{margin-top:0}.mcard{--c:#b6f36a80;--face:#0c1209;--ink:var(--lime);height:var(--card-h);border:2px solid var(--c);background:linear-gradient(160deg, var(--face), #070a06);color:var(--ink);-webkit-tap-highlight-color:transparent;transition:transform var(--ui-hover) var(--ease-out), border-color var(--ui-hover) var(--ease-out), background-color var(--ui-hover) var(--ease-out), box-shadow var(--ui-cta-expand) var(--ease-out), color var(--ui-hover) var(--ease-out);border-radius:18px;padding:16px 18px;display:block;position:relative;box-shadow:0 -14px 26px #0000008c,inset 0 0 26px #b6f36a0a}.mcard:active,.mcard:focus-visible,.mcard[data-lit=true]{--c:var(--accent);--face:color-mix(in srgb, var(--accent) 14%, #070a06);--ink:var(--accent);box-shadow:0 -14px 26px #0000008c, 0 0 30px color-mix(in srgb, var(--accent) 38%, transparent), inset 0 0 30px color-mix(in srgb, var(--accent) 12%, transparent);transform:translateY(-6px)}@media (hover:hover){.mcard:hover{--c:var(--accent);--face:color-mix(in srgb, var(--accent) 14%, #070a06);--ink:var(--accent);box-shadow:0 -14px 26px #0000008c, 0 0 30px color-mix(in srgb, var(--accent) 38%, transparent), inset 0 0 30px color-mix(in srgb, var(--accent) 12%, transparent);transform:translateY(-6px)}}.mstack li:has(.mcard:active,.mcard:focus-visible,.mcard[data-lit=true]){z-index:20}@media (hover:hover){.mstack li:has(.mcard:hover){z-index:20}}.mcard:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mcard__head{opacity:.85;align-items:baseline;gap:12px;min-height:44px;display:flex}.mcard__num{font:500 12px / 1 var(--font-mono);letter-spacing:.08em}.mcard__title{min-width:0;font:500 15px / 1.2 var(--font-body);letter-spacing:-.01em;flex:1}.mcard__arrow{font:500 15px / 1 var(--font-body)}.mcard__body{justify-content:space-between;align-items:center;gap:16px;margin-top:4px;display:flex}.mcard__meta{font:400 var(--fs-mono-xs) / 1.3 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;text-align:right;opacity:.7}.tap-hint{z-index:var(--z-ui);left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 52px);font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;white-space:nowrap;color:var(--text-faint);pointer-events:none;opacity:0;transition:opacity var(--ui-label-fade) var(--ease-out);position:fixed;transform:translate(-50%)}.tap-hint[data-visible=true]{opacity:1;transition:opacity var(--ui-tap-hint-fade) var(--ease-out) var(--ui-tap-hint-delay)}.home{z-index:var(--z-scene);background:var(--bg-scene);position:fixed;inset:0}.home canvas{display:block}.home{touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.home>div:first-child{animation:scene-in var(--dur-slower) var(--ease-out) both}@keyframes scene-in{0%{opacity:0}}.pstats{margin-top:112px}.pstats__grid{border-top:1px solid var(--hairline);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.pstats__grid li{border-bottom:1px solid var(--hairline);align-content:start;gap:12px;padding:30px 28px 34px 0;display:grid}.pstats__grid strong{font:500 clamp(44px, 5vw, 76px) / 1 var(--font-display);letter-spacing:var(--tracking-display);color:var(--white)}.pstats__grid span{max-width:28ch;font:500 15px / 24px var(--font-body);letter-spacing:-.01em;color:var(--text-2)}.pstats__note{font:400 var(--fs-mono-xs) / 1.8 var(--font-mono);letter-spacing:.06em;color:var(--text-label);margin-top:18px}html[data-layout=mobile] .pstats{margin-top:72px}html[data-layout=mobile] .pstats__grid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-layout=mobile] .pstats__grid li{padding:22px 16px 26px 0}.pstory{gap:80px;margin-top:128px;display:grid}.pstory__section{grid-template-columns:minmax(0,.8fr) minmax(0,2fr);align-items:start;column-gap:5.4%;display:grid}.pstory__title{top:calc(var(--header-h) + 28px);font:400 var(--fs-mono-sm) / 1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--lime-soft);position:sticky}.pstory__text{font:500 18px / 33px var(--font-body);letter-spacing:-.01em;color:var(--text-2)}.pstory__text+.pstory__text{margin-top:22px}.pstory__text+.pstory__points{margin-top:28px}.pstory__points{margin:0;padding:0;list-style:none}.pstory__points li{border-top:1px solid var(--hairline);gap:8px;padding:22px 0;display:grid}.pstory__points li:last-child{border-bottom:1px solid var(--hairline)}.pstory__points strong{font:500 22px / 1.2 var(--font-display);letter-spacing:-.03em;color:var(--cream)}.pstory__points span{font:500 16px / 28px var(--font-body);letter-spacing:-.01em;color:var(--text-2)}.pstory__credits{max-width:62ch;font:400 var(--fs-mono-xs) / 1.9 var(--font-mono);letter-spacing:.04em;color:var(--text-label);margin-top:8px}html[data-layout=mobile] .pstory{gap:56px;margin-top:84px}html[data-layout=mobile] .pstory__section{grid-template-columns:1fr;row-gap:18px}html[data-layout=mobile] .pstory__title{position:static}html[data-layout=mobile] .pstory__text{font-size:16px;line-height:28px}html[data-layout=mobile] .pstory__points strong{font-size:19px}.pvideos{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:28px;margin-top:96px;display:grid}.pvideos--embedded{margin-top:0}html[data-layout=mobile] .pvideos{margin-top:64px}html[data-layout=mobile] .pvideos.pvideos--embedded{margin-top:0}.pvideo{margin:0}.pvideo[data-wide=true]{grid-column:1/-1}.pvideo__frame{aspect-ratio:var(--aspect,16 / 9);border:1px solid var(--hairline);background:#000;overflow:hidden}.pvideo video,.pvideo iframe{object-fit:contain;background:#000;border:0;width:100%;height:100%;display:block}html[data-layout=mobile] .pvideo__frame{aspect-ratio:var(--aspect-mobile,var(--aspect,16 / 9))}.pvideo figcaption{justify-content:space-between;gap:var(--space-4);font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-mono);margin-top:12px;display:flex}.gallery{z-index:35;background:var(--gutter-black);touch-action:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity var(--ui-gallery-fade) var(--ease-out);position:fixed;inset:0;overflow:hidden}.gallery[data-shown=true]{opacity:1}.gallery:focus{outline:none}@media (pointer:coarse){.gallery__btn{width:44px;height:44px}}.gallery__layer{transform-origin:0 0;will-change:transform;width:0;height:0;position:absolute;top:0;left:0}.gtile{background:var(--surface-placeholder);position:absolute;overflow:hidden}.gtile img{object-fit:cover;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity var(--dur-slow) var(--ease-out);display:block}.gtile img[data-shown=true]{opacity:1}.gallery__hint{left:var(--gutter);font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.04em;color:var(--text-faint);pointer-events:none;opacity:0;transition:opacity var(--ui-controls-fade) var(--ease-out);position:absolute;bottom:32px}.gallery__controls{right:calc(var(--gutter) - 5px);opacity:0;transition:opacity var(--ui-controls-fade) var(--ease-out);gap:6px;display:flex;position:absolute;bottom:24px}.gallery[data-entered=true] .gallery__hint,.gallery[data-entered=true] .gallery__controls{opacity:1}.gallery__btn,.gallery__close{border-radius:var(--radius-full);transition:background-color var(--ui-hover) var(--ease-out), border-color var(--ui-hover) var(--ease-out), color var(--ui-hover) var(--ease-out);place-items:center;display:grid}.gallery__btn{width:38px;height:38px;color:var(--text-label);background:#0c1208;border:1px solid #1b2314}.gallery__btn:hover,.gallery__btn:focus-visible{color:var(--lime);border-color:var(--lime-border);background:#141c0d}.gallery__close{top:calc(var(--header-center) - 24px);right:calc(var(--gutter) - 5px);width:48px;height:48px;color:var(--white);background:#282d27;border:1px solid #51564f;position:absolute}.gallery__close:hover,.gallery__close:focus-visible{background:#343a33;border-color:#6b716a}.flip-layer{z-index:37;pointer-events:none;position:fixed;inset:0}.flip-tile{object-fit:cover;will-change:left, top, width, height;display:block;position:absolute}.project{z-index:var(--z-page);min-height:100dvh;padding-top:var(--header-h);background:var(--bg-project);position:relative}.project__loading{text-align:center;font:500 var(--fs-base) / 1.2 var(--font-body);letter-spacing:-.01em;color:#83897d;margin-top:94px}.project__loading a{color:var(--lime-soft);text-underline-offset:3px;text-decoration:underline}.project__inner{width:min(76.5vw,1320px);margin-inline:auto}.reveal{animation:reveal var(--ui-reveal) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--ui-reveal-stagger))}@keyframes reveal{0%{opacity:0;filter:blur(6px);transform:translateY(22px)}}.project__meta{justify-content:space-between;gap:var(--space-5);font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-mono);padding-top:21px;display:flex}.project__title{font:500 var(--fs-title) / 1.02 var(--font-display);letter-spacing:var(--tracking-display);color:var(--white);margin-top:36px}.project__intro{grid-template-columns:54% 1fr;column-gap:5.4%;margin-top:44px;display:grid}.project__desc{font:500 18px / 33px var(--font-body);letter-spacing:-.01em;color:var(--text-2)}.project__facts{gap:26px;margin:0;display:grid}.project__facts dt{font:500 10px / 1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:#6b775f}.project__facts dd{font:500 15px / 1.35 var(--font-body);letter-spacing:-.01em;color:#bcc2b4;margin:10px 0 0}.project__actions{flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:28px;display:flex}.project__visit{font:500 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--lime);background:var(--surface-button);border:1px solid var(--lime-border);border-radius:var(--radius-sm);transition:background-color var(--ui-hover) var(--ease-out), border-color var(--ui-hover) var(--ease-out), box-shadow var(--ui-cta-expand) var(--ease-out);align-items:center;gap:8px;padding:13px 18px;display:inline-flex}.project__visit:hover,.project__visit:focus-visible{background:var(--surface-button-hover);border-color:var(--lime-border-strong);box-shadow:0 0 24px var(--lime-glow)}.project__explore{font:500 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--lime-soft);transition:color var(--ui-hover) var(--ease-out);padding:0}.project__explore:hover{color:var(--lime)}.project__explore span{transition:transform var(--ui-hover) var(--ease-out);display:inline-block}.project__explore:hover span{transform:translate(2px,-2px)}.project__grid{grid-template-columns:1fr 1fr;column-gap:4.3%;margin-top:190px;padding-inline:2.1%;display:grid}.project__col{flex-direction:column;gap:66px;display:flex}.project__tile{background:var(--surface-placeholder);width:100%;padding:0;display:block;overflow:hidden}.project__tile img{object-fit:cover;width:100%;height:100%;display:block}.project__title:focus{outline:none}.project__end--empty{padding:0 0 24vh}.project__facts dt{color:#7a8770}html[data-layout=mobile] .project__inner{width:calc(100% - 2 * var(--gutter))}html[data-layout=mobile] .project__meta{flex-wrap:wrap;padding-top:18px}html[data-layout=mobile] .project__title{margin-top:26px}html[data-layout=mobile] .project__intro{grid-template-columns:1fr;row-gap:30px;margin-top:28px}html[data-layout=mobile] .project__desc{font-size:16px;line-height:28px}html[data-layout=mobile] .project__grid{flex-direction:column;gap:24px;margin-top:56px;padding-inline:0;display:flex}html[data-layout=mobile] .project__col{display:contents}html[data-layout=mobile] .project__tile{order:var(--i)}.project__end{text-align:center;font:400 var(--fs-mono-sm) / 1 var(--font-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;color:var(--text-faint);padding:110px 0 46vh}
