/* Locally hosted fonts; the lesson needs no third-party scripts or font service. */
@font-face{font-family:'Classroom Sans';src:url('fonts/classroom-sans.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:'Classroom Math';src:url('fonts/classroom-math.woff2') format('woff2');font-style:normal;font-weight:400 700;font-display:swap}
:root{color-scheme:dark;--bg:#101719;--surface:#172326;--border:#344448;--text:#c5cece;--muted:#a2b3b5;--bright:#f1f1e9;--accent:#9adecf;--gold:#edc681;--serif:'Classroom Math',Georgia,'Classroom Sans',serif;--sans:'Classroom Sans','PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}
html{scroll-padding-top:96px}
body{margin:0;background:var(--bg);color:var(--text);font:19px/1.85 var(--sans);line-break:strict;overflow-wrap:break-word;text-rendering:optimizeLegibility}
a{color:var(--accent);text-underline-offset:4px}
button,input,select{font:inherit}
button{cursor:pointer;background:transparent;color:var(--bright);border:1px solid var(--border);padding:8px 16px;border-radius:4px;line-height:1.5}
button:hover{background:var(--surface);border-color:var(--accent)}
button:disabled{opacity:.4;cursor:default}
.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.primary:hover{background:#b7ebdf;color:var(--bg)}
:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.skip{position:absolute;left:16px;top:-100px;z-index:20;background:var(--bg)}
.skip:focus{top:12px}
.toolbar{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--border);padding:12px 4vw;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{text-decoration:none;font:27px var(--serif);color:var(--bright)}
.brand span{color:var(--accent)}
.toolbar-actions{display:flex;align-items:center;gap:10px}
.toolbar small{font-size:14px;color:var(--muted);margin-right:12px}
.toolbar button,.toolbar select{font-size:15px}
.jump-label{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}
#slide-jump{max-width:230px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px;min-width:0}
main{max-width:1100px;margin:auto;padding:0 56px}
.slide{padding:76px 0;border-bottom:1px solid var(--border);scroll-margin-top:22px;min-width:0}
.slide:last-child{border:0}
.chapter{font-size:15px;color:var(--accent);margin:0 0 20px;line-height:1.6}
h1,h2,h3{color:var(--bright);font-weight:600;line-height:1.4;margin:0 0 28px;text-wrap:balance}
h1{font-size:clamp(38px,4.7vw,64px);line-height:1.3}
h2{font-size:34px}
h3{font-size:22px;margin-bottom:16px;font-weight:500}
p{margin:0 0 20px;max-width:42em;text-wrap:pretty}
.lead{font-size:25px;line-height:1.75}
.cover{min-height:calc(100svh - 76px);display:flex;flex-direction:column;justify-content:center}
.cover-thesis{font-size:27px;line-height:1.85;margin:22px 0 38px}
.cover .lead{color:var(--accent);font-size:20px}
.note,.muted{color:var(--muted)}
.note{font:16px/1.75 var(--sans);max-width:60em}
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:54px;align-items:start}
.two-col>*,.demo-columns>*{min-width:0}
.two-col>div>p:last-child{margin-bottom:0}
.equation{font:400 30px/1.65 var(--serif);font-variant-numeric:lining-nums;color:var(--bright);margin:20px 0;word-break:normal}
.math-term{display:inline-block;white-space:nowrap}
.equation sub{font-size:.65em}
.hero-equation{font-size:44px;line-height:1.5;margin:26px 0}
.definition-formula{font-size:29px;margin-bottom:36px}
.definition-statement{font-size:42px;line-height:1.55;color:var(--bright);margin:12px 0 32px}
.question,.takeaway{color:var(--bright);font-size:23px;line-height:1.65;margin:28px 0 0;padding-top:20px;border-top:1px solid var(--border)}
.question{color:var(--gold)}
.takeaway+.note{margin-top:18px}
.plain-steps{padding-left:1.4em;margin:16px 0 22px}
.plain-steps li{margin:10px 0;padding-left:6px}
.arithmetic-example{padding-left:32px;border-left:2px solid var(--border)}
.checks-row{display:flex;gap:16px 30px;flex-wrap:wrap;color:var(--accent);margin:24px 0}
.scope-list{margin:12px 0 26px}
.scope-list>div{display:grid;grid-template-columns:210px 1fr;gap:32px;border-bottom:1px solid var(--border);padding:20px 0}
.scope-list h3,.scope-list p{margin:0}
.scope-list.compact>div{padding:12px 0}
.scope-list.compact h3{font-size:21px}
.processes h3{padding-bottom:15px;border-bottom:2px solid var(--accent)}
.processes>div:nth-child(2) h3{border-color:var(--gold)}
.divisors{margin:32px 0}
.divisors p{font-size:24px}
.divisors span{display:inline-block;min-width:230px;color:var(--muted);font-size:19px}
.divisors b{color:var(--accent);font-weight:500}
.notation-line{display:flex;gap:30px;flex-wrap:wrap;color:var(--accent);font:25px/1.7 var(--serif);margin:26px 0}
.replacement{font:19px var(--sans);color:var(--muted)}
.worked-trace{padding-left:32px;border-left:2px solid var(--accent)}
.worked-trace p{margin:0 0 22px}
.worked-trace span{display:block;font:37px/1.4 var(--serif);color:var(--bright)}
.worked-trace small{font-size:18px;color:var(--muted)}
.worked-trace b{font-weight:500;color:var(--accent)}
.proof-columns{margin:20px 0}
.proof-columns h3{color:var(--accent)}
code,pre{font-family:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
pre{background:var(--surface);padding:24px;font-size:17px;line-height:1.85;overflow:auto;tab-size:4;margin:0 0 18px;color:var(--bright);border-left:2px solid var(--border)}
.ref{font-size:13px;line-height:0;vertical-align:super;margin-inline:3px;text-decoration:none;white-space:nowrap}
.toc{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:22px}
.toc a{font-size:16px}
.demo{margin:8px 0 18px}
.inputs{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap}
.inputs label{font-size:15px;display:flex;flex-direction:column;gap:4px}
input{width:120px;padding:6px 12px;background:var(--surface);color:var(--bright);border:1px solid var(--border);border-radius:4px}
.presets{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.presets button{font-size:14px;padding:4px 12px}
.demo-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;margin:20px 0}
.demo-columns h3{margin-bottom:4px}
.current-pair{font:34px/1.35 var(--serif);color:var(--bright);margin:10px 0}
.counter{color:var(--accent);font-size:17px;font-variant-numeric:tabular-nums;margin:0}
.subtraction .counter{color:var(--gold)}
.trace{height:136px;overflow:auto}
.trace ol{margin:0;padding-left:42px;font:15px/1.6 'SFMono-Regular',Consolas,'Classroom Sans',monospace;font-variant-numeric:tabular-nums}
.trace li{padding:3px 5px;color:var(--muted)}
.trace li:last-child{color:var(--bright);background:var(--surface)}
.demo-actions{display:flex;flex-wrap:wrap;gap:10px}
.demo-actions button{font-size:16px}
.demo #demo-result{margin:12px 0 0}
.error{color:#ffc9b5;font-size:16px;margin:10px 0}
.error:empty{display:none}
.bar-track{height:8px;background:var(--surface);margin:12px 0;overflow:hidden}
.bar{height:100%;background:var(--accent)}
.subtraction .bar{background:var(--gold)}
[id$='-omitted']{font-size:13px;min-height:23px;margin:4px 0 0}
.cost-table{width:100%;border-collapse:collapse;margin:12px 0 32px;font-size:23px;text-align:left}
.cost-table th{font-size:18px;color:var(--muted);font-weight:400}
.cost-table th,.cost-table td{padding:16px 10px;border-bottom:1px solid var(--border)}
.cost-table td:nth-child(2){color:var(--accent)}
.cost-table td:nth-child(3){color:var(--gold)}
.lecture-note{margin-top:28px;padding-top:18px;border-top:1px dashed var(--border);font-size:17px}
summary{cursor:pointer;color:var(--muted);font-size:16px}
.lecture-note div{margin-top:14px}
.lecture-note p{margin-bottom:10px}
.sources{font-size:17px;padding-left:25px}
.sources li{padding:0 0 18px 10px;scroll-margin-top:100px}
.sources p{font-size:15px;margin:6px 0 0;color:var(--muted)}
.pager{display:none;position:fixed;bottom:0;left:0;right:0;z-index:10;background:var(--bg);padding:10px 4vw;border-top:1px solid var(--border);align-items:center;justify-content:space-between;gap:16px}
.pager-group{display:flex;align-items:center;gap:16px}
.pager span{font-size:15px;color:var(--muted)}
.pager button{font-size:15px}
.progress{position:absolute;top:-2px;left:0;height:2px;background:var(--accent);transition:width .15s}
.presenting main{max-width:1320px;padding-inline:64px}
.presenting .slide{display:none;border:0;padding:32px 0 94px;min-height:calc(100svh - 70px);font-size:22px;line-height:1.75}
.presenting .slide.active{display:flex;flex-direction:column;justify-content:center}
.presenting .slide.appendix.active{justify-content:flex-start}
.presenting .pager{display:flex}
.presenting .reading-only,.presenting .lecture-note{display:none}
.presenting h2{font-size:40px;margin-bottom:26px}
.presenting h3{font-size:24px}
.presenting .lead{font-size:27px}
.presenting .hero-equation{font-size:48px}
.presenting .definition-statement{font-size:46px}
.presenting #experiment{justify-content:flex-start}
.presenting #references .sources{columns:2;column-gap:48px}
.presenting .sources li{break-inside:avoid}
footer{max-width:1100px;margin:auto;padding:32px 56px 60px;font-size:15px;color:var(--muted)}
.presenting footer{display:none}
#notes-dialog{max-width:680px;width:calc(100% - 40px);max-height:80svh;overflow:auto;background:var(--surface);color:var(--bright);border:1px solid var(--border);padding:28px;font-size:19px;line-height:1.8}
#notes-dialog::backdrop{background:rgb(0 0 0 / .65)}
.dialog-top{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:20px}
.dialog-top h2{font-size:23px;margin:0}
.dialog-top button{font-size:15px;flex-shrink:0}
#notes-content p:last-child{margin-bottom:0}
[hidden]{display:none!important}
@media(min-width:901px) and (max-height:820px){
 .presenting .slide{padding-top:24px;padding-bottom:86px;font-size:20px;line-height:1.65}
 .presenting h2{font-size:35px;margin-bottom:22px}
 .presenting h3{font-size:22px;margin-bottom:12px}
 .presenting .chapter{margin-bottom:12px}
 .presenting .lead{font-size:24px}
 .presenting .hero-equation{font-size:42px;margin:18px 0}
 .presenting .definition-statement{font-size:40px;margin:10px 0 24px}
 .presenting .question,.presenting .takeaway{font-size:21px;margin-top:22px;padding-top:16px}
 .presenting .plain-steps li{margin:8px 0}
 .presenting .demo-columns{margin:14px 0}
 .presenting .trace{height:108px}
 .presenting .current-pair{font-size:30px;margin:6px 0}
 .presenting .demo+.note{font-size:14px}
 .presenting .scope-list>div{padding:16px 0}
 .presenting .sources{font-size:16px}
 .presenting .sources li{padding-bottom:14px}
}
@media(min-width:901px){
 #experiment .demo form{display:inline-block;margin-right:20px;vertical-align:bottom}
 #experiment .presets{display:inline-flex;vertical-align:bottom;max-width:480px;margin:0 0 2px}
 #experiment .inputs{gap:12px}
 #experiment .inputs button{font-size:16px}
 #experiment .demo-columns>div{display:grid;grid-template-columns:1fr auto;align-items:baseline}
 #experiment .demo-columns h3{margin:0}
 #experiment .current-pair,#experiment .bar-track,#experiment .trace,#experiment [id$='-omitted']{grid-column:1/-1}
 #experiment .bar-track{width:100%}
 #experiment .trace{height:120px}
 #experiment .demo-columns{margin:20px 0 14px}
 #experiment [id$='-omitted']{min-height:20px;line-height:1.4}
}
@media(min-width:901px) and (max-height:820px){
 #experiment .trace{height:120px}
 #experiment .demo-columns{margin:12px 0 4px}
 #experiment .current-pair{font-size:30px;margin:5px 0}
 #experiment .bar-track{margin:8px 0}
 #experiment .note{font-size:14px;line-height:1.6}
 #experiment .demo{margin-top:0;margin-bottom:12px}
 #experiment .presets{max-width:430px}
}
@media(max-width:1100px){.toolbar small{display:none}.toolbar{gap:14px}#slide-jump{max-width:210px}}
@media(max-width:900px){
 body{font-size:18px}
 main,.presenting main{padding:0 26px}
 .toolbar{padding:12px 20px}
 .toolbar-actions{gap:8px;flex-wrap:wrap;justify-content:flex-end}
 .toolbar button{font-size:14px;padding:7px 10px}
 #slide-jump{font-size:14px;max-width:180px}
 .slide{padding:48px 0}
 .two-col,.demo-columns{grid-template-columns:1fr;gap:28px}
 .slide h2,.presenting h2{font-size:29px}
 .slide h3,.presenting h3{font-size:22px}
 .lead,.presenting .lead{font-size:22px}
 .equation,.definition-formula{font-size:25px}
 .hero-equation,.presenting .hero-equation{font-size:34px}
 .definition-statement,.presenting .definition-statement{font-size:32px}
 .cover-thesis{font-size:23px}
 .scope-list>div{grid-template-columns:1fr;gap:6px;padding:16px 0}
 .divisors span{display:block;min-width:0}
 .divisors p{font-size:22px}
 .question,.takeaway{font-size:21px}
 .notation-line{font-size:22px}
 .presenting .slide{padding:30px 0 124px;font-size:19px;min-height:calc(100svh - 76px)}
 .presenting #references .sources{columns:1}
 .presenting .question,.presenting .takeaway{font-size:21px}
 .pager{padding:10px 20px;gap:8px}
 .pager-group{gap:8px}
 .pager .hint{display:none}
 .pager button{font-size:14px;padding:8px 12px}
 .pager #page-label{max-width:55%;font-size:13px}
 .trace{height:122px}
 .cost-table{font-size:18px}
 .cost-table th{font-size:15px}
 .cost-table td,.cost-table th{padding:14px 4px}
 pre{font-size:15px;padding:20px}
 footer{padding:26px}
}
@media(max-width:560px){
 .toolbar{align-items:flex-start;gap:8px;padding:10px 14px}
 .brand{margin-top:6px}
 .toolbar-actions{max-width:310px}
 #slide-jump{max-width:none;flex-basis:100%;order:2;padding:5px}
 .toolbar button{font-size:13px;padding:6px 8px}
 .slide h1{font-size:34px}
 .checks-row{gap:12px 22px}
 .inputs{gap:12px}
 input{width:100px}
 .inputs button{font-size:15px}
 .pager{flex-wrap:wrap}
 .pager #page-label{max-width:none;flex-basis:100%}
 .pager-group{margin-left:auto}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{
 :root{color-scheme:light;--bg:white;--surface:#f2f5f4;--text:#222;--bright:#111;--muted:#444;--accent:#216654;--gold:#795213;--border:#ccc}
 @page{size:A4 landscape;margin:14mm}
 body{font-size:12pt}
 .toolbar,.pager,.reading-only,.demo-actions,.presets,.inputs,.skip,footer,.lecture-note,dialog{display:none!important}
 main,.presenting main{max-width:none;padding:0}
 .slide,.presenting .slide,.presenting .slide.active{display:block!important;min-height:0;padding:0;break-after:page;border:0;font-size:12pt}
 .slide:last-child{break-after:auto}
 .slide h1{font-size:32pt}
 .slide h2,.presenting h2{font-size:26pt}
 .slide h3,.presenting h3{font-size:17pt}
 .lead,.presenting .lead{font-size:16pt}
 .definition-statement,.presenting .definition-statement{font-size:28pt}
 .hero-equation,.presenting .hero-equation{font-size:30pt}
 .equation{font-size:22pt}
 .question,.takeaway{font-size:16pt}
 .two-col,.demo-columns{grid-template-columns:1fr 1fr;gap:28px}
 .sources{columns:2!important;font-size:12pt}
 .sources p{font-size:10pt}
 .sources li{break-inside:avoid}
 .trace{height:auto;overflow:visible}
 .note{font-size:10pt}
 pre{font-size:11pt;white-space:pre-wrap}
 a{color:var(--accent)}
}
