@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #0d0d0f;--accent: #00c4a0;--text: #e8e6e0;--surface: #2a2a2e;--text-muted: color-mix(in srgb, var(--text) 78%, var(--bg));--text-faint: color-mix(in srgb, var(--text) 58%, var(--bg));--accent-dim: color-mix(in srgb, var(--accent) 55%, var(--bg));--accent-glow: color-mix(in srgb, var(--accent) 28%, transparent);--surface-raised: color-mix(in srgb, var(--surface) 80%, var(--text));--hairline: color-mix(in srgb, var(--text) 14%, transparent);--light-lab: #cfe8ff;--light-library: #ffcf8f;--light-podium: #fff4d6;--light-pool: #7fffe4;--font-display: "Space Grotesk Variable", system-ui, sans-serif;--font-body: "Inter Variable", system-ui, sans-serif;--step--1: clamp(.83rem, .8rem + .15vw, .9rem);--step-0: clamp(1rem, .95rem + .25vw, 1.13rem);--step-1: clamp(1.35rem, 1.2rem + .7vw, 1.8rem);--step-2: clamp(1.8rem, 1.5rem + 1.5vw, 2.8rem);--step-3: clamp(2.4rem, 1.8rem + 3vw, 4.5rem);--tracking-label: .22em;--space-2xs: .25rem;--space-xs: .5rem;--space-s: .875rem;--space-m: 1.5rem;--space-l: 2.5rem;--space-xl: 4rem;--space-2xl: 7rem;--radius: 10px;--radius-pill: 999px;--tempo-pop: .18s;--tempo-hover: .24s;--tempo-flicker: .52s;--tempo-lightup: .9s;--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--z-scene: 1;--z-objects: 10;--z-robot: 12;--z-light: 15;--z-narrator: 30;--z-contact: 40;--z-transition: 50}:root[data-mode=hurry]{--tempo-flicker: 0ms;--tempo-lightup: .12s}@media(prefers-reduced-motion:reduce){:root{--tempo-pop: 0ms;--tempo-hover: 0ms;--tempo-flicker: 0ms;--tempo-lightup: 0ms}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark;-webkit-text-size-adjust:100%}body{min-height:100dvh;color:var(--text);background-color:var(--bg);background-image:radial-gradient(circle at 50% 50%,color-mix(in srgb,#d69a52 32%,transparent) 1px,transparent 1.6px),radial-gradient(circle at 50% 50%,color-mix(in srgb,#8d7f6a 24%,transparent) 1.4px,transparent 2px),radial-gradient(ellipse 70% 50% at 30% 20%,color-mix(in srgb,var(--text) 4%,transparent),transparent 70%);background-size:46px 46px,137px 119px,100% 160vh;background-position:0 0,23px 61px,0 0;font-family:var(--font-body);font-size:var(--step-0);line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:1.1;font-weight:600;text-wrap:balance}p{text-wrap:pretty}img,svg{display:block;max-width:100%}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}:root[data-scroll-locked]{cursor:pointer;user-select:none}#robot-layer{position:fixed;inset:0;z-index:var(--z-robot);pointer-events:none}#light-layer{position:fixed;inset:0;z-index:var(--z-light);pointer-events:none}#light-layer canvas{display:block}#scene-root{position:relative;z-index:var(--z-scene);min-height:100dvh}#narrator-root{position:fixed;inset:0;z-index:var(--z-narrator);pointer-events:none}.label{font-family:var(--font-display);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.scaffold{position:relative;min-height:100dvh;display:grid;align-content:center;gap:var(--space-m);max-width:62ch;margin-inline:auto;padding:var(--space-xl) var(--space-l)}.scaffold__back{position:absolute;left:var(--space-l);top:var(--space-xl);font-size:var(--step--1);letter-spacing:.04em;color:var(--text-faint);transition:color var(--tempo-hover) var(--ease-out)}.scaffold__back:hover{color:var(--accent)}.scaffold__title{font-size:var(--step-2)}.scaffold__body{color:var(--text-muted)}.scaffold__debug{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2xs) var(--space-m);padding:var(--space-s) var(--space-m);background:var(--surface);border-radius:var(--radius);font-size:var(--step--1)}.scaffold__debug dt{color:var(--text-faint);font-family:var(--font-display);letter-spacing:.04em}.scaffold__debug dd{color:var(--accent);font-variant-numeric:tabular-nums}.scaffold__links{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-m);margin-top:var(--space-s)}.scaffold__link{color:var(--accent);font-size:var(--step--1);letter-spacing:.02em;padding-block:var(--space-2xs);border-bottom:1px solid transparent;transition:border-color var(--tempo-hover) var(--ease-out)}.scaffold__link:hover{border-bottom-color:var(--accent)}.robot{position:fixed;left:0;top:0;translate:var(--robot-x, 50vw) var(--robot-y, 50vh);will-change:translate}.robot__rig{position:relative;translate:-50% -50%}.robot__body{width:150px;scale:var(--facing, 1) 1;transition:scale var(--tempo-flicker) var(--ease-out),opacity var(--tempo-flicker) var(--ease-out)}.robot__wheel{transform-box:fill-box;transform-origin:center;rotate:var(--wheel-angle, 0deg)}.robot__tyre{fill:color-mix(in srgb,var(--accent) 10%,var(--surface));stroke:var(--accent);stroke-width:3}.robot__spoke{stroke:color-mix(in srgb,var(--accent) 60%,transparent);stroke-width:2;stroke-linecap:round}.robot__axle,.robot__mast{stroke:var(--accent);stroke-width:3;stroke-linecap:round}.robot__panel{fill:color-mix(in srgb,var(--accent) 45%,var(--surface))}.robot__head{position:absolute;left:50%;bottom:100%;width:104px;margin-left:-52px;margin-bottom:-14px;translate:var(--look-x, 0) var(--look-y, 0);rotate:var(--tilt, 0deg);transform-origin:50% 78%;transition:translate var(--tempo-pop) linear,rotate var(--tempo-pop) linear,width var(--tempo-flicker) var(--ease-out)}.robot__lens{fill:color-mix(in srgb,var(--accent) 70%,var(--bg));transform-box:fill-box;transform-origin:center}.robot[data-speaking=true] .robot__lens{animation:iris .32s ease-in-out infinite alternate}.robot[data-speaking=true] .robot__lens-unit:last-of-type .robot__lens{animation-delay:90ms}.robot[data-speaking=true] .robot__shape{stroke-dasharray:none;filter:drop-shadow(0 0 10px var(--accent-glow))}@keyframes iris{0%{scale:.72;opacity:.8}to{scale:1.06;opacity:1}}@media(prefers-reduced-motion:reduce){.robot[data-speaking=true] .robot__lens{animation:none;scale:1.06}}.robot__glint{fill:var(--text);opacity:.85}.robot__yoke{stroke:var(--accent);stroke-width:4;stroke-linecap:round}.robot[data-mode=head] .robot__body{opacity:0;pointer-events:none}.robot[data-mode=head] .robot__head{position:static;margin:0;width:92px}@media(max-width:44rem){.robot[data-mode=head] .robot__head{opacity:0;pointer-events:none}}.robot__body,.robot__head{transition:opacity var(--tempo-lightup) var(--ease-out),scale var(--tempo-flicker) var(--ease-out)}.robot[data-reveal=hidden] .robot__rig,.robot[data-reveal=eyes] .robot__body,.robot[data-reveal=eyes] .robot__yoke,.robot[data-reveal=eyes] .robot__lens-unit .robot__shape{opacity:0}.robot[data-reveal=eyes] .robot__lens{filter:drop-shadow(0 0 14px var(--accent)) drop-shadow(0 0 30px var(--accent-glow));animation:wake 1.1s ease-in-out infinite alternate}.robot[data-reveal=eyes] .robot__glint{filter:drop-shadow(0 0 6px var(--text))}@keyframes wake{0%{opacity:.55;scale:.9}to{opacity:1;scale:1.05}}.robot__body,.robot__yoke,.robot__lens-unit .robot__shape{transition:opacity var(--tempo-lightup) var(--ease-out)}@media(prefers-reduced-motion:reduce){.robot[data-reveal=eyes] .robot__lens{animation:none}}.robot__shape{fill:color-mix(in srgb,var(--accent) 14%,var(--surface));stroke:var(--accent);stroke-width:2.5;stroke-dasharray:7 5}.robot__detail{fill:var(--accent)}.robot svg{width:100%;height:auto;overflow:visible}@media(prefers-reduced-motion:reduce){.robot{will-change:auto}.robot__head,.robot__body{transition:none}}.narrator{position:absolute;inset:0;pointer-events:none}.narrator__bubble{position:absolute;left:var(--anchor-x, 50vw);top:var(--anchor-y, 50vh);translate:-50% calc(-100% - 22px);width:max-content;max-width:min(34ch,calc(100vw - 3rem));padding:var(--space-s) var(--space-l) var(--space-s) var(--space-m);background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:var(--radius);backdrop-filter:blur(6px);opacity:0;scale:.96;transition:opacity var(--tempo-pop) var(--ease-out),scale var(--tempo-pop) var(--ease-pop)}.narrator[data-exiting=true] .narrator__bubble{animation:bubble-away var(--tempo-flicker) var(--ease-out) forwards}@keyframes bubble-away{0%{opacity:1;scale:1;translate:-50% calc(-100% - 22px)}to{opacity:0;scale:.9;translate:-50% calc(-100% - 22px - var(--anchor-y, 50vh) - 4rem)}}@media(prefers-reduced-motion:reduce){.narrator[data-exiting=true] .narrator__bubble{animation:none}}.narrator__bubble:after{content:"";position:absolute;top:100%;left:50%;translate:-50% 0;border:9px solid transparent;border-top-color:color-mix(in srgb,var(--accent) 35%,transparent)}.narrator[data-state=narrate] .narrator__bubble,.narrator[data-state=react] .narrator__bubble,.narrator[data-state=ask] .narrator__bubble,.narrator[data-state=reply] .narrator__bubble{opacity:1;scale:1}.narrator[data-state=react] .narrator__bubble{background:color-mix(in srgb,var(--surface) 70%,transparent);border-color:var(--hairline)}.narrator[data-state=react] .narrator__bubble:after{border-top-color:var(--hairline)}.narrator__line{font-size:var(--step-0);line-height:1.5;color:var(--text);min-height:1.5em}.narrator[data-state=react] .narrator__line{color:var(--text-muted);font-style:italic}.narrator__continue{display:none;position:absolute;right:var(--space-s);bottom:var(--space-2xs);width:0;height:0;border:5px solid transparent;border-top-color:var(--accent);animation:nudge-down 1.1s ease-in-out infinite}.narrator[data-awaiting=true] .narrator__continue{display:block}@keyframes nudge-down{0%,to{translate:0 0;opacity:.45}50%{translate:0 3px;opacity:1}}.narrator[data-awaiting=true] .narrator__bubble{cursor:pointer}.narrator[data-state=narrate] .narrator__line:after,.narrator[data-state=react] .narrator__line:after,.narrator[data-state=ask] .narrator__line:after,.narrator[data-state=reply] .narrator__line:after{content:"";display:inline-block;width:.5ch;height:1em;margin-left:1px;translate:0 .15em;background:var(--accent);animation:caret 1s steps(2) infinite}.narrator[data-awaiting=true] .narrator__line:after{display:none}@keyframes caret{50%{opacity:0}}.narrator__choices{display:none;flex-direction:column;align-items:center;gap:var(--space-s);margin-top:var(--space-s);pointer-events:auto}.narrator[data-state=ask][data-awaiting=true] .narrator__choices{display:flex}.narrator[data-state=ask] .narrator__continue{display:none}.narrator__choice{font:inherit;cursor:pointer;text-align:center;white-space:nowrap;background:none;border:none;padding:0;translate:0 0;transition:background var(--tempo-hover) var(--ease-out),border-color var(--tempo-hover) var(--ease-out),color var(--tempo-hover) var(--ease-out),box-shadow var(--tempo-hover) var(--ease-out),translate var(--tempo-hover) var(--ease-out)}.narrator__choice[data-variant=primary]{font-family:var(--font-display);font-size:var(--step--1);font-weight:600;border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-m);color:var(--bg);background:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 70%,black);box-shadow:0 3px color-mix(in srgb,var(--accent) 55%,black)}.narrator__choice[data-variant=primary]:hover,.narrator__choice[data-variant=primary]:focus-visible{background:color-mix(in srgb,var(--accent) 88%,white);translate:0 -1px;box-shadow:0 4px color-mix(in srgb,var(--accent) 55%,black)}.narrator__choice[data-variant=primary]:active{translate:0 2px;box-shadow:0 1px color-mix(in srgb,var(--accent) 55%,black)}.narrator__choice[data-variant=secondary]{font-size:var(--step--1);color:var(--text-faint)}.narrator__choice[data-variant=secondary]:hover,.narrator__choice[data-variant=secondary]:focus-visible{color:var(--text-muted)}.narrator__transcript{position:absolute;left:clamp(var(--space-m),4vw,var(--space-xl));bottom:var(--space-m);width:min(38ch,calc(100vw - 2 * var(--space-m)));list-style:none;display:grid;gap:var(--space-2xs);max-height:30vh;overflow-y:auto;overscroll-behavior:contain;pointer-events:auto}.narrator__transcript:empty{display:none}.narrator__entry{font-size:var(--step--1);line-height:1.45;color:var(--text-muted);padding-left:var(--space-s);border-left:2px solid color-mix(in srgb,var(--accent) 40%,transparent);animation:entry-in var(--tempo-pop) var(--ease-out) both}@keyframes entry-in{0%{opacity:0;translate:0 4px}}:root[data-mode=hurry] .narrator__bubble{display:none}@media(max-width:44rem){.narrator__transcript{left:var(--space-m);right:var(--space-m);width:auto;max-height:22vh}}.sound-toggle{position:fixed;right:var(--space-m);bottom:var(--space-m);z-index:var(--z-contact);display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-s);background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid var(--hairline);border-radius:var(--radius-pill);backdrop-filter:blur(6px);font-family:var(--font-display);font-size:var(--step--1);letter-spacing:.04em;color:var(--text-faint);opacity:.55;transition:opacity var(--tempo-hover) var(--ease-out),color var(--tempo-hover) var(--ease-out),border-color var(--tempo-hover) var(--ease-out)}.sound-toggle:hover,.sound-toggle:focus-visible{opacity:1;color:var(--text)}.sound-toggle[data-on=true]{opacity:1;color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.sound-toggle__icon{display:flex;align-items:center;gap:2px;height:12px}.sound-toggle__icon:before,.sound-toggle__icon:after{content:"";width:2px;background:currentColor;border-radius:1px;height:3px;transition:height var(--tempo-pop) var(--ease-out)}.sound-toggle[data-on=true] .sound-toggle__icon:before{height:11px}.sound-toggle[data-on=true] .sound-toggle__icon:after{height:7px}@media(max-width:44rem){.sound-toggle__label{display:none}}.contact{position:fixed;left:var(--space-m);bottom:var(--space-m);z-index:var(--z-contact)}.contact__toggle{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-s);background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid var(--hairline);border-radius:var(--radius-pill);backdrop-filter:blur(6px);font-family:var(--font-display);font-size:var(--step--1);letter-spacing:.04em;color:var(--text-faint);opacity:.55;transition:opacity var(--tempo-hover) var(--ease-out),color var(--tempo-hover) var(--ease-out),border-color var(--tempo-hover) var(--ease-out)}.contact__toggle:hover,.contact__toggle:focus-visible,.contact__toggle[aria-expanded=true]{opacity:1;color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.contact__icon{display:block;width:10px;height:10px;border-radius:50%;background:currentColor}@media(max-width:44rem){.contact__label{display:none}}.contact__panel{position:absolute;left:0;bottom:calc(100% + var(--space-s));width:min(22rem,calc(100vw - 2 * var(--space-m)));display:grid;gap:var(--space-m);padding:var(--space-m);background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--hairline);border-radius:var(--radius);backdrop-filter:blur(8px);box-shadow:0 24px 48px -20px #0009}.contact__panel[hidden]{display:none}.contact__details{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2xs) var(--space-m);font-size:var(--step--1)}.contact__details dt{color:var(--text-faint);font-family:var(--font-display);letter-spacing:.03em}.contact__details dd a{color:var(--text);border-bottom:1px solid transparent;transition:color var(--tempo-hover) var(--ease-out),border-color var(--tempo-hover) var(--ease-out)}.contact__details dd a:hover,.contact__details dd a:focus-visible{color:var(--accent);border-bottom-color:var(--accent)}.contact__or{font-size:var(--step--1);color:var(--text-faint);border-top:1px solid var(--hairline);padding-top:var(--space-m)}.contact__form{display:grid;gap:var(--space-s)}.contact__field{display:grid;gap:var(--space-2xs);font-size:var(--step--1);color:var(--text-muted)}.contact__field input,.contact__field textarea{font:inherit;color:var(--text);background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--hairline);border-radius:calc(var(--radius) * .6);padding:var(--space-2xs) var(--space-s);resize:vertical}.contact__field input:focus-visible,.contact__field textarea:focus-visible{border-color:var(--accent)}.contact__submit{justify-self:start;font-family:var(--font-display);font-size:var(--step--1);font-weight:600;color:var(--bg);background:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 70%,black);border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-m);transition:background var(--tempo-hover) var(--ease-out)}.contact__submit:hover,.contact__submit:focus-visible{background:color-mix(in srgb,var(--accent) 88%,white)}.contact__submit:disabled{opacity:.6;cursor:default}.contact__status{font-size:var(--step--1);color:var(--text-faint)}.contact__status:empty{display:none}.contact__status[data-state=success]{color:var(--accent)}.contact__status[data-state=error]{color:#ff8f8f}
