:root{--red:#8c1515;--ink:#252521;--muted:#65645e;--line:#deddd5;--wash:#f6f5f1;--serif:Georgia,'Times New Roman',serif;--sans:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:white;font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:4px}button,input,select{font:inherit}button,summary{cursor:pointer}button,a{touch-action:manipulation}:focus-visible{outline:3px solid #2377a3;outline-offset:4px}button{border:1px solid var(--line);border-radius:4px;background:white;padding:10px 16px;color:var(--ink);min-height:44px}button:hover{border-color:var(--ink)}.primary,.copy{background:var(--red);color:white;border-color:var(--red)}.primary:hover,.copy:hover{background:#6c1010;border-color:#6c1010}button:disabled{background:#eae9e4;border-color:#eae9e4;color:#74736c;cursor:default}.layout{max-width:1320px;margin:auto;display:grid;grid-template-columns:260px minmax(0,1fr);min-height:calc(100vh - var(--masthead))}.rail{border-right:1px solid var(--line);padding:38px 26px;display:flex;flex-direction:column;gap:32px;background:#fbfaf8}.rail details{position:sticky;top:24px}.rail summary{display:none}.rail nav{display:flex;flex-direction:column;gap:2px}.nav-group{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:18px 12px 6px}.nav-group:first-child{margin-top:0}.nav-link{display:flex;align-items:center;gap:11px;min-height:36px;padding:6px 11px;text-decoration:none;font-size:13px;border-left:2px solid transparent}.nav-link:hover{background:#f0efea}.nav-link[aria-current=step]{background:#f1ebe6;border-color:var(--red);font-weight:650}.nav-link.completed .nav-number{color:var(--red);font-weight:bold}.nav-number{font-size:11px;color:#73736b;min-width:17px}main{padding:45px 64px 70px;max-width:970px;width:100%;min-width:0}h1{font:normal 36px/1.2 var(--serif);letter-spacing:-.025em;margin:10px 0 16px}h2{font-size:17px;line-height:1.4;margin:0 0 12px}h3{font-size:14px;margin:0 0 6px}p{margin:0 0 16px}.eyebrow{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0}.lede{font-size:17px;line-height:1.65;color:#575750;max-width:620px}.meta-line{display:flex;gap:24px;flex-wrap:wrap;font-size:12px;margin:24px 0 30px;color:var(--muted)}.section-label{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:28px 0 9px}.project-note{padding:15px 18px;background:var(--wash);font-size:13px;margin:20px 0}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:26px}.text-link{font-size:13px;background:none;border:0;text-decoration:underline;text-underline-offset:4px;padding:10px 4px}.quiet{font-size:12px;color:var(--muted)}details.help,details.term{border-bottom:1px solid var(--line);margin:20px 0;font-size:13px}details.help summary,details.term summary{padding:12px 0;font-weight:550}details p{font-size:13px}.instructions{list-style:none;counter-reset:install;padding:0;margin:24px 0}.instructions li{counter-increment:install;display:grid;grid-template-columns:25px 1fr;gap:10px;padding:15px 0;border-top:1px solid var(--line);font-size:14px}.instructions li:before{content:counter(install);font-size:11px;color:var(--muted);padding-top:4px}.instructions p{margin:4px 0 0;font-size:13px;color:var(--muted)}.prompt{border:1px solid #cfcec5;border-radius:5px;overflow:hidden;margin:25px 0 20px}.prompt-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 17px;border-bottom:1px solid var(--line);background:var(--wash);font-size:11px;letter-spacing:.04em}.copy{padding:7px 13px;font-size:12px;min-height:36px;letter-spacing:0}.prompt-text{white-space:pre-wrap;padding:20px 22px;font:15px/1.75 var(--sans);margin:0;overflow-wrap:anywhere}.flow{display:flex;align-items:stretch;margin:26px 0 22px}.flow-node{flex:1;border-bottom:2px solid var(--line);padding:0 9px 12px 0;font-size:12px}.flow-node strong{display:block;font-size:13px}.flow-node span{color:var(--muted);font-size:11px}.flow-node.current{border-color:var(--red)}.flow-arrow{align-self:center;color:#8a8980;margin:0 12px 10px 0}.check-panel{border-top:1px solid var(--line);padding-top:21px;margin-top:27px}.check-panel h2{font-size:14px}.check-row{display:flex;align-items:flex-start;gap:11px;margin:12px 0;font-size:13px;cursor:pointer}.check-row input{flex:none;width:18px;height:18px;accent-color:var(--red);margin:2px 0 0}.step-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:22px;margin-top:25px;border-top:1px solid var(--line)}.step-bottom p{margin:0}.expected{background:var(--wash);padding:16px 20px;font-size:13px;margin:18px 0}.expected .caption{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:8px}.expected code{display:block;background:none;padding:0;margin-top:6px}code{font:12px/1.6 Consolas,monospace;background:#f1f0eb;padding:2px 4px;overflow-wrap:anywhere}.handoff{border-left:2px solid var(--red);padding:5px 0 5px 23px;margin:28px 0}.handoff h2{font:24px/1.3 var(--serif)}.handoff p{font-size:14px;max-width:540px}.handoff ol{font-size:14px;padding-left:19px}.handoff li{margin:8px 0}.chapter-list{margin:25px 0;border-top:1px solid var(--line)}.chapter-list a{display:flex;gap:20px;font-size:13px;padding:12px 0;border-bottom:1px solid var(--line);text-decoration:none}.chapter-list a:hover{text-decoration:underline}.chapter-list code{background:none;min-width:70px}.skip-link{position:absolute;top:-80px;left:20px;background:white;padding:10px;z-index:5}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.inline-status{color:var(--red);font-size:12px}[hidden]{display:none!important}
@media(min-width:1500px){main{padding-top:60px}}@media(max-width:1000px){main{padding:36px 32px}.layout{grid-template-columns:220px 1fr}.rail{padding:30px 16px}}@media(max-width:700px){.layout{display:block}.rail{padding:0 20px;border-right:0;border-bottom:1px solid var(--line);display:block}.rail details{position:static}.rail summary{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:14px 0}.rail summary:after{content:'⌄';margin-left:12px}#mobile-position{margin-left:auto;color:var(--muted)}.rail nav{padding:12px 0 20px}main{padding:29px 22px 50px}h1{font-size:30px}.lede{font-size:15px}.meta-line{gap:10px 18px;margin:18px 0 25px}.prompt-text{font-size:14px;padding:18px}.prompt-head{padding:10px 13px}.flow-node strong{font-size:11px}.flow-node span{font-size:10px}.flow-arrow{margin-right:8px}.step-bottom{align-items:flex-start;flex-direction:column}.step-bottom .primary,.actions .primary{width:100%}.project-note{font-size:12px}}
main:focus{outline:none}
/* Visual review: one numbering scheme; group completion actions. */
.nav-number{min-width:9px}.nav-link{gap:7px}.back-link{font-size:13px;white-space:nowrap}.forward{margin-left:auto;display:flex;align-items:center;gap:16px}.forward .quiet{white-space:nowrap}button:disabled{color:#55554f}.step-bottom{justify-content:flex-start}main{max-width:910px}.flow-node:not(.current){border-bottom-width:1px}.check-row,.prompt-text{color:var(--ink)}
@media(max-width:700px){.forward{width:100%;flex-direction:column;align-items:stretch;gap:9px}.forward .quiet{text-align:right}.step-bottom{gap:18px}#mobile-position{max-width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

details.manual{border-bottom:1px solid var(--line);margin:0 0 20px;font-size:13px}details.manual summary{padding:12px 0;font-weight:550}details.manual .prompt{margin:14px 0}details.manual .prompt-text{font:13px/1.7 Consolas,monospace}
.choose-lead{font-size:14px;margin:0 0 8px;max-width:68ch}.chooser{display:inline-flex;flex-wrap:wrap;gap:8px 32px;border:1px solid var(--line);border-radius:4px;padding:10px 18px;margin:0 0 26px;font-size:15px}.choose{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 16px}.choose .lbl{color:var(--muted)}.choose label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.choose input{accent-color:var(--red);width:16px;height:16px;margin:0}
.rail details.setup{position:static;margin:0 0 14px;font-size:13px}.rail details.setup summary{display:block;cursor:pointer;padding:6px 8px;list-style:none;font-size:12px;white-space:nowrap}.rail details.setup summary::-webkit-details-marker{display:none}.rail details.setup summary:after{content:none}.rail details.setup summary u{color:var(--muted)}.rail details.setup .chooser{display:flex;flex-direction:column;gap:6px;border:0;padding:6px 8px 0;margin:0;font-size:13px}
@media(max-width:700px){.rail details.setup{padding:8px 0 0}}
.intro{font-size:17px;color:#4a4944;max-width:68ch;margin:0 0 18px}.ct{font:normal 19px/1.3 var(--serif);margin:28px 0 8px}main p,main li{max-width:68ch;text-wrap:pretty}.skip{font-size:13px;margin:-6px 0 18px}.skip .text-link{padding:0;color:var(--muted)}.install{font-size:14px;padding-left:20px}.install li{margin:0 0 6px}
.seq{max-width:72ch}.paths{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;align-items:start;margin:18px 0 8px}.path h3{font:600 13px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;margin:0 0 12px;padding-bottom:6px;border-bottom:1px solid var(--line)}.path p{font-size:14px}.path--agent{position:sticky;top:calc(var(--masthead) + 16px);align-self:start}
.prompt.cmd{margin:0 0 10px}.prompt.cmd .prompt-text{font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;padding:12px 14px}.why{font-size:13px;color:var(--muted);margin:14px 0 6px}.hint{font-size:13px;margin:-4px 0 10px}.label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:6px 0 4px}pre.term-out{background:#1f1f1c;color:#e8e6df;margin:0 0 12px;padding:10px 14px;border-radius:4px;font:12.5px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}pre.term-out .ps{color:#9fd3a0}pre.term-out .quiet{color:#9a9890}.ifnot{font-size:13px;margin:0 0 14px}.ifnot b{font-weight:600}.then{font-size:14px;margin:0 0 16px}
.prompt.turn{margin:0 0 12px}.turn .prompt-text{font:14px/1.6 var(--sans);padding:14px 16px}.turn .slot{color:var(--red);font-weight:600}.turn .slot.filled{color:var(--ink);font-weight:500;border-bottom:1px solid var(--red)}.slot-field{display:block;padding:10px 16px 0;font-size:12px;color:var(--muted)}.slot-field span{display:block;margin-bottom:4px}.slot-field textarea{min-height:2.4em;field-sizing:content;resize:none;overflow:hidden;font:14px var(--sans);padding:7px 10px}.gate-note{font-size:13px;color:var(--muted);margin:0 0 8px}
.vh{font:600 13px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:22px 0 8px}.expect{font-size:13px;background:var(--wash);padding:10px 14px;max-width:68ch;margin:0 0 14px}.expect code{background:#fff}.terms{font-size:14px;color:var(--muted);max-width:68ch;margin:18px 0 0}.terms b{color:var(--ink);font-weight:600}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 14px}.ba h3{font:600 12px/1.4 var(--sans);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}.ba pre{margin:0;padding:10px 12px;border:1px solid var(--line);font:13px/1.5 var(--sans);white-space:pre-wrap}
details.optional{border-top:1px solid var(--line);margin:18px 0;padding-top:8px}details.optional summary{font-weight:600;font-size:14px;cursor:pointer;padding:6px 0}
@media(max-width:760px){.paths,.ba{grid-template-columns:minmax(0,1fr)}.path--agent{position:static}}
.ed{background:var(--wash);padding:14px 18px;margin:26px 0 6px;max-width:72ch}.ed p{margin:0;font-size:15px}.layout{max-width:none;margin:0;grid-template-columns:240px minmax(0,1fr)}.rail{padding:38px 18px}main{margin:0}:root{--masthead:58px}.rail .sticky{position:sticky;top:calc(var(--masthead) + 24px)}.step,#sec-concept,#sec-do,#sec-verify,#sec-checks,#sec-ed{scroll-margin-top:calc(var(--masthead) + 16px)}.rail details{position:static}.rail{align-self:stretch}
@media(max-width:1000px){.layout{grid-template-columns:220px minmax(0,1fr)}}@media(max-width:700px){.rail .sticky{position:static}}.skip-link:focus{z-index:30}
figure{margin:22px 0 26px}figure svg{display:block;max-width:100%;height:auto;color:var(--ink)}figcaption{font-size:13px;color:var(--muted);margin-top:8px;max-width:68ch}figure.map,figure.fig{overflow-x:auto}figure.map svg{min-width:640px}figure.fig svg{min-width:540px}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.ic-fill{fill:currentColor}.ic-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.map .box,.fig .box{fill:#fff;stroke:currentColor;stroke-width:1.5;rx:3}.map .outer,.fig .outer{fill:var(--wash);stroke:currentColor;stroke-width:1.5;rx:4}.map .inner,.fig .wash{fill:var(--wash);stroke:currentColor;stroke-width:1.2;rx:3}.map .arrow,.fig .arrow{fill:none;stroke:currentColor;stroke-width:1.5;marker-end:url(#ah)}.map .dash,.fig .dash{stroke-dasharray:4 3}.map text,.fig text{font-family:var(--sans);font-size:12px;fill:currentColor;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.map .t,.fig .t{font-weight:600;font-size:13px}.map .m,.fig .m{fill:var(--muted)}.map .mono,.fig .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.map .cap,.fig .cap{font-size:10px;letter-spacing:.08em;font-weight:600}.map .lab{font-size:12px}.map .dot{fill:currentColor}.map .tl{stroke:currentColor;stroke-width:1}.fig .red,.map .bar{stroke:var(--red)}.fig .arrow.red{stroke:var(--red);stroke-width:2;marker-end:url(#ahr)}.fig text.red,.map .barlab{fill:var(--red);font-weight:600}
.map .hl .box,.map .hl .outer,.map .hl .inner{stroke:var(--red);stroke-width:2.5}.map .hl .t{fill:var(--red)}.map .arrow.hl{stroke:var(--red);stroke-width:2.5;marker-end:url(#ahr)}.map text.hl{fill:var(--red);font-weight:600}.map .hl .dot{fill:var(--red)}
.map--step .done .m{display:none}.map--step .later .box,.map--step .later .inner{stroke:#b9b8b0;stroke-dasharray:3 3;fill:#fff}.map--step .later text{fill:#b9b8b0}.map--step .later .m,.map--step .later .mono,.map--step .later line,.map--step .later circle,.map--step .later .barlab{display:none}.map--step .arrow.later,.map--step text.later{display:none}.map--step .arrow.done{stroke:#8a8980}.map--step text.done{fill:#8a8980}
details.game{border:1px solid var(--line);border-radius:4px;margin:0 0 10px;padding:0 14px}details.game summary{padding:10px 0;cursor:pointer;font-size:14px}details.game pre{margin:0 0 12px;font:13px/1.55 var(--sans);white-space:pre-wrap}
.map .gap,.fig .gap{stroke:var(--wash);stroke-width:8;fill:none}.fig text.red,.map .barlab{stroke:#fff}.map .hl .ic{color:var(--red)}.map--step .later .ic{color:#b9b8b0}
p.optional{font-size:15px;max-width:68ch;padding:8px 12px;border-left:3px solid var(--red);margin:0 0 18px}.resume{font-size:14px;margin:0 0 18px}table.modules{border-collapse:collapse;font-size:14px;margin:0 0 18px;width:100%;max-width:96ch}.modules th,.modules td{text-align:left;padding:8px 14px 8px 0;border-bottom:1px solid var(--line);vertical-align:top}.modules th{font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}td.k,th.k{white-space:nowrap;width:1%}
/* Layout sweep: short columns stay narrow, containers sized to content, phone rules. */
pre.term-out,.prompt{max-width:72ch}.check-panel,.assessment{max-width:72ch}
@media(max-width:700px){figure.map svg{min-width:560px}table.modules,table.modules tbody,table.modules tr,table.modules td{display:block;width:auto}table.modules tr:first-child{display:none}table.modules tr{border-bottom:1px solid var(--line);padding:10px 0}table.modules td{border-bottom:0;padding:2px 0}table.modules td.k{white-space:normal;width:auto}.pauses td.k{white-space:normal}}
@media(max-width:480px){td.k,th.k{white-space:normal}}
.map--step .gap.later{display:none}
main [id]{scroll-margin-top:calc(var(--masthead) + 16px)}
.rail-ed{margin:16px 0 0;padding:0 13px 14px;font-size:11px;color:var(--muted)}.rail-ed a{color:inherit}
.rail{padding-bottom:0}.rail .sticky{max-height:calc(100vh - var(--masthead) - 18px);overflow-y:auto}
@media(max-width:700px){.rail{padding-bottom:20px}.rail .sticky{max-height:none;overflow:visible}}
.lab-hero{background:var(--red);color:#fff;padding:10px 24px;font-size:14px}.lab-hero .course-name{color:rgba(255,255,255,.9);font-weight:600;text-decoration:none}.lab-hero .course-name:hover{color:#fff}
.tabs{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);box-shadow:0 1px 4px rgba(0,0,0,.04);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px)}.tabs-inner{max-width:980px;margin:0 auto;display:flex;justify-content:center;gap:8px;overflow-x:auto;padding:0 12px;scrollbar-width:none}.tabs-inner::-webkit-scrollbar{display:none}.tabs a{display:block;flex:0 0 auto;padding:16px 18px 13px;color:var(--muted);border-bottom:3px solid transparent;font-size:15.5px;font-weight:500;white-space:nowrap;text-decoration:none}.tabs a:hover{color:var(--red)}.tabs a.active{color:var(--red);border-bottom-color:var(--red)}
@media(max-width:720px){:root{--masthead:51px}.tabs-inner{justify-content:flex-start}.tabs a{padding:14px 10px 11px;font-size:13.5px}}
.rail .sticky{margin:0 -7px;padding:0 7px}
.path--agent:not(:has(.prompt.turn)){position:static}
