:root{--paper:#fbfaf6;--ink:#273633;--muted:#69746f;--line:#dddeda;--accent:#146c68;--wash:#eff4f1;--serif:"Songti SC","Noto Serif CJK SC","Source Han Serif SC","STSong",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.95 var(--serif);text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:4px}button,select,input{font:inherit}button,select{font-family:var(--sans);font-size:13px;color:var(--ink);border:1px solid var(--line);background:var(--paper);border-radius:5px;cursor:pointer}button{padding:7px 12px;line-height:1.6}button:hover{background:var(--wash);border-color:#8eaaa2}button:focus-visible,a:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}a:hover{color:#104e4b}::selection{background:#cce5dd}
.skip-link{position:fixed;left:20px;top:-70px;padding:10px 20px;background:var(--paper);z-index:20}.skip-link:focus{top:8px}.site-header{height:66px;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 42px;border-bottom:1px solid var(--line);background:rgba(251,250,246,.97);font-family:var(--sans)}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:16px;text-decoration:none;font-weight:600;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:30px;height:30px;background:var(--accent);color:#fff;border-radius:50%;font:italic 22px Georgia,serif}.brand-sub{font-weight:400;font-size:13px;margin-left:7px}.header-actions{display:flex;align-items:center;gap:8px}.edition{font-size:12px;color:var(--muted);margin-right:16px}.reading-progress{position:fixed;top:65px;height:2px;left:0;right:0;z-index:11;pointer-events:none}#reading-progress{width:0;height:100%;background:var(--accent)}
.page-layout{display:grid;grid-template-columns:220px minmax(0,860px);gap:62px;max-width:1250px;margin:auto;padding:0 36px}.sidebar{font-family:var(--sans);font-size:13px}.sidebar-inner{position:sticky;top:108px;padding-top:18px}.sidebar-label{font-size:11px;letter-spacing:1.2px;color:var(--muted);margin:0 0 22px 12px}#toc{display:flex;flex-direction:column;gap:5px}#toc a{display:flex;gap:13px;color:#58655f;line-height:1.5;text-decoration:none;padding:10px 10px;border-left:2px solid transparent;font-size:13px}#toc a span{color:#929b95;font-size:11px;align-self:center}#toc a:hover{background:var(--wash)}#toc a.active{background:#edf3ef;border-left-color:var(--accent);color:var(--accent)}#toc a.active span{color:var(--accent)}.sidebar-note{margin:30px 0 23px 12px;padding-top:24px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.9}.sidebar-footer{display:block;margin:0 12px;font-size:11px;text-decoration:none;color:var(--muted)}
main{min-width:0;padding:50px 0 0}.chapter-hero{padding:0 0 35px;border-bottom:1px solid var(--line)}.eyebrow{font-family:var(--sans);font-size:12px;letter-spacing:2px;color:var(--accent);margin:0 0 17px}.hero-title{display:flex;align-items:center;gap:20px}.chapter-number{font:italic 66px/1.2 Georgia,serif;color:#bdcdc5;letter-spacing:-5px}h1{font-size:42px;font-weight:600;letter-spacing:1px;line-height:1.45;margin:0}.subtitle{font-family:var(--sans);font-size:17px;color:var(--muted);margin:9px 0 29px;padding-left:85px;letter-spacing:1px}.intro{font-size:18px;line-height:2.05;margin:16px 0}.chapter-meta{display:flex;flex-wrap:wrap;gap:8px 22px;font-family:var(--sans);font-size:11px;color:var(--muted);margin-top:28px}.chapter-meta span:before{content:"";display:inline-block;width:4px;height:4px;background:#79968b;border-radius:50%;vertical-align:middle;margin-right:8px}.conventions{display:flex;gap:20px;padding:22px 0;color:#65736c;font-size:14px;line-height:1.9}.conventions>strong{flex:none;color:var(--accent);font:600 12px/1.9 var(--sans);padding-top:3px}.conventions p{margin:0}
.chapter-section{padding:37px 0 30px;border-bottom:1px solid var(--line);scroll-margin-top:10px}.section-heading{display:flex;align-items:baseline;gap:14px;margin-bottom:20px}.section-heading>span{font:14px var(--sans);color:var(--accent)}h2{font-size:28px;line-height:1.5;margin:0;font-weight:600;letter-spacing:.4px}h3{font-size:21px;line-height:1.65;font-weight:600;margin:35px 0 16px}p{margin:17px 0}strong{font-weight:600}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.82em;background:#eff0ec;padding:2px 4px;border-radius:3px;overflow-wrap:anywhere}pre{border:1px solid #d9dfd8;border-radius:5px;background:#f0f2ec;padding:19px 22px;margin:23px 0;overflow:auto;line-height:1.85;tab-size:4}pre code{font-size:12px;background:none;padding:0;overflow-wrap:normal}.equation{display:flex;align-items:center;gap:10px;margin:22px 0;padding:7px 0;min-width:0}.equation>.math{flex:1;min-width:0;margin:0}.eq-no{font:12px var(--sans);color:#8b948e;flex-shrink:0}.key-equation{background:var(--wash);padding:18px 22px;border-left:3px solid #76a49a}.math.display{overflow-x:auto;overflow-y:hidden;padding:8px 2px;margin:15px 0;scrollbar-width:thin;max-width:100%}.katex{font-size:1.05em}.katex-display{margin:.4em 0}.katex-display>.katex{white-space:nowrap}.math:not([data-rendered]){font-family:serif}.math-error{color:#9b332d}
.derivation{border:1px solid #dce2db;border-radius:5px;margin:24px 0;background:#f8f9f4;font-size:16px}.derivation>summary{font-family:var(--sans);font-size:13px;font-weight:500;line-height:1.8;cursor:pointer;padding:14px 17px;list-style:none;display:flex;align-items:baseline;gap:12px}.derivation>summary::-webkit-details-marker{display:none}.derivation>summary:after{content:"+";font:18px/1 var(--sans);margin-left:auto;color:var(--accent);flex:none}.derivation[open]>summary:after{content:"−"}.derivation[open]>summary{border-bottom:1px solid #e1e5de}.proof-tag{font-size:10px;letter-spacing:1px;color:var(--accent);flex-shrink:0}.proof-body{padding:10px 23px 15px}.proof-body p{margin:16px 0}.proof-body .math.display{font-size:15px}.example{padding:14px 24px;background:#f3f1e9;margin:27px 0;border-radius:3px}.example>p,.exercise>p{margin:12px 0}.block-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:1.2px;color:#8b704a}.thinking{margin:25px 0;padding:5px 0 5px 20px;border-left:2px solid #bc9562}.thinking>strong{font-family:var(--sans);font-size:12px;color:#8b704a}.thinking p{margin:8px 0}.thinking .derivation{margin:14px 0}.exercise{margin:30px 0;padding-top:9px}.exercise+.exercise{border-top:1px dashed var(--line)}.answer{background:transparent}.chapter-close{margin:35px 0 0;color:var(--accent)}
.lab-figure{margin:32px 0 28px;border:1px solid #d4dfd8;border-radius:8px;overflow:hidden;background:#f7f9f8}.lab-figure>figcaption{padding:20px 24px 17px;border-bottom:1px solid #dee6e0}.figure-index{display:block;font:10px var(--sans);letter-spacing:1.5px;color:var(--accent);margin-bottom:8px}.lab-figure figcaption strong{display:block;font:500 17px/1.6 var(--sans)}.lab-figure figcaption p{margin:7px 0 0;color:var(--muted);font:13px/1.85 var(--sans)}.lab-mount{min-height:355px}.lab-grid{display:grid;grid-template-columns:minmax(0,1fr) 258px;font-family:var(--sans);font-size:13px;line-height:1.6}.lab-stage{min-width:0;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.lab-stage canvas{width:100%;aspect-ratio:4 / 3;display:block;touch-action:none;cursor:grab}.lab-stage canvas:active{cursor:grabbing}.lab-stage canvas:not([tabindex]){cursor:default}.lab-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px 14px;font-size:10px;color:var(--muted)}.lab-toolbar button{font-size:10px;padding:4px 7px}.lab-controls{padding:20px 16px;background:#f0f4f1;border-left:1px solid #dee6e0;min-width:0;overflow:hidden}.control-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:15px}.control-row>label{font-size:12px}.control-row>output{font-size:12px;color:var(--accent)}.control-row input[type=range]{width:100%;accent-color:var(--accent);height:17px;cursor:pointer;margin:3px 0}.control-row select{max-width:100%;padding:5px 7px;flex:1;font-size:12px}.legend{border:0;border-top:1px solid #d8e2da;margin:16px 0 0;padding:10px 0 0;display:flex;flex-wrap:wrap;gap:8px 12px}.legend legend{font-size:10px;color:var(--muted);padding:0 5px 0 0}.legend label{display:flex;align-items:center;gap:5px;font-size:11px;cursor:pointer}.legend input{accent-color:var(--accent);margin:0;width:12px;height:12px}.legend-swatch{display:inline-block;width:11px;height:3px;border-radius:1px}.lab-readout{font-size:11px;overflow-x:auto;max-width:100%;padding:6px 0;margin-top:8px}.lab-readout .katex{font-size:1.04em}.lab-caption{font-size:11px;color:var(--muted);margin:8px 0}.lab-controls .katex-display{margin:3px 0}.lab-controls .katex-display>.katex{text-align:left}
.roadmap{margin:40px 0;background:#eff3ee;border-radius:5px;font-size:15px}.roadmap>summary{cursor:pointer;padding:17px 22px;font:500 14px var(--sans)}.roadmap ol{padding-left:24px}.roadmap li{padding:6px 0}.chapter-footer{font-family:var(--sans);font-size:11px;color:var(--muted);padding:35px 0 55px;position:relative}.chapter-footer p{margin:5px 0}.chapter-footer a{position:absolute;right:0;top:42px;text-decoration:none}.callout{padding:15px 20px;background:#f5eacf}
.math:not([data-rendered="true"]){overflow-wrap:anywhere;word-break:break-word}.lab-readout{font-size:13px}.lab-readout .katex{font-size:1em}.mobile-toc{display:none}
@media(min-width:1450px){.page-layout{gap:82px;max-width:1290px}main{padding-top:65px}}
@media(max-width:1100px){.page-layout{grid-template-columns:180px minmax(0,1fr);gap:30px;padding:0 28px}.site-header{padding:0 28px}.lab-grid{grid-template-columns:minmax(0,1fr) 225px}.lab-controls{padding:16px 12px}h1{font-size:36px}.hero-title{gap:16px}.subtitle{padding-left:80px}#toc a{font-size:12px;gap:9px}}
@media(max-width:850px){.page-layout{display:block;max-width:800px;padding:0 28px}.sidebar{display:none}main{padding-top:36px}.site-header{padding:0 24px}.edition{display:none}.brand-sub{display:none}.lab-grid{grid-template-columns:minmax(0,1fr) 245px}.mobile-toc{display:block;margin-bottom:28px;font-family:var(--sans);font-size:12px;border-bottom:1px solid var(--line);padding-bottom:12px}.mobile-toc>summary{cursor:pointer;color:var(--accent)}#mobile-toc{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:14px}#mobile-toc a{text-decoration:none;color:var(--muted)}#mobile-toc a span{margin-right:8px}}
@media(max-width:600px){body{font-size:16px;line-height:1.95}.site-header{height:60px;padding:0 15px;gap:8px}.brand{font-size:13px;gap:7px}.brand-mark{width:25px;height:25px;font-size:19px}.header-actions{gap:5px}.header-actions button{font-size:10px;padding:6px 7px}.reading-progress{top:59px}.page-layout{padding:0 20px}main{padding-top:30px}h1{font-size:28px;letter-spacing:0}.hero-title{gap:13px}.chapter-number{font-size:49px;letter-spacing:-3px}.subtitle{padding-left:60px;font-size:13px;margin-top:5px;letter-spacing:0}.eyebrow{font-size:10px}.intro{font-size:16px}.chapter-meta{gap:7px 14px;font-size:10px}.chapter-hero{padding-bottom:24px}.conventions{font-size:12px;gap:13px;padding:18px 0}.chapter-section{padding:28px 0}h2{font-size:23px}h3{font-size:19px}.section-heading{gap:10px;margin-bottom:17px}.equation{gap:5px;font-size:14px}.key-equation{padding:12px 9px}.eq-no{font-size:10px}.math.display{font-size:14px}.proof-body{padding:7px 14px 10px}.proof-body .math.display{font-size:13px}.derivation{font-size:15px}.derivation>summary{font-size:12px;padding:12px;gap:8px}.proof-tag{font-size:9px}.example{padding:10px 16px}.lab-figure>figcaption{padding:17px}.lab-figure figcaption strong{font-size:15px}.lab-figure figcaption p{font-size:12px}.lab-grid{grid-template-columns:1fr}.lab-stage canvas{aspect-ratio: 1.15}.lab-controls{border-left:0;border-top:1px solid #dee6e0;padding:18px;display:block}.control-row{margin-bottom:14px}.lab-readout{font-size:12px}.lab-toolbar{font-size:10px}.lab-mount{min-height:520px}.legend{gap:11px 18px}.legend label{font-size:12px}pre{padding:15px;font-size:13px}.chapter-footer a{position:static;display:inline-block;margin-top:15px}}
@font-face{font-family:"Notes Fira Code";src:local("FiraCode Nerd Font Mono"),local("FiraCodeNFM-Reg"),url("vendor/fonts/FiraCodeNerdFontMono-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
code,pre,pre code{font-family:"Notes Fira Code","FiraCode Nerd Font Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-variant-ligatures:none}pre{background:#f4f5f1;line-height:1.85}pre code{font-size:13px;color:#293c47;text-shadow:none}.token.comment{color:#647660}.token.keyword,.token.boolean{color:#86507c}.token.function,.token.class-name{color:#176b8a}.token.number{color:#aa572e}.token.string{color:#337252}.token.operator{color:#805a36}.token.punctuation{color:#637078}.token.builtin{color:#246d79}
.playback{border-bottom:1px solid #d8e2da;margin:0 0 18px;padding-bottom:14px}.playback-buttons{display:flex;gap:7px;margin-bottom:11px}.playback button{font-size:12px;padding:5px 10px}.playback .control-row{margin-bottom:2px}.playback-status{font-size:11px;color:var(--muted);min-height:1.6em;margin:6px 0 0}.plot-axes{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 22px;padding:0 12px 12px;font-size:12px}.plot-axes .katex{font-size:1em}.plot-controls .legend label{width:100%}.plot-controls .lab-readout{font-size:12px}.plot-controls .lab-caption{font-size:12px}.preset-buttons{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 14px}.preset-buttons button{font-size:11px;padding:4px 7px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
[hidden]{display:none!important}
.chapter-navigation{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:28px 0;border-bottom:1px solid var(--line);font-family:var(--sans)}.chapter-navigation a{display:flex;flex-direction:column;text-decoration:none;font-size:13px;line-height:1.7}.chapter-navigation a span{font-size:11px;color:var(--muted);margin-bottom:5px}.chapter-navigation a[rel=next]{grid-column:2;text-align:right}.directory{max-width:900px;padding:60px 28px 80px;margin:auto}.directory h1{margin-bottom:25px}.directory-intro{font-size:18px;color:var(--muted);margin-bottom:35px}.chapter-list{display:grid;gap:18px}.chapter-card{display:block;padding:24px;border:1px solid var(--line);border-radius:6px;text-decoration:none;color:var(--ink)}.chapter-card:hover{background:var(--wash)}.chapter-card h2{font-size:23px}.chapter-card .chapter-label{font:12px var(--sans);color:var(--accent);margin-bottom:8px}.chapter-card p{margin:12px 0 0;font-size:15px;color:var(--muted)}
@media print{body{font-size:11pt;background:#fff;line-height:1.65}.site-header,.sidebar,.reading-progress,.skip-link,.lab-toolbar,.lab-controls{display:none}.page-layout{display:block;padding:0;max-width:none}main{padding:0}.chapter-section{padding:20px 0}.chapter-hero{padding-bottom:20px}.lab-grid{display:block}.lab-stage{max-width:480px;margin:auto}.lab-mount{min-height:0}.lab-figure{break-inside:avoid}.derivation,.example{break-inside:avoid}.math.display{overflow:visible}.katex{font-size:1em}.chapter-footer{padding:20px 0}.chapter-footer a{display:none}a{color:inherit}h2,h3,summary{break-after:avoid}html{scroll-behavior:auto}}

/* Small chapter 8 matrix controls; values remain keyboard accessible. */
.matrix-panel { width: min(100%, 420px); margin: 0 auto; padding: 12px 20px 20px; }
.matrix-title { text-align: center; color: var(--muted); font-size: .85rem; margin: 0 0 8px; }
.matrix-cells { display: grid; gap: 4px; }
.matrix-cell { min-width: 0; min-height: 42px; padding: 4px 1px; background: #e6efed; color: #176e6d; border: 1px solid #c9d8d6; border-radius: 3px; cursor: pointer; }
.matrix-cell .katex { font-size: .87em; }
.matrix-cell.selected { border-color: #ba703b; background: #f5e7d9; box-shadow: inset 0 0 0 1px #ba703b; }
.matrix-cell.pending { color: #788889; background: #eef0ed; opacity: .55; }
.matrix-cell.filled { color: #975427; background: #f5e1ce; border-color: #bd855b; }
.lab-step { font-size: .9rem; color: #176e6d; border-top: 1px solid #d5e1dd; padding-top: 12px; }
@media (max-width: 480px) { .matrix-panel { padding: 10px 9px 14px; } .matrix-cell .katex { font-size: .76em; } }

/* The result remains readable when its derivation is folded. */
.derivation>summary:has(.proof-title){display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;row-gap:6px;align-items:baseline}
.derivation>summary:has(.proof-title)>.proof-tag{grid-column:1;grid-row:1}
.derivation>summary>.proof-title{grid-column:2;grid-row:1;min-width:0;font-size:14px}
.derivation>summary>.proof-target{grid-column:2;grid-row:2;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:3px 0;font-size:16px;font-weight:400;line-height:1.7;color:var(--ink)}
.derivation>summary:has(.proof-title):after{grid-column:3;grid-row:1 / span 2;align-self:center}
.derivation>summary>.proof-target .katex{font-size:1em}
.pipeline-steps{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 17px}.pipeline-steps button:disabled{opacity:.45;cursor:default}
.pipeline-trace{padding:18px 24px;border-top:1px solid var(--line);background:var(--paper)}
.pipeline-trace h4{font:600 14px var(--sans);margin:0 0 12px}.pipeline-trace ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pipeline-trace li{min-width:0;border-left:2px solid var(--line);padding:7px 12px;background:var(--wash)}
.pipeline-trace li[data-current="true"]{border-color:var(--accent)}.pipeline-trace li>strong{display:block;font:500 12px/1.8 var(--sans);color:var(--muted)}.pipeline-trace .math{font-size:14px;max-width:100%;overflow:auto}.pipeline-trace p{margin:4px 0;font:12px/1.7 var(--sans);color:var(--muted)}
@media(max-width:600px){.derivation>summary:has(.proof-title){column-gap:8px}.derivation>summary>.proof-title{font-size:12px}.derivation>summary>.proof-target{grid-column:1 / span 2;font-size:14px}.pipeline-trace{padding:17px}.pipeline-trace ol{grid-template-columns:1fr}.pipeline-trace .math{font-size:13px}}
#pipeline-stages .lab-stage{justify-content:flex-start}
#pipeline-stages .pipeline-trace{width:100%;border-top:1px solid var(--line)}
#pipeline-stages .pipeline-trace ol{grid-template-columns:1fr}
#pipeline-stages canvas{aspect-ratio:1.45}
@media(max-width:600px){#pipeline-stages canvas{aspect-ratio:1.15}}
.pipeline-trace .math.display{margin:3px 0;padding:3px 0}
.rk4-calculation{border-top:1px solid var(--line);padding:17px 20px;background:var(--paper);font:13px/1.8 var(--sans);min-width:0}
.rk4-calculation>strong{display:block;font-size:13px;color:var(--accent)}.rk4-calculation .math.display{font-size:14px;margin:9px 0;padding:4px 0}.rk4-calculation p{font-size:12px;color:var(--muted);margin:10px 0}
@media(max-width:600px){.rk4-calculation{padding:14px}.rk4-calculation .math.display{font-size:12px}}

/* Formula references keep native links, keyboard access and shareable fragments. */
.equation-ref{color:var(--accent);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px;cursor:pointer}
.equation-ref:hover,.equation-ref:focus-visible{text-decoration-style:solid}
.equation-ref.eq-no{text-decoration:none}.equation-ref.eq-no:hover{text-decoration:underline}
.derivation>summary>.proof-target.equation-ref{color:var(--accent);width:fit-content}
.equation-target{scroll-margin-top:110px;scroll-margin-bottom:24px;border-radius:3px}
.equation-target:target{background-color:#edf4e9;box-shadow:inset 0 0 0 1px #a6bca3}
.equation-target.equation-highlight{background-color:#fff0c9;box-shadow:inset 0 0 0 2px #b4873e;transition:background-color .2s ease}
.equation-target:focus{outline:none}.equation-target:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:600px){.equation-target{scroll-margin-top:85px}}
@media(prefers-reduced-motion:reduce){.equation-target.equation-highlight{transition:none}}
@media print{.equation-target:target,.equation-target.equation-highlight{box-shadow:none;background:transparent}.equation-ref{color:inherit;text-decoration:none}}

#equation-preview{position:fixed;z-index:30;display:flex;flex-direction:column;gap:0;box-sizing:border-box;padding:17px 20px 14px;border:1px solid #b8cbc2;border-radius:8px;background:var(--paper);box-shadow:0 8px 30px #203e3029;font:15px/1.7 var(--serif);overflow:hidden}
#equation-preview[hidden]{display:none}
.equation-preview-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:none;font:600 13px/1.6 var(--sans);color:var(--accent)}
.equation-preview-header button{padding:3px 8px;font-size:11px;font-weight:400}
.equation-preview-context{flex:none;margin:6px 0 12px;color:var(--muted);font:12px/1.6 var(--sans)}
.equation-preview-body{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:7px 0 10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.equation-preview-body .math.display{margin:0;padding:8px 2px;max-width:none;overflow:visible;font-size:16px}
.equation-preview-body .katex-display{text-align:left;margin:.4em 0}
.equation-preview-jump{flex:none;align-self:flex-end;margin-top:9px;font:12px/1.7 var(--sans);text-decoration:none}
.equation-preview-jump:hover{text-decoration:underline}
@media(max-width:600px){#equation-preview{padding:13px 14px 10px}.equation-preview-body .math.display{font-size:15px}}
@media print{#equation-preview{display:none!important}}

/* A persistent chapter tree and an equivalent left drawer on small screens. */
.page-layout{grid-template-columns:250px minmax(0,860px);gap:40px;max-width:1290px}
.sidebar-inner{top:80px;max-height:calc(100dvh - 92px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:8px 6px 22px 0}
.sidebar-heading{display:flex;align-items:center;justify-content:space-between;padding:5px 9px 17px;font:600 13px var(--sans)}.sidebar-heading a{text-decoration:none;color:var(--ink)}
.series-chapter{display:flex;gap:10px;padding:9px 10px;font:13px/1.6 var(--sans);color:var(--muted);text-decoration:none;border-radius:4px}.series-chapter>span{flex:none;font-size:11px;padding-top:2px}.series-chapter:hover{background:var(--wash)}.series-chapter.current{color:var(--accent);background:#e6efe9;font-weight:600}
#toc{margin:5px 0 12px 13px;padding-left:6px;border-left:1px solid var(--line)}#toc a{font-size:12px;padding:6px 7px;gap:7px}
#toggle-navigation,#close-navigation{display:none}.mobile-toc{display:none!important}.navigation-backdrop[hidden]{display:none}.navigation-backdrop{position:fixed;inset:0;background:#172d365c;z-index:39}
@media(max-width:1100px){.page-layout{grid-template-columns:220px minmax(0,1fr);gap:24px}}
@media(max-width:850px){.page-layout{display:block}.sidebar{display:none;position:fixed;inset:0 auto 0 0;width:min(340px,86vw);z-index:40;background:var(--paper);box-shadow:8px 0 25px #18352930;padding:15px}.sidebar.is-open{display:block}.sidebar-inner{position:static;max-height:calc(100dvh - 30px);height:100%;padding:0 3px}.sidebar-heading{position:sticky;top:0;background:var(--paper);z-index:1;padding:10px 7px 16px}#toggle-navigation,#close-navigation{display:inline-block}.navigation-open{overflow:hidden}.series-chapter{padding:10px}#toc a{padding:8px}}
@media print{.sidebar,#toggle-navigation,.navigation-backdrop{display:none!important}}
/* Keep the geometry next to its controls instead of stretching the canvas with them. */
.concept-lab .lab-stage,#tree-rnea .lab-stage{justify-content:flex-start;align-self:start;position:sticky;top:82px}.concept-lab canvas,#tree-rnea canvas{aspect-ratio:1.25;width:100%}.concept-lab .lab-grid,#tree-rnea .lab-grid{align-items:start}.concept-lab .lab-controls,#tree-rnea .lab-controls{min-width:0}
@media(max-width:600px){.concept-lab .lab-stage,#tree-rnea .lab-stage{position:static}.concept-lab canvas,#tree-rnea canvas{aspect-ratio:1.15}}
.concept-steps{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;border-top:1px solid var(--line);width:100%;font:12px var(--sans)}.concept-steps button:disabled{opacity:.4;cursor:default}
.concept-trace,.rnea-work{padding:18px 20px;border-top:1px solid var(--line);background:var(--paper);width:100%;min-width:0}.concept-trace>strong,.rnea-work h4{font:600 14px/1.7 var(--sans);color:var(--accent);margin:0 0 8px}.concept-trace p,.rnea-work>p{font:13px/1.9 var(--sans);margin:8px 0 14px}.concept-trace .lab-readout,.rnea-work .lab-readout{max-width:100%;overflow:auto;font-size:14px}.rnea-terms{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:14px 0}.rnea-term{padding:10px;border:1px solid var(--line);border-radius:4px;background:var(--wash);min-width:0}.rnea-term[hidden]{display:none}.rnea-term>strong{font:12px/1.6 var(--sans);color:var(--muted)}.rnea-term .lab-readout{font-size:12px}.rnea-work .lab-calculation{margin-top:12px}#tree-rnea .lab-stage{position:static}#tree-rnea .lab-controls>.lab-calculation .control-row{padding:0 10px}#tree-rnea .lab-controls>.lab-calculation{margin:12px 0}
@media(max-width:600px){.rnea-work,.concept-trace{padding:14px}.rnea-terms{grid-template-columns:1fr}.rnea-term{display:grid;grid-template-columns:1fr 1fr;align-items:center}.rnea-term>strong{grid-column:1 / -1}.rnea-term .lab-readout{font-size:12px}}
