:root{color-scheme:light;--ink:#243d53;--muted:#526a7c;--red:#a3413c;--paper:#f9fbf8;--line:#bdcbd3;color:var(--ink);background:#d9dfe2;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:1.65}*{box-sizing:border-box}body{margin:0}html:has(.section-menu){scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html:has(.section-menu){scroll-behavior:auto}}a{color:inherit;text-underline-offset:4px}a:hover{color:var(--red)}a:focus-visible{outline:2px solid var(--red);outline-offset:5px}h1,h2,h3{font-family:Georgia,serif;font-weight:400;line-height:1.2}h1{margin:12px 0 20px;font-size:clamp(32px,4vw,48px)}h2{margin:0 0 18px;font-size:25px}h3{margin:8px 0;font-size:21px}p{margin:0 0 16px}small{font-size:11px}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.sheet{background-color:var(--paper);border:1px solid #9caeb7;border-left:5px solid var(--ink);background-image:linear-gradient(#87a4b719 1px,#0000 1px),linear-gradient(90deg,#87a4b719 1px,#0000 1px);background-size:24px 24px;max-width:1440px;margin:24px auto;padding:26px 40px 24px 64px;position:relative;box-shadow:6px 6px #b9c6cd}.sheet:before{content:"";pointer-events:none;border-left:1px solid #b9535360;position:absolute;top:0;bottom:0;left:42px}.site-header,.site-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.site-header{border-bottom:1px solid var(--ink);padding-bottom:22px}.brand{font:25px Georgia,serif;text-decoration:none}.brand span{color:var(--muted);margin-top:5px;font:10px/1.5 ui-monospace,monospace;display:block}.site-header nav{flex-wrap:wrap;gap:16px 24px;font-size:12px;display:flex}.site-header [aria-current]{color:var(--red)}.site-footer{border-top:1px solid var(--ink);color:var(--muted);margin-top:50px;padding-top:18px;font-size:11px}.skip-link{z-index:10;background:var(--paper);padding:10px;position:absolute;top:-100px;left:20px}.skip-link:focus{top:10px}.eyebrow{text-transform:uppercase;letter-spacing:1px;color:var(--red);margin-bottom:10px;font-size:11px}.muted{color:var(--muted);font-size:12px}.page-intro{max-width:850px;padding:46px 0 34px}.page-intro>p:last-child{max-width:680px}.section-heading{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:18px;display:flex}.section-heading h2{margin-bottom:12px}.map-note{color:var(--muted);font-size:12px}.roadmap{max-width:1000px;height:var(--map-height);margin:25px auto;position:relative}.map-arrows{width:100%;height:100%;color:var(--red);pointer-events:none;position:absolute;inset:0}.topic-node{left:calc(var(--col) * 33.333% + 3.333%);top:calc(var(--row) * var(--row-step));width:26.666%;height:var(--node-height);background:var(--paper);border:1px solid #8fa3af;flex-direction:column;justify-content:center;padding:12px 14px;text-decoration:none;display:flex;position:absolute}.topic-node:hover{border-color:var(--red);color:var(--ink);background:#f4f1eb}.topic-node h3{margin:4px 0;font-size:19px}.topic-node p{margin:2px 0 8px;font-size:11px;line-height:1.4}.node-number{color:var(--red);font-size:9px}.node-link{color:var(--muted);justify-content:space-between;font-size:9px;display:flex}.map-caption{max-width:25%;color:var(--muted);border-left:2px solid var(--red);padding-left:12px;font-size:11px;position:absolute;bottom:10px;left:3.333%}.map-controls{flex-wrap:wrap;align-items:center;gap:10px;margin:22px 0 12px;display:flex}.map-controls[hidden]{display:none}.map-controls button{color:var(--ink);background:var(--paper);cursor:pointer;border:1px solid #8fa3af;padding:9px 12px;font:12px ui-monospace,monospace}.map-controls button:first-child{background:var(--ink);color:#fff;min-width:175px}.map-controls button:disabled{opacity:.45;cursor:default}.map-controls button:focus-visible{outline:2px solid var(--red);outline-offset:3px}.map-narration{max-width:800px;min-height:5em;color:var(--muted);border-left:2px solid var(--red);padding-left:12px;font-size:12px}.map-diagram{width:100%;height:116px;min-height:78px;color:var(--ink);flex:0 116px;margin:6px 0;overflow:visible}.map-token{transform-origin:var(--token-x) var(--token-y)}.map-token :is(rect,circle){fill:var(--paper);stroke:var(--ink);stroke-width:1.2px}.map-token text{fill:var(--ink);font:12px ui-monospace,monospace}.diagram-strings .map-token:not([data-token="0"]) rect{fill:#e5edf0}.map-structure :is(line,path){fill:none;stroke:#8fa3af;stroke-width:1.2px}.map-structure .map-extra-edge{stroke:var(--red);stroke-dasharray:3 3}.map-structure .map-window{fill:#e5edf080;stroke:var(--ink);stroke-width:1px}.map-index{fill:var(--muted);font:9px ui-monospace,monospace}.map-representation{color:var(--muted);min-height:27px;font-size:9px;line-height:1.5}.map-flights{pointer-events:none;z-index:2;position:absolute;inset:0;overflow:clip}.map-flight{border:1px solid var(--red);width:26px;height:26px;color:var(--red);opacity:0;background:#fffdf6;place-items:center;font:12px ui-monospace,monospace;display:grid;position:absolute;top:0;left:0}.roadmap[data-demonstrating] .topic-node:not([data-formed]) .map-structure,.roadmap[data-demonstrating] .topic-node:not([data-formed]) .map-representation{opacity:.15}.topic-node[data-forming]{border-color:var(--red)}.topic-node[data-formed] .map-token :is(rect,circle){stroke:#3f6a59}.map-arrows path.is-flowing{stroke-width:2.5px}.start-here{border-top:1px solid var(--ink);grid-template-columns:1fr 1fr;gap:40px;padding-top:26px;display:grid}.quick-lessons a{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;padding:14px 0;text-decoration:none;display:grid}.quick-lessons small{color:var(--muted);grid-row:2}.quick-lessons a>span:last-child{grid-area:1/2/3}.breadcrumbs{color:var(--muted);flex-wrap:wrap;gap:10px;padding:20px 0;font-size:11px;display:flex}.topic-layout{grid-template-columns:210px minmax(0,1fr);gap:45px;display:grid}.lesson-layout{grid-template-columns:190px minmax(0,1fr) 150px;align-items:start;gap:30px;display:grid}.topic-layout>*,.lesson-layout>*{min-width:0}.question-menu,.section-menu{font-size:12px;position:sticky;top:24px}.question-menu{border-right:1px solid var(--line);overscroll-behavior:contain;max-height:calc(100vh - 48px);padding-right:18px;overflow:auto}.menu-heading{margin:8px 0 20px;font:19px/1.3 Georgia,serif;text-decoration:none;display:block}.question-menu ol{margin:0;padding:0;list-style:none}.question-menu li a{border-left:2px solid #0000;padding:10px 8px;text-decoration:none;display:block}.question-menu li a[aria-current]{border-color:var(--red);background:#f0d7d050}.question-menu small{color:var(--muted);margin-top:4px;font-size:10px;display:block}.other-topics{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.other-topics a{margin:10px 0;font-size:11px;text-decoration:none;display:block}.section-menu{border-left:1px solid var(--line);padding-left:14px}.section-menu a{margin:12px 0;font-size:11px;display:block}.article-header{border-bottom:1px solid var(--ink);margin-bottom:28px;padding:12px 0 24px}.article-header h1{font-size:clamp(30px,3vw,40px)}.lede{max-width:750px;color:var(--muted)}.lesson,.notebook-question,.question-list{overflow-wrap:anywhere}.lesson pre{overflow-wrap:normal}.lesson-meta{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:8px 18px;font-size:10px;display:flex}.lesson-meta>span{border-bottom:1px solid var(--line);padding-bottom:3px}.difficulty-badge{letter-spacing:.3px;white-space:nowrap;border:1px solid;padding:4px 8px;font:10px/1.4 ui-monospace,monospace;display:inline-block}.difficulty-badge[data-difficulty=Easy]{color:#315e47;background:#e6eee9}.difficulty-badge[data-difficulty=Medium]{color:#765014;background:#f5eddc}.difficulty-badge[data-difficulty=Hard]{color:#8b3733;background:#f2e1dc}.question-card-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.question-card-heading>p{margin:0}.lesson-header-actions{align-items:center;gap:14px;font-size:11px;display:flex}.lesson-practice-link{color:var(--muted);text-decoration:none}.reference-disclosure{max-width:650px;font-size:10px}.reference-disclosure summary{cursor:pointer;color:var(--muted)}.reference-disclosure>a{margin:10px 0 5px;display:block}.reference-disclosure>p{color:var(--muted);margin:6px 0;font-size:11px}.question-menu .difficulty-badge{margin-top:7px;font-size:9px}.question-matrix{border:1px solid var(--line);background:#f9fbf8dd;margin:22px 0;padding:18px}.question-matrix figcaption{flex-wrap:wrap;gap:8px 18px;margin-bottom:16px;font-size:12px;display:flex}.question-matrix figcaption span{color:var(--muted)}.question-matrix>p{margin:16px 0 0}.matrix-scroll{max-width:100%;padding:4px;overflow:auto}.matrix-scroll:focus-visible{outline:2px solid var(--red);outline-offset:3px}.matrix-table{border-collapse:separate;border-spacing:4px;font-size:15px}.matrix-table th{color:var(--muted);text-align:center;min-width:22px;font-size:9px;font-weight:400}.matrix-table td{background:var(--paper);text-align:center;border:1px solid #8fa3af;width:42px;min-width:42px;height:40px;padding:5px}.matrix-table td.is-empty{color:var(--muted);border-style:dashed}.matrix-table td.is-read{background:#e6eee9;border-color:#3f6a59}.matrix-table td.in-window{background:#e5edf0;border:2px solid #356894}.matrix-table td.is-current{border:2px solid var(--red);background:#f0d7d0}.matrix-panels{grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));align-items:start;gap:20px;display:grid}.matrix-panel{min-width:0}.matrix-panel h4{margin:0 0 10px;font-size:11px;font-weight:400}.matrix-caption{margin:14px 0 0}.trace-source{border-left:1px solid var(--line);padding-left:16px}.trace-work>.eyebrow,.trace-source>.eyebrow{font-size:9px}.question-filter{border-block:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:24px;padding:18px 0;font-size:12px;display:flex}.question-filter :is(input[type=search],select){max-width:100%;color:var(--ink);background:var(--paper);border:1px solid #8fa3af;padding:9px;font:12px ui-monospace,monospace}.question-filter input[type=search]{width:290px}.question-filter .filter-check{align-items:center;gap:8px;display:flex}.question-filter p{margin:0}.notebook-questions{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:22px;display:grid}.notebook-question{border:1px solid var(--line);background:#f9fbf8dd;min-width:0;padding:22px}.notebook-question[hidden]{display:none}.notebook-question h2{font-size:23px}.notebook-question>p:not(.eyebrow){font-size:12px}.notebook-question .link-row{margin-top:18px;font-size:11px}.coverage-checklist{border:1px solid var(--line);margin-bottom:24px;padding:16px}.coverage-checklist summary{cursor:pointer;font-size:13px}.coverage-checklist ol{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:10px 30px;padding-left:24px;font-size:11px;display:grid}.coverage-checklist li>a:last-child{color:var(--muted);margin-left:10px;font-size:9px}.extra-topics{border-top:1px solid var(--line);margin:26px 0 40px;padding-top:22px}.extra-topics>p{margin-top:14px}.question-filter :is(input,select):focus-visible{outline:2px solid var(--red);outline-offset:3px}article section{margin:32px 0;scroll-margin-top:24px}.takeaways,.walkthrough{padding-left:22px}.takeaways li,.walkthrough li{margin-bottom:12px;padding-left:4px}.question-list a{border-bottom:1px solid var(--line);grid-template-columns:24px 1fr 14px;align-items:start;gap:18px;padding:22px 0;text-decoration:none;display:grid}.question-list h3{margin-top:0}.question-list p{color:var(--muted);font-size:12px}.question-number{color:var(--red);padding-top:3px;font-size:11px}.question-list small{color:var(--muted)}.continue-reading{border-top:1px solid var(--line);padding-top:22px}.link-row{flex-wrap:wrap;gap:12px 24px;font-size:12px;display:flex}.example-box{border:1px solid var(--line);background:#f9fbf8dd;padding:16px}.example-box p{grid-template-columns:55px 1fr;gap:12px;font-size:12px;display:grid}.example-box p:last-child{margin-bottom:0}.example-box code{overflow-wrap:anywhere}.invariant{border-left:3px solid var(--ink);background:#e5edf0;padding:16px;font-size:13px}.invariant p{margin:8px 0 0}.lesson-reveal{border:1px solid var(--line);padding:14px 16px}.lesson-reveal summary{cursor:pointer;font-size:13px}.lesson-reveal summary::marker,.lesson-reveal summary:hover{color:var(--red)}.lesson-reveal summary:focus-visible{outline:2px solid var(--red);outline-offset:3px}.reveal-content{margin-top:18px}.solution{border:1px solid var(--line);background:#f9fbf8eb;max-width:100%;padding:16px;font-size:12px;line-height:1.8;overflow:auto}.astro-code:is(.solution,.trace-code),.astro-code:is(.solution,.trace-code) span{color:var(--shiki-paper,inherit)}:is(.solution,.trace-code):focus-visible{outline:2px solid var(--red);outline-offset:3px}.cost{gap:10px;font-size:12px;display:grid}.cost div{grid-template-columns:55px 1fr;display:grid}.cost dt{font-weight:700}.cost dd{margin:0}.visualizer{background:#f9fbf8b3;border:1px solid #8fa3af;padding:18px;font-size:12px;position:relative}.visualizer[data-theme=paper]{background:#fffdf6}.visualizer form>label{margin-bottom:8px;display:block}.visualizer textarea{resize:vertical;width:100%;color:var(--ink);background:var(--paper);border:1px solid #8fa3af;padding:10px;font:13px/1.5 ui-monospace,monospace;display:block}.visualizer button,.visualizer select,.visualizer input:not([type=range]){background:var(--paper);color:var(--ink);border:1px solid #8fa3af;max-width:100%;padding:8px;font:12px ui-monospace,monospace}.visualizer input:not([type=range]){width:110px}.visualizer button{cursor:pointer}.visualizer button:hover:not(:disabled){background:#e5edf0}.visualizer button:disabled{opacity:.45;cursor:default}.visualizer :is(button,select,input,textarea):focus-visible{outline:2px solid var(--red);outline-offset:3px}.visualizer .trace-primary{color:#fff;background:var(--ink)}.trace-controls{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0;display:flex}.trace-settings>summary{cursor:pointer;color:var(--muted);justify-content:flex-end;align-items:center;gap:8px;font-size:10px;list-style:none;display:flex}.trace-settings>summary::-webkit-details-marker{display:none}.trace-settings-body{border-block:1px solid var(--line);margin-top:12px;padding:14px 0 0}.trace-settings summary:focus-visible,.trace-help summary:focus-visible{outline:2px solid var(--red);outline-offset:3px}.trace-help{color:var(--muted);margin-top:14px;font-size:10px}.trace-help summary{cursor:pointer}.trace-help>p{margin-top:10px}.visualizer .icon-control,.python-runner .icon-control{place-items:center;width:40px;height:40px;padding:8px;display:inline-grid;position:relative}.icon-control svg{pointer-events:none;display:block}.icon-control[data-tooltip]:after{content:attr(data-tooltip);background:var(--ink);color:#fff;white-space:nowrap;opacity:0;pointer-events:none;padding:5px 8px;font:10px ui-monospace,monospace;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.icon-control:is(:hover,:focus-visible):after{opacity:1}.icon-control:disabled:after,[data-role=play][data-playing=false] .pause-symbol,[data-role=play][data-playing=true] .play-symbol{display:none}.python-runner{border:1px solid var(--line);background:#f9fbf8dd;padding:16px}.python-runner-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.python-runner-heading .trace-controls{margin:0 0 8px}.python-runner button{background:var(--paper);color:var(--ink);cursor:pointer;border:1px solid #8fa3af;padding:8px;font:11px ui-monospace,monospace}.python-runner button:disabled{opacity:.45;cursor:default}.python-editor{resize:vertical;white-space:pre;background:var(--paper);width:100%;color:var(--ink);tab-size:4;border:1px solid #8fa3af;margin:12px 0;padding:12px;font:12px/1.8 ui-monospace,monospace;display:block;overflow:auto}.python-runner :is(button,textarea,summary):focus-visible{outline:2px solid var(--red);outline-offset:3px}.python-contract,.python-console{margin:12px 0;font-size:11px}.python-contract summary,.python-console summary{cursor:pointer}.python-custom{margin:14px 0;font-size:11px}.python-custom summary{cursor:pointer}.python-custom>label{margin:12px 0 6px;display:block}.python-case-editor{resize:vertical;background:var(--paper);width:100%;color:var(--ink);white-space:pre;border:1px solid #8fa3af;padding:10px;font:11px/1.7 ui-monospace,monospace;display:block;overflow:auto}[data-python=case-status][data-state=invalid]{color:var(--red)}[data-python=case-status][data-state=valid]{color:#315e47}.python-contract>p{margin-top:10px}.python-contract code{overflow-wrap:anywhere}.python-test-result{border-left:3px solid var(--red);background:#f2e1dc;margin-top:10px;padding:10px;font-size:11px}.python-test-result[data-passed=true]{background:#e6eee9;border-color:#315e47}.python-test-result summary{cursor:pointer}.python-test-result pre,.python-console pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;font-size:11px;overflow:auto}.python-limit{margin:16px 0 0;font-size:10px}.trace-playback-controls{z-index:5;background:var(--paper);border-bottom:1px solid var(--line);padding:10px 0;position:sticky;top:0}.trace-error{color:#9b2929}.trace-error:empty{display:none}.trace-picture{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0}.trace-strip{flex-wrap:wrap;gap:6px;display:flex}.trace-token{border:2px solid var(--line);background:var(--paper);text-align:center;min-width:38px;padding:5px 8px}.trace-token small{color:var(--muted);font-size:9px;display:block}.trace-token strong{font-size:18px;font-weight:400}.trace-token.in-window{border-color:#356894}.trace-token.in-answer,.trace-grid-cell.in-answer{box-shadow:inset 0 0 0 2px #3f6a59}.trace-token.is-current,.trace-grid-cell.is-current{border-color:var(--red);background:#f0d7d0}.trace-legend{color:var(--muted);margin-top:8px;font-size:10px}.visualizer input[type=range]{width:100%;accent-color:var(--red)}.trace-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin:20px 0;display:grid}.trace-columns>*{min-width:0}.trace-columns h3{font-size:19px}.trace-formula{border-left:3px solid var(--ink);overflow-wrap:anywhere;background:#e5edf0;padding:10px}.trace-variables{margin:14px 0}.trace-variables>div{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:10px;padding:6px 0;display:grid}.trace-variables :is(dt,dd){overflow-wrap:anywhere}.trace-variables dd{margin:0}.trace-container h4{margin:16px 0 8px;font-weight:400}.trace-entries{flex-wrap:wrap;gap:5px;max-height:180px;display:flex;overflow:auto}.trace-entry{border:1px solid var(--line);overflow-wrap:anywhere;max-width:100%;padding:5px 7px;font-size:10px}.trace-end-label{color:var(--red);margin-bottom:5px;font-size:9px;display:block}.trace-entries.layout-map{grid-template-columns:minmax(0,1fr);display:grid}.trace-entries:is(.layout-stack,.layout-heap){border-left:2px solid var(--ink);flex-flow:column;padding:5px 0 5px 8px}.layout-stack .trace-entry{background:#f4eee5}.layout-heap .trace-entry{background:#e5edf0}.layout-queue .trace-entry:not(:last-child):after{content:" →";color:var(--muted)}.shelf-group{transform-box:fill-box;transform-origin:50%}.trace-flights{pointer-events:none;z-index:3;position:absolute;inset:0;overflow:clip}.trace-flight{border:1px solid var(--red);min-width:30px;max-width:165px;color:var(--red);white-space:nowrap;text-overflow:ellipsis;background:#fffdf6;padding:6px 9px;font:12px ui-monospace,monospace;position:absolute;top:0;left:0;overflow:hidden}.visualizer [data-landing]{outline:1px dashed var(--muted);outline-offset:2px}.visualizer [data-landing=landed]{outline-style:solid;outline-color:var(--ink);background-color:#e5edf0}.visualizer .shelf-group[data-landing] .shelf-node{stroke:var(--ink);stroke-width:2px;fill:#e5edf0}.trace-value{visibility:inherit}.trace-flight[data-phase=dock]{transform-origin:0 0}.trace-handoffs{border-left:2px solid var(--red);overflow-wrap:anywhere;background:#f4eee5;margin:16px 0;padding:10px;font-size:10px}.trace-handoff{margin:6px 0}.trace-handoff :is(strong,span){display:block}.trace-output{overflow-wrap:anywhere;background:#e6eee9;border:1px solid #3f6a59;padding:12px}.trace-code{border:1px solid var(--line);background:var(--paper);max-height:650px;padding:8px 0;font-size:10px;line-height:1.8;overflow:auto}.trace-code code{flex-direction:column;min-width:max-content;display:flex}.trace-line{min-height:1.8em;padding:0 8px;display:block}.trace-line.active{color:#702c29;background:#f0d7d0}.trace-picture svg{width:100%;max-height:400px;display:block}.trace-picture .network-diagram{max-height:none;color:var(--ink)}.network-link{stroke:var(--muted);stroke-width:1.5px;fill:none}.network-node-box{stroke:#8fa3af;stroke-width:1.5px;fill:var(--paper)}.network-node.current .network-node-box{fill:#f0d7d0;stroke:var(--red);stroke-width:2.5px}.network-node.read .network-node-box{fill:#e5edf0}.network-node.answer .network-node-box{fill:#e6eee9;stroke:#3f6a59;stroke-width:2px}.network-node-value{fill:var(--ink);font:13px ui-monospace,monospace}.network-node-id,.network-edge-label{fill:var(--muted);font:9px ui-monospace,monospace}.network-node{transform-box:fill-box;transform-origin:50%}.shelf-branch{stroke:#8fa3af;stroke-width:1.5px}.shelf-node{fill:var(--paper);stroke:#8fa3af;stroke-width:1.5px}.shelf-node.read{fill:#e5edf0}.shelf-node.current{fill:#f0d7d0;stroke:var(--red);stroke-width:3px}.shelf-label{fill:var(--ink);font:11px ui-monospace,monospace}.trace-grid{gap:5px;max-width:350px;margin:0 auto 14px;display:grid}.trace-grid-cell{border:2px solid var(--line);text-align:center;background:#e5edf0;padding:4px}.trace-grid-cell strong{font-size:20px;font-weight:400;display:block}.trace-grid-cell small{overflow-wrap:anywhere;min-height:13px;font-size:8px;display:block}.trace-grid-cell.is-machine{background:#f0d7d0}.trace-grid-cell.is-read{border-color:#8fa3af}.primary-link{background:var(--ink);color:#fff;padding:10px 14px;text-decoration:none}.primary-link:hover{color:#fff;background:#3d596e}.home-honesty{margin-top:18px}.practice-prompt{border-left:3px solid var(--red);background:#f4eee5;padding:16px;font-size:12px}.practice-prompt p{margin:8px 0}.practice-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px;display:grid}.practice-stats>div{border-right:1px solid var(--line);padding:16px}.practice-stats>div:last-child{border-right:0}.practice-stats strong{font:32px Georgia,serif;display:block}.practice-stats span{font-size:11px}.practice-layout{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:40px;margin-top:26px;display:grid}.practice-layout>*{min-width:0}.practice-case{background:#f9fbf8b3;border:1px solid #8fa3af;padding:20px}.practice-case label,.practice-case p{font-size:12px}.practice-case form>label{margin:18px 0 8px;display:block}.practice-case textarea{resize:vertical;width:100%;color:var(--ink);background:var(--paper);border:1px solid #8fa3af;padding:10px;font:13px/1.6 ui-monospace,monospace;display:block}#practice-desk :is(button,select,input[type=file]){background:var(--paper);color:var(--ink);border:1px solid #8fa3af;max-width:100%;padding:8px;font:12px ui-monospace,monospace}#practice-desk button{cursor:pointer}#practice-desk button:disabled{opacity:.45;cursor:default}#practice-desk .trace-primary{background:var(--ink);color:#fff}#practice-desk :is(button,select,input,textarea):focus-visible{outline:2px solid var(--red);outline-offset:3px}.case-meta{color:var(--red);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:20px 0;font-size:10px;display:flex}.practice-input{white-space:pre-wrap;overflow-wrap:anywhere;background:#e5edf0;padding:14px;font-size:12px}.practice-checks{gap:12px;margin-top:18px;display:grid}.practice-checks label{align-items:start;gap:8px;display:flex}.practice-checks input{flex-shrink:0;margin-top:4px}.practice-feedback{border-left:3px solid var(--red);background:#f0d7d0;margin-top:16px;padding:14px}.practice-feedback[data-correct=true]{background:#e6eee9;border-color:#3f6a59}.practice-case .invariant{overflow-wrap:anywhere;margin-top:18px}.practice-debrief{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}.review-desk h2{font-size:23px}.review-row{border-bottom:1px solid var(--line);padding:14px 0}.review-row a{font-size:12px}.review-row p{margin:8px 0 0;font-size:10px}.import-label{font-size:11px}@media (width<=1000px){.practice-layout{grid-template-columns:1fr;gap:24px}}@media (width<=1100px){.lesson-layout{grid-template-columns:165px minmax(0,1fr);gap:24px}.section-menu{border-left:0;border-bottom:1px solid var(--line);flex-wrap:wrap;grid-area:1/2;gap:6px 14px;padding:0 0 16px;display:flex;position:static}.section-menu p{width:100%;margin:0}.section-menu a{margin:0}.lesson{grid-area:2/2}.lesson-layout>.question-menu{grid-row:1/3}}@media (width<=750px){.sheet{box-shadow:none;border:0;margin:0;padding:22px 18px 22px 28px}.sheet:before{left:14px}.site-header{gap:16px}.page-intro{padding:34px 0 20px}.desktop-break{display:none}.roadmap{gap:28px;max-width:450px;height:auto;display:grid}.map-arrows{display:none}.topic-node{width:100%;height:auto;min-height:270px;padding:18px;position:relative;top:auto;left:auto}.topic-node:not(:last-of-type):after{content:"↓";color:var(--red);position:absolute;bottom:-28px;left:50%}.topic-node h3{font-size:23px}.topic-node p{font-size:12px}.node-number,.node-link{font-size:10px}.map-diagram{flex:none;align-self:center;max-width:240px}.map-narration{min-height:12em}.map-caption{max-width:none;margin:10px 0;position:static}.start-here,.topic-layout,.lesson-layout{flex-direction:column;gap:20px;display:flex}.question-menu{border:1px solid var(--line);width:100%;max-height:none;padding:14px;position:static;overflow:visible}.question-menu .menu-heading{margin:0 0 10px}.other-topics{display:none}.section-menu{order:1;width:100%}.lesson{order:2;width:100%}.article-header{padding-top:0}.visualizer{padding:12px}.trace-columns{grid-template-columns:1fr}.trace-source{border-left:0;border-top:1px solid var(--line);padding:18px 0 0}.question-matrix{margin-inline:0;padding:12px}.practice-case{padding:12px}.practice-stats>div{padding:12px 6px}}
