#gl{position:fixed;inset:0;width:100vw;height:100vh;z-index:-1;pointer-events:none;display:block}.no-webgl #gl{display:none}
.subnav{border-bottom:1px solid var(--line);background:var(--bg)}
.subnav .wrap{display:flex;gap:28px;padding-top:12px;padding-bottom:12px;font-size:.9rem;overflow-x:auto}
.subnav a{color:var(--ink-soft);text-decoration:none;white-space:nowrap;padding-bottom:4px}
.subnav a:hover{color:var(--ink)}.subnav a[aria-current]{color:var(--ink);border-bottom:2px solid var(--accent)}
.eyebrow{font:500 .78rem 'IBM Plex Mono',monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 16px}
.hero{min-height:88vh;display:flex;flex-direction:column;justify-content:center;max-width:1120px;margin:0 auto;padding:0 24px}
.hero h1{font-size:clamp(2.6rem,7vw,5rem);line-height:1.02;letter-spacing:-.035em;max-width:13ch;margin:0 0 24px}
.lede{max-width:52ch;color:var(--ink-soft);font-size:1.15rem;margin:0 0 28px}
.btns{display:flex;gap:12px;flex-wrap:wrap}
.core .btn{display:inline-block;padding:.75em 1.3em;border-radius:6px;background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;border:1px solid var(--accent)}
.core .btn.ghost{background:var(--bg);color:var(--ink);border-color:var(--line)}
.scroll{margin-top:8vh;color:var(--ink-soft);font:500 .72rem 'IBM Plex Mono',monospace;letter-spacing:.2em;text-transform:uppercase}
.step{min-height:100vh;display:flex;align-items:center;max-width:1120px;margin:0 auto;padding:0 24px}
.step.right{justify-content:flex-end}.step.end{flex-direction:column;justify-content:center;text-align:center;align-items:center}.step.end h2{font-size:clamp(2rem,5vw,3.4rem)}
.core .card{max-width:480px;padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg)}
.core .card.wide{max-width:720px}.core .card h2{font-size:1.5rem;margin:.2em 0 .5em}.core .card p{color:var(--ink-soft)}
.n{font:500 .8rem 'IBM Plex Mono',monospace;color:var(--accent);letter-spacing:.14em}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:20px 0}
.stats div{padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken)}
.stats b{display:block;font:500 1.7rem 'IBM Plex Mono',monospace;color:var(--ink)}.stats span{color:var(--ink-soft);font-size:.8rem}
.small{color:var(--ink-soft);font-size:.85rem}
.doc{max-width:860px;margin:0 auto;padding:56px 24px 72px}.doc h1{font-size:2.4rem}
code,.mono{font-size:.88em}.mono{word-break:break-all}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--ink-soft);font-weight:500}
textarea,form#ask input{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:12px;font:13px 'IBM Plex Mono',monospace}
form#ask{display:flex;gap:10px;margin:18px 0}form#ask input{flex:1;font:inherit}
.chip{background:var(--bg);color:var(--accent);border:1px solid var(--line);border-radius:var(--radius);padding:.25em .8em;cursor:pointer;font:inherit}
.chk{padding:8px 12px;margin:6px 0;border-radius:var(--radius);border:1px solid var(--line)}.chk.ok{color:#1d7a46;border-color:#9bd3b1}.chk.bad{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}
.ans{max-width:none}.ans.ok{border-color:#9bd3b1}.ans.abs{border-color:#d9c27a}
pre.mono{white-space:pre-wrap;background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--radius);padding:12px;max-height:320px;overflow:auto}
.core-note{border-top:1px solid var(--line);padding:24px;color:var(--ink-soft);font-size:.8rem;text-align:center;background:var(--bg)}
@media(max-width:760px){.step.right{justify-content:flex-start}.core .card{padding:20px}.core .btn{width:100%;text-align:center}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
