@charset "UTF-8";
:root{color-scheme:dark;--bg:#101615;--panel:#17201f;--line:#354441;--ink:#e6e6dc;--dim:#a2b3ab;--cyan:#55d9cb;--gold:#e8c57c;--coral:#e2997f;--violet:#aa9ce2;--mono:"Berkeley Mono","Cascadia Mono",Consolas,monospace;--sans:"Segoe UI",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 var(--sans)}a{color:inherit;text-underline-offset:4px}button,input,select{font:inherit}button,select{color:var(--ink);background:#202d29;border:1px solid #52665c;border-radius:3px}button{cursor:pointer;padding:7px 12px}button:hover{background:#32473c}a:hover{color:var(--cyan)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{opacity:.4;cursor:default}input{accent-color:var(--cyan)}[hidden]{display:none!important}
.skip{position:fixed;top:-80px;left:16px;padding:10px;background:var(--gold);color:#17201c;z-index:20}.skip:focus{top:8px}.masthead{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 28px;background:#1c2722}.brand{font:700 13px var(--mono);letter-spacing:.18em;text-decoration:none}.masthead .subbrand{color:var(--dim);font:11px var(--mono);letter-spacing:.08em}.masthead .edition{margin-left:auto;font:11px var(--mono);color:var(--dim)}.layout{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:calc(100vh - 56px)}.rail{border-right:1px solid var(--line);padding:24px 14px 32px;position:sticky;top:0;align-self:start;max-height:100vh;overflow:auto;scrollbar-width:thin}.rail-title{padding:0 9px 10px;font:10px var(--mono);letter-spacing:.14em;color:var(--dim)}.rail h2{font:10px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;margin:24px 9px 8px;color:var(--gold)}.rail a{display:flex;gap:9px;font:11px/1.6 var(--sans);text-decoration:none;padding:7px 8px;border-left:2px solid transparent}.rail .num{font:10px/1.7 var(--mono);color:#93aa9d}.rail a[aria-current=page]{background:#26372f;border-color:var(--cyan);color:#f2f1dc}.rail a:hover{background:#25332b}.main{padding:25px 32px 50px;min-width:0;max-width:1600px}.overline{display:flex;align-items:center;gap:12px;font:11px var(--mono);letter-spacing:.06em;color:var(--gold)}.overline .rule{height:1px;background:var(--line);flex:1}.pager{display:flex;gap:10px}.pager a{font:12px var(--mono);text-decoration:none;border:1px solid var(--line);padding:4px 9px;color:var(--dim)}h1{font:400 clamp(28px,3vw,48px)/1.16 var(--sans);letter-spacing:-.035em;max-width:1050px;margin:20px 0 12px}.lede{color:#b7c6bb;max-width:850px;margin:0 0 24px;font-size:16px;line-height:1.65}.lab{border:1px solid #496154;background:#121b18}.lab-header{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:#1b2922}.lab-header .label{font:11px var(--mono);letter-spacing:.12em}.lab-header .mode-label{margin-left:auto;color:var(--dim);font:10px var(--mono)}.lab-body{display:grid;grid-template-columns:minmax(0,1fr) 265px}.stage{min-width:0;position:relative;background:radial-gradient(ellipse at 45% 48%,#1e3028 0,#111b17 80%);align-self:stretch;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.stage svg{display:block;width:100%;height:auto;aspect-ratio:1000/600;min-height:250px;user-select:none}.stage.orbit{cursor:grab;touch-action:pan-y}.stage.orbit.dragging{cursor:grabbing;touch-action:none}.stage svg text{font-family:var(--mono);font-size:16px}.stage .hint{color:#8ea79a;font:10px var(--mono);padding:5px 15px 13px;min-height:28px}.stage-toolbar{display:flex;gap:6px;align-items:center;padding:9px 12px;border-top:1px solid var(--line);margin-top:auto;flex-wrap:wrap}.stage-toolbar button{font:11px var(--mono);padding:5px 10px}.stage-toolbar .spacer{flex:1}.controls{border-left:1px solid var(--line);padding:19px 16px;background:#17241d;min-width:0}.eyebrow{color:var(--gold);font:10px var(--mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px}.states{display:flex;flex-direction:column;gap:6px}.states button{font:12px/1.5 var(--sans);text-align:left;padding:9px 10px;border-color:#3e5145;background:#1c2a22;display:flex;gap:10px}.states button .step{font:10px/1.8 var(--mono);color:#9cae98}.states button[aria-pressed=true]{border-color:var(--cyan);background:#264138;color:#effce8}.control{margin:23px 0 15px}.control label{display:block;font-size:12px}.control input{width:100%;margin:12px 0 5px}.control output{display:block;color:var(--cyan);font:13px var(--mono)}.reading{border-top:1px solid #405347;margin-top:18px;padding-top:15px;min-height:88px;color:var(--gold);font:12px/1.9 var(--mono);white-space:pre-line}.caption{border-top:1px solid var(--line);padding:15px 20px;background:#1c2a24;display:flex;gap:18px;min-height:84px}.caption .tag{font:10px/1.9 var(--mono);color:var(--cyan);white-space:nowrap;letter-spacing:.1em}.caption p{margin:0;font-size:14px;max-width:1000px}.below{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin:29px 0}.text-card{padding:0 0 15px;min-width:0}.text-card h2,.code-card h2{font:11px var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--gold);padding-bottom:11px;border-bottom:1px solid var(--line);margin:0 0 13px}.text-card p{font-size:14px;margin:0 0 14px;color:#c7d2c8}.text-card .finding{border-left:2px solid var(--cyan);padding-left:13px;color:#dce5d9}.boundary{color:var(--dim)!important;font-size:12px!important}.boundary strong{color:#c6d6c9;font-weight:400}.code-card{border:1px solid var(--line);padding:18px 20px;background:#17201e;min-width:0}.equation{font:14px/1.8 var(--mono);color:var(--cyan);margin:8px 0 14px;overflow-wrap:anywhere}.code-card pre{font:12px/1.75 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:#d4ddb8;margin:0;padding:10px 0}.code-card .code-note{color:var(--dim);font-size:12px;margin:13px 0 0}.notation{font:10px/1.7 var(--mono);color:#95ada1;margin-bottom:6px}.source-row{border-top:1px solid var(--line);padding:16px 0;display:flex;gap:20px;flex-wrap:wrap;align-items:center;font:11px var(--mono);color:var(--dim)}.source-row a{color:#c2d3b8}.source-row .grow{flex:1}.bottom-pager{display:flex;justify-content:space-between;gap:20px;font-size:13px}.mobile-jump{display:none}.index-main{padding:45px max(25px,5vw) 60px;max-width:1800px;margin:auto}.index-main h1{font-size:clamp(40px,5vw,72px);max-width:1050px;margin:20px 0}.index-intro{display:grid;grid-template-columns:1fr minmax(220px,370px);gap:45px;margin-bottom:35px}.index-intro p{max-width:780px;color:var(--dim);font-size:17px}.index-aside{padding:18px 20px;border-left:1px solid var(--line);font:12px/1.9 var(--mono);color:#c2d0bd}.index-aside a{color:var(--cyan)}.filters{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0 32px}.filters button{font:11px var(--mono)}.filters button[aria-pressed=true]{color:#10201a;background:var(--cyan);border-color:var(--cyan)}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.study-card{display:flex;flex-direction:column;border:1px solid var(--line);background:#17221c;text-decoration:none;transition:border-color .2s,transform .2s;overflow:hidden}.study-card:hover{border-color:var(--cyan);transform:translateY(-3px);color:var(--ink)}.card-art{background:radial-gradient(ellipse,#24372b,#121d17);aspect-ratio:5/3;overflow:hidden}.card-art svg{display:block;width:100%;height:100%}.card-art svg text{font:16px var(--mono)}.card-copy{padding:16px 18px 20px}.card-meta{font:10px var(--mono);color:var(--gold);margin-bottom:10px}.study-card h2{font:400 19px/1.4 var(--sans);margin:0 0 10px;letter-spacing:-.02em}.study-card p{font-size:12px;color:var(--dim);margin:0}.index-footer{border-top:1px solid var(--line);margin-top:35px;padding-top:20px;color:var(--dim);font-size:12px}.empty{padding:40px;font-size:15px}.search{margin-left:auto;min-width:240px;padding:8px 12px;background:#17251e;color:var(--ink);border:1px solid #52665c;border-radius:3px;font:12px var(--mono)}
@media(min-width:1800px){.lab-body{grid-template-columns:minmax(0,1fr) 310px}.controls{padding:22px}.main{padding:32px 44px}.rail{padding-top:32px}.layout{grid-template-columns:265px minmax(0,1fr)}}
@media(max-width:1200px){.layout{grid-template-columns:200px minmax(0,1fr)}.main{padding:24px 22px}.lab-body{grid-template-columns:minmax(0,1fr) 220px}.controls{padding:15px 12px}.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.stage svg{min-height:300px}.below{gap:20px}.rail a{font-size:10px}}
@media(max-width:980px){.layout{display:block}.rail{display:none}.mobile-jump{display:block;margin:0 0 20px}.mobile-jump select{width:100%;padding:8px;font-size:12px}.main{max-width:none}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.masthead .subbrand{display:none}}
@media(max-width:650px){.masthead{height:auto;min-height:48px;padding:12px 16px;gap:10px}.brand{font-size:11px}.masthead .edition{font-size:9px}.main{padding:20px 14px 35px}h1{font-size:32px}.lede{font-size:14px}.overline{flex-wrap:wrap;font-size:10px}.pager{margin-left:auto}.lab-body{display:flex;flex-direction:column}.stage svg{min-height:0;aspect-ratio:1000/650}.stage .hint{font-size:9px}.controls{border-left:0;border-top:1px solid var(--line);padding:14px}.states{display:grid;grid-template-columns:1fr 1fr}.states button{font-size:11px;padding:7px}.control{margin:18px 0 8px}.reading{min-height:0;margin-top:10px;padding-top:10px}.caption{padding:14px;gap:9px;flex-direction:column}.caption p{font-size:13px}.below{grid-template-columns:1fr;gap:12px;margin-top:22px}.code-card{padding:14px}.code-card pre{font-size:11px}.source-row{gap:12px;overflow-wrap:anywhere}.index-main{padding:26px 16px}.index-intro{display:block}.index-aside{margin:20px 0}.index-intro p{font-size:15px}.cards{grid-template-columns:1fr}.search{width:100%;margin:10px 0 0}.study-card{display:grid;grid-template-columns:130px 1fr}.card-art{height:100%;aspect-ratio:auto;min-height:140px}.card-art svg{width:230px;max-width:none;margin-left:-50px}.card-copy{padding:13px}.study-card h2{font-size:16px}.study-card p{font-size:11px}.lab-header .mode-label{font-size:9px}.lab-header .label{font-size:10px}.caption .tag{white-space:normal}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.notation{color:#b2c4b7;font-size:11px}.code-card pre{font-size:13px}.reading{overflow-wrap:anywhere;padding-top:19px}.stage-toolbar button{min-height:30px}.rail a{font-size:12px}.rail .num{font-size:11px}
#diagram-modal{width:calc(100vw - 24px);max-width:1800px;height:calc(100dvh - 24px);max-height:none;margin:auto;padding:0;border:1px solid var(--cyan);background:var(--bg);color:var(--ink);overflow:auto}#diagram-modal::backdrop{background:#08100be8}.expand-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 18px;font:11px var(--mono);position:sticky;top:0;z-index:2;background:#22382c;border-bottom:1px solid var(--line)}#diagram-modal #drawing{overflow:auto;max-width:100%}#diagram-modal #drawing svg{min-width:850px}#diagram-modal .stage{touch-action:pan-x pan-y}#diagram-modal .lab{border:0}
@media(max-width:650px){.stage-toolbar button{min-width:44px;min-height:44px;font-size:12px}.states button{min-height:44px;font-size:12px}.control input{min-height:36px}.control output{font-size:14px}.control label{font-size:14px}.code-card pre{font-size:13px;line-height:1.8}.notation{font-size:11px}.source-row a{padding:10px 0}.overline,.pager a{font-size:12px}.masthead .edition{font-size:10px}.stage .hint{font-size:11px;line-height:1.6;padding:10px 14px}.reading{padding-top:20px;padding-bottom:8px}.expand-head{font-size:10px;padding:10px}.expand-head button{min-height:44px}.lab-header .mode-label{font-size:10px}.stage svg{aspect-ratio:1000/600}.index-aside{font-size:13px}.search{min-height:44px}.filters button{min-height:40px}}
@media print{body{color:#111;background:#fff}.rail,.masthead,.controls,.stage-toolbar,.pager,.mobile-jump,.bottom-pager{display:none}.layout{display:block}.main{max-width:none;padding:0}.lab-body{display:block}.stage{print-color-adjust:exact;-webkit-print-color-adjust:exact;background:#132019}.caption,.code-card{background:#fff;color:#111}.caption p,.text-card p,.code-card pre,.code-note,.equation,.source-row{color:#111!important}.below{break-inside:avoid}.lab{break-inside:avoid}}
@media screen and (max-width:650px){.stage-toolbar .spacer{display:none}.stage-toolbar #enlarge{flex-basis:100%}.states button:last-child:nth-child(odd){grid-column:1/-1}}
