@font-face{font-family:Plex;src:url(fonts/IBMPlexMono-Regular.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Plex;src:url(fonts/IBMPlexMono-Medium.woff2) format('woff2');font-weight:500;font-display:swap}
:root{color-scheme:light;--paper:#f5f3ec;--white:#fffef9;--ink:#29332d;--muted:#626a61;--line:#d8d9ce;--accent:#9f3b25;--wash:#ecebdd;--green:#2c604b;--red:#943528;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);background:var(--paper);font-size:16px}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:var(--accent);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}.skip{position:fixed;top:-80px;left:20px;z-index:9;background:var(--white);padding:12px}.skip:focus{top:12px}.site-header{max-width:1560px;margin:auto;min-height:100px;padding:24px 44px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:28px}.wordmark{font-family:Georgia,serif;font-weight:bold;font-size:23px;text-decoration:none;color:var(--ink);line-height:1.2}.wordmark span{display:block;font-family:system-ui,sans-serif;font-size:11px;font-weight:400;letter-spacing:.01em;color:var(--muted);margin-top:6px}.course-type{margin-left:auto;color:var(--muted);font-family:Plex,monospace;font-size:10px;letter-spacing:.06em}.site-header button{border:1px solid var(--line);background:transparent;border-radius:3px;padding:11px 14px;font-size:12px}.site-header button span{margin-left:12px}.shell{max-width:1440px;margin:auto;display:grid;grid-template-columns:248px minmax(0,1fr);gap:54px;padding:54px 44px 70px}.rail{align-self:start;position:sticky;top:28px}.eyebrow,.kicker,.mono-label{font-family:Plex,monospace;letter-spacing:.08em;font-size:10px;text-transform:uppercase;line-height:1.7}.eyebrow{color:var(--accent);max-width:210px;margin:0 0 18px}.rail h1{font:normal 49px/.98 Georgia,serif;letter-spacing:-2px;margin:0}.title-dot{color:var(--accent)}.rail-description{font-size:14px;line-height:1.7;max-width:210px;color:var(--muted);margin:20px 0 34px}#chapters{display:grid;gap:3px}#chapters button{background:transparent;text-align:left;border:0;display:grid;grid-template-columns:25px 1fr 16px;gap:8px;padding:12px 9px;font-size:13px;align-items:center;border-radius:3px}#chapters button:hover{background:var(--wash)}#chapters button[aria-current=step]{background:var(--ink);color:var(--white)}.chapter-number{font-family:Plex,monospace;font-size:12px;color:inherit}.chapter-mark{font-size:12px}.rail-footer{border-top:1px solid var(--line);padding-top:18px;margin-top:35px;font-size:11px;color:var(--muted);line-height:1.5}.rail-footer p{margin:5px 0}main{min-width:0}.kicker{color:var(--accent);margin:0 0 17px}.lesson-heading{font:normal clamp(33px,4vw,54px)/1.06 Georgia,serif;letter-spacing:-1.5px;max-width:810px;margin:0 0 23px}.lead{font-size:19px;line-height:1.65;max-width:760px;color:#4c574c;margin:0 0 28px}.reading{max-width:760px;font-size:17px;line-height:1.75}.reading p{margin:0 0 18px}.workspace{border:1px solid var(--line);background:var(--white);border-radius:5px;margin:32px 0;overflow:hidden;box-shadow:0 3px 0 #29332d05}.workspace-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;padding:17px 24px;border-bottom:1px solid var(--line)}.workspace-head h3{font-size:14px;margin:0;font-weight:600}.workspace-head .mono-label{color:var(--muted);margin-left:auto;font-size:9px}.workspace-body{padding:24px}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.wide-visual{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px}.drawing{display:block;width:100%;height:auto;max-height:340px;background:#f8f8f1;border:1px solid var(--line);border-radius:3px}.drawing .grid-line{stroke:#dddeda;stroke-width:1}.drawing .path-line{stroke:var(--accent);stroke-width:3;fill:none;stroke-linecap:round}.drawing .old-line{opacity:.35}.drawing text{fill:var(--muted);font:15px Plex,monospace}.drawing .marker-label{fill:var(--ink);font-weight:500}.drawing .turn-ring{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:4 3}.drawing .start{fill:var(--white);stroke:var(--ink);stroke-width:1.8}.drawing .end{fill:var(--ink)}.figure-caption{font-size:16px;color:var(--muted);line-height:1.6;margin:10px 0 0}.controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-top:16px}label.field{display:grid;gap:7px;font-size:14px;font-weight:600;flex:1;min-width:125px}label.field.wide{width:100%;flex-basis:100%}input:not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid #777f76;border-radius:3px;background:#fffef9;padding:10px 11px;max-width:100%;min-width:0}textarea{resize:vertical;width:100%;line-height:1.6;min-height:88px;font-size:16px}textarea.code{font:14px/1.7 Plex,monospace;min-height:245px;tab-size:2;background:#fafbf5}input[type=range]{width:100%;accent-color:var(--accent);padding:8px 0!important}input[type=radio],input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;flex-shrink:0}button.primary,button.secondary{border-radius:3px;padding:11px 15px;line-height:1.4;font-size:12px;font-weight:600;min-height:41px}button.primary{background:var(--ink);color:var(--white);border:1px solid var(--ink)}button.primary:hover{background:#405044}button.secondary{border:1px solid #777f76;background:transparent}button.secondary:hover{background:var(--wash)}.small{font-size:16px;line-height:1.65;color:var(--muted)}.callout{border-left:3px solid #aaa88d;padding:2px 0 2px 18px;font-size:16px;line-height:1.8;margin:24px 0;color:var(--muted)}.worked{margin:28px 0}.worked summary,details summary{cursor:pointer;font-size:16px;font-weight:600;padding:10px 0}.worked[open]{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding-bottom:12px}.worked p{font-size:16px;line-height:1.8;max-width:760px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:15px/1.7 Plex,monospace;background:var(--wash);border-radius:3px;padding:17px;margin:12px 0}code{font-family:Plex,monospace;font-size:.9em}.answer-group{border:0;padding:0;margin:0}.answer-group legend{font-size:16px;font-weight:600;line-height:1.6;margin-bottom:16px}.option{display:flex;gap:12px;align-items:flex-start;font-size:16px;line-height:1.6;padding:12px 14px;border:1px solid var(--line);border-radius:3px;margin-bottom:9px;background:#fdfdf6;cursor:pointer}.option:has(input:checked){border-color:var(--ink);background:var(--wash)}.feedback{border-left:3px solid #a8914a;background:#f5f1df;padding:13px 16px;margin:18px 0 0;font-size:16px;line-height:1.75}.feedback.pass{border-color:var(--green);background:#edf2e9}.feedback.error{border-color:var(--red);background:#f6eae2}.feedback strong{display:block;font-size:16px;margin-bottom:4px}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}.metric{border-top:1px solid var(--line);padding-top:10px}.metric strong{display:block;font-family:Plex,monospace;font-size:26px;font-weight:400;letter-spacing:-1px}.metric span{display:block;margin-top:5px;font-size:14px;color:var(--muted);line-height:1.5}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.result-grid h4{font-size:13px;margin:0 0 12px}.result-grid .metrics{grid-template-columns:1fr 1fr}.bar-row{display:grid;grid-template-columns:120px 1fr 44px;gap:12px;align-items:center;font-size:14px;margin:12px 0}.bar-track{height:28px;background:#eeeee4;border-radius:2px;overflow:hidden}.bar{height:100%;background:var(--ink)}.bar.accent{background:var(--accent)}.tree{display:flex;flex-direction:column;align-items:center;gap:12px;padding:18px 4px;overflow:auto}.tree-children{display:flex;gap:13px;align-items:flex-start}.tree-node{display:flex;flex-direction:column;align-items:center;gap:12px;position:relative}.tree-node .token{border:1px solid #bfc4b8;border-radius:3px;padding:7px 9px;background:var(--white);font:11px Plex,monospace;white-space:nowrap}.tree-node .hole{background:#f7e0d3;border-color:#be6c4e;color:#813720}.tree-children>.tree-node:before{content:'';width:1px;height:12px;background:#bfc4b8;position:absolute;top:-12px}.takeaways{padding:20px 0;border-top:1px solid var(--line);margin-top:32px}.takeaways h3{font-family:Plex,monospace;text-transform:uppercase;letter-spacing:.09em;font-size:10px;color:var(--muted);font-weight:400}.takeaways ul{font-size:16px;line-height:1.85;padding-left:18px;max-width:760px}.takeaways li{margin:8px 0}.sources{font-size:14px;color:var(--muted);margin:18px 0}.sources a{margin-right:12px}.chapter-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:24px;margin-top:30px}.site-footer{max-width:1440px;margin:auto;border-top:1px solid var(--line);padding:22px 44px 30px;display:flex;justify-content:space-between;gap:30px;font-size:10px;line-height:1.6;color:var(--muted)}.notebook-panel{max-width:1352px;margin:20px auto;border:1px solid var(--line);border-radius:4px;padding:22px;background:var(--white)}.notebook-panel h2{font:normal 25px Georgia,serif;margin:0 0 10px}.notebook-panel .controls{align-items:center}.notebook-panel input[type=file]{font-size:12px}.storage-warning{max-width:1352px;margin:16px auto;background:#f6eae2;padding:16px;font-size:13px;line-height:1.8;border-left:3px solid var(--red)}table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.6;margin:18px 0;overflow-wrap:anywhere}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 8px;vertical-align:top}th{font-weight:500;color:var(--muted)}.checks{padding:0;list-style:none;font-size:15px}.checks li{border-bottom:1px solid var(--line);padding:10px 0;line-height:1.7}.checks .yes{color:var(--green)}.checks .no{color:var(--red)}.check-detail{color:var(--muted);display:block;overflow-wrap:anywhere}.code-status{font-family:Plex,monospace;font-size:13px;padding:10px 0;color:var(--muted)}.pose-key{display:flex;gap:17px;flex-wrap:wrap;font:10px Plex,monospace;color:var(--muted);margin-top:10px}.tag{border:1px solid var(--line);padding:3px 7px;border-radius:2px;font:9px Plex,monospace;color:var(--muted)}.inline-check{display:flex;gap:10px;align-items:center;font-size:12px;line-height:1.6}.notebook-history{max-height:260px;overflow:auto}.notebook-history li{font-size:12px;line-height:1.8;margin:6px 0}.empty{font-size:13px;color:var(--muted);line-height:1.8;padding:20px 0}.error-message{color:var(--red);font-size:13px;line-height:1.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1450px){.shell{gap:75px;grid-template-columns:250px minmax(0,1fr)}}
@media(max-width:1000px){.shell{grid-template-columns:195px minmax(0,1fr);gap:32px;padding:36px 26px}.rail h1{font-size:42px}.site-header{padding:22px 26px}.course-type{display:none}.site-header button{margin-left:auto}.wide-visual,.split{grid-template-columns:1fr}.drawing{max-height:310px}.tree{padding:15px 0}.tree-children{gap:8px}.tree-node .token{font-size:10px;padding:6px}.workspace-body{padding:20px}.notebook-panel,.storage-warning{margin:16px 26px}}
@media(max-width:680px){.site-header{min-height:85px;padding:18px 18px;gap:14px}.wordmark{font-size:21px}.wordmark span{font-size:10px}.site-header button{font-size:11px;padding:10px}.shell{display:block;padding:28px 18px 45px}.rail{position:static}.rail h1{font-size:34px;letter-spacing:-1px}.rail h1 br{display:none}.eyebrow{font-size:9px;max-width:none;margin-bottom:12px}.rail-description{max-width:none;font-size:13px;margin:12px 0 22px}.rail-footer{display:none}#chapters{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 0 30px}#chapters button{display:flex;justify-content:center;padding:10px 3px;min-height:42px}#chapters .chapter-name,#chapters .chapter-mark{display:none}.chapter-number{font-size:12px;opacity:1}main{border-top:1px solid var(--line);padding-top:25px}.lesson-heading{font-size:37px;letter-spacing:-1px}.lead{font-size:17px;line-height:1.65}.reading{font-size:16px}.workspace-head{padding:15px 17px;gap:8px}.workspace-head .mono-label{margin-left:0}.workspace-body{padding:18px 16px}.workspace{margin:26px 0}.result-grid{grid-template-columns:1fr}.metrics{gap:9px}.metric strong{font-size:23px}.site-footer{padding:20px 18px;display:block}.site-footer span{display:block;margin-bottom:8px}.notebook-panel,.storage-warning{margin:16px 18px}.controls{gap:10px}.controls button{flex-grow:1}pre{font-size:14px;padding:13px}.tree-children{gap:6px}.tree-node .token{padding:6px 4px;font-size:9px}.bar-row{grid-template-columns:74px 1fr 30px;gap:8px}.notebook-panel input[type=file]{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.assistance-intro:not(:empty){max-width:1352px;margin:20px auto 0;padding:16px 22px;border:1px solid var(--line);border-radius:3px;background:var(--white);display:flex;align-items:center;gap:18px;flex-wrap:wrap}.assistance-intro p{font-size:12px;line-height:1.6;margin:0;flex:1;min-width:180px}.assistance-intro .controls{margin:0}.code.expanded{min-height:540px}.input-example{font-size:11px;background:#f3f3e9}.assistance-intro:empty{display:none}@media(max-width:1000px){.assistance-intro:not(:empty){margin:16px 26px 0}}@media(max-width:680px){.assistance-intro:not(:empty){margin:14px 18px 0;padding:14px;gap:10px}.assistance-intro .controls{width:100%}.code.expanded{min-height:520px}}

.notebook-controls{margin-left:auto;text-align:right;flex-shrink:0}#save-status{display:block;margin-top:6px;font-size:10px;color:var(--muted)}#save-status[data-state=memory]{color:var(--red)}

/* The companion project keeps the task, program evidence and learner work distinct. */
.selection-sequence{display:flex;flex-wrap:wrap;gap:12px 28px;padding:0 0 24px;list-style-position:inside;border-bottom:1px solid var(--line);font:11px/1.8 Plex,monospace;color:var(--muted)}
.selection-cost .bar-row{grid-template-columns:80px minmax(0,1fr) 32px;gap:10px}.selection-cost .bar-track{display:block;width:100%;min-width:0}
.selection-drawings{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;margin-top:20px;align-items:center}.selection-observation{padding:20px;border-left:2px solid var(--line);font-size:14px;line-height:1.8}.selection-observation h4{font:26px/1.2 Georgia,serif;margin:12px 0}.selection-brief{max-width:760px;font-size:14px;line-height:1.8}.selection-brief li{padding:4px 0}.selection-code{min-height:350px!important;margin-top:8px}#selection-results{scroll-margin:30px}#selection-results:focus{outline:2px solid var(--accent);outline-offset:8px}.selection-cost{margin:22px 0}.selection-preview .drawing{max-height:320px}.selection-preview details pre{margin-bottom:0}
@media(max-width:680px){.selection-drawings{grid-template-columns:1fr;gap:12px}.selection-observation{border-left:0;border-top:1px solid var(--line);padding:14px 0 0}.selection-sequence{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;font-size:10px}.selection-code{min-height:320px!important}}
.check-item{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.check-item:first-child{border-top:0;padding-top:0;margin-top:0}.item-figure .drawing{max-width:420px;margin:0 0 14px}.skip-route{margin:-12px 0 24px}.objectives{border-top:1px solid var(--line);margin-top:32px;padding-top:12px}.objectives h3{font-size:17px;margin:8px 0}.objectives ul{padding-left:18px;max-width:760px;font-size:17px;line-height:1.7}.objectives li{margin:10px 0}.objective-status{color:var(--muted)}.link-button{border:0;background:none;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:4px;font:inherit;cursor:pointer}
.figure-scroll{overflow-x:auto}.candidate-tree{display:block;width:100%;min-width:560px;height:auto;background:#f8f8f1;border:1px solid var(--line);border-radius:3px;margin:12px 0}.candidate-tree text{font:14px Plex,monospace;fill:var(--ink)}.candidate-tree .tree-note{fill:var(--muted)}.candidate-tree .tree-title{fill:var(--ink);font-weight:500}.candidate-tree .tree-edge{stroke:#bfc4b8;stroke-width:1.5}.candidate-tree .tree-edge.on-path{stroke:var(--accent);stroke-width:3}.candidate-tree rect{fill:var(--white);stroke:#9aa094;stroke-width:1.2}.candidate-tree .on-path rect{fill:#f7e0d3;stroke:var(--accent);stroke-width:2.5}.candidate-tree .macro rect{stroke-dasharray:4 3}.candidate-tree .macro text,.candidate-tree .macro-note{fill:#813720}.candidate-tree .on-path text{fill:var(--ink);font-weight:500}.candidate-tree .tree-root{fill:var(--ink)}.candidate-tree .tree-divider{stroke:var(--line)}
.check-io{margin:8px 0 4px;font-size:13px;padding:10px 12px}.starter-choice button[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:2px}
.procedure{margin:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding-bottom:8px}
.section-heading{font-size:19px;margin:34px 0 12px;max-width:760px}.cycle{display:block;width:100%;min-width:620px;height:auto;margin:8px 0}.cycle-box{fill:var(--white);stroke:var(--ink);stroke-width:1.5}.cycle-name{font:600 15px system-ui,sans-serif;fill:var(--ink)}.cycle-change{font:13px system-ui,sans-serif;fill:var(--muted)}.cycle-arrow{stroke:var(--accent);stroke-width:2}.cycle-head{fill:var(--accent)}.cycle-label{font:13px Plex,monospace;fill:var(--accent)}.tree-node .binding{font:12px Plex,monospace;color:#813720;white-space:nowrap}.stream-list li[aria-current]{font-weight:600;color:var(--ink)}

/* visuals-01/05/06/14: a manually selected author trace; no browser 3D or motion. */
.drawing-study{margin:20px 0 24px;border:1px solid var(--line);border-radius:8px;background:var(--paper);overflow:hidden}
.drawing-study-intro{font-size:14px;line-height:1.55;margin:0;padding:16px 18px 10px}
.drawing-study-controls{display:flex;gap:6px;flex-wrap:wrap;padding:0 18px 10px}
.drawing-study-controls button{font:12px Plex,monospace;padding:10px 12px;background:var(--white);border:1px solid var(--muted);border-radius:4px;min-height:40px}
.drawing-study-controls button[aria-pressed=true]{color:var(--white);background:var(--ink);border-color:var(--ink)}
.drawing-study-panel{display:grid;grid-template-columns:minmax(0,1fr) 184px;align-items:stretch}
.drawing-study-stage{position:relative;align-self:center;min-width:0}
.drawing-study-stage img{display:block;width:100%;height:auto}
.drawing-study-fallback{margin:0;padding:24px 18px;font-size:14px;line-height:1.6;color:var(--muted)}
.drawing-study-axes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.drawing-study-axes text{font:32px Plex,monospace;fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:8px;stroke-linejoin:round}
.drawing-study-readout{padding:20px 16px;background:var(--white);border-left:1px solid var(--line);font-size:14px;line-height:1.55}
.drawing-study-readout dl{margin:0;display:grid;gap:14px}
.drawing-study-readout dt{font-size:12px;color:var(--muted)}
.drawing-study-readout dd{font:20px/1.4 Plex,monospace;margin:2px 0 0;font-variant-numeric:tabular-nums}
.drawing-study-readout p{margin:20px 0 0}
.drawing-study-status{font-size:12px;line-height:1.5;padding:0 18px;margin:8px 0;min-height:1.5em}
.drawing-study-status:empty{min-height:0}
.drawing-study .figure-caption{padding:0 18px 16px;margin:0}
@media(max-width:900px){.drawing-study-panel{grid-template-columns:1fr}.drawing-study-readout{border-left:0;border-top:1px solid var(--line);padding:14px 18px}.drawing-study-readout dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.drawing-study-readout dd{font-size:18px}.drawing-study-readout p{margin-top:12px}}
@media(max-width:480px){.drawing-study-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 12px 12px}.drawing-study-controls button{padding:10px 6px}.drawing-study-readout{padding:12px}.drawing-study-readout dd{font-size:16px}.drawing-study-axes text{font-size:48px;stroke-width:10px}.drawing-study-intro{padding:14px 12px 10px}}
/* SVG text uses viewBox units: scale labels against the stage, not the viewport. */
.drawing-study-stage{container-type:inline-size}
@container(max-width:600px){.drawing-study-axes text{font-size:44px;stroke-width:10px}}
@container(max-width:420px){.drawing-study-axes text{font-size:58px;stroke-width:12px}}
@container(max-width:320px){.drawing-study-axes text{font-size:70px;stroke-width:14px}}

/* Whole cost: both totals share a ruler; definition and program terms stay beside it. */
.cost-comparison{margin:24px 0;padding:22px;border:1px solid var(--line);background:#f8f7ef;border-radius:5px}
.cost-comparison>.mono-label{font-size:11px;margin:0 0 20px;color:var(--muted);letter-spacing:.025em}
.cost-row{margin:20px 0}.cost-heading{display:flex;justify-content:space-between;gap:12px;font-size:15px;line-height:1.4;margin-bottom:8px}.cost-heading strong{font:24px Plex,monospace;color:var(--ink)}
.cost-track{display:flex;width:100%;height:24px;border-radius:0;border-left:1px solid var(--ink);background:repeating-linear-gradient(90deg,transparent 0,transparent calc(25% - 1px),#d8d9ce calc(25% - 1px),#d8d9ce 25%)}
.cost-track span{display:block;flex:none;height:100%}.cost-original{fill:var(--ink)}.cost-definition{fill:var(--accent)}.cost-programs{stroke:var(--accent);stroke-width:1}
.cost-accounting{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:15px;margin-top:-9px}.cost-term{display:flex;align-items:center;gap:10px;padding-top:10px;border-top:3px solid var(--accent);font-size:14px;line-height:1.4}.cost-term strong{font:24px Plex,monospace}.cost-term.programs{border-top-style:dashed}.cost-plus{font:24px Plex,monospace}.cost-term span{color:var(--muted)}
@media(max-width:680px){.cost-comparison{padding:15px 12px}.cost-heading{font-size:14px}.cost-heading strong{font-size:22px}.cost-accounting{gap:9px}.cost-term{display:block;font-size:13px}.cost-term strong{display:block;margin-bottom:5px}}

/* The connection stays visible while labels retain their CSS size on phones. */
.tree{padding:24px 0 32px;overflow:visible;min-height:210px;justify-content:center}.tree>.tree-node{width:100%}.tree-node{gap:24px;min-width:0}.tree-node .token{font-size:14px;padding:9px 12px;border-color:#8a9687}.tree>.tree-node>.token{font-size:20px;background:var(--ink);color:var(--white)}.tree-children{position:relative;display:flex;gap:0;width:100%;justify-content:center}.tree-children>.tree-node{flex:1}.tree-children:before{content:'';position:absolute;left:50%;top:-24px;height:12px;border-left:1px solid #73826f}.tree-children>.tree-node:before{height:12px;top:-12px;background:#73826f}.tree-children>.tree-node:after{content:'';position:absolute;left:0;right:0;top:-12px;border-top:1px solid #73826f}.tree-children>.tree-node:first-child:after{left:50%}.tree-children>.tree-node:last-child:after{right:50%}.tree-node .hole{border:2px dashed var(--accent);background:#f6e3d7;font-weight:500}.tree-node .binding{font:13px/1.5 Plex,monospace;white-space:normal;text-align:center;margin-top:-14px}
.candidate-tree{min-width:0;width:100%;background:transparent;border:0;margin:20px 0}.search-branch-panel{border:1px solid var(--line);background:var(--white);border-radius:5px;padding:20px;margin:0 0 20px}.search-branch-panel header{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:14px}.search-branch-panel h4{font-size:19px;margin:0}.search-branch-panel header p{font-size:14px;margin:0;line-height:1.45}.search-branch-panel header strong{font:28px Plex,monospace;display:inline-block;margin-right:6px}.search-depths{list-style:none;margin:0;padding:0}.search-depths li{position:relative;padding:18px 0 18px 16px;border-left:3px solid var(--accent);margin-left:6px}.search-depths li:last-child{padding-bottom:0}.depth-label{display:flex;align-items:center;gap:12px;font:13px Plex,monospace;color:var(--muted);margin-bottom:10px}.depth-label:before{content:'';position:absolute;left:-7px;width:11px;height:11px;border:2px solid var(--accent);border-radius:50%;background:var(--white)}.depth-label span{font:13px system-ui,sans-serif;color:var(--accent);margin-left:auto}.tree-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}.tree-choice{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:8px 10px;border:1px solid #a0ab9c;border-radius:3px;min-width:89px;font-size:14px;background:#f6f6ee}.tree-choice.on-path{border:2px solid var(--accent);padding:7px 9px;background:#f6e3d7}.tree-choice.macro{border-style:dashed}.path-cue{font-size:11px;color:#813720}.search-route{margin:20px 0 0;border-top:1px solid var(--line);padding-top:12px;line-height:1.6}.search-route span{display:block;font-size:13px;color:var(--muted)}.search-route code{font-size:14px;overflow-wrap:anywhere}
.cycle{min-width:0;border:1px solid var(--line);border-radius:5px;background:#f8f7ef;padding:22px;margin:10px 0 20px}.cycle-steps{list-style:none;margin:0;padding:0}.cycle-stage{display:grid;grid-template-columns:32px 1fr;gap:14px;align-items:center}.cycle-order{display:grid;place-items:center;width:32px;height:32px;border:1px solid #7e8a79;border-radius:50%;font:15px Plex,monospace;color:var(--muted)}.cycle-stage strong{display:block;font-size:19px}.cycle-stage div>span{font-size:15px;color:var(--muted);display:block;margin-top:4px}.cycle-transfer{display:flex;gap:19px;margin:12px 0 12px 9px;align-items:center;font-size:14px;color:var(--accent)}.cycle-transfer>span{font-size:29px;line-height:1}.cycle-return{display:flex;gap:14px;margin:22px 0 0;padding:14px 0 0;border-top:1px solid var(--line);font-size:14px;line-height:1.6;color:var(--accent)}.cycle-return>span:first-child{font-size:34px;line-height:1.4}.cost-summary{font-size:16px;color:var(--muted);margin:18px 0}.cost-summary strong{font:28px Plex,monospace;color:var(--ink);margin-right:8px}
@media(max-width:680px){.tree-node .token{font-size:13px;padding:8px}.tree-node .binding{font-size:12px}.search-branch-panel{padding:16px 12px}.search-branch-panel header{display:block}.search-branch-panel header p{margin-top:10px}.tree-choice{min-width:82px;padding:8px;font-size:13px}.tree-choice.on-path{padding:7px}.depth-label{flex-wrap:wrap}.depth-label span{margin-left:0}.cycle{padding:18px 14px}.cycle-stage{gap:10px}.cycle-stage strong{font-size:17px}}

/* Interpreter marks and persistent pose are one figure at every viewport. */
.trace-figure{margin:0;border:1px solid var(--line);border-radius:5px;background:#f8f8f1;min-width:0;overflow:hidden}.trace-heading{font-size:14px;line-height:1.5;font-weight:600;margin:0;padding:12px 15px 0}.trace-figure .drawing{max-height:none;width:100%;border:0;border-radius:0;background:transparent}.drawing .grid-line{stroke:#e0e3d8;stroke-width:.8}.drawing .path-line{stroke-width:4.2}.drawing text{font:20px Plex,monospace;fill:#4e5c4d;paint-order:stroke;stroke:#f8f8f1;stroke-width:5px;stroke-linejoin:round}.drawing .marker-label{font-size:19px;font-weight:500}.drawing .segment-number{font-weight:500}.trace-readout{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px 15px;border-top:1px solid var(--line);background:var(--white)}.trace-readout small{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.trace-readout b{font:16px Plex,monospace}.trace-scale{font:11px/1.5 Plex,monospace;color:var(--muted);margin:0;padding:9px 15px}.item-figure .trace-figure{max-width:420px;margin-bottom:14px}.item-figure .drawing{margin:0}.selection-preview .drawing{max-height:none}
.skip:not(:focus){clip-path:inset(50%)}
@media(max-width:680px){.trace-heading{font-size:14px;padding:11px 12px 0}.trace-readout{padding:10px 12px;gap:8px}.trace-readout b{font-size:14px}.trace-scale{font-size:11px;padding:8px 12px}}

/* Candidate counts: a shared ruler, filled success marker, open stopped marker. */
.search-measures{padding:20px;border:1px solid var(--line);border-radius:5px;background:#f8f8f1;margin:22px 0}.search-measure+.search-measure{margin-top:20px}.search-measure-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:15px}.search-measure-heading strong{font:26px Plex,monospace}.search-measure svg{width:100%;height:32px;display:block}.search-measure-axis{stroke:#d0d6c8;stroke-width:2}.search-measure-bar{stroke:var(--accent);stroke-width:8}.search-measure-bar.stopped{stroke:var(--muted);stroke-dasharray:12 6}.search-found{fill:var(--accent)}.search-capped{fill:#f8f8f1;stroke:var(--ink);stroke-width:2}.search-measure-status{font-size:13px;line-height:1.5;color:var(--muted);margin:0}.search-measure-scale{display:flex;justify-content:space-between;font:12px Plex,monospace;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;margin-top:16px}.solver-work{font-size:14px;color:var(--muted)}.solver-work strong{font:20px Plex,monospace;color:var(--ink)}.transfer-comparison{border-top:1px solid var(--line);margin:22px 0;padding:18px 0}.transfer-comparison h4{font-size:21px;margin:0}.transfer-comparison .search-measures{margin:12px 0}.transfer-choice{font-size:15px;line-height:1.6;margin:12px 0 0}.transfer-choice strong{font-weight:600}
@media(max-width:680px){.search-measures{padding:16px 12px}.search-measure-heading{font-size:14px}.search-measure-heading strong{font-size:24px}}

.trace-scale{font-size:12px}.cost-comparison>.mono-label{font-size:12px}.path-cue{font-size:12px}.tree-choice code{font-size:13px}.change-evidence th:last-child,.change-evidence td:last-child{width:78px;white-space:nowrap}.semantics-continuation{margin-top:22px}

.drawing .old-line{opacity:1;stroke:#897267;stroke-width:3}

/* Segment boundaries remain observable when consecutive moves are collinear. */
.drawing .segment-joint{fill:#f8f8f1;stroke:var(--accent);stroke-width:2}
@media(min-width:1100px){.candidate-tree{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}.search-branch-panel{margin:0;padding:18px}.search-branch-panel header{display:block}.search-branch-panel header p{margin-top:10px}.candidate-tree>.figure-caption{grid-column:1/-1;margin:0}.depth-label span{margin-left:0}}

.cycle-wide{display:none;padding:0;border:0;background:transparent}
@media(min-width:1100px){.cycle-wide{display:block}.cycle-narrow{display:none}}
.transfer-comparison{margin:16px 0;padding:14px 0}.transfer-comparison .search-measures{padding:14px 18px}.transfer-comparison .search-measure+.search-measure{margin-top:10px}.transfer-comparison .search-measure-heading strong{font-size:22px}.transfer-comparison .search-measure-scale{margin-top:10px;padding-top:8px}

/* Concrete examples belong beside the reading chunk that introduces the relation. */
.project-evidence th:first-child{width:112px;white-space:nowrap}.project-evidence td:nth-child(2){white-space:nowrap}.project-evidence td strong,.project-evidence td span{display:block;line-height:1.6}.project-evidence td strong{font-weight:500;margin-bottom:6px}.project-evidence td span{color:var(--muted)}.project-evidence th code{font-size:13px}
.reading-figure{margin:24px 0 32px;padding:24px;background:var(--white);border-top:2px solid var(--ink);border-bottom:1px solid var(--line)}
.reading-figure>figcaption{font-size:20px;line-height:1.35;margin-bottom:24px}.reading-figure>figcaption>span{display:block;font-size:14px;line-height:1.5;color:var(--muted);margin-top:8px}
.notation-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center}.notation-pair>div{min-width:0}.notation-label{font-size:13px;line-height:1.5;color:var(--muted);margin:0 0 8px}.notation-pair pre{font-size:14px;margin:0 0 18px;padding:14px;background:var(--paper)}.notation-pair pre:last-child{margin-bottom:0}.notation-tree .tree{min-height:0;padding:20px 0}.tree-order{font-size:13px;line-height:1.5;margin:0;text-align:center;color:var(--muted)}.tree-order span{display:block;font-size:26px;line-height:1.1;color:var(--accent)}
.command-key{margin:26px 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.command-key>div{padding:15px 0;border-bottom:1px solid var(--line)}.command-key dt{font-size:16px;font-weight:600}.command-key dd{font-size:15px;line-height:1.55;margin:6px 0 0;color:var(--muted)}
.execution-columns{display:grid;grid-template-columns:1fr 1.3fr;gap:22px;font-size:13px;color:var(--muted);padding-bottom:12px}.execution-rows{list-style:none;padding:0;margin:0}.execution-rows>li{display:grid;grid-template-columns:1fr 1.3fr;gap:22px;align-items:center;padding:22px 0;border-top:1px solid var(--line)}.execution-candidate{display:flex;align-items:center;gap:14px;min-width:0}.candidate-number{display:grid;place-items:center;flex:none;width:34px;height:34px;border:2px solid var(--ink);border-radius:50%;font:16px Plex,monospace}.execution-candidate>code{font-size:14px;line-height:1.65;overflow-wrap:anywhere}.execution-expansion{position:relative;padding-left:26px;min-width:0}.expansion-arrow{position:absolute;left:0;top:4px;color:var(--accent);font-size:24px}.primitive-steps{list-style:none;display:flex;gap:8px;flex-wrap:wrap;padding:0;margin:0}.primitive-steps li{border-bottom:3px solid var(--accent);padding:8px 7px;background:#f6e3d7}.primitive-steps li.turn{border-bottom-style:dashed;background:var(--paper)}.primitive-steps code{font-size:13px;white-space:nowrap}.execution-count{display:block;font-size:13px;font-weight:500;color:var(--muted);margin-top:8px}.execution-totals{display:grid;grid-template-columns:1fr 1.3fr;gap:22px;padding:18px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--line)}.execution-totals>div{display:flex;align-items:center;gap:14px}.execution-totals strong{font:36px/1.2 Plex,monospace}.execution-totals span{font-size:14px;line-height:1.5}.execution-totals>div:last-child strong{color:var(--accent)}
@media(max-width:680px){.reading-figure{padding:20px 12px}.reading-figure>figcaption{font-size:20px;margin-bottom:20px}.notation-pair{grid-template-columns:1fr;gap:24px}.notation-tree{border-top:1px solid var(--line);padding-top:18px}.notation-pair pre{font-size:13px}.command-key{grid-template-columns:1fr}.command-key>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:12px}.command-key dt{font-size:14px}.command-key dd{font-size:14px;margin:0}.execution-columns{display:none}.execution-rows>li{grid-template-columns:1fr;gap:15px;padding:18px 0}.execution-expansion{padding-left:48px}.expansion-arrow{left:10px;top:0;transform:rotate(90deg)}.execution-candidate>code{font-size:13px}.primitive-steps li{padding:7px 6px}.primitive-steps code{font-size:12px}.execution-totals{grid-template-columns:1fr 1fr;gap:16px}.execution-totals>div{display:block}.execution-totals span{display:block;margin-top:5px}.execution-totals strong{font-size:32px}}

/* Preserve separate evidence/draft columns on wide screens; label their phone rows. */
@media(max-width:680px){
 .project-evidence thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 .project-evidence tbody{display:block}
 .project-evidence tr{display:grid;grid-template-columns:100px minmax(0,1fr);padding:12px 0;border-bottom:1px solid var(--line)}
 .project-evidence th:first-child{grid-row:1/3;width:auto;padding:8px 8px 8px 0;border:0}
 .project-evidence td{padding:4px 0;border:0}
 .project-evidence td:nth-child(2){white-space:normal}
 .project-evidence td::before{content:attr(data-label);display:block;font-size:12px;color:var(--muted);margin-bottom:2px}
 .project-evidence td strong{margin:0}
}
