:root{--bg:#11151b;--surface:#191e27;--raised:#222935;--ink:#e8edf2;--muted:#a5afbd;--line:#323b49;--accent:#78d4dc;--accent-ink:#102127;--series1:#aeb8c4;--series2:#78d4dc;--series3:#efa87e;--warn:#efbd77;--font:'Satoshi',system-ui,sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.2rem;--text-xl:clamp(1.6rem,2vw,2rem);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px}
[data-theme=light]{--bg:#f3f5f7;--surface:#fff;--raised:#eaf0f3;--ink:#17252e;--muted:#566674;--line:#cbd5dc;--accent:#006773;--accent-ink:#fff;--series1:#5b6e7c;--series2:#007582;--series3:#a55328;--warn:#88561d}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:var(--text-base)/1.55 var(--font)}button,select{font:inherit;font-size:var(--text-sm);color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:6px;padding:var(--s2) var(--s3);min-height:40px}button{cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:wait}button:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}header{padding:var(--s4) var(--s6);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--s4);background:var(--surface)}.brand{display:flex;align-items:center;gap:var(--s3);font-size:var(--text-sm);font-weight:700}.brand svg{color:var(--accent);flex-shrink:0}.subbrand{color:var(--muted);font-weight:400}nav{display:flex;gap:var(--s5);align-items:center;font-size:var(--text-sm)}.layout{display:grid;grid-template-columns:300px minmax(0,1fr);max-width:1760px;margin:auto}aside{border-right:1px solid var(--line);padding:var(--s6);background:var(--surface)}main{padding:var(--s6) var(--s8);min-width:0}.section-label,.badge{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;color:var(--accent)}h1{font-size:var(--text-xl);line-height:1.15;letter-spacing:-.025em;margin:var(--s4) 0 var(--s3)}h2{font-size:var(--text-xl);letter-spacing:-.025em;line-height:1.2;margin:0}h3{font-size:var(--text-lg);font-weight:700;margin:0}p{margin:var(--s2) 0 var(--s4)}.muted{color:var(--muted)}.small,.control-note{font-size:var(--text-sm)}.intro{font-size:var(--text-sm);margin-bottom:var(--s6)}label{display:block;font-size:var(--text-sm);margin:var(--s5) 0 var(--s2);font-weight:500}select{width:100%;max-width:100%}.tabs{display:flex;gap:var(--s1);background:var(--bg);padding:var(--s1);border:1px solid var(--line);border-radius:8px}.tabs button{flex:1;padding:var(--s2) var(--s1);background:transparent;border-color:transparent;font-size:var(--text-xs);font-weight:700}.tabs .active{background:var(--raised);color:var(--accent);border-color:var(--line)}.primary-button{margin-top:var(--s6);width:100%;background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:700}.divider{height:1px;background:var(--line);margin:var(--s6) 0}.control-note{color:var(--muted);margin-top:var(--s3)}aside>button{width:100%}details{margin-top:var(--s5);font-size:var(--text-sm)}summary{cursor:pointer;color:var(--accent);padding:var(--s2) 0}#fixed{font-size:var(--text-xs);overflow-wrap:anywhere}#fixed div{padding:var(--s1) 0;border-bottom:1px solid var(--line)}.topline{display:flex;justify-content:space-between;gap:var(--s3);font-size:var(--text-xs);margin-bottom:var(--s6)}.badge{border:1px solid var(--line);border-radius:4px;padding:var(--s1) var(--s2)}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s6);margin-bottom:var(--s4)}.heading-row p{font-size:var(--text-sm);margin-bottom:0}.heading-row button{flex-shrink:0}.plot-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:var(--s5);min-width:0}.plot-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s4)}.plot-heading p{margin-bottom:var(--s2)}.plot-heading button{white-space:nowrap;font-size:var(--text-xs)}.legend{display:flex;gap:var(--s5);flex-wrap:wrap;font-size:var(--text-sm);margin-top:var(--s3);color:var(--muted)}.legend span{display:flex;align-items:center;gap:var(--s2)}i.line{display:inline-block;width:24px;height:0;border-top:3px solid var(--series2)}i.one{border-color:var(--series1);border-top-style:dotted}i.two{border-color:var(--series2);border-top-style:dashed}i.three{border-color:var(--series3)}.canvas-wrap{height:330px;position:relative;margin-top:var(--s3)}canvas{display:block;width:100%;height:100%}.small-canvas{height:215px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);margin:var(--s4) 0}.metric{border-left:3px solid var(--line);padding:var(--s3) var(--s4);background:var(--surface)}.metric .value{font-size:var(--text-lg);font-weight:700}.metric .label{font-size:var(--text-xs);color:var(--muted)}.metric .result{font-size:var(--text-sm);margin-top:var(--s1)}.lower-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:var(--s4)}.inline-label{display:inline-block;margin:var(--s2) var(--s3) var(--s2) 0;font-size:var(--text-xs)}#dose{width:auto;min-width:100px;font-size:var(--text-xs)}.spatial-row{display:grid;grid-template-columns:42px 1fr 64px;align-items:center;gap:var(--s3);margin:var(--s6) 0;font-size:var(--text-sm)}.spatial-row strong{text-align:right;font-variant-numeric:tabular-nums}.bar-track{height:12px;background:var(--raised);border-radius:3px;overflow:hidden}.bar-track div{background:var(--accent);height:100%;width:0}.data-details{border:1px solid var(--line);border-radius:8px;padding:var(--s3) var(--s5)}.table-scroll{overflow:auto;max-height:340px}table{width:100%;border-collapse:collapse;font-size:var(--text-xs);font-variant-numeric:tabular-nums}th,td{text-align:right;padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);white-space:nowrap}th{position:sticky;top:0;background:var(--surface)}.notes{margin:var(--s8) 0;max-width:900px}.notes p{font-size:var(--text-sm);color:var(--muted)}footer{display:flex;flex-wrap:wrap;gap:var(--s5);font-size:var(--text-xs);color:var(--muted);border-top:1px solid var(--line);padding-top:var(--s5)}#error{padding:var(--s5);color:var(--warn);border:1px solid var(--warn);margin-bottom:var(--s5)}.tooltip{position:absolute;background:var(--raised);border:1px solid var(--line);padding:var(--s3);border-radius:5px;font-size:var(--text-xs);pointer-events:none;top:120px;right:30px;z-index:2}#plot-note{margin-bottom:0}
@media(max-width:1100px){.layout{grid-template-columns:270px minmax(0,1fr)}aside{padding:var(--s5)}main{padding:var(--s5)}.lower-grid{grid-template-columns:1fr}.subbrand{display:none}.heading-row{align-items:flex-start}.metrics{gap:var(--s2)}.metric{padding:var(--s3)}}
@media(max-width:760px){header{padding:var(--s3) var(--s4);flex-wrap:wrap}nav{gap:var(--s4);width:100%;justify-content:space-between}.layout{display:block}aside{border-right:0;border-bottom:1px solid var(--line);padding:var(--s5)}h1 br{display:none}h1 br:after{content:" "}.intro{margin-bottom:var(--s4)}main{padding:var(--s5) var(--s3)}.topline{flex-wrap:wrap}.heading-row{display:block}.heading-row button{margin-top:var(--s4)}.plot-card{padding:var(--s4)}.plot-heading{flex-wrap:wrap}.canvas-wrap{height:300px}.small-canvas{height:230px}.metrics{grid-template-columns:1fr}.metric{display:grid;grid-template-columns:1fr 1fr;gap:var(--s1) var(--s3)}.metric .label{grid-column:1/-1}.metric .value{font-size:var(--text-base)}.legend{gap:var(--s3);font-size:var(--text-xs)}aside details{display:none}#parameters{max-width:100%}.topline{margin-bottom:var(--s5)}.plot-heading h3{font-size:var(--text-base)}}
.reader{max-width:1060px;margin:auto;padding:var(--s8) var(--s6)}.reader h1{font-size:var(--text-xl);margin-bottom:var(--s6)}.reader h2{font-size:var(--text-lg);margin:var(--s10) 0 var(--s4)}.reader h3{font-size:var(--text-base);margin-top:var(--s6)}.reader p{max-width:80ch;line-height:1.8}.reader img{max-width:100%;height:auto;background:#fff}.reader pre{overflow:auto;background:var(--surface);padding:var(--s4);font-size:var(--text-sm)}.reader table{display:block;overflow:auto;margin:var(--s5) 0}.reader th,.reader td{white-space:normal;text-align:left;min-width:100px}.reader mjx-container[display=true]{overflow-x:auto;overflow-y:hidden;padding:var(--s3) 0}.reader .math-help{color:var(--muted);font-size:var(--text-sm);border-bottom:1px solid var(--line);padding-bottom:var(--s5)}
@media(prefers-reduced-motion:no-preference){button{transition:border-color .15s,background .15s}.bar-track div{transition:width .25s}}
.reader{overflow-wrap:anywhere}.reader mjx-container{max-width:100%;overflow-x:auto;overflow-y:hidden}
.reader mjx-container:not([display="true"]){display:inline-block;vertical-align:middle}
header nav{flex-wrap:wrap}
.trace-section{margin-top:var(--s10);padding-top:var(--s8);border-top:1px solid var(--line);scroll-margin-top:var(--s6)}
.schematic-gallery{margin-bottom:var(--s8)}.schematic-gallery img{display:block;width:100%;height:auto;margin-top:var(--s4)}.schematic-gallery details p{max-width:85ch}.schematic-gallery summary{min-height:44px;display:list-item}
.trace-section h2{margin:var(--s3) 0}.trace-lede{max-width:72ch}
.trace-controls{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1fr);gap:var(--s6);margin:var(--s6) 0}
.trace-controls label{margin:0 0 var(--s2)}.trace-controls fieldset{border:0;padding:0;margin:0;min-width:0}
.trace-controls legend{font-size:var(--text-sm);padding:0;margin-bottom:var(--s2)}
.trace-time-buttons{display:flex;gap:var(--s1);flex-wrap:wrap}
.trace-time-buttons button{flex:1;min-height:44px;white-space:nowrap}
.trace-time-buttons button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}
.trace-snapshot{font-size:var(--text-sm);font-weight:700}
.trace-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;margin:var(--s4) 0;list-style:none;gap:var(--s3)}
.trace-stages li{background:var(--surface);border-top:2px solid var(--line);padding:var(--s4);min-width:0}
.trace-stages li:last-child{border-top-color:var(--accent)}
.trace-step{font-size:var(--text-sm);font-weight:700}.trace-value{font-size:var(--text-xl);line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums;margin:var(--s4) 0 var(--s1)}
.trace-unit{font-size:var(--text-xs);color:var(--muted)}.trace-stages p{font-size:var(--text-sm);color:var(--muted);margin:var(--s3) 0 0}
.trace-rate{padding:var(--s5);background:var(--surface);border:1px solid var(--line);border-radius:8px}
.trace-arithmetic{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.trace-takeaway{margin-top:var(--s6);max-width:82ch}
.trace-reading-link{display:inline-block;padding:var(--s3) 0;font-weight:700}
.trace-downloads{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);margin:var(--s2) 0 var(--s6);font-size:var(--text-sm)}
.trace-downloads a{display:inline-flex;align-items:center;min-height:44px}
.trace-section caption{text-align:left;padding:var(--s3);color:var(--muted)}.trace-section th[scope=row]{position:static;background:transparent;text-align:left}
#trace-error{border:1px solid var(--warn);color:var(--warn);padding:var(--s4)}
@media(max-width:1100px){.trace-controls{grid-template-columns:1fr}.trace-stages{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.trace-stages{grid-template-columns:1fr}.trace-time-buttons button{flex:0 1 calc((100% - 8px)/3)}header nav{justify-content:flex-start;gap:var(--s3)}.trace-rate{padding:var(--s4)}}
.start-guide{max-width:1760px;margin:0 auto;border-bottom:1px solid var(--line);background:var(--bg);scroll-margin-top:16px}
.start-guide>summary{padding:var(--s4) var(--s6);color:var(--ink);font-size:var(--text-base)}
.start-guide>summary strong{color:var(--accent)}
.start-guide-subtitle{margin-left:var(--s4);font-size:var(--text-sm);color:var(--muted)}
.start-guide-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s6);padding:0 var(--s8) 0 48px;margin:var(--s2) 0 var(--s3)}
.start-guide-steps li{padding-left:var(--s1)}
.start-guide-steps li::marker{color:var(--muted);font-variant-numeric:tabular-nums}
.start-guide-steps li>a{font-weight:700}
.start-guide-steps p{font-size:var(--text-sm);color:var(--muted);margin:var(--s2) 0;line-height:1.6}
.start-guide-boundary{margin:0;padding:0 var(--s6) var(--s4);font-size:var(--text-xs);color:var(--muted);max-width:125ch}
#explorer,#readout{scroll-margin-top:24px}
@media(max-width:1100px){.start-guide-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.start-guide>summary{padding:var(--s4)}.start-guide-subtitle{display:block;margin:var(--s1) 0 0 var(--s5)}.start-guide-steps{grid-template-columns:1fr;gap:var(--s3);padding:0 var(--s5) 0 var(--s10)}.start-guide-boundary{padding:0 var(--s4) var(--s4)}}
