@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.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{--bc:#080808;--tc:#f7f7f7;--fg-dim:#f7f7f7c2;--fg-faint:#f7f7f773;--hair:#f7f7f724;--hair-dark:#0808081f;--u:calc(100vw / 1536);--radius:.375rem;--font:"Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--ease-expo:cubic-bezier(.16, 1, .3, 1);--ease-out:cubic-bezier(.4, 0, .2, 1)}@media (min-width:480px){html{font-size:min(max(12px,.9375vw),14.4px)}}@media (max-width:479px){html{font-size:clamp(10px,2.5641vw,12px)}}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}html{background:var(--bc);color:var(--tc);font-family:var(--font);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;scrollbar-width:none;line-height:1.5}body{overscroll-behavior:none;background:var(--bc);color:var(--tc);-webkit-tap-highlight-color:transparent;font-size:1rem;overflow:hidden}html::-webkit-scrollbar{display:none}body::-webkit-scrollbar{display:none}h1,h2,h3,h4,p,ul,figure{font:inherit;margin:0;padding:0}ul{list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}img,canvas,svg{max-width:100%;display:block}:focus-visible{outline-offset:5px;outline:1px solid}::selection{background:var(--tc);color:var(--bc)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.project-nav:focus-within{left:calc(var(--u) * 50);bottom:calc(var(--u) * 50);width:min(380px,86vw);height:auto;padding:calc(var(--u) * 24);clip-path:none;white-space:normal;background:var(--tc);color:var(--bc);border-radius:var(--radius);z-index:55;margin:0;position:fixed;top:auto;overflow:visible}.project-nav h2{opacity:.45;margin-bottom:calc(var(--u) * 14);font-size:.64rem;font-weight:400}.project-nav button{width:100%;padding:calc(var(--u) * 7) 0;text-align:left;transition:opacity .3s var(--ease-out);font-size:.85rem;display:block}.project-nav button:hover{opacity:.45}.skip{z-index:100;background:var(--tc);color:var(--bc);border-radius:var(--radius);transition:transform .3s var(--ease-expo);padding:10px 14px;font-size:.9rem;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip:focus-visible{transform:translateY(0)}.stage{z-index:0;background:var(--bc);position:fixed;top:0;bottom:0;left:0;right:0}#scene{touch-action:none;width:100%;height:100%;display:block}.grain{z-index:4;pointer-events:none;opacity:.05;mix-blend-mode:screen;transition:opacity .9s var(--ease-expo);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px;position:fixed;top:0;bottom:0;left:0;right:0}.vignette{z-index:3;pointer-events:none;background:radial-gradient(120% 90% at 50% 48%,#0000 40%,#0000008c 100%);position:fixed;top:0;bottom:0;left:0;right:0}body.is-blurred .stage{filter:blur(22px)brightness(.55)saturate(.85)}.stage,#scene{transition:filter .75s var(--ease-expo)}.head{z-index:20;width:100%;padding:calc(var(--u) * 50);pointer-events:none;opacity:0;transition:opacity 1s var(--ease-expo);justify-content:space-between;align-items:flex-start;display:flex;position:fixed;top:0;left:0}body.is-ready .head{opacity:1}.head>*{pointer-events:auto}.identity h1,.role{font-size:1rem;font-weight:400;line-height:1.5rem}.about-toggle{height:1.5rem;font-size:1rem;line-height:1.5rem;position:relative;overflow:hidden}.swap{height:1.5rem;display:block;position:relative}.swap span{height:1.5rem;transition:transform .55s var(--ease-expo), opacity .35s var(--ease-out);display:block}.swap-b{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;transform:translateY(110%)}.about-toggle[aria-expanded=true] .swap-a{opacity:0;transform:translateY(-110%)}.about-toggle[aria-expanded=true] .swap-b{opacity:1;transform:translateY(0)}.about-toggle:hover .swap span,.panel-close:hover,.panel-foot a:hover,.case-view:hover{opacity:.45}.about-toggle,.panel-close,.panel-foot a,.case-view{transition:opacity .3s var(--ease-out)}.indicator{left:50%;bottom:calc(var(--u) * 60);z-index:18;align-items:center;gap:calc(var(--u) * 44);color:var(--tc);pointer-events:none;opacity:0;transition:opacity 1s var(--ease-expo);flex-direction:column;display:flex;position:fixed;transform:translate(-50%)}body.is-ready .indicator{opacity:1}.arc{width:108px;height:21.4px;transition:opacity .4s var(--ease-out);overflow:visible;transform:translateZ(0)}.indicator:has(.dock.is-open) .arc{opacity:0}.arc-progress{transition:opacity .3s linear}.indicator-title{letter-spacing:-.01em;font-variant-numeric:tabular-nums;text-align:center;min-width:8ch;height:1.424rem;transition:transform .55s var(--ease-expo), opacity .4s var(--ease-out);font-size:1.424rem;font-weight:500;line-height:1.424rem;position:relative;overflow:hidden}.indicator-title span{white-space:nowrap;opacity:.76;will-change:transform;display:block}.t-new{justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.dock{pointer-events:none;position:relative}.dock .indicator-title{pointer-events:auto;cursor:default}.dock.is-open .indicator-title{opacity:.5;transform:scale(.84)translateY(4px)}.dock-list{bottom:calc(100% + (var(--u) * 24));perspective:720px;pointer-events:none;z-index:5;flex-direction:column;align-items:stretch;gap:2px;display:flex;position:absolute;left:50%;translate:-50%}.dock-bridge{display:none}.dock.is-open .dock-bridge{left:-14%;right:-14%;bottom:calc(100% - (var(--u) * 12));height:calc(var(--u) * 48);pointer-events:auto;display:block;position:absolute}.dock.is-open .dock-list{pointer-events:auto}.dock-list li{transform-style:preserve-3d;transform-origin:50% 100%;opacity:0;pointer-events:none;transition:transform .55s var(--ease-expo), opacity .4s var(--ease-out);transition-delay:calc(var(--i,0) * 26ms);transform:translateY(26px)rotateX(-58deg)}.dock.is-open .dock-list li{opacity:1;pointer-events:auto;transform:translateY(0)rotateX(0)}.dock-list button{justify-content:center;align-items:center;gap:calc(var(--u) * 10);padding:calc(var(--u) * 8) calc(var(--u) * 16);white-space:nowrap;color:var(--fg-dim);-webkit-backdrop-filter:blur(6px);transform:translateZ(var(--tz,0px)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .35s var(--ease-out), color .3s var(--ease-out), background .3s var(--ease-out), border-color .3s var(--ease-out);background:#08080885;border:1px solid #f7f7f71a;border-radius:99px;font-size:.78rem;line-height:1;display:flex}.dock-list button:hover{--tz:22px;color:var(--tc);background:#080808b3;border-color:#f7f7f742}.dock-num{letter-spacing:.06em;opacity:.38;font-variant-numeric:tabular-nums;font-size:.58rem}.dock-label{letter-spacing:-.005em}.dock-dot{background:var(--accent,var(--tc));opacity:0;width:5px;height:5px;transition:opacity .3s var(--ease-out), transform .4s var(--ease-expo);border-radius:50%;flex:none;transform:scale(.4)}.dock-list button:hover .dock-dot,.dock-list li.is-active .dock-dot{opacity:1;transform:scale(1)}.dock-list li.is-active button{color:var(--tc)}.scrim{z-index:30;-webkit-backdrop-filter:blur(20px)saturate(.85);opacity:0;pointer-events:none;transition:opacity .6s var(--ease-expo);background:#08080847;position:fixed;top:0;bottom:0;left:0;right:0}.scrim.is-on{opacity:1}.panel{top:calc(var(--u) * 25);right:calc(var(--u) * 25);bottom:calc(var(--u) * 25);z-index:31;background:var(--tc);width:50%;max-width:100%;color:var(--bc);border-radius:var(--radius);transform:translateX(calc(100% + (var(--u) * 25) + 40px));visibility:hidden;flex-direction:column;display:flex;position:fixed;overflow:hidden}.panel.is-open{visibility:visible}.panel-inner{flex-direction:column;height:100%;min-height:0;display:flex}.panel-head{padding:calc(var(--u) * 22) calc(var(--u) * 40);border-bottom:1px solid var(--hair-dark);letter-spacing:.01em;flex:none;justify-content:space-between;align-items:center;font-size:.64rem;line-height:1.5;display:flex}.panel-close{font-size:.64rem}.panel-scroll{overscroll-behavior:contain;min-height:0;padding:calc(var(--u) * 50) calc(var(--u) * 50) calc(var(--u) * 100);scrollbar-width:thin;scrollbar-color:#08080840 transparent;cursor:grab;touch-action:pan-y;flex:1;overflow-y:auto}.panel-scroll:active{cursor:grabbing}.panel-scroll::-webkit-scrollbar{width:6px}.panel-scroll::-webkit-scrollbar-thumb{background:#08080833;border-radius:99px}.panel-scroll h3{margin-bottom:calc(var(--u) * 25);letter-spacing:-.01em;font-size:1.266rem;font-weight:700;line-height:1.75rem}.panel-scroll p{max-width:64ch;font-size:1.266rem;line-height:1.75rem}.panel-scroll .block+.block{margin-top:calc(var(--u) * 90)}.panel-scroll .block:first-child p+p{margin-top:1.75rem}.capabilities{column-gap:calc(var(--u) * 60);row-gap:calc(var(--u) * 20);grid-template-columns:1fr 1fr;display:grid}.capabilities li{align-items:center;gap:.7em;font-size:.9rem;line-height:1.4;display:flex}.bullet{opacity:.55;border:1px solid;border-radius:50%;flex:none;width:.85em;height:.85em;position:relative}.bullet:after{content:"";transition:transform .4s var(--ease-expo);background:currentColor;border-radius:50%;position:absolute;top:30%;bottom:30%;left:30%;right:30%;transform:scale(0)}.panel-scroll:hover .bullet:after{transform:scale(1)}.awards{border-top:1px solid var(--hair-dark)}.awards li{padding:calc(var(--u) * 18) 0;border-bottom:1px solid var(--hair-dark);justify-content:space-between;align-items:center;gap:1rem;font-size:1rem;display:flex}.awards li span:first-child{transition:transform .45s var(--ease-expo);display:inline-block}.awards li:hover span:first-child{transform:translate(6px)}.awards .count{opacity:.45;font-variant-numeric:tabular-nums;transition:opacity .3s var(--ease-out)}.awards li:hover .count{opacity:1}.contact-row{align-items:center;gap:calc(var(--u) * 18);margin-top:calc(var(--u) * 40);display:flex}.avatar{border-radius:var(--radius);background:radial-gradient(70% 70% at 35% 30%,#f7f7f7 0%,#b9b4ad 45%,#4b4741 100%);flex:none;width:3rem;height:3rem;position:relative;overflow:hidden}.avatar:after{content:"";background:#0808088c;border-radius:50% 50% 0 0;position:absolute;top:22%;bottom:0;left:26%;right:26%}.contact-name{font-size:.8rem;font-weight:500;line-height:1.4}.contact-link{opacity:.55;transition:opacity .3s var(--ease-out);align-items:center;gap:.4em;font-size:.64rem;display:inline-flex}.contact-link:hover{opacity:1}.panel-foot{border-top:1px solid var(--hair-dark);flex:none;grid-template-columns:repeat(3,1fr);display:grid}.panel-foot a{height:calc(var(--u) * 50);justify-content:center;align-items:center;gap:.4em;font-size:.64rem;display:flex;position:relative}.panel-foot a+a:before{content:"";background:var(--hair-dark);width:1px;position:absolute;top:0;bottom:0;left:0}.case{z-index:35;visibility:hidden;opacity:0;background:radial-gradient(90% 60% at 50% 0,#101010 0%,#080808 60%);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.case:focus{outline:none}.case-head{padding:calc(var(--u) * 22) calc(var(--u) * 50) calc(var(--u) * 4);z-index:2;flex:none;justify-content:space-between;align-items:flex-start;gap:2rem;display:flex;position:relative}.case-kicker{opacity:.45;font-size:.9rem;line-height:1.3rem}.case-title{font-size:1rem;font-weight:500;line-height:1.4rem}.case-detail{opacity:.45;max-width:46ch;font-size:.9rem;line-height:1.3rem}.case-actions{align-items:center;gap:calc(var(--u) * 18);display:flex}.case-view{letter-spacing:.05em;text-transform:uppercase;background:var(--case-accent,var(--tc));color:var(--case-ink,var(--bc));transition:transform .3s var(--ease-out), filter .3s var(--ease-out), box-shadow .3s var(--ease-out);border-radius:99px;align-items:center;gap:.6em;padding:.85em 1.15em;font-size:.72rem;font-weight:600;line-height:1;display:none}.case-view[href]:not([href=\#]){display:inline-flex}.case-view:hover{filter:brightness(1.06)saturate(1.04);box-shadow:0 14px 30px -10px color-mix(in srgb, var(--case-accent,#f7f7f7) 60%, transparent);transform:translateY(-2px)}.case-view:after{content:"↗";transition:transform .4s var(--ease-expo);font-size:1.05em;line-height:0}.case-view:hover:after{transform:translate(2px,-2px)}.case-view:active{transform:translateY(0)scale(.98)}.case-close{width:calc(var(--u) * 50);height:calc(var(--u) * 50);border-radius:var(--radius);-webkit-backdrop-filter:blur(6px);border:1px solid var(--hair);transition:background .3s var(--ease-out);background:#08080873;place-items:center;display:grid}.case-close svg{transition:transform .55s var(--ease-expo)}.case-close:hover svg{transform:rotate(90deg)}.case-close:hover{background:#f7f7f71f}.case-brief{width:min(1020px,88vw);margin:calc(var(--u) * 6) auto 0;padding:calc(var(--u) * 24) 0 0;gap:calc(var(--u) * 50);border-top:1px solid #f7f7f71a;flex:none;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);display:grid}.case-blurb{color:#f7f7f7a8;max-width:62ch;font-size:.94rem;line-height:1.5rem}.case-facts{align-items:flex-start;gap:calc(var(--u) * 14);flex-direction:column;display:flex}.case-features{gap:calc(var(--u) * 8);flex-wrap:wrap;display:flex}.case-features li{color:#f7f7f7b8;transition:transform .4s var(--ease-expo), border-color .3s var(--ease-out), color .3s var(--ease-out);border:1px solid #f7f7f724;border-radius:99px;align-items:center;gap:.5em;padding:.62em .8em;font-size:.7rem;line-height:1;display:inline-flex}.case-features li:before{content:"";background:var(--case-accent,var(--tc));width:.32em;height:.32em;transition:transform .4s var(--ease-expo);border-radius:50%}.case-features li:hover{color:#f7f7f7eb;border-color:#f7f7f752;transform:translateY(-1px)}.case-features li:hover:before{transform:scale(1.6)}.case-stack{letter-spacing:.04em;color:#f7f7f761;font-size:.64rem}.case-scroll{overscroll-behavior:contain;scroll-snap-type:y proximity;scrollbar-width:none;min-height:0;padding:calc(var(--u) * 16) calc(var(--u) * 50) calc(var(--u) * 130);align-items:center;gap:calc(var(--u) * 60);flex-direction:column;flex:1;display:flex;overflow-y:auto}.case-scroll::-webkit-scrollbar{display:none}.case-card{width:min(94vw, max(820px, var(--case-fit,1080px)));scroll-snap-align:center;background:var(--tc);border-radius:calc(var(--radius) * 1.6);padding:calc(var(--u) * 14);cursor:zoom-in;opacity:0;transform-origin:50% 60%;flex:none;position:relative;transform:translateY(28px)scale(.985);box-shadow:inset 0 1px #fff6,0 40px 120px #0000008c}.case-card.is-visible{opacity:1;transform:perspective(1300px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:opacity .9s var(--ease-expo), transform 1s var(--ease-expo)}.case-card.is-tilting{transition:transform .18s var(--ease-out), opacity .9s var(--ease-expo)}.case-card:after{content:"";z-index:2;border-radius:inherit;background:radial-gradient(320px circle at var(--mx,50%) var(--my,30%), #ffffff2b, #fff0 62%);opacity:0;pointer-events:none;transition:opacity .45s var(--ease-out);position:absolute;top:0;bottom:0;left:0;right:0}.case-card.is-tilting:after{opacity:1;transition:opacity .2s var(--ease-out)}.case-card canvas,.case-card img{border-radius:calc(var(--radius) * .55);background:0 0;width:100%;height:auto}.case-caption{padding:calc(var(--u) * 14) calc(var(--u) * 6) calc(var(--u) * 2);color:var(--bc);opacity:.5;justify-content:space-between;gap:1rem;font-size:.64rem;display:flex}.case-lightbox{z-index:50;padding:calc(var(--u) * 40) calc(var(--u) * 40) calc(var(--u) * 90);-webkit-backdrop-filter:blur(16px);opacity:0;pointer-events:none;transition:opacity .45s var(--ease-expo);cursor:zoom-out;background:#080808db;place-items:center;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.case-lightbox.is-open{opacity:1;pointer-events:auto}.case-lightbox canvas{border-radius:calc(var(--radius) * .55);width:auto;max-width:94vw;height:auto;max-height:calc(100dvh - 140px);box-shadow:0 60px 160px #000000a6}.case-lightbox .lb-meta{left:0;right:0;bottom:calc(var(--u) * 34);justify-content:center;align-items:center;gap:calc(var(--u) * 18);color:var(--tc);letter-spacing:.05em;font-size:.72rem;display:flex;position:absolute}.case-lightbox .lb-meta span:last-child{opacity:.45;font-variant-numeric:tabular-nums}.case-lightbox .lb-arrow{opacity:.55;cursor:pointer;transition:opacity .3s var(--ease-out);padding:.9em 1.1em;font-size:.86rem}.case-lightbox .lb-arrow:hover{opacity:1}.loader{z-index:60;padding-bottom:calc(var(--u) * 55);justify-content:flex-end;align-items:center;gap:calc(var(--u) * 16);background:var(--bc);color:var(--tc);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.loader-arc{width:108px;height:21.4px;overflow:visible}.loader-count{font-variant-numeric:tabular-nums;letter-spacing:.01em;opacity:.45;height:1.424rem;font-size:1.424rem;font-weight:500;line-height:1.424rem;display:flex}.loader-count>span{text-align:center;width:.72em;height:1.424rem;display:block;overflow:hidden}.loader-count span span{line-height:1.424rem}body.is-ready .loader{pointer-events:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.grain{display:none}}@media (max-width:767px){.head{padding:calc(var(--u) * 100)}.identity h1,.role,.about-toggle{font-size:1.266rem;line-height:1.75rem}.about-toggle,.swap,.swap span{height:1.75rem}.indicator{bottom:calc(var(--u) * 55);gap:calc(var(--u) * 12)}.dock-list button{padding:calc(var(--u) * 7) calc(var(--u) * 12);font-size:.72rem}.dock-list button:hover{--tz:0px;transform:none}.case-head{padding:calc(var(--u) * 70) calc(var(--u) * 50) calc(var(--u) * 4);gap:calc(var(--u) * 18);flex-direction:column}.case-actions{justify-content:space-between;width:100%;position:static}.case-view{padding:.9em 1.15em;font-size:1rem}.case-close{width:44px;height:44px}.case-brief{gap:calc(var(--u) * 16);width:100%;padding-top:calc(var(--u) * 18);grid-template-columns:1fr;margin:0 auto}.case-blurb{font-size:1rem;line-height:1.55rem}.case-features li{padding:.6em .75em;font-size:.8rem}.case-stack{font-size:.72rem}.case-scroll{padding:0 calc(var(--u) * 50) calc(var(--u) * 120)}.case-card{width:100%;padding:calc(var(--u) * 12)}.panel{top:calc(var(--u) * 50);right:calc(var(--u) * 50);bottom:calc(var(--u) * 50);left:calc(var(--u) * 50);width:auto}.panel-head{padding:calc(var(--u) * 22) calc(var(--u) * 30)}.panel-scroll{padding:calc(var(--u) * 40)}.panel-scroll .block+.block{margin-top:calc(var(--u) * 60)}.capabilities{row-gap:calc(var(--u) * 16);grid-template-columns:1fr}}@media (max-width:420px){.indicator-title{min-width:6ch}}
