/* Hallmark · macrostructure: Workbench · genre: editorial · theme: Almanac · nav: N3 Side-rail · footer: Ft4 Dense colophon
 * audience: nontechnical learners · use: understand by doing · tone: tactile scientific exhibition
 * pre-emit critique: Philosophy 4 · Hierarchy 5 · Execution 4 · Specificity 5 · Restraint 5 · Variety 4
 */
@font-face{font-family:'Lab Serif';src:url('fonts/serif.ttf')}@font-face{font-family:'Lab Sans';src:url('fonts/sans.ttf')}@font-face{font-family:'Lab Mono';src:url('fonts/mono.ttf')}
*{box-sizing:border-box}html{overflow-x:clip;scroll-behavior:smooth}body{margin:0;overflow-x:clip;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);line-height:1.6;font-size:16px}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button,a,summary{-webkit-tap-highlight-color:var(--color-clear)}button{white-space:nowrap}button:disabled{cursor:not-allowed;opacity:.48}a{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid var(--color-focus);outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,h3{font-style:normal;overflow-wrap:anywhere;min-width:0}h1{font-family:var(--font-display);font-size:var(--text-display);font-weight:400;line-height:1.12;letter-spacing:-.035em}h2{font-family:var(--font-display);font-size:1.7rem;line-height:1.2;font-weight:400}h3{font-size:1.05rem}p{max-width:64ch}.skip{position:absolute;left:16px;top:-100px;z-index:20;padding:12px;background:var(--color-surface)}.skip:focus{top:12px}
.rail{background:var(--color-ink);color:var(--color-paper);padding:24px 20px}.brand{display:block;font-family:var(--font-display);font-size:1.65rem;line-height:1.05;text-decoration:none;position:relative;max-width:200px}.brand-mark{position:absolute;right:0;top:0;color:var(--color-three);font-size:2rem}.rail-intro{opacity:.8;margin-top:16px;font-size:.88rem}nav{display:flex;flex-wrap:wrap;margin-top:28px;gap:4px}.chapter{border:0;background:var(--color-clear);color:var(--color-paper);padding:10px 8px;display:flex;align-items:center;gap:10px;text-align:left;opacity:.65;min-height:44px}.chapter[aria-current=step]{opacity:1;background:var(--color-accent)}.chapter:hover{opacity:1}.chapter-number{font-family:var(--font-mono);font-size:.72rem;opacity:.7}.rail-bottom{margin-top:20px;display:flex;flex-wrap:wrap;gap:14px;align-items:center}.rail-link{background:var(--color-clear);border:0;padding:4px 0;color:inherit;font-size:.82rem;text-align:left}.rail-link:hover{text-decoration:underline;text-underline-offset:4px}.course{font-size:.65rem;letter-spacing:.11em;opacity:.65}
main{padding:0 20px;max-width:1500px;margin:auto}.topline{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-rule);padding:20px 0;font-size:.67rem;letter-spacing:.1em}.topline span:last-child{font-family:var(--font-mono)}.heading{padding:28px 0 32px}.eyebrow{color:var(--color-muted);font-size:.67rem;letter-spacing:.12em;margin-bottom:12px}.heading>p{margin-top:16px;color:var(--color-muted);font-size:1.02rem;max-width:58ch}.workbench{border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-ink)}.board{min-width:0;position:relative}.board-top{padding:16px 20px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.66rem;letter-spacing:.08em}.board-status{color:var(--color-muted);letter-spacing:0}#graph-wrap{width:100%;min-width:0}#graph{display:block;width:100%;height:300px;overflow:visible}#graph text{font-family:var(--font-body);fill:var(--color-ink)}#graph .node-letter{font-size:12px;font-weight:700}#graph .node-value{font-family:var(--font-display);font-size:23px}#graph .edge{stroke:var(--color-rule);stroke-width:2}#graph .edge.selected{stroke:var(--color-ink);stroke-width:3}#graph .edge.bad{stroke:var(--color-error);stroke-dasharray:5 4}#graph .node-hit{cursor:pointer}#graph .node-hit:hover .node-face{stroke:var(--color-focus);stroke-width:2}#graph .node-hit:focus{outline:none}#graph .node-hit:focus-visible .node-face{stroke:var(--color-focus);stroke-width:3}.legend{padding:4px 16px 16px;display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;font-size:.73rem}.legend span{display:flex;align-items:center;gap:6px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--color-ink)}.one{background:var(--color-one)}.two{background:var(--color-two)}.three{background:var(--color-three)}.board-caption{border-top:1px solid var(--color-rule);padding:14px 20px;font-size:.8rem;color:var(--color-muted);min-height:54px}.fieldnote{padding:24px;border-top:1px solid var(--color-rule);background:var(--color-paper-dark);color:var(--color-ink)}.note-index{font-size:.63rem;letter-spacing:.1em;color:var(--color-muted)}.fieldnote h2{margin:12px 0}.fieldnote>p{font-size:.9rem}.roles{margin-top:24px;display:grid;gap:16px}.role-name,.takeaway>span{font-size:.62rem;letter-spacing:.08em;font-weight:700}.roles p{font-size:.8rem;margin-top:4px}.takeaway{margin-top:24px;padding-top:16px;border-top:1px solid var(--color-rule)}.takeaway p{font-family:var(--font-display);font-size:1.25rem;line-height:1.35;margin-top:8px}
.interaction{padding:20px 0;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.button{min-height:46px;padding:10px 18px;background:var(--color-clear);color:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius-sm);transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.button:hover:not(:disabled){border-color:var(--color-ink)}.button:active:not(:disabled){transform:translateY(1px)}.button.primary{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent)}.button.primary:hover:not(:disabled){opacity:.88}.text-button{border:0;padding:10px 0;background:var(--color-clear);color:inherit;font-size:.82rem;min-height:44px}.text-button:hover:not(:disabled){text-decoration:underline;text-underline-offset:4px}.message{font-size:.88rem;min-height:24px;margin-bottom:12px}.message[data-kind=error]{color:var(--color-error)}.message[data-kind=success]{color:var(--color-success)}.lesson-controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center;padding:20px 0;border-top:1px solid var(--color-rule)}#step-hint{font-size:.75rem;color:var(--color-muted);flex:1;max-width:30ch;text-align:center}.understand{margin:28px 0 40px;display:grid;gap:16px;padding-top:24px;border-top:1px solid var(--color-rule)}.understand h2{font-size:1.45rem}.understand p{font-size:.88rem;color:var(--color-muted)}.understand p+p{margin-top:12px}footer{border-top:1px solid var(--color-rule);padding:20px 0 28px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;font-size:.7rem;color:var(--color-muted)}footer>span:first-child{font-family:var(--font-display);font-size:1.1rem;color:var(--color-ink)}footer .text-button{font-size:.72rem;margin-left:auto}
.envelopes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 20px 20px}.envelope{border:1px solid var(--color-rule);padding:8px;background:var(--color-paper);color:var(--color-ink);min-width:0;position:relative}.envelope::before{content:'';display:block;position:absolute;inset:0 0 auto;height:12px;border-bottom:1px solid var(--color-rule);clip-path:polygon(0 0,50% 100%,100% 0);background:var(--color-paper-dark)}.envelope b{display:block;font-size:.72rem;padding-top:8px}.envelope code{font-family:var(--font-mono);font-size:.55rem;display:block;overflow-wrap:anywhere;color:var(--color-muted)}.edge-choices{display:flex;gap:6px;flex-wrap:wrap}.edge-choice{min-height:44px;min-width:48px;padding:8px;border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-ink);border-radius:var(--radius-sm);font-size:.78rem}.edge-choice:hover{border-color:var(--color-ink)}.edge-choice[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper)}.interaction-label{font-size:.8rem;width:100%;color:var(--color-muted)}.checks{padding:0 20px 20px;display:grid;gap:8px}.check-row{font-size:.83rem;display:flex;align-items:center;gap:8px}.check-row strong{font-family:var(--font-mono);font-size:.7rem}.check-row .yes{color:var(--color-success)}.check-row .no{color:var(--color-error)}.receipt{padding:16px 20px;border-top:1px solid var(--color-rule);font-size:.78rem}.receipt summary{cursor:pointer}.receipt pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--font-mono);font-size:.65rem;line-height:1.7}.round-strip{display:flex;flex-wrap:wrap;gap:6px;padding:0 20px 20px}.round-tile{width:28px;height:28px;display:grid;place-items:center;font-family:var(--font-mono);font-size:.65rem;background:var(--color-success-soft);color:var(--color-success)}.round-tile.failed{background:var(--color-error-soft);color:var(--color-error)}.probability{margin:12px 0;width:100%}.probability .track{height:8px;background:var(--color-paper-dark)}.probability .fill{height:100%;background:var(--color-one)}.probability p{margin-top:8px;font-size:.8rem}.lab-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px;width:100%}.lab-tab{background:var(--color-clear);color:var(--color-ink);border:0;border-bottom:2px solid var(--color-rule);padding:10px 12px;min-height:44px;font-size:.8rem}.lab-tab[aria-pressed=true]{border-color:var(--color-accent);font-weight:700}.small-note{font-size:.78rem;color:var(--color-muted);max-width:65ch}.stat-line{display:flex;flex-wrap:wrap;gap:12px;font-size:.83rem}.stat-line b{font-family:var(--font-mono);font-size:.85rem}.term{border:0;background:var(--color-clear);color:var(--color-ink);border-bottom:1px dotted var(--color-muted);padding:0;white-space:normal;min-height:24px;cursor:help}.busy{opacity:.6;pointer-events:none}dialog{width:min(720px,calc(100% - 32px));max-height:85dvh;border:1px solid var(--color-rule);padding:24px;background:var(--color-paper);color:var(--color-ink);box-shadow:0 16px 70px var(--color-shadow)}dialog::backdrop{background:var(--color-shadow)}.dialog-top{display:flex;justify-content:space-between;align-items:center;font-size:.65rem;letter-spacing:.1em;margin-bottom:20px}dialog h2{margin:24px 0 12px}dialog h3{margin:24px 0 8px}dialog p,dialog li{font-size:.92rem}dialog p+p{margin-top:12px}dialog li{margin-bottom:10px}dialog code{font-family:var(--font-mono);font-size:.8rem}dialog a{text-underline-offset:3px}dialog pre{font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem;padding:16px;background:var(--color-paper-dark);color:var(--color-ink)}
@media(min-width:40rem){main{padding:0 36px}.heading{padding:36px 0}.envelopes{grid-template-columns:repeat(6,minmax(0,1fr))}.understand{grid-template-columns:minmax(0,1fr) minmax(0,1.7fr);gap:32px}#graph{height:340px}}
@media(min-width:64rem){body{padding-left:232px}.rail{position:fixed;inset:0 auto 0 0;width:232px;padding:36px 24px;display:flex;flex-direction:column}.brand{font-size:1.8rem}.brand-mark{right:0}.rail-intro{margin-top:24px}nav{display:flex;flex-direction:column;margin-top:48px;gap:8px}.chapter{padding:12px 10px;gap:14px;font-size:.85rem}.rail-bottom{margin-top:auto;align-items:start;flex-direction:column;gap:12px}.course{margin-top:24px;font-size:.59rem}.topline{padding:28px 0}.workbench{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(240px,1fr)}.fieldnote{border-top:0;border-left:1px solid var(--color-rule);padding:28px 24px}.heading{max-width:1000px}.roles{gap:20px}#graph{height:350px}.envelopes{grid-template-columns:repeat(3,minmax(0,1fr))}main{padding:0 40px}.heading>p{font-size:1.05rem}.interaction{min-height:88px}}
@media(min-width:90rem){body{padding-left:264px}.rail{width:264px;padding:40px 32px}main{padding:0 64px}.workbench{grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr)}#graph{height:380px}.heading{padding:40px 0}.heading>p{max-width:64ch}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
/* Compact chapter navigation keeps the lesson, rather than its menu, in view. */
.mobile-chapter{display:block;font-size:.7rem;margin-top:16px}.mobile-chapter select{display:block;width:100%;margin-top:4px;min-height:44px;padding:8px 12px;background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius-sm)}
@media(max-width:63.999rem){.rail{padding:20px}.brand{font-size:1.5rem;max-width:unset}.brand br{display:none}.brand br::after{content:' '}.brand-mark{display:none}.rail-intro{display:none}.rail nav{display:none}.rail-bottom{margin-top:12px;gap:20px}.rail-bottom .course{display:none}.rail-link{min-height:32px}.topline{padding:16px 0}.heading{padding-top:24px}.board-top{padding:12px 16px}.fieldnote{padding:20px}}
@media(min-width:64rem){.mobile-chapter{display:none}}
.result-figure{margin:24px 0}.result-figure img{display:block;width:100%;height:auto}
button:active:not(:disabled){opacity:.85}
.mode-switch{display:flex;flex-direction:row;gap:24px;margin:0;padding:20px 0 0;align-items:center}.mode-switch a{font-size:.85rem;white-space:nowrap;text-decoration:none;padding:8px 0;border-bottom:2px solid var(--color-clear)}.mode-switch a[aria-current=page]{border-bottom-color:var(--color-ink);font-weight:700}

/* Shared project colophon: names first, profile links beside each author. */
.project-footer{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:24px;padding:28px 0 32px;font-size:.75rem}
.footer-title{font-family:var(--font-display);font-size:1.2rem;color:var(--color-ink)}
.footer-heading p{max-width:34ch;margin-top:6px}
.footer-label{font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}
.footer-person{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-top:6px}
.footer-person>span{color:var(--color-ink);flex-basis:100%}
.project-footer a{color:inherit;text-decoration:underline;text-underline-offset:3px;padding:6px 0;display:inline-block}
.project-footer a:hover{color:var(--color-ink)}
.footer-links{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.project-footer .text-button{margin:0;padding:6px 0;min-height:32px;font-size:inherit;text-align:left}
@media(min-width:760px){.project-footer{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.footer-links{grid-column:1/-1;flex-direction:row;gap:24px}}
@media(min-width:1200px){.project-footer{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto}.footer-links{grid-column:auto;flex-direction:column;gap:4px}}

/* Final detail pass: stable identity, content-aware columns and a distinct end band. */
.brand{display:flex;align-items:center;gap:12px;max-width:none;font-size:1.5rem;line-height:1.12}
.brand-symbol{display:block;flex:0 0 44px;width:44px;height:44px;color:var(--color-paper)}
.brand-wordmark{display:block;min-width:0}
.brand-wordmark br{display:initial}
main{container-type:inline-size}
.project-footer{background:var(--color-paper-dark);border-top:2px solid var(--color-rule);margin:32px -20px 0;padding:28px 20px 24px;gap:24px;grid-template-columns:minmax(0,1fr);line-height:1.55}
.footer-title{font-family:var(--font-body);font-size:.86rem;font-weight:700}
.footer-heading p{font-size:.7rem;max-width:36ch;margin-top:6px}
.footer-heading .footer-purpose{margin-top:4px}
.footer-label{margin-bottom:8px;font-size:.62rem}
.footer-person{gap:0 12px;margin-top:8px}
.footer-person>span{font-size:.76rem;font-weight:600}
.project-footer a{font-size:.72rem;padding:4px 0;text-decoration-color:var(--color-rule)}
.footer-links{grid-column:auto;flex-direction:row;flex-wrap:wrap;gap:8px 20px;border-top:1px solid var(--color-rule);padding-top:14px}
.project-footer .text-button{font-size:.72rem;min-height:32px;padding:4px 0}
.standalone{padding-left:0}
.standalone main{max-width:1120px}
.reference-brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:1.2rem;text-decoration:none;padding-top:24px}
.reference-brand .brand-symbol{color:var(--color-ink);width:36px;height:36px;flex-basis:36px}
.reference-brand .brand-symbol rect{fill:var(--color-paper)}
.standalone .lab-section p+p{margin-top:14px}
.standalone .lab-section li{padding-left:4px;margin-bottom:12px}
.standalone .lab-section ol{padding-left:22px;max-width:78ch}
section[id]{scroll-margin-top:24px}
@media(min-width:40rem){.project-footer{margin-left:-36px;margin-right:-36px;padding-left:36px;padding-right:36px}}
@media(min-width:64rem){.project-footer{margin-left:-40px;margin-right:-40px;padding-left:40px;padding-right:40px}.brand{font-size:1.5rem;gap:10px}.brand-symbol{flex-basis:36px;width:36px;height:36px}}
@media(min-width:90rem){.project-footer{margin-left:-64px;margin-right:-64px;padding-left:64px;padding-right:64px}.brand{font-size:1.6rem}.brand-symbol{flex-basis:40px;width:40px;height:40px}}
@container(min-width:580px){.project-footer{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.footer-links{grid-column:1/-1}}
@container(min-width:1000px){.project-footer{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto}.footer-links{grid-column:auto;flex-direction:column;border-top:0;border-left:1px solid var(--color-rule);padding:0 0 0 24px;gap:8px}}
@media(max-width:420px){.brand{font-size:1.3rem}.brand-symbol{flex-basis:36px;width:36px;height:36px}.mode-switch{gap:20px}.lesson-controls{display:grid;grid-template-columns:1fr auto}#step-hint{grid-row:2;grid-column:1/-1;text-align:left;max-width:none}.lesson-controls #continue{grid-column:2;grid-row:1}.footer-person{column-gap:16px}}

/* Compact colophon: inline credits rather than a second content section. */
.project-footer{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 24px;padding-top:16px;padding-bottom:16px;margin-top:24px}
.footer-heading{flex:1 1 220px}
.footer-title{font-size:.76rem}
.footer-heading p{font-size:.65rem;max-width:none;margin-top:2px}
.footer-credits{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;flex:2 1 340px}
.footer-label{flex-basis:100%;margin:0;font-size:.6rem}
.footer-person{display:flex;align-items:baseline;gap:8px;margin:0}
.footer-person>span{flex-basis:auto;font-size:.7rem;font-weight:500}
.project-footer a{font-size:.67rem;padding:4px 0}
.footer-links{display:flex;flex-direction:row;align-items:baseline;flex-wrap:wrap;gap:4px 20px;border:0;padding:0;flex:1 1 100%}
.project-footer .text-button{font-size:.67rem;min-height:28px;padding:4px 0}
@container(min-width:1000px){.footer-links{flex:0 1 auto;flex-direction:column;gap:0}}
.footer-credits{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2px 16px}
.footer-label{grid-column:1/-1}
.footer-person{justify-content:flex-start;flex-wrap:wrap}
