:root{--bg:#05060b;--ink:#eef1f8;--ink-2:#a8b0c4;--ink-3:#6b7389;--line:#ffffff17;--panel:#0c0e188c;--accent:#ffab40;--ok:#6dffae;--serif:"Instrument Serif", Georgia, serif;--sans:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--gutter:clamp(16px, 5vw, 72px);color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}a{color:inherit}#scene{z-index:0;opacity:0;width:100vw;height:100vh;transition:opacity 1.6s;position:fixed;inset:0}.webgl-ready #scene{opacity:1}.vignette{z-index:1;pointer-events:none;background:radial-gradient(70% 60% at 70% 45%,#283c8c21,#0000 70%),radial-gradient(#0000 55%,#000000a6);position:fixed;inset:0}.no-webgl .vignette{background:radial-gradient(50% 50% at 72% 45%,#6e96ff2e,#0000 70%),radial-gradient(#0000 55%,#000000a6)}.topbar{z-index:10;padding:14px var(--gutter);backdrop-filter:blur(12px);background:#05060bb3;border-bottom:1px solid #ffffff0a;justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 0 auto}.brand{align-items:baseline;gap:20px;display:flex}.mark{font:400 28px/1 var(--serif);letter-spacing:.02em;text-decoration:none}.brand-mail{color:var(--ink-2);font-size:14px;text-decoration:none}.brand-mail:hover{color:var(--ink)}.topbar nav{align-items:center;gap:clamp(12px,2.4vw,28px);font-size:14px;display:flex}.topbar nav>a:not(.btn){color:var(--ink-2);text-decoration:none}.topbar nav>a:not(.btn):hover{color:var(--ink)}.langs{font:500 12px var(--mono);color:var(--ink-3);gap:8px;display:flex}.langs a{color:inherit;opacity:.45;text-decoration:none}.langs a:hover{opacity:.75}.langs a[aria-current]{color:var(--ink);opacity:1}.btn{background:var(--ink);color:var(--bg);font:600 15px/1 var(--sans);border-radius:999px;align-items:center;gap:8px;padding:13px 22px;text-decoration:none;transition:transform .2s,box-shadow .3s;display:inline-flex}.btn:hover{transform:translateY(-1px);box-shadow:0 0 0 6px #ffffff14,0 10px 40px #8caaff40}.btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);background:0 0}.btn-ghost:hover{box-shadow:inset 0 0 0 1px #ffffff4d}.btn-small{padding:9px 16px;font-size:13px}main{z-index:2;position:relative}.panel{min-height:125vh;padding:18vh var(--gutter);align-items:center;display:flex;position:relative}.panel.hero{min-height:100vh;padding-top:14vh}.copy{width:min(560px,100%)}.fig-inline{display:none}.eyebrow,.label{font:500 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin:0 0 18px}.label{color:var(--accent)}h1,h2{font-family:var(--serif);letter-spacing:-.01em;text-wrap:balance;margin:0 0 24px;font-weight:400}h1{font-size:clamp(44px,6.4vw,92px);line-height:.98}h2{font-size:clamp(36px,4.6vw,64px);line-height:1.02}.lead{color:var(--ink-2);max-width:50ch;margin:0 0 32px;font-size:clamp(16px,1.3vw,18px)}.ctas{flex-wrap:wrap;gap:12px;display:flex}.card{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line), 0 30px 80px #00000059;backdrop-filter:blur(14px);border-radius:18px;margin-top:8px;padding:26px 28px}.card h3{font:600 20px/1.3 var(--sans);margin:0 0 12px}.card p{color:var(--ink-2);margin:0 0 14px;font-size:15px}.card .meta{font:400 12px/1.4 var(--mono);color:var(--ink-3);flex-wrap:wrap;gap:6px 14px;margin-bottom:10px;display:flex}.card .meta span+span:before{content:"·";margin-right:14px}.card .outcome{color:var(--ink);font-weight:500}.chips{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.chips li{font:400 12px/1.4 var(--mono);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line);border-radius:6px;padding:4px 10px}.chips-ok li{color:var(--ok);box-shadow:inset 0 0 0 1px #6dffae4d}.how{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.how-toggle{box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);font:500 13px/1 var(--sans);cursor:pointer;background:#ffffff0f;border:0;border-radius:999px;align-items:center;gap:10px;padding:8px 14px 8px 16px;transition:background .2s;display:inline-flex}.how-toggle:hover{background:#ffffff1a}.how-toggle:focus-visible,.steps button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.how-toggle i{width:10px;height:10px;position:relative}.how-toggle i:before,.how-toggle i:after{content:"";background:currentColor;width:10px;height:1.5px;transition:transform .3s;position:absolute;top:4px;left:0}.how-toggle i:after{transform:rotate(90deg)}.how.open .how-toggle i:after{transform:rotate(0)}.how-sheet-close{display:none}.how-body{grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.2,.7,.2,1);display:grid}.how-body>div{overflow:hidden}.how.open .how-body{grid-template-rows:1fr}.steps{gap:4px;margin:16px 0 0;padding:0;list-style:none;display:grid}.steps button{width:100%;color:var(--ink-3);font:400 14px/1.5 var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;grid-template-columns:30px 1fr;padding:10px 12px 12px 10px;transition:background .3s,color .3s;display:grid;position:relative;overflow:hidden}.steps button:hover{color:var(--ink-2)}.steps .n{font:500 12px/1.9 var(--mono);color:var(--ink-3);grid-row:span 2}.steps strong{color:var(--ink-2);font-weight:600}.steps .txt{opacity:0;max-height:0;transition:max-height .5s,opacity .4s;display:block}.steps li.on button{color:var(--ink-2);background:#ffffff0d}.steps li.on .n{color:var(--accent)}.steps li.on strong{color:var(--ink)}.steps li.on .txt{opacity:1;max-height:8em}.steps li.on button:after{content:"";background:var(--accent);transform-origin:0;height:2px;animation:step-progress var(--step-ms,5s) linear forwards;opacity:.7;position:absolute;bottom:0;left:10px;right:10px}.steps li.on:last-child button:after{display:none}@keyframes step-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.timeline{gap:0;margin:8px 0 0;padding:0;list-style:none;display:grid}.timeline li{border-top:1px solid var(--line);grid-template-columns:104px 1fr;column-gap:16px;padding:12px 0;font-size:14.5px;display:grid}.timeline li:first-child strong{color:var(--accent)}.timeline .when{font:400 12px/1.9 var(--mono);color:var(--ink-3);grid-row:span 2}.timeline strong{font-weight:600}.timeline .role{color:var(--ink-2)}.outro{min-height:130vh}.outro .copy{width:min(680px,100%)}.mail{color:var(--ink-3);margin-top:24px;font-size:14px}.mail a{color:var(--ink-2)}.rail{right:calc(var(--gutter) / 2);z-index:5;gap:12px;margin:0;padding:0;list-style:none;display:grid;position:fixed;top:50%;transform:translateY(-50%)}.rail li{background:var(--ink-3);opacity:.5;border-radius:50%;width:6px;height:6px;transition:all .4s}.rail li.on{background:var(--ink);opacity:1;transform:scale(1.5)}.fig{left:var(--gutter);right:var(--gutter);z-index:5;pointer-events:none;font:400 11.5px/1.5 var(--mono);color:var(--ink-3);text-align:right;margin:0;position:fixed;bottom:22px}.fig span{max-width:44ch;transition:opacity .25s;display:inline-block}.fig span.swap{opacity:0}footer{z-index:2;padding:32px var(--gutter) 64px;font:400 12px var(--mono);color:var(--ink-3);position:relative}.reveal{opacity:0;transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1s cubic-bezier(.2,.7,.2,1);transform:translateY(24px)}.reveal.in{opacity:1;transform:none}.copy>.reveal:nth-child(2){transition-delay:80ms}.copy>.reveal:nth-child(3){transition-delay:.16s}.copy>.reveal:nth-child(4){transition-delay:.24s}.copy>.reveal:nth-child(5){transition-delay:.32s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.steps li.on button:after{display:none}}@media (width<=899px){.topbar nav>a{display:none}.brand{gap:14px}.mark{font-size:22px}.panel{align-items:flex-end;min-height:120vh;padding-bottom:14vh}.panel.hero{min-height:100svh}.panel.project{min-height:0;padding-top:72svh}.panel.outro{min-height:0;padding-top:30svh;padding-bottom:5vh}footer{padding:8px var(--gutter) 28px}.rail,.fig{display:none}.card{background:#0a0c14b8;padding:20px}.card:has(.how.open){backdrop-filter:none;box-shadow:none;background:0 0}.copy>*,.card>*,.how-toggle{transition:opacity .4s}.copy:has(.how.open)>:not(.card),.card:has(.how.open)>:not(.how),.how.open .how-toggle{opacity:0;pointer-events:none}.how.open{border-top-color:#0000}.how.open .how-body{z-index:20;max-height:50vh;box-shadow:inset 0 0 0 1px var(--line), 0 -20px 60px #00000080;backdrop-filter:blur(14px);background:#0a0c14f0;border-radius:18px;padding:8px 12px 14px;position:fixed;bottom:10px;left:10px;right:10px;overflow:auto}.how.open .how-sheet-close{z-index:1;color:var(--ink);font:500 13px/1 var(--sans);background:#ffffff14;border:0;border-radius:999px;align-items:center;gap:8px;margin:0 0 0 auto;padding:8px 12px;display:flex;position:sticky;top:0}.how.open .how-sheet-close i{background:currentColor;width:10px;height:1.5px}.how.open .steps{margin-top:4px}}
