@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-grotesque.woff2)format("woff2");font-weight:500 700;font-stretch:87.5% 100%;font-style:normal;font-display:swap}@font-face{font-family:Literata;src:url(/fonts/literata.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Literata;src:url(/fonts/literata-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}:root{--ground:#05060d;--ink:#edeff7;--muted:#8a90a6;--line:#1b1f33;--surface:#0b0d18;--teal-deep:#0e3a4a;--teal:#1f7a8c;--accent:#ff5c39;--on-accent:#05060d;--radius:14px;--backdrop:color-mix(in srgb, var(--ground) 88%, transparent);--backdrop-edge:#edeff712;--font-display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--font-text:"Literata", Georgia, "Times New Roman", serif;--gutter:clamp(16px, 4vw, 56px);--shadow:0 1px 2px #0006, 0 18px 48px -12px #000000b3;--ease-out:cubic-bezier(.22, 1, .36, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{background:var(--ground);-webkit-text-size-adjust:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.55}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.stage{z-index:0;pointer-events:none;position:fixed;inset:0}.layer .stage{z-index:-1}.root{display:contents}.stage canvas{opacity:0;transition:opacity 1.4s;display:block}:root[data-name-ready] .stage canvas{opacity:1}.sky-stars,.sky-haze{position:absolute;inset:0}.sky-stars{opacity:.7;background-image:radial-gradient(1px 1px at 12% 18%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 72% 12%,#cfe0ff 50%,#0000 51%),radial-gradient(1.5px 1.5px at 38% 64%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 86% 72%,#ffe7cf 50%,#0000 51%),radial-gradient(1px 1px at 55% 33%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 24% 82%,#cfe0ff 50%,#0000 51%),radial-gradient(1.5px 1.5px at 93% 40%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 6% 52%,#fff 50%,#0000 51%);background-size:260px 260px,310px 310px,370px 370px,230px 230px,410px 410px,290px 290px,450px 450px,200px 200px}.sky-haze{background:radial-gradient(40% 30% at 50% 46%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 70%), radial-gradient(55% 45% at 85% 80%, color-mix(in srgb, var(--teal-deep) 55%, transparent), transparent 70%)}.layer{z-index:1;position:relative}.scene{min-height:100vh;min-height:100svh;position:relative}.scene--hero{min-height:max(560px,100svh)}.scene--hero:after{content:"";background:linear-gradient(to top, color-mix(in srgb, var(--ground) 82%, transparent), transparent);pointer-events:none;z-index:-1;height:46%;position:absolute;inset:auto 0 0}.hero-roles{top:max(14px, env(safe-area-inset-top));left:var(--gutter);right:var(--gutter);min-height:44px;color:var(--muted);text-shadow:0 0 12px var(--ground), 0 0 4px var(--ground);flex-wrap:wrap;align-items:center;column-gap:.3em;margin:0;font-size:.9375rem;line-height:1.35;display:flex;position:absolute}.hero-roles span{white-space:nowrap}.hero-name{inset:0 var(--gutter);font-family:var(--font-display);font-variation-settings:"wdth" 87.5, "opsz" 96;letter-spacing:-.01em;text-align:center;text-wrap:balance;pointer-events:none;place-items:center;margin:0;padding-bottom:6vh;font-size:clamp(4.5rem,14.5vw,13rem);font-weight:700;line-height:.92;transition:opacity .6s;display:grid;position:absolute}:root[data-webgl=on][data-name-ready] .hero-name{opacity:0}.hero-copy{left:var(--gutter);right:var(--gutter);bottom:max(36px, calc(env(safe-area-inset-bottom) + 24px));max-width:34rem;position:absolute}.hero-line,.hero-sub{animation:rise 1s var(--ease-out) .35s both}.hero-sub{animation-delay:.5s}.hero-line{font-family:var(--font-display);font-variation-settings:"wdth" 88, "opsz" 64;letter-spacing:-.022em;text-wrap:balance;margin:0;font-size:clamp(1.625rem,1rem + 2vw,2.875rem);font-weight:560;line-height:1.04}.hero-sub{color:var(--muted);margin:.75rem 0 0;font-size:clamp(1rem,.94rem + .3vw,1.1875rem);font-style:italic}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.scroll-cue{left:50%;bottom:max(28px, calc(env(safe-area-inset-bottom) + 18px));background:linear-gradient(to bottom, transparent, color-mix(in srgb, var(--ink) 40%, transparent));width:1px;height:46px;position:absolute;overflow:hidden}.scroll-cue:after{content:"";background:var(--accent);width:5px;height:5px;box-shadow:0 0 8px var(--accent);animation:cue 2.2s var(--ease-out) infinite;border-radius:50%;position:absolute;top:0;left:-2px}@keyframes cue{0%{opacity:0;transform:translateY(-6px)}30%{opacity:1}to{opacity:0;transform:translateY(46px)}}.progress-rail{z-index:15;background:color-mix(in srgb, var(--ink) 12%, transparent);pointer-events:none;border-radius:2px;width:2px;height:min(34vh,260px);position:fixed;top:50%;right:10px;transform:translateY(-50%)}.progress-rail span{border-radius:inherit;background:var(--accent);box-shadow:0 0 8px color-mix(in srgb, var(--accent) 60%, transparent);transform-origin:top;transform:scaleY(var(--progress,0));position:absolute;inset:0}.panel,.orbit-text{background:var(--backdrop);border:1px solid var(--backdrop-edge);-webkit-backdrop-filter:blur(10px)}.scene--project{padding:96px var(--gutter);align-items:center;display:flex}.scene--project[data-side=end]{justify-content:flex-end}.panel{border-radius:calc(var(--radius) + 6px);width:min(460px,42vw);padding:clamp(20px,2.4vw,32px)}.panel--wide{width:min(520px,44vw)}.panel-title{font-family:var(--font-display);font-variation-settings:"wdth" 87.5, "opsz" 96;letter-spacing:-.02em;margin:0;font-size:clamp(2.25rem,1.4rem + 2.8vw,4rem);font-weight:700;line-height:.95}.panel-body{max-width:38ch;margin:1rem 0 0;font-size:clamp(1rem,.95rem + .25vw,1.125rem);line-height:1.6}.panel-actions{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:1.5rem;display:flex}.cta{border-radius:var(--radius);background:var(--ink);min-height:44px;color:var(--ground);font-family:var(--font-display);align-items:center;gap:8px;padding:0 18px;font-size:.9375rem;font-weight:600;text-decoration:none;transition:background-color .2s,color .2s;display:inline-flex}.cta:hover{background:var(--accent);color:var(--on-accent)}.ghost-button{min-height:44px;color:var(--ink);font-family:var(--font-display);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:5px;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:.9375rem;font-weight:500;text-decoration-thickness:2px}.video{margin:1.25rem 0 0}.video-frame{aspect-ratio:16/9;border:1px solid var(--backdrop-edge);border-radius:var(--radius);background:var(--ground);position:relative;overflow:hidden}.video-frame iframe,.video-facade{border:0;width:100%;height:100%;position:absolute;inset:0}.video-facade{cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.video-facade img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease-out), filter .3s ease;filter:saturate(.92)brightness(.88);position:absolute;inset:0}.video-facade:hover img,.video-facade:focus-visible img{filter:none;transform:scale(1.03)}.video-play{background:var(--accent);width:58px;height:58px;color:var(--on-accent);box-shadow:0 0 0 8px color-mix(in srgb, var(--accent) 22%, transparent), 0 10px 30px #00000080;transition:transform .25s var(--ease-out);border-radius:50%;place-items:center;display:grid;position:relative}.video-play svg{margin-left:3px}.video-facade:hover .video-play{transform:scale(1.08)}.video-caption{color:var(--muted);margin-top:.6rem;font-size:.875rem;line-height:1.45}.game{margin-top:1.5rem}.game-hud{font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--muted);justify-content:space-between;margin-bottom:8px;font-size:.875rem;font-weight:500;display:flex}.game-stage{border:1px solid var(--line);border-radius:var(--radius);background:var(--ground);cursor:pointer;touch-action:manipulation;position:relative;overflow:hidden}.game-stage[data-running]{cursor:none;touch-action:none}.game-stage canvas{width:100%;display:block}.game-overlay{text-align:center;background:color-mix(in srgb, var(--ground) 80%, transparent);place-content:center;gap:6px;padding:20px;display:grid;position:absolute;inset:0}.game-callout{font-family:var(--font-display);font-variation-settings:"wdth" 92;letter-spacing:-.01em;margin:0;font-size:clamp(1.125rem,1rem + .6vw,1.5rem);font-weight:650}.game-hint{max-width:30ch;color:var(--muted);margin:0;font-size:.9375rem}.scene--background{height:200vh;min-height:0;height:200svh}.orbit-pin{height:100vh;height:100svh;position:sticky;top:0;overflow:hidden}.star-anchor{left:calc(var(--gutter) + 8px);border-radius:50%;width:54px;height:54px;position:absolute;top:15%}.orbit-layout{padding:72px var(--gutter) 72px calc(var(--gutter) + 96px);flex-direction:column;justify-content:center;display:flex;position:absolute;inset:0}.orbit-title{border:1px solid var(--backdrop-edge);border-radius:var(--radius);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);align-self:flex-start;margin-bottom:clamp(16px,3vh,32px);padding:6px 16px 10px}.orbit-list{gap:clamp(10px,2.2vh,22px);margin:0;padding:0;list-style:none;display:grid}.orbit-item{--step:clamp(28px, 5vw, 80px);margin-left:calc(var(--i) * var(--step));align-items:center;gap:18px;display:flex}.planet-slot{width:var(--planet);height:var(--planet);border-radius:50%;flex:none}.planet-slot--0{--planet:56px}.planet-slot--1{--planet:62px}.planet-slot--2{--planet:92px}.planet-slot--3{--planet:76px}.orbit-text{border-radius:var(--radius);max-width:34ch;margin:0;padding:10px 16px;font-size:clamp(1rem,.95rem + .3vw,1.1875rem);line-height:1.45}.orbit-tools{border-radius:var(--radius);background:var(--backdrop);max-width:44ch;color:var(--muted);margin:clamp(16px,3vh,28px) 0 0 calc(4*clamp(28px,5vw,80px));padding:10px 16px;font-size:.9375rem}:root[data-webgl=off] .scene--interlude{display:none}.scene--passage{height:280vh;min-height:0;height:280svh}.passage-marker{width:1px;height:1px;position:absolute;top:45%;left:0}.scene--contact{padding:96px var(--gutter);place-items:center;display:grid}.panel--contact{text-align:center;width:min(560px,100%)}.contact-email{font-family:var(--font-display);font-variation-settings:"wdth" 88, "opsz" 48;letter-spacing:-.02em;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:8px;overflow-wrap:anywhere;margin-top:1.25rem;font-size:clamp(1.5rem,1rem + 2.6vw,2.75rem);font-weight:600;text-decoration-thickness:3px;display:inline-block}.contact-email:hover{color:var(--accent)}.contact-links{flex-wrap:wrap;justify-content:center;gap:12px;margin:1.75rem 0 0;padding:0;list-style:none;display:flex}.contact-links a{border:1px solid color-mix(in srgb, var(--ink) 22%, transparent);border-radius:var(--radius);min-height:44px;font-family:var(--font-display);align-items:center;padding:0 18px;font-weight:500;text-decoration:none;transition:border-color .2s,color .2s;display:inline-flex}.contact-links a:hover{border-color:var(--accent);color:var(--accent)}.dock{right:var(--gutter);bottom:max(20px, calc(env(safe-area-inset-bottom) + 12px));z-index:20;font-family:var(--font-display);flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.dock-toggle{border:1px solid color-mix(in srgb, var(--ink) 14%, transparent);border-radius:var(--radius);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);height:44px;color:var(--ink);font:inherit;cursor:pointer;align-items:center;gap:10px;padding:0 18px 0 14px;font-size:.9375rem;font-weight:500;transition:border-color .2s;display:inline-flex}.dock-toggle:hover{border-color:var(--ink)}.dock-toggle[data-compact]{justify-content:center;width:44px;padding:0}.dock-toggle[data-compact] .dock-toggle-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dock-dot{width:12px;height:12px;box-shadow:0 0 10px var(--accent);border-radius:50%}.dock-panel{width:min(304px, calc(100vw - 2 * var(--gutter)));border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);border-radius:calc(var(--radius) + 4px);background:var(--surface);box-shadow:var(--shadow);animation:pop .22s var(--ease-out);transform-origin:100% 100%;gap:18px;padding:18px 18px 14px;display:grid}@keyframes pop{0%{opacity:0;transform:translateY(6px)scale(.98)}}.dock-row{grid-template-columns:1fr auto;align-items:center;row-gap:10px;min-width:0;display:grid}.dock-row>.range,.dock-row>.dock-note{grid-column:1/-1}.dock-label{font-size:.9375rem;font-weight:600}.dock-value{font-variant-numeric:tabular-nums;color:var(--muted);align-items:center;gap:8px;font-size:.8125rem;display:inline-flex}.dock-note{font-family:var(--font-text);color:var(--muted);margin:-2px 0 0;font-size:.8125rem;line-height:1.4}.swatch{border-radius:50%;width:14px;height:14px}.range{appearance:none;cursor:pointer;--track:linear-gradient(var(--line), var(--line));background:0 0;width:100%;height:28px;margin:0}.range--hue{--track:linear-gradient(to right, #f85996, #e77b00, #8ea900, #00b69f, #00a6fb, #af79ff, #f75999)}@supports (color:lab(0% 0 0)){.range--hue{--track:linear-gradient(to right, lab(61.5231% 64.9723 .91331), lab(63.0462% 44.5912 119.259), lab(65.5605% -26.1564 97.2437), lab(66.5479% -72.2491 -.434554), lab(63.5512% -15.4952 -61.774), lab(60.9832% 43.7152 -61.9318), lab(61.5043% 64.8912 -.449109))}}.range::-webkit-slider-runnable-track{background:var(--track);border-radius:6px;height:6px}.range::-moz-range-track{background:var(--track);border-radius:6px;height:6px}.range::-webkit-slider-thumb{-webkit-appearance:none;border:3px solid var(--surface);background:var(--ink);border-radius:50%;width:20px;height:20px;margin-top:-7px}.range::-moz-range-thumb{border:3px solid var(--surface);background:var(--ink);border-radius:50%;width:14px;height:14px}.range:focus-visible{outline:none}.range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--accent)}.range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 2px var(--accent)}.text-button{color:var(--ink);font:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;justify-self:start;padding:4px 0;font-size:.875rem;text-decoration-thickness:2px}.text-button:disabled{color:var(--muted);-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);cursor:default}@media (max-aspect-ratio:4/5){.scene--project,.scene--project[data-side=end]{padding:45svh var(--gutter) max(88px, calc(env(safe-area-inset-bottom) + 76px));justify-content:stretch;align-items:flex-end}.scene--games{padding-top:32svh}.panel,.panel--wide{width:100%}.orbit-layout{padding:76px var(--gutter) 88px calc(var(--gutter) + 8px);justify-content:flex-start}.star-anchor{left:auto;right:calc(var(--gutter) + 4px);width:40px;height:40px;top:72px}.orbit-item{--step:10px;gap:12px}.planet-slot--0{--planet:40px}.planet-slot--1{--planet:44px}.planet-slot--2{--planet:60px}.planet-slot--3{--planet:56px}.orbit-text{padding:8px 12px;font-size:.96875rem}.orbit-tools{margin-left:0;font-size:.875rem}.hero-copy{bottom:max(92px, calc(env(safe-area-inset-bottom) + 80px))}.hero-roles{right:calc(var(--gutter) + 8px);font-size:.875rem}}:root[data-webgl=off] .scene--project{justify-content:center}:root[data-webgl=off] .planet-slot{background:radial-gradient(circle at 35% 30%,#c9b9a0,#4a3c30 60%,#0b0906);box-shadow:inset -6px -6px 14px #0009}:root[data-webgl=off] .planet-slot--1{background:radial-gradient(circle at 35% 30%,#dff0f4,#2e6b7a 60%,#071014)}:root[data-webgl=off] .planet-slot--2{background:repeating-linear-gradient(170deg,#c9a679 0 7%,#7a4a2c 7% 13%,#b68d62 13% 20%)}:root[data-webgl=off] .star-anchor{box-shadow:0 0 60px 20px color-mix(in srgb, var(--accent) 35%, transparent);background:radial-gradient(circle,#fff3dc 30%,#ffc98a 55%,#0000 72%)}@media (max-aspect-ratio:4/5){.scroll-cue{display:none}.progress-rail{width:2px;right:5px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}.game-stage--3d{aspect-ratio:16/10;min-height:220px}.game-stage--3d canvas{display:block;width:100%!important;height:100%!important}.game-placeholder{aspect-ratio:16/10;border:1px solid var(--line);border-radius:var(--radius);background:radial-gradient(60% 50% at 50% 60%, color-mix(in srgb, var(--accent) 10%, transparent), transparent), var(--ground);min-height:220px;margin-top:1.5rem}.game-share{border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);border-radius:var(--radius);background:var(--surface);min-height:40px;color:var(--ink);font-family:var(--font-display);cursor:pointer;justify-self:center;margin-top:6px;padding:0 16px;font-weight:600}.game-share:hover{border-color:var(--accent)}.deep-dive{z-index:40;padding:max(20px, env(safe-area-inset-top)) var(--gutter) max(20px, env(safe-area-inset-bottom));perspective:1400px;animation:dive-in .7s var(--ease-out) both;place-items:center;display:grid;position:fixed;inset:0}.deep-dive-backdrop{background:radial-gradient(80% 70% at 50% 50%, color-mix(in srgb, var(--ground) 55%, transparent), color-mix(in srgb, var(--ground) 92%, transparent));-webkit-backdrop-filter:blur(6px);cursor:zoom-out;border:0;padding:0;position:absolute;inset:0}@keyframes dive-in{0%{opacity:0}}.deep-dive-inner{width:min(1180px,100%);animation:dive-rise .9s var(--ease-out) both;gap:clamp(16px,3vh,28px);display:grid;position:relative}@keyframes dive-rise{0%{opacity:0;transform:translateZ(-260px)translateY(30px)scale(.94)}}.deep-dive-bar{border:1px solid var(--backdrop-edge);border-radius:calc(var(--radius) + 6px);background:var(--backdrop);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding:14px 20px;display:flex}.deep-dive-title{font-family:var(--font-display);font-variation-settings:"wdth" 87.5, "opsz" 96;letter-spacing:-.02em;margin:0;font-size:clamp(1.75rem,1.2rem + 1.6vw,2.75rem);font-weight:700}.deep-dive-actions{flex-wrap:wrap;align-items:center;gap:12px 20px;display:flex}.devices{--rx:0deg;--ry:0deg;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .35s var(--ease-out);grid-template-columns:1fr auto;align-items:end;gap:clamp(16px,3vw,40px);display:grid;position:relative}.device{border:1px solid color-mix(in srgb, var(--ink) 18%, transparent);box-shadow:0 30px 80px -20px #000000d9, 0 0 0 1px #0009, 0 0 60px -10px color-mix(in srgb, var(--accent) 25%, transparent);background:#0b0d14;margin:0;overflow:hidden}.device img{width:100%;height:auto;display:block}.device--desktop{border-radius:12px}.device-chrome{background:#151823;border-bottom:1px solid #22263a;align-items:center;gap:6px;height:30px;padding:0 12px;display:flex}.device-chrome span{background:#3a3f55;border-radius:50%;width:9px;height:9px}.device-chrome em{color:var(--muted);font-family:var(--font-display);background:#0d0f17;border-radius:6px;margin-left:10px;padding:2px 10px;font-size:.75rem;font-style:normal}.device--phone{background:#10121b;border-radius:30px;width:clamp(130px,17vw,230px);padding:8px;transform:translateZ(90px)translateY(-6%)}.device--phone img{border-radius:22px}@media (max-aspect-ratio:4/5){.devices{grid-template-columns:1fr;justify-items:center}.device--phone{width:42vw;margin-top:-26vw;margin-left:44vw}}.sound-toggle{right:calc(var(--gutter) + 56px);bottom:max(20px, calc(env(safe-area-inset-bottom) + 12px));z-index:20;border:1px solid color-mix(in srgb, var(--ink) 14%, transparent);border-radius:var(--radius);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);width:44px;height:44px;color:var(--muted);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:border-color .2s,color .2s;display:inline-flex;position:fixed}.sound-toggle:hover,.sound-toggle[aria-pressed=true]{color:var(--ink);border-color:color-mix(in srgb, var(--ink) 30%, transparent)}.sound-bars{display:none}:root:has(.dock[data-open]) .sound-toggle{display:none}:root:not(:has(.dock-toggle[data-compact])) .sound-toggle{right:var(--gutter);bottom:calc(max(20px, calc(env(safe-area-inset-bottom) + 12px)) + 54px)}.intro-skip{left:50%;bottom:max(28px, calc(env(safe-area-inset-bottom) + 18px));z-index:30;border:1px solid color-mix(in srgb, var(--ink) 22%, transparent);background:var(--backdrop);min-height:40px;color:var(--ink);font-family:var(--font-display);cursor:pointer;animation:rise .6s var(--ease-out) .4s both;border-radius:999px;padding:0 18px;font-size:.875rem;font-weight:500;position:fixed;transform:translate(-50%)}:root[data-intro] .hero-name{opacity:0}:root[data-intro] .hero-copy,:root[data-intro] .hero-roles,:root[data-intro] .scroll-cue{opacity:0!important}.hero-copy,.hero-roles{transition:opacity .6s}.bh-hint{left:50%;bottom:max(32px, calc(env(safe-area-inset-bottom) + 22px));z-index:5;border:1px solid var(--backdrop-edge);background:var(--backdrop);color:var(--ink);font-family:var(--font-display);opacity:0;pointer-events:none;transition:opacity .4s ease, transform .4s var(--ease-out);border-radius:999px;align-items:center;gap:10px;margin:0;padding:8px 16px;font-size:.875rem;font-weight:500;display:none;position:fixed;transform:translate(-50%,10px)}.bh-hint-icon{border:2px solid var(--accent);width:18px;height:18px;box-shadow:0 0 10px var(--accent);border-radius:50%}@media (pointer:fine){:root[data-webgl=on] .bh-hint{display:inline-flex}:root[data-bh-hint] .bh-hint{opacity:1;transform:translate(-50%)}:root[data-bh-hint] body{cursor:grab}:root[data-bending] body{cursor:grabbing;-webkit-user-select:none;user-select:none}}:root[data-bending] .bh-hint{opacity:0!important}.panel--contact{width:min(620px,100%)}.contact-form{text-align:left;gap:12px;margin-top:1.75rem;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-field{font-family:var(--font-display);color:var(--muted);gap:6px;font-size:.875rem;font-weight:500;display:grid}.form-field input,.form-field textarea{border:1px solid color-mix(in srgb, var(--ink) 16%, transparent);border-radius:calc(var(--radius) - 4px);background:color-mix(in srgb, var(--ground) 70%, transparent);width:100%;color:var(--ink);font-family:var(--font-text);resize:vertical;padding:10px 12px;font-size:1rem;font-weight:400}.form-field input:focus,.form-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}.form-actions{justify-items:start;gap:10px;display:grid}.form-status{margin:0;font-size:.9375rem}.form-status--sent{border:1px solid color-mix(in srgb, var(--teal) 50%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--teal-deep) 40%, transparent);margin-top:1.5rem;padding:12px 16px}.form-status--error{color:#ffb4a3}.github-latest{text-align:left;margin-top:1.5rem}.github-label{font-family:var(--font-display);margin:0 0 8px;font-size:.875rem;font-weight:600}.github-label span{color:var(--muted);font-weight:400}.github-latest ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.github-latest li{flex-wrap:wrap;justify-content:space-between;gap:4px 12px;font-size:.9375rem;display:flex}.github-latest a{font-family:var(--font-display);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px;font-weight:500}.github-meta{color:var(--muted);font-size:.8125rem}@media (max-aspect-ratio:4/5){.form-row{grid-template-columns:1fr}}.top-cluster{top:max(14px, env(safe-area-inset-top));right:var(--gutter);z-index:25;align-items:center;gap:8px;display:flex;position:fixed}.presence-chip{border:1px solid var(--backdrop-edge);background:var(--backdrop);height:36px;font-family:var(--font-display);color:var(--ink);animation:rise .5s var(--ease-out) both;border-radius:999px;align-items:center;gap:8px;margin:0;padding:0 12px;font-size:.8125rem;font-weight:500;display:inline-flex}.presence-dot{background:#6fe0b0;border-radius:50%;width:8px;height:8px;animation:2s ease-in-out infinite pulse-dot;box-shadow:0 0 8px #6fe0b0}@keyframes pulse-dot{50%{opacity:.45}}.discoveries{position:relative}.discoveries-toggle{border:1px solid var(--backdrop-edge);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);height:36px;color:var(--ink);font-family:var(--font-display);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:.8125rem;font-weight:600;display:inline-flex}.discoveries-toggle svg{color:var(--accent)}.discoveries-of{color:var(--muted);font-weight:400}.discoveries-panel{width:min(320px, calc(100vw - 2 * var(--gutter)));border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);border-radius:calc(var(--radius) + 4px);background:var(--surface);max-height:min(70vh,520px);box-shadow:var(--shadow);animation:pop .2s var(--ease-out);padding:14px;position:absolute;top:calc(100% + 8px);right:0;overflow:auto}.discoveries-title{font-family:var(--font-display);margin:0 0 10px;font-weight:700}.discoveries-panel ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.discoveries-panel li{color:var(--muted);grid-template-columns:20px 1fr;gap:8px;font-size:.875rem;display:grid}.discoveries-panel li[data-got]{color:var(--ink)}.discoveries-panel li[data-got] .discoveries-mark{color:var(--accent)}.discoveries-panel strong{font-family:var(--font-display);font-weight:600;display:block}.discoveries-hint{color:var(--muted);font-size:.8125rem;display:block}.achievement-toast{top:max(64px, calc(env(safe-area-inset-top) + 56px));z-index:45;border:1px solid color-mix(in srgb, var(--accent) 50%, transparent);background:var(--surface);box-shadow:0 0 40px -6px color-mix(in srgb, var(--accent) 55%, transparent), var(--shadow);font-family:var(--font-display);animation:toast 4.2s var(--ease-out) both;border-radius:999px;justify-items:center;gap:2px;padding:12px 22px;display:grid;position:fixed;left:50%;transform:translate(-50%)}.achievement-label{color:var(--accent);font-size:.75rem}@keyframes toast{0%{opacity:0;transform:translate(-50%,-14px)scale(.96)}10%,85%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:0;transform:translate(-50%,-8px)}}.fly-toggle{left:var(--gutter);bottom:max(20px, calc(env(safe-area-inset-bottom) + 12px));z-index:20;border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:var(--radius);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);height:44px;color:var(--ink);font-family:var(--font-display);cursor:pointer;box-shadow:0 0 24px -8px color-mix(in srgb, var(--accent) 60%, transparent);align-items:center;gap:8px;padding:0 16px 0 12px;font-size:.9375rem;font-weight:600;display:inline-flex;position:fixed}.fly-toggle svg{color:var(--accent)}.fly-toggle:hover{border-color:var(--accent)}:root:not([data-scrolled-past]) .fly-toggle{opacity:0;pointer-events:none}.fly-toggle{transition:opacity .4s}:root[data-flying] .scene,:root[data-flying] .progress-rail,:root[data-flying] .dock,:root[data-flying] .sound-toggle,:root[data-flying] .top-cluster .presence-chip,:root[data-flying] .bh-hint{visibility:hidden}:root[data-flying]{overflow:hidden}.fly-hud{z-index:30;pointer-events:none;position:fixed;inset:0}.fly-top{top:max(64px, calc(env(safe-area-inset-top) + 56px));pointer-events:auto;align-items:center;gap:16px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.fly-top .cta{white-space:nowrap}@media (max-width:480px){.fly-top{gap:10px}.fly-top .fly-speed{min-width:88px;font-size:1.0625rem}}.fly-speed{border:1px solid var(--backdrop-edge);border-radius:var(--radius);background:var(--backdrop);min-width:110px;font-family:var(--font-display);font-variant-numeric:tabular-nums;text-align:center;margin:0;padding:8px 14px;font-size:1.25rem;font-weight:700}.fly-speed small{color:var(--muted);font-size:.75rem;font-weight:500}.fly-hint{bottom:max(24px, calc(env(safe-area-inset-bottom) + 16px));border:1px solid var(--backdrop-edge);background:var(--backdrop);font-family:var(--font-display);white-space:nowrap;border-radius:999px;margin:0;padding:10px 16px;font-size:.875rem;position:absolute;left:50%;transform:translate(-50%)}kbd{border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);min-width:1.6em;font-family:var(--font-display);text-align:center;border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-size:.8em;display:inline-block}.fly-stick{left:max(24px, env(safe-area-inset-left));bottom:max(28px, calc(env(safe-area-inset-bottom) + 20px));border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);background:color-mix(in srgb, var(--ground) 55%, transparent);touch-action:none;pointer-events:auto;border-radius:50%;place-items:center;width:120px;height:120px;display:grid;position:absolute}.fly-knob{background:color-mix(in srgb, var(--ink) 85%, transparent);width:52px;height:52px;box-shadow:0 0 18px color-mix(in srgb, var(--accent) 50%, transparent);border-radius:50%}.fly-buttons{right:max(24px, env(safe-area-inset-right));bottom:max(28px, calc(env(safe-area-inset-bottom) + 20px));pointer-events:auto;gap:12px;display:grid;position:absolute}.fly-btn{border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);background:color-mix(in srgb, var(--ground) 60%, transparent);width:84px;height:56px;color:var(--ink);font-family:var(--font-display);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:18px;font-weight:600}.fly-btn--thrust{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, transparent);height:84px}.visitor-stars{text-align:left;margin-top:1.5rem}.visitor-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.star-form{gap:10px;margin:10px 0;display:grid}.star-list{gap:6px;margin:8px 0 0;padding:0;font-size:.9375rem;list-style:none;display:grid}.star-name{font-family:var(--font-display);color:var(--accent);font-weight:600}.leaderboard{margin-top:1rem}.leaderboard ol{counter-reset:lb;gap:4px;margin:6px 0 0;padding:0;list-style:none;display:grid}.leaderboard li{counter-increment:lb;justify-content:space-between;gap:12px;font-size:.9375rem;display:flex}.leaderboard li:before{content:counter(lb) ".";min-width:1.6em;color:var(--muted);font-variant-numeric:tabular-nums}.leaderboard li span:first-of-type{font-family:var(--font-display);flex:1;font-weight:500}.leaderboard li span:last-of-type{font-variant-numeric:tabular-nums;color:var(--muted)}.score-form{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:6px;display:flex}.score-form input{border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);background:var(--ground);width:150px;color:var(--ink);font:inherit;border-radius:10px;padding:8px 10px}@media (max-aspect-ratio:4/5){.fly-label{display:none}.fly-toggle{justify-content:center;width:44px;padding:0}.fly-hint{white-space:normal;width:calc(100vw - 2 * var(--gutter));text-align:center;border-radius:var(--radius)}.top-cluster{right:calc(var(--gutter) + 4px)}.presence-chip{padding:0 10px;font-size:0}}.resume-toggle{border:1px solid var(--backdrop-edge);background:var(--backdrop);-webkit-backdrop-filter:blur(10px);height:36px;color:var(--ink);font-family:var(--font-display);cursor:pointer;border-radius:999px;padding:0 14px;font-size:.8125rem;font-weight:600}.resume-toggle:hover{border-color:var(--ink)}.resume{z-index:60;color:#12141c;background:#f6f7fb;animation:.35s both dive-in;position:fixed;inset:0;overflow-y:auto}:root[data-resume]{overflow:hidden}.resume-bar{z-index:1;padding:12px var(--gutter);-webkit-backdrop-filter:blur(8px);background:#f6f7fbeb;border-bottom:1px solid #dfe2ea;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.resume .ghost-button{color:#12141c}.resume .cta{color:#f6f7fb;background:#12141c}.resume-actions{align-items:center;gap:16px;display:flex}.resume-page{max-width:760px;padding:40px var(--gutter) 80px;font-family:var(--font-text);margin:0 auto;line-height:1.6}.resume-page h1{font-family:var(--font-display);font-variation-settings:"wdth" 87.5, "opsz" 96;letter-spacing:-.02em;margin:0;font-size:clamp(2.5rem,2rem + 2.5vw,3.75rem);font-weight:700;line-height:1}.resume-roles{color:#5b6070;margin:8px 0 0}.resume-lead{margin:16px 0 0;font-size:1.125rem}.resume-links{flex-wrap:wrap;gap:8px 18px;margin:16px 0 0;display:flex}.resume-page a{color:#12141c;text-underline-offset:3px;text-decoration-color:#ff5c39}.resume-page section{border-top:1px solid #dfe2ea;margin-top:36px;padding-top:20px}.resume-page h2{font-family:var(--font-display);margin:0 0 12px;font-size:1.375rem;font-weight:700}.resume-item+.resume-item{margin-top:18px}.resume-page h3{font-family:var(--font-display);flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0;font-size:1.125rem;font-weight:600;display:flex}.resume-page h3 a{font-family:var(--font-text);font-size:.9375rem;font-weight:400}.resume-page p{margin:6px 0 0}.resume-meta{color:#5b6070;font-size:.9375rem}.resume-page ul{margin:0;padding-left:1.2em}@media print{.stage,.scene,.resume-bar,.top-cluster,.dock,.sound-toggle,.fly-toggle,.progress-rail,.cursor-light,.xray-panel{display:none!important}.resume{background:#fff;position:static;overflow:visible}}@media (max-aspect-ratio:4/5){.resume-toggle{padding:0 10px;font-size:.75rem}}.xray-panel{left:var(--gutter);top:max(64px, calc(env(safe-area-inset-top) + 56px));z-index:35;width:min(340px, calc(100vw - 2 * var(--gutter)));border-radius:calc(var(--radius) + 4px);background:color-mix(in srgb, var(--ground) 92%, transparent);animation:pop .2s var(--ease-out);border:1px solid #38d6e873;padding:16px;font-size:.875rem;position:fixed;box-shadow:0 0 40px -10px #38d6e8}.xray-head{justify-content:space-between;align-items:center;display:flex}.xray-title{font-family:var(--font-display);color:#7fe7f2;margin:0;font-weight:700}.xray-stats{grid-template-columns:1fr 1fr;gap:6px 16px;margin:10px 0;display:grid}.xray-stats div{justify-content:space-between;gap:8px;display:flex}.xray-stats dt{color:var(--muted)}.xray-stats dd{font-family:var(--font-display);font-variant-numeric:tabular-nums;margin:0}.xray-note{color:color-mix(in srgb, var(--ink) 85%, transparent);margin:0;line-height:1.5}.xray-keys{color:var(--muted);margin:8px 0 0}:root[data-xray] .panel,:root[data-xray] .hero-copy,:root[data-xray] .orbit-layout{opacity:.25!important}.dock-switch{cursor:pointer;grid-template-columns:auto 1fr;align-items:start;gap:10px;display:grid}.dock-switch input{accent-color:var(--accent);margin-top:3px}.dock-switch strong{font-size:.9375rem;display:block}.dock-switch em{font-family:var(--font-text);color:var(--muted);font-size:.8125rem;font-style:normal;display:block}:root[data-choreo=on] .panel,:root[data-choreo=on] .orbit-layout{opacity:0;filter:blur(14px);transition:opacity .9s var(--ease-out), filter .9s var(--ease-out), transform .9s var(--ease-out);transform:translateY(24px)scale(.97)}:root[data-choreo=on] .panel[data-revealed],:root[data-choreo=on] .orbit-layout[data-revealed]{opacity:1;filter:none;transform:none}.panel{position:relative}:root[data-choreo=on] .panel{overflow:hidden}:root[data-choreo=on] .panel:after{content:"";background:linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--accent) 18%, transparent) 48%, #ffffff14 52%, transparent 70%);pointer-events:none;position:absolute;inset:0;transform:translate(-120%)}:root[data-choreo=on] .panel[data-revealed]:after{animation:sweep 1.4s var(--ease-out) .2s both}@keyframes sweep{to{transform:translate(120%)}}.cta,.fly-toggle,.discoveries-toggle{transition:transform .25s var(--ease-out), background-color .2s ease, color .2s ease, border-color .2s ease}.cursor-light{z-index:2;background:radial-gradient(circle, color-mix(in srgb, var(--accent) 10%, transparent), transparent 62%);pointer-events:none;mix-blend-mode:screen;border-radius:50%;width:420px;height:420px;margin:-210px 0 0 -210px;transition:opacity .3s;position:fixed;top:0;left:0}:root[data-flying] .cursor-light,:root[data-resume] .cursor-light{opacity:0}.scene--story{height:230vh;min-height:0;align-items:flex-start;height:230svh}.scene--story .panel{position:sticky;top:max(84px,12vh)}.story-beats{counter-reset:beat;gap:8px;margin:1.25rem 0 0;padding:0;list-style:none;display:grid}.story-beats li{font-family:var(--font-display);color:var(--muted);align-items:center;gap:10px;font-size:.9375rem;font-weight:500;transition:color .3s;display:flex}.story-dot{border:1.5px solid color-mix(in srgb, var(--ink) 35%, transparent);border-radius:50%;flex:none;width:10px;height:10px;transition:background-color .3s,border-color .3s,box-shadow .3s}.story-beats li[data-state=done]{color:color-mix(in srgb, var(--ink) 70%, transparent)}.story-beats li[data-state=done] .story-dot{background:color-mix(in srgb, var(--accent) 60%, transparent);border-color:#0000}.story-beats li[data-state=active]{color:var(--ink)}.story-beats li[data-state=active] .story-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 10px var(--accent)}@media (max-aspect-ratio:4/5){.scene--story{padding-top:46svh}.scene--story .panel{top:46svh}}:root[data-webgl=off] .scene--story{height:auto;min-height:100svh}:root[data-webgl=off] .scene--story .panel{position:static}
