:root{--bg: #0b0c10;--bg-1: #101219;--bg-2: #161923;--bg-3: #1d212d;--line: #262b39;--line-2: #333a4c;--ink: #e6e9f2;--ink-2: #aab2c5;--ink-3: #737d94;--ink-4: #4d5568;--ok: #46c08a;--cost: #d9a441;--bad: #e05c67;--warn: #d9a441;--accent: #7c6cff;--mono: ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", "Noto Sans Arabic", "Geeza Pro", "Tahoma", sans-serif;--r: 8px;--r-lg: 14px;--sb: 278px;--toc: 220px;--ease: cubic-bezier(.22, .68, .32, 1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.85;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.016) 0 1px,transparent 1px 96px)}code,pre,kbd,samp,.num,.bytes,.en,[dir=ltr]{direction:ltr;unicode-bidi:isolate;font-family:var(--mono)}::selection{background:color-mix(in srgb,var(--accent) 38%,transparent)}.shell{display:grid;grid-template-columns:var(--sb) 1fr;min-height:100vh;position:relative;z-index:1}.readbar{position:fixed;inset-block-start:0;inset-inline:0;height:2px;z-index:60;background:linear-gradient(to left,var(--accent) var(--p, 0%),transparent var(--p, 0%));transition:background 90ms linear}.main{min-width:0;display:flex;flex-direction:column}.content{flex:1;display:grid;grid-template-columns:minmax(0,1fr) var(--toc);gap:2.4rem;padding:1.6rem clamp(1rem,3vw,2.6rem) 4rem;align-items:start}.column{min-width:0;max-width:74ch}.sidebar{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;overscroll-behavior:contain;border-inline-start:1px solid var(--line);background:var(--bg-1);padding:1.1rem .9rem 2rem;scrollbar-width:thin}.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:4px}.brand{display:flex;align-items:center;gap:.65rem;text-decoration:none;padding:.3rem .4rem 1rem}.brand .mark{display:flex;gap:3px}.brand .mark i{width:4px;height:20px;border-radius:2px;display:block}.brand .mark i:nth-child(1){background:#7c6cff}.brand .mark i:nth-child(2){background:#d98a2b;height:15px;align-self:center}.brand .mark i:nth-child(3){background:#2fb6a8;height:11px;align-self:center}.brand .txt{display:flex;flex-direction:column;line-height:1.25}.brand b{color:var(--ink);font-size:.98rem}.brand small{color:var(--ink-3);font-size:.72rem}.tracksel{display:flex;flex-direction:column;gap:2px;margin-bottom:1rem}.tsel{display:flex;align-items:center;gap:.55rem;padding:.5rem .6rem;border-radius:var(--r);color:var(--ink-2);text-decoration:none;font-size:.88rem;border:1px solid transparent;transition:background .14s var(--ease),color .14s var(--ease)}.tsel .dot{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none;opacity:.55}.tsel:hover{background:var(--bg-2);color:var(--ink)}.tsel.on{background:color-mix(in srgb,var(--c) 12%,var(--bg-2));border-color:color-mix(in srgb,var(--c) 34%,transparent);color:var(--ink);font-weight:600}.tsel.on .dot{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent)}.chlist{list-style:none;margin:0;padding:0;border-inline-start:1px solid var(--line);margin-inline-start:.55rem}.chi{display:grid;grid-template-columns:1.9rem 1fr auto;align-items:baseline;gap:.4rem;padding:.34rem .55rem;text-decoration:none;color:var(--ink-3);font-size:.84rem;line-height:1.5;border-radius:0 var(--r) var(--r) 0;position:relative;transition:color .13s var(--ease),background .13s var(--ease)}.chi .n{font-family:var(--mono);font-size:.72rem;color:var(--ink-4)}.chi:hover{color:var(--ink);background:var(--bg-2)}.chi.on{color:var(--ink);font-weight:600;background:color-mix(in srgb,var(--c) 10%,transparent)}.chi.on:before{content:"";position:absolute;inset-block:2px;inset-inline-start:-1px;width:2px;background:var(--c);border-radius:2px}.chi.on .n{color:var(--c)}.chi.done .n:after{content:"✓";color:var(--ok);margin-inline-start:.2rem;font-size:.7rem}.chi .labdot{font-size:.68rem;color:var(--ink-4);font-family:var(--mono)}.chi:hover .labdot,.chi.on .labdot{color:var(--c)}.sidefoot{display:flex;flex-direction:column;gap:2px;margin-top:1.2rem;padding-top:.8rem;border-top:1px solid var(--line)}.sublink{color:var(--ink-3);text-decoration:none;font-size:.84rem;padding:.35rem .6rem;border-radius:var(--r)}.sublink:hover,.sublink.active{color:var(--ink);background:var(--bg-2)}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:.8rem;padding:.55rem clamp(1rem,3vw,2.6rem);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar .menu{display:none}.crumbs{flex:1;min-width:0;display:flex;align-items:center;gap:.45rem;font-size:.84rem;color:var(--ink-3);overflow:hidden}.crumbs a{color:var(--ink-2);text-decoration:none;white-space:nowrap}.crumbs a:hover{color:var(--accent)}.crumbs .s{color:var(--ink-4)}.crumbs .cur{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search{display:flex;align-items:center;gap:.5rem;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-3);border-radius:var(--r);padding:.3rem .6rem;font-family:inherit;font-size:.8rem;cursor:pointer}.search:hover{border-color:var(--accent);color:var(--ink)}kbd{background:var(--bg-3);border:1px solid var(--line-2);border-radius:4px;padding:0 .32rem;font-size:.72rem;color:var(--ink-2)}.foot{border-top:1px solid var(--line);padding:1.2rem clamp(1rem,3vw,2.6rem);color:var(--ink-4);font-size:.78rem;display:flex;gap:.55rem;flex-wrap:wrap}.foot .dot{color:var(--ink-4)}.contract{position:relative;margin:1.6rem 0 2.2rem;border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(160deg,var(--bg-2),var(--bg-1))}.contract-tab{position:absolute;inset-block-start:-.72rem;inset-inline-start:1.1rem;background:var(--bg);padding:0 .55rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;color:var(--accent);text-transform:uppercase;border:1px solid var(--line);border-radius:4px}.contract dl{margin:0;display:grid;grid-template-columns:1fr 1fr}.contract .cell{padding:.95rem 1.1rem;position:relative}.contract .cell:nth-child(odd){border-inline-end:1px solid var(--line)}.contract .cell:nth-child(-n+2){border-block-end:1px solid var(--line)}.contract .cell:before{content:"";position:absolute;inset-block-start:0;inset-inline:1.1rem;height:2px;border-radius:0 0 2px 2px;opacity:.8}.contract .cell.ok:before{background:var(--ok)}.contract .cell.adv:before{background:var(--accent)}.contract .cell.cost:before{background:var(--cost)}.contract .cell.bad:before{background:var(--bad)}.contract dt{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-3);margin-bottom:.3rem}.contract .cell.ok dt{color:var(--ok)}.contract .cell.adv dt{color:var(--accent)}.contract .cell.cost dt{color:var(--cost)}.contract .cell.bad dt{color:var(--bad)}.contract dd{margin:0;font-size:.9rem;line-height:1.7;color:var(--ink-2)}.contract dd p{margin:0}.contract dd code{font-size:.84em}.chapter-head{padding-top:.8rem}.eyebrow{display:flex;align-items:center;gap:.45rem;font-size:.78rem;color:var(--ink-3);margin-bottom:.5rem}.eyebrow .tname{color:var(--accent);text-decoration:none;font-weight:600}.eyebrow .num{font-family:var(--mono)}.eyebrow .sep{color:var(--ink-4)}h1{font-size:clamp(1.75rem,3.6vw,2.4rem);line-height:1.28;margin:0 0 .4rem;letter-spacing:-.01em}.chapter-head .sub{color:var(--ink-2);font-size:1.02rem;margin:0}.prose{font-size:1.01rem}.prose>section{scroll-margin-top:76px}.prose h2{font-size:1.34rem;margin:3rem 0 .9rem;scroll-margin-top:76px;padding-inline-start:.8rem;border-inline-start:3px solid var(--accent);line-height:1.45}.prose h3{font-size:1.1rem;margin:2rem 0 .6rem;color:var(--ink);scroll-margin-top:76px}.prose h4{font-size:.98rem;margin:1.5rem 0 .5rem;color:var(--ink-2);scroll-margin-top:76px}.flash{animation:flash 1.2s var(--ease)}@keyframes flash{0%,to{background:transparent}22%{background:color-mix(in srgb,var(--accent) 18%,transparent)}}.prose p{margin:0 0 1.05rem}.prose strong,.prose b{color:var(--ink);font-weight:650}.prose em{color:var(--ink);font-style:italic}.prose a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 34%,transparent)}.prose a:hover{border-bottom-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.prose a.ext:after{content:"↗";font-size:.75em;margin-inline-start:.15em;opacity:.7}.prose ul,.prose ol{margin:0 0 1.15rem;padding-inline-start:1.35rem}.prose li{margin-bottom:.42rem}.prose li::marker{color:var(--ink-4)}.prose hr{border:0;border-top:1px solid var(--line);margin:2.4rem 0}:not(pre)>code{background:var(--bg-2);border:1px solid var(--line);padding:.06em .38em;border-radius:5px;font-size:.855em;color:#c8cfe4}.prose blockquote{margin:1.3rem 0;padding:.85rem 1.05rem;border-inline-start:3px solid var(--line-2);background:var(--bg-1);border-radius:0 var(--r) var(--r) 0;color:var(--ink-2)}.prose blockquote p:last-child{margin-bottom:0}.prose blockquote.warn{border-inline-start-color:var(--warn);background:color-mix(in srgb,var(--warn) 7%,var(--bg-1))}.prose blockquote.crossing{border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line-2));border-inline-start-width:3px;background:color-mix(in srgb,var(--accent) 6%,var(--bg-1));border-radius:var(--r);position:relative;padding-inline-start:2.4rem}.prose blockquote.crossing:before{content:"⇄";position:absolute;inset-inline-start:.8rem;inset-block-start:.8rem;color:var(--accent);font-size:1rem;line-height:1}.tablewrap{overflow-x:auto;margin:1.3rem 0;border:1px solid var(--line);border-radius:var(--r)}.tablewrap table{width:100%;border-collapse:collapse;font-size:.9rem}.tablewrap th,.tablewrap td{padding:.58rem .8rem;text-align:start;border-bottom:1px solid var(--line);vertical-align:top}.tablewrap thead th{background:var(--bg-2);color:var(--ink-2);font-weight:600;font-size:.82rem;white-space:nowrap}.tablewrap tbody tr:last-child td{border-bottom:none}.tablewrap tbody tr:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}.tablewrap td code{font-size:.82em}.codewrap{margin:1.3rem 0;border:1px solid var(--line);border-radius:var(--r);background:#0d0f15;overflow:hidden}.codebar{display:flex;align-items:center;justify-content:space-between;padding:.28rem .6rem;background:var(--bg-2);border-bottom:1px solid var(--line)}.codebar .lang{font-family:var(--mono);font-size:.68rem;color:var(--ink-4);letter-spacing:.04em}.codebar .copy{background:transparent;border:1px solid transparent;color:var(--ink-3);cursor:pointer;border-radius:4px;padding:0 .35rem;font-size:.85rem;line-height:1.5}.codebar .copy:hover{color:var(--ink);border-color:var(--line-2);background:var(--bg-3)}.codewrap.runnable{border-inline-start:3px solid var(--ok)}.codewrap.runnable .lang{color:var(--ok)}.codewrap pre{margin:0;padding:.85rem 1rem;overflow-x:auto;font-size:.845rem;line-height:1.7;color:#cfd6e6}.codewrap pre code{background:none;border:none;padding:0;font-size:inherit;color:inherit}.puzzle{margin:1.8rem 0;border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--bg-1);overflow:hidden}.puzzle header{display:flex;align-items:center;gap:.55rem;padding:.7rem 1rem;background:var(--bg-2);border-bottom:1px solid var(--line)}.puzzle header .glyph{font-size:1rem}.puzzle header h4{margin:0;font-size:.92rem;color:var(--ink)}.puzzle header .seen{margin-inline-start:auto;font-size:.72rem;color:var(--ink-4)}.puzzle .q{padding:.9rem 1.1rem .2rem}.puzzle .q p:last-child{margin-bottom:.8rem}.gate{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:0 1.1rem 1rem;position:relative}.gate .hint{flex-basis:100%;margin:.2rem 0 0;font-size:.8rem;color:var(--ink-4);line-height:1.6}.gate .skip{margin-inline-start:auto;font-size:.78rem}.gate .bar{position:relative;flex:1;min-width:60px;height:2px;background:var(--line-2);border-radius:2px;overflow:hidden}.gate .bar:after{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:var(--p);background:var(--accent);transition:width 1s linear}.puzzle .a{position:relative;padding:1.1rem 1.1rem .4rem;border-top:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--bg-2));animation:yield .42s var(--ease) both}@keyframes yield{0%{clip-path:inset(0 0 100% 0);opacity:.4}to{clip-path:inset(0 0 0 0);opacity:1}}.puzzle .a-tab{position:absolute;inset-block-start:-.7rem;inset-inline-start:1rem;background:var(--bg-1);border:1px solid var(--accent);color:var(--accent);font-size:.7rem;padding:0 .5rem;border-radius:4px;font-family:var(--mono)}.puzzle .a>*:first-child{margin-top:.3rem}.lab{margin:1.9rem 0;border:1px solid var(--line-2);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--bg-2),var(--bg-1));scroll-margin-top:84px;overflow:hidden}.lab-head{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;border-bottom:1px solid var(--line);background:var(--bg-2)}.lab-head .gear{color:var(--accent)}.lab-head h4{margin:0;font-size:.92rem}.lab-claim{margin:0;padding:.6rem 1rem;font-size:.84rem;color:var(--ink-2);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--accent) 5%,transparent)}.lab-claim span{font-family:var(--mono);font-size:.68rem;color:var(--accent);margin-inline-end:.4rem}.lab-body{padding:1rem}.lab-note{margin:0;padding:.5rem 1rem .8rem;font-size:.76rem;color:var(--ink-4)}.lrow{display:grid;grid-template-columns:11rem 1fr;gap:.7rem;align-items:center;margin-bottom:.7rem}.lrow>label{font-size:.84rem;color:var(--ink-2);display:flex;flex-direction:column}.lrow>label small{color:var(--ink-4);font-size:.72rem}.lctl{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.lctl output{font-family:var(--mono);font-size:.82rem;color:var(--accent);min-width:4.5rem}input[type=range]{flex:1;min-width:110px;accent-color:var(--accent);height:4px}.chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--bg-3);border:1px solid var(--line-2);color:var(--ink-2);border-radius:999px;padding:.22rem .68rem;font-size:.8rem;font-family:inherit;cursor:pointer;transition:all .14s var(--ease)}.chip .sw{width:7px;height:7px;border-radius:50%;background:var(--line-2)}.chip:hover{border-color:var(--ink-4);color:var(--ink)}.chip.on{background:color-mix(in srgb,var(--accent) 16%,var(--bg-3));border-color:var(--accent);color:var(--ink)}.chip.on .sw{background:var(--accent)}.statrow{display:flex;gap:.6rem;flex-wrap:wrap;margin:.9rem 0 .3rem}.stat{flex:1 1 8rem;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r);padding:.45rem .7rem}.stat .k{display:block;font-size:.7rem;color:var(--ink-4)}.stat .v{display:block;font-family:var(--mono);font-size:1rem;color:var(--ink)}.stat .v small{font-size:.7rem;color:var(--ink-3)}.stat.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.stat.ok .v{color:var(--ok)}.stat.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.stat.bad .v{color:var(--bad)}.stat.warn{border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}.stat.warn .v{color:var(--warn)}.verdict{margin-top:.9rem;padding:.7rem .9rem;border-radius:var(--r);font-size:.88rem;line-height:1.75;border-inline-start:3px solid var(--line-2);background:var(--bg-3);color:var(--ink-2)}.verdict.ok{border-inline-start-color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,var(--bg-3))}.verdict.bad{border-inline-start-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--bg-3))}.verdict b{color:var(--ink)}.bytes{display:block;background:#0d0f15;border:1px solid var(--line);border-radius:6px;padding:.35rem .55rem;font-size:.76rem;color:#9fb0cc;overflow-x:auto;white-space:nowrap}.bytes.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.bytes.ok{color:var(--ok)}.bytegrid{display:grid;gap:.4rem;margin:.7rem 0}.bytegrid .bl,.reveal .bl{font-family:var(--mono);font-size:.7rem;color:var(--ink-4);display:block;margin-bottom:.15rem}.reveal{margin:.8rem 0 .2rem}.meter{position:relative;height:10px;background:var(--bg-3);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin:.8rem 0}.meter .fill{position:absolute;inset-block:0;inset-inline-start:0;background:var(--ok);transition:width .2s var(--ease)}.meter .fill.bad{background:var(--bad)}.meter .fill.warn{background:var(--warn)}.meter .limit{position:absolute;inset-block:-2px;inset-inline-start:100%;width:2px;background:var(--bad)}.meter.big{height:26px;border-radius:var(--r)}.meter-txt{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:.78rem;color:var(--ink);font-family:var(--mono)}.barsplit{display:grid;gap:.4rem;margin:.8rem 0}.bs-row{display:grid;grid-template-columns:6.5rem 1fr;align-items:center;gap:.5rem}.bs-l{font-size:.76rem;color:var(--ink-4);font-family:var(--mono)}.bs-bar{display:inline-block;padding:.12rem .5rem;border-radius:4px;font-family:var(--mono);font-size:.76rem;color:#0b0c10;min-width:3rem;text-align:center;transition:width .2s var(--ease)}.bs-bar.ok{background:var(--ok)}.bs-bar.bad{background:var(--bad)}.bs-bar.cap{background:var(--line-2);color:var(--ink-2)}.oracle-grid{display:flex;gap:3px;flex-wrap:wrap;margin:.8rem 0}.ob{font-family:var(--mono);font-size:.74rem;padding:.25rem .3rem;border-radius:4px;background:var(--bg-3);border:1px solid var(--line);color:var(--ink-4);min-width:2rem;text-align:center}.ob.got{background:color-mix(in srgb,var(--bad) 22%,var(--bg-3));border-color:var(--bad);color:var(--bad)}.ob.now{border-color:var(--accent);color:var(--accent);animation:pulse 1.1s infinite}@keyframes pulse{50%{opacity:.45}}.layers{display:grid;gap:.25rem;margin:.9rem 0;font-family:var(--mono)}.lay{display:grid;grid-template-columns:7rem 1fr 2rem;align-items:center;gap:.5rem}.lname{font-size:.72rem;color:var(--ink-4)}.lcount{font-size:.74rem;color:var(--accent);text-align:center}.boxes{display:flex;gap:.4rem}.bx{padding:.22rem .5rem;border-radius:5px;font-size:.72rem;border:1px solid var(--line-2);background:var(--bg-3);color:var(--ink-3)}.bx.shared{border-color:var(--ok);color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--bg-3))}.bx.sep{border-color:var(--cost);color:var(--cost)}.arrows{text-align:center;color:var(--ink-4);font-size:.8rem;letter-spacing:1.2rem;padding-inline-start:1.2rem}.timeline{display:flex;height:30px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);margin:.8rem 0;font-family:var(--mono);font-size:.72rem}.tl-run{background:color-mix(in srgb,var(--ok) 55%,var(--bg-3));color:#0b0c10;display:grid;place-items:center}.tl-stall{background:color-mix(in srgb,var(--bad) 60%,var(--bg-3));color:#0b0c10;display:grid;place-items:center}.tl-idle{background:var(--bg-3);color:var(--ink-4);display:grid;place-items:center}.curve{width:100%;height:auto;margin:.6rem 0}.curve .ax{stroke:var(--line-2);stroke-width:1}.curve .guide{stroke:var(--ok);stroke-width:1;stroke-dasharray:3 3;opacity:.6}.curve .cv{fill:none;stroke:var(--accent);stroke-width:2}.curve .pt{fill:var(--ok)}.curve .pt.warn{fill:var(--warn)}.curve .pt.bad{fill:var(--bad)}.curve .lbl{fill:var(--ink-4);font-size:9px;font-family:var(--mono)}.raft{display:grid;gap:.28rem;margin:.9rem 0;font-family:var(--mono)}.rnode{display:grid;grid-template-columns:2.4rem repeat(3,2.1rem);gap:.3rem;align-items:center}.rname{font-size:.74rem;color:var(--ink-4)}.rcell{height:1.7rem;display:grid;place-items:center;border-radius:5px;font-size:.78rem;border:1px solid var(--line);background:var(--bg-3);color:var(--ink-3)}.rcell.empty{opacity:.28}.rcell.t1{border-color:var(--line-2)}.rcell.t2{border-color:var(--ok);color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--bg-3))}.rcell.t3{border-color:var(--cost);color:var(--cost);background:color-mix(in srgb,var(--cost) 12%,var(--bg-3))}.rcell.t4{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-3))}.rcell.lost{border-color:var(--bad);color:var(--bad);text-decoration:line-through}.steptxt{font-size:.84rem;color:var(--ink-2);margin:.3rem 0 0}.btn{display:inline-flex;align-items:center;gap:.4rem;background:var(--bg-3);border:1px solid var(--line-2);color:var(--ink);padding:.38rem .85rem;border-radius:var(--r);font-family:inherit;font-size:.86rem;cursor:pointer;text-decoration:none;transition:all .14s var(--ease)}.btn:hover:not(:disabled){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-3))}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:color-mix(in srgb,var(--accent) 20%,var(--bg-3));border-color:color-mix(in srgb,var(--accent) 55%,transparent)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-4)}.btn.ghost:hover{color:var(--ink-2);background:var(--bg-3)}.chapter-done{margin:3rem 0 1.4rem;padding:1rem 1.1rem;border:1px dashed var(--line-2);border-radius:var(--r-lg);display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.chapter-done p{margin:0;flex:1;min-width:14rem;font-size:.85rem;color:var(--ink-3)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1.6rem}.pager a{display:flex;flex-direction:column;gap:.2rem;padding:.8rem 1rem;border:1px solid var(--line);border-radius:var(--r-lg);text-decoration:none;background:var(--bg-1);transition:all .16s var(--ease)}.pager a:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--bg-1))}.pager .dir{font-size:.72rem;color:var(--ink-4);font-family:var(--mono)}.pager .ttl{font-size:.88rem;color:var(--ink)}.pager .prev{text-align:start}.pager .next{text-align:end}.toc{position:sticky;top:76px;align-self:start;max-height:calc(100vh - 100px);overflow-y:auto;font-size:.8rem;padding-inline-start:1rem;border-inline-start:1px solid var(--line)}.toc-h{font-family:var(--mono);font-size:.68rem;color:var(--ink-4);letter-spacing:.05em;margin-bottom:.5rem}.toc ul{list-style:none;margin:0;padding:0}.toc li{margin-bottom:.1rem}.toc a{display:block;color:var(--ink-3);text-decoration:none;padding:.22rem .4rem;border-radius:5px;line-height:1.5}.toc a:hover{color:var(--ink);background:var(--bg-2)}.toc a.on{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:600}.toc li.lab a{color:var(--ok)}.toc li.lab .g{margin-inline-end:.25rem}.home{max-width:92ch}.hero{padding:2rem 0 1.4rem}.kicker{font-family:var(--mono);font-size:.74rem;color:var(--ink-4);letter-spacing:.06em;margin:0 0 .6rem}.hero h1{font-size:clamp(1.9rem,4.4vw,2.9rem);line-height:1.3}.hero h1 em{font-style:normal;color:var(--accent)}.lede{color:var(--ink-2);font-size:1.03rem;max-width:62ch;margin:1rem 0 0}.lede.small{font-size:.92rem;color:var(--ink-3)}.progress{display:flex;align-items:center;gap:.7rem;font-size:.8rem;color:var(--ink-3);margin-top:1.2rem}.pbar{flex:0 0 180px;height:4px;background:var(--bg-3);border-radius:999px;overflow:hidden}.pbar i{display:block;height:100%;background:var(--accent)}.trackgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:.9rem;margin:1.6rem 0}.tcard{display:flex;flex-direction:column;gap:.7rem;padding:1.1rem;border:1px solid var(--line);border-radius:var(--r-lg);text-decoration:none;color:inherit;background:linear-gradient(160deg,var(--bg-2),var(--bg-1));position:relative;overflow:hidden;transition:all .18s var(--ease)}.tcard:before{content:"";position:absolute;inset-block-start:0;inset-inline:0;height:3px;background:var(--c)}.tcard:hover{border-color:var(--c);transform:translateY(-2px)}.tc-head{display:flex;align-items:center;gap:.5rem}.tc-dot{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 18%,transparent)}.tc-head h2{margin:0;font-size:1.12rem}.tc-contract{margin:0;display:grid;gap:.5rem}.tc-contract>div{display:grid;gap:.1rem}.tc-contract dt{font-family:var(--mono);font-size:.66rem;color:var(--ink-4);letter-spacing:.05em}.tc-contract dd{margin:0;font-size:.85rem;color:var(--ink-2);line-height:1.6}.tc-contract.wide{grid-template-columns:1fr 1fr;gap:1rem;margin:1rem 0}.tc-blurb{margin:0;font-size:.84rem;color:var(--ink-3);line-height:1.7}.tcard footer{display:flex;gap:.8rem;font-size:.74rem;color:var(--ink-4);font-family:var(--mono);margin-top:auto;padding-top:.4rem;border-top:1px solid var(--line)}.tcard footer .done{color:var(--ok)}.homerow{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.9rem;margin:1.2rem 0 2rem}.homerow .wide{padding:1rem 1.1rem;border:1px solid var(--line);border-radius:var(--r-lg);text-decoration:none;color:inherit;background:var(--bg-1);transition:all .16s var(--ease)}.homerow .wide:hover{border-color:var(--accent)}.homerow h3{margin:0 0 .35rem;font-size:1rem}.homerow p{margin:0;font-size:.85rem;color:var(--ink-3);line-height:1.7}.howto{border-top:1px solid var(--line);padding-top:1.4rem}.howto h3{margin:0 0 .7rem;font-size:1rem}.howto ul{margin:0;padding-inline-start:1.2rem}.howto li{font-size:.88rem;color:var(--ink-2);margin-bottom:.5rem;line-height:1.75}.track{max-width:88ch}.track-head{padding:1.4rem 0 1rem}.chapgrid{list-style:none;margin:1.4rem 0;padding:0;display:grid;gap:.55rem}.chcard{display:grid;grid-template-columns:2.6rem 1fr auto;gap:.8rem;padding:.85rem 1rem;border:1px solid var(--line);border-radius:var(--r-lg);text-decoration:none;color:inherit;background:var(--bg-1);transition:all .15s var(--ease)}.chcard:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--bg-1))}.chcard .n{font-family:var(--mono);font-size:1.05rem;color:var(--accent);opacity:.65}.chcard h3{margin:0;font-size:.98rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.chcard .labtag{font-family:var(--mono);font-size:.68rem;color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 40%,transparent);border-radius:999px;padding:0 .4rem}.chcard .st{margin:.1rem 0 .3rem;font-size:.82rem;color:var(--ink-3)}.chcard .bl{margin:0;font-size:.82rem;color:var(--ink-2);line-height:1.65}.chcard .tick{color:var(--ok);font-size:1rem}.chcard.done{border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}.crosshint{margin-top:2rem;padding:1.1rem;border:1px dashed var(--line-2);border-radius:var(--r-lg)}.crosshint h3{margin:0 0 .4rem;font-size:1rem}.crosshint p{margin:0 0 .8rem;font-size:.86rem;color:var(--ink-3)}.crossings{max-width:88ch}.filterbar{display:flex;gap:.45rem;flex-wrap:wrap;margin:1.2rem 0}.fchip{display:inline-flex;align-items:center;gap:.4rem;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-3);border-radius:999px;padding:.28rem .8rem;font-size:.82rem;font-family:inherit;cursor:pointer}.fchip .dot{width:7px;height:7px;border-radius:50%;background:var(--c)}.fchip:hover{color:var(--ink)}.fchip.on{background:color-mix(in srgb,var(--c, var(--accent)) 16%,var(--bg-2));border-color:var(--c, var(--accent));color:var(--ink)}.crosslist{list-style:none;margin:0;padding:0;display:grid;gap:.8rem}.cross{border:1px solid var(--line);border-radius:var(--r-lg);padding:.9rem 1rem;background:var(--bg-1)}.cross-ends{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;margin-bottom:.7rem}.cross .end{text-decoration:none;padding:.45rem .7rem;border-radius:var(--r);border:1px solid color-mix(in srgb,var(--c) 34%,var(--line));background:color-mix(in srgb,var(--c) 8%,var(--bg-2));display:grid;gap:.1rem;transition:all .14s var(--ease)}.cross .end:hover{border-color:var(--c)}.cross .end .tn{font-size:.68rem;color:var(--c);font-family:var(--mono)}.cross .end .cn{font-size:.84rem;color:var(--ink)}.cross .link{display:flex;align-items:center;gap:.2rem;color:var(--ink-4);font-size:.9rem}.cross .link i{width:14px;height:1px;background:var(--line-2);display:block}.cross h3{margin:0 0 .3rem;font-size:.95rem}.cross p{margin:0;font-size:.85rem;color:var(--ink-3);line-height:1.72}.patterns{margin-top:2rem;padding-top:1.4rem;border-top:1px solid var(--line)}.patterns h3{margin:0 0 .7rem;font-size:1rem}.patterns ul{margin:0;padding-inline-start:1.2rem}.patterns li{font-size:.88rem;color:var(--ink-2);margin-bottom:.5rem;line-height:1.75}.labs-page{max-width:84ch}.labgroup{margin-top:1.8rem}.labgroup h2{display:flex;align-items:center;gap:.5rem;font-size:1.05rem;margin:0 0 .7rem}.labgroup h2 .dot{width:9px;height:9px;border-radius:50%;background:var(--c)}.labgroup ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.labcard{display:grid;grid-template-columns:1.6rem 1fr;gap:.7rem;padding:.8rem 1rem;border:1px solid var(--line);border-radius:var(--r-lg);text-decoration:none;color:inherit;background:var(--bg-1);transition:all .15s var(--ease)}.labcard:hover{border-color:var(--c);background:color-mix(in srgb,var(--c) 7%,var(--bg-1))}.labcard .gear{color:var(--c)}.labcard h3{margin:0 0 .2rem;font-size:.94rem}.labcard p{margin:0 0 .3rem;font-size:.84rem;color:var(--ink-2)}.labcard .where{font-size:.72rem;color:var(--ink-4);font-family:var(--mono)}.palette-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#050609b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;justify-content:center;padding-top:12vh}.palette{width:min(660px,92vw);max-height:68vh;display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 24px 60px #0000008c}.palette input{border:0;border-bottom:1px solid var(--line);background:var(--bg-2);color:var(--ink);padding:.85rem 1rem;font-family:inherit;font-size:.95rem;outline:none}.palette input::placeholder{color:var(--ink-4)}.palette ul{list-style:none;margin:0;padding:.35rem;overflow-y:auto;flex:1}.palette li button{width:100%;display:grid;grid-template-columns:3rem 1fr;grid-template-areas:"kind ttl" "kind sub";gap:0 .6rem;text-align:start;background:transparent;border:0;border-radius:var(--r);padding:.45rem .6rem;cursor:pointer;color:inherit;font-family:inherit}.palette li button.on{background:color-mix(in srgb,var(--c, var(--accent)) 14%,var(--bg-2))}.palette .kind{grid-area:kind;font-family:var(--mono);font-size:.64rem;color:var(--c, var(--accent));align-self:center}.palette .ttl{grid-area:ttl;font-size:.88rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette .sub{grid-area:sub;font-size:.72rem;color:var(--ink-4)}.palette .none{padding:1.2rem;text-align:center;color:var(--ink-4);font-size:.85rem}.palette footer{padding:.4rem .8rem;border-top:1px solid var(--line);font-size:.72rem;color:var(--ink-4)}.scrim{display:none}@media (max-width: 1180px){.content{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (max-width: 900px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;inset-block:0;inset-inline-end:0;width:84vw;max-width:320px;z-index:80;transform:translate(100%);transition:transform .22s var(--ease);border-inline-start:1px solid var(--line-2)}.shell.drawer .sidebar{transform:translate(0)}.shell.drawer .scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0506099e;z-index:70}.topbar .menu{display:inline-flex;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-2);border-radius:var(--r);padding:.18rem .5rem;cursor:pointer;font-size:1rem}.contract dl{grid-template-columns:1fr}.contract .cell:nth-child(odd){border-inline-end:none}.contract .cell:not(:last-child){border-block-end:1px solid var(--line)}.pager{grid-template-columns:1fr}.lrow{grid-template-columns:1fr;gap:.3rem}.cross-ends{grid-template-columns:1fr}.cross .link{transform:rotate(90deg);justify-self:center}.tc-contract.wide{grid-template-columns:1fr}body{font-size:16px}}
