:root{--paper: #eceee6;--paper-deep: #e1e4d8;--paper-edge: #cfd3c4;--ink: #26283a;--ink-soft: #4a4d63;--ink-faint: #858899;--rule: #c6cabc;--wash-asphalt: #8d93a8;--wash-asphalt-far: #a2a7b8;--wash-pavement: #cfcfc4;--wash-plaza: #c7b8c2;--wash-refuge: #d3a3ab;--wash-concrete: #c3c2b3;--wash-kerb: #9fa0a0;--wash-leaf: #7d9e86;--wash-leaf-deep: #5b7d6e;--wash-grass: #a6bf97;--wash-building: #aeb4c6;--wash-building-deep: #8e95ab;--wash-glass: #b9cbd8;--wash-window-lit: #f0d487;--wash-bus: #6fb35a;--wash-sign: #3d6fb6;--line-paint: #f7f7f1;--line-yellow: #cfa93c;--sig-red: #cf4540;--sig-yellow: #dfad35;--sig-green: #4b9b58;--sig-unread: #9b9dab;--risk: #a3306b;--data: #2a6fb0;--field: #5b5f7a;--ev-jaywalking: #2c877b;--ev-stop_line: #4957a5;--ev-red_light: #c13a55;--ev-stopped_vehicle: #a97b22;--ev-wrong_way: #6d4ea0;--ev-default: #4a4d63;--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--font-ui: "Recursive", ui-sans-serif, system-ui, sans-serif;--font-hand: "Caveat", "Segoe Print", "Bradley Hand", cursive;--step--2: .72rem;--step--1: .84rem;--step-0: 1rem;--step-1: 1.2rem;--step-2: 1.48rem;--step-3: clamp(1.7rem, 1.2rem + 1.6vw, 2.2rem);--step-4: clamp(2.1rem, 1.3rem + 3vw, 3.3rem);--hand-1: 1.25rem;--hand-2: 1.6rem;--leading: 1.5;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 36px;--s-7: 56px;--gutter: clamp(16px, 3vw, 40px);--stroke: 1.5px;--radius-sketch: 3px 7px 4px 6px / 6px 3px 7px 4px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-variation-settings:"CASL" .4;font-size:var(--step-0);line-height:var(--leading);-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.15 0 0 0 0 0.16 0 0 0 0 0.23 0 0 0 0.07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}#root{position:relative;z-index:1}h1,h2,h3{font-family:var(--font-display);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:500;line-height:1.08;margin:0;letter-spacing:-.01em}p{margin:0}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}button{font:inherit;color:inherit}:focus-visible{outline:2px dashed var(--ink);outline-offset:3px}.num{font-variant-numeric:tabular-nums;font-variation-settings:"MONO" 1,"CASL" 0}.hand{font-family:var(--font-hand);font-weight:600}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.hero{padding:var(--s-4) var(--gutter) var(--s-6);max-width:1680px;margin:0 auto}.hero-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--s-2) var(--s-6);align-items:end;margin-bottom:var(--s-4)}.hero-intro h1{font-size:var(--step-3);max-width:24ch}.hero-lede{color:var(--ink-soft);max-width:56ch}.hero-status{font-size:var(--step--1);color:var(--ink-soft);margin-top:var(--s-3)}.stamp{display:inline-block;font-family:var(--font-hand);font-size:var(--hand-1);font-weight:700;color:var(--ev-red_light);border:1.5px solid currentColor;border-radius:var(--radius-sketch);padding:0 8px;margin-right:8px;transform:rotate(-2deg);line-height:1.3}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,22vw,330px);gap:var(--s-4);align-items:stretch}.stage{position:relative;border:var(--stroke) solid var(--ink);border-radius:var(--radius-sketch);box-shadow:4px 5px 0 -1px var(--paper-edge),4px 5px 0 0 var(--ink-faint);overflow:hidden;background:var(--paper)}.diorama{width:100%;aspect-ratio:16 / 9;max-height:74vh;min-height:300px}.diorama canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}.zoom{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:6px}.zoom button,.step,.nb-clear,.nb-links button,.ev-chip{appearance:none;background:var(--paper);border:var(--stroke) solid var(--ink);border-radius:var(--radius-sketch);cursor:pointer}.zoom button{display:grid;place-items:center;width:36px;height:36px;font-size:1.1rem;line-height:1}.zoom button:hover,.step:hover,.nb-clear:hover,.nb-links button:hover,.ev-chip:hover{background:var(--paper-deep)}.notebook{position:relative;background-color:var(--paper-deep);background-image:repeating-linear-gradient(to bottom,transparent 0 27px,var(--rule) 27px 28px);background-position:0 14px;border:var(--stroke) solid var(--ink);border-radius:5px 9px 6px 8px/8px 5px 9px 6px;padding:var(--s-5) var(--s-4) var(--s-4) calc(var(--s-4) + 10px);font-size:var(--step--1);overflow:auto;max-height:calc(min(74vh,(100vw - 2 * var(--gutter) - 340px) * 9 / 16) + 2px)}.notebook:before{content:"";position:absolute;top:0;bottom:0;left:12px;width:1px;background:var(--ev-red_light);opacity:.45}.nb-head{position:relative;margin-bottom:var(--s-3)}.nb-kicker{font-size:var(--hand-2);line-height:1;color:var(--ink-soft);margin-bottom:2px}.nb-head h3{font-size:var(--step-2);text-transform:none}.nb-clear{position:absolute;top:0;right:0;padding:2px 10px;font-size:var(--step--1);min-height:32px}.nb-rows{margin:0}.nb-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--s-2);padding:4px 0;border-bottom:1px dashed var(--rule)}.nb-row dt{color:var(--ink-soft)}.nb-row dd{margin:0;font-weight:600;overflow-wrap:anywhere}.nb-unit{font-weight:400;color:var(--ink-faint)}.nb-links{list-style:none;padding:0;margin:var(--s-3) 0 0;display:flex;flex-wrap:wrap;gap:6px}.nb-links button{padding:4px 10px;min-height:34px;border-left:5px solid var(--c, var(--ink));font-size:var(--step--1)}.nb-note{margin-top:var(--s-3);color:var(--ink-soft);font-size:var(--step--2);line-height:1.45}.deck{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5);margin:var(--s-4) 0 var(--s-3)}.transport{display:flex;align-items:center;gap:var(--s-2)}.play{appearance:none;width:44px;height:44px;display:grid;place-items:center;border:2px solid var(--ink);border-radius:48% 52% 50% 46%/52% 46% 54% 48%;background:var(--ink);color:var(--paper);cursor:pointer}.step{min-height:36px;padding:0 10px;font-size:var(--step--1)}.clock{min-width:108px;font-weight:600;padding:0 4px}.clock span{color:var(--ink-faint);font-weight:400}.layers{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px}.layer{display:inline-flex;align-items:center;gap:7px;min-height:36px;cursor:pointer;font-size:var(--step--1);position:relative}.layer input{position:absolute;opacity:0;width:18px;height:18px;margin:0}.layer .box{width:18px;height:18px;border:var(--stroke) solid var(--ink);border-radius:2px 4px 3px;background:var(--paper);flex:none}.layer input:checked+.box{background:var(--paper) center / 16px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.5 8.6c1.4.9 2.4 2.2 3.3 3.8C7.6 8 10 4.6 13.8 2' fill='none' stroke='%2326283a' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E")}.layer input:focus-visible+.box{outline:2px dashed var(--ink);outline-offset:3px}.events-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--s-3)}.ev-chip{display:inline-flex;align-items:baseline;gap:8px;min-height:34px;padding:3px 10px 3px 8px;border-left:6px solid var(--c);font-size:var(--step--1)}.ev-chip .ev-name{font-family:var(--font-hand);font-size:var(--hand-1);font-weight:700;color:var(--c);line-height:1}.ev-chip .ev-next{color:var(--ink-soft);font-size:var(--step--2)}.ev-chip.is-on{background:var(--paper-deep);box-shadow:inset 0 0 0 1px var(--ink)}.timeline{width:100%;user-select:none;-webkit-user-select:none}.timeline svg{display:block;overflow:visible}.timeline svg *{pointer-events:none}.timeline .tl-scrub,.timeline .tl-scrub rect,.timeline .tl-event,.timeline .tl-event rect{pointer-events:auto}.tl-scrub{cursor:ew-resize}.tl-event{cursor:pointer}.tl-event:focus-visible{outline:none}.tl-event:focus-visible rect:last-of-type{stroke-width:3;stroke-dasharray:4 3}.tl-axis text,.tl-unit{font-size:11px;fill:var(--ink-faint)}.tl-label{font-family:var(--font-hand);font-size:clamp(15px,3.6vw,18px);font-weight:700;fill:var(--ink)}.tl-sub{font-size:11px;fill:var(--risk)}.tl-sub-raw{fill:var(--ink-soft)}.keys{margin-top:var(--s-3);font-size:var(--step--2);color:var(--ink-soft)}kbd{font-family:var(--font-ui);font-variation-settings:"MONO" 1;font-size:.95em;border:1px solid var(--ink-faint);border-bottom-width:2px;border-radius:3px;padding:0 4px;background:var(--paper)}@media(max-width:900px){.hero-intro{grid-template-columns:1fr}.hero-lede{font-size:var(--step--1)}.hero-grid{grid-template-columns:1fr}.diorama{aspect-ratio:auto;height:58svh;max-height:none}.notebook{max-height:none}.keys{display:none}}.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;z-index:20;background:var(--paper);padding:6px 10px;border:var(--stroke) solid var(--ink)}.masthead{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:1px solid var(--rule)}.masthead-top,.nav{max-width:1680px;margin:0 auto;padding:0 var(--gutter)}.masthead-top{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 18px;padding-top:var(--s-3)}.wordmark{font-family:var(--font-display);font-variation-settings:"SOFT" 100,"WONK" 1;font-weight:600;font-size:var(--step-2);text-decoration:none}.masthead-note{font-size:var(--hand-1);color:var(--ink-soft)}.nav{display:flex;gap:4px 18px;overflow-x:auto;scrollbar-width:none;padding-bottom:6px;padding-top:2px}.nav a{flex:none;text-decoration:none;font-size:var(--step--1);color:var(--ink-soft);padding:6px 0 4px;border-bottom:2px solid transparent}.nav a:hover{color:var(--ink)}.nav a[aria-current=true]{color:var(--ink);border-bottom-color:var(--ink)}.load-state{padding:var(--s-7) var(--gutter);font-size:var(--hand-2);color:var(--ink-soft)}.footer{max-width:1680px;margin:0 auto;padding:var(--s-6) var(--gutter) var(--s-7);font-size:var(--step--1);color:var(--ink-soft);border-top:1px solid var(--rule)}@media(max-width:600px){.masthead-note{display:none}}.section,#scene{scroll-margin-top:92px}.section{max-width:1680px;margin:0 auto;padding:var(--s-7) var(--gutter) var(--s-5);border-top:1.5px solid var(--ink);position:relative}.section-head{display:grid;grid-template-columns:auto 1fr;gap:0 var(--s-4);align-items:baseline;margin-bottom:var(--s-5);max-width:980px}.section-n{font-size:2.6rem;line-height:1;color:var(--ink-faint);grid-row:span 2}.section-head h2{font-size:var(--step-3)}.section-lede{color:var(--ink-soft);margin-top:var(--s-2);max-width:68ch}.sub-h{font-size:var(--step-1);margin-bottom:var(--s-3)}.note{color:var(--ink-soft);font-size:var(--step--1);margin:var(--s-3) 0;max-width:80ch}.muted{color:var(--ink-faint)}.pending{display:flex;gap:var(--s-3);align-items:baseline;border:1.5px dashed var(--ink-faint);border-radius:var(--radius-sketch);padding:var(--s-2) var(--s-3);margin:var(--s-3) 0;font-size:var(--step--1);color:var(--ink-soft);background:repeating-linear-gradient(-45deg,transparent 0 9px,rgba(38,40,58,.035) 9px 10px)}.pending-tag{flex:none;font-size:var(--hand-1);color:var(--ev-red_light);transform:rotate(-3deg)}.pending strong{font-weight:600;color:var(--ink)}.pending p{min-width:0;overflow-wrap:anywhere}.pending-src{color:var(--ink-soft)}.cast{list-style:none;padding:0;margin:0 0 var(--s-4)}.cast-row{display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr) auto;gap:var(--s-2) var(--s-5);align-items:baseline;padding:var(--s-4) 0;border-bottom:1px dashed var(--rule)}.cast-name h3{font-size:var(--step-2)}.cast-role{font-size:var(--hand-1);color:var(--ink-soft)}.cast-lane{max-width:70ch}.cast-k{font-family:var(--font-hand);font-weight:700;font-size:var(--hand-1);color:var(--ink-faint);margin-right:6px}.cast-links a{margin-right:var(--s-3)}.pipeline{width:100%;margin-bottom:var(--s-5)}.pipeline svg{display:block;overflow:visible}.pd-box{fill:var(--paper);stroke:var(--ink);stroke-width:1.5}.pd-risk{fill:var(--paper-deep);stroke:var(--risk)}.pd-soft{fill:var(--paper-deep);stroke:var(--ink-faint);stroke-dasharray:4 3}.pd-title{font-family:var(--font-display);font-size:15px;fill:var(--ink)}.pd-sub{font-size:11px;fill:var(--ink-soft)}.pd-arrow{fill:none;stroke:var(--ink);stroke-width:1.5}.pd-lane{font-family:var(--font-hand);font-weight:700;font-size:19px;fill:var(--ink-soft)}.pd-lane-b{fill:var(--risk)}.two-col{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--s-6);margin-bottom:var(--s-4)}.two-col>*{min-width:0}.table-scroll{position:relative;overflow-x:auto;max-width:100%}.ledger{border-collapse:collapse;width:100%;font-size:var(--step--1)}.ledger th,.ledger td{text-align:left;vertical-align:top;padding:7px 10px 7px 0;border-bottom:1px solid var(--rule)}.ledger thead th{font-weight:600;color:var(--ink-soft);border-bottom:1.5px solid var(--ink)}.ledger tbody th{font-weight:600;white-space:nowrap}.kind{font-family:var(--font-hand);font-weight:700;font-size:1.1rem;white-space:nowrap}.kind-learned{color:var(--data)}.kind-rules{color:var(--ink)}.kind-statistics,.kind-analytic,.kind-algorithm{color:var(--ink-soft)}.class-grid{list-style:none;padding:0;margin:0;columns:2 180px;column-gap:var(--s-4);font-size:var(--step--1)}.class-grid li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px dashed var(--rule);break-inside:avoid;color:var(--ink-faint)}.class-grid li.has{color:var(--ink)}.class-grid li .num{font-size:var(--step--2)}.stats{display:flex;flex-wrap:wrap;gap:var(--s-4) var(--s-6);margin-bottom:var(--s-5)}.stat{display:flex;flex-direction:column;min-width:120px}.stat-value{font-size:var(--step-2);font-weight:600;font-variation-settings:"CASL" .3;line-height:1.15}.stat-label{font-size:var(--step--1);color:var(--ink-soft)}.stat-note{font-size:var(--step--2);color:var(--ink-faint)}.fig-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:var(--s-6) var(--s-6)}.fig{margin:0;min-width:0;padding-top:var(--s-3);border-top:1px solid var(--rule)}.fig-wide{grid-column:1 / -1}.fig h3{font-size:var(--step-1)}.finding{color:var(--ink-soft);font-size:var(--step--1);margin:4px 0 var(--s-3);max-width:70ch}.chart{width:100%}.chart svg{display:block;overflow:visible}.chart svg:focus-visible{outline:2px dashed var(--ink)}.grid{stroke:var(--rule);stroke-width:1}.tick{font-size:11px;fill:var(--ink-faint)}.crosshair line{stroke:var(--ink-soft);stroke-width:1}.readout{font-size:12px;font-weight:600;fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:4px}.multiples{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:var(--s-3) var(--s-5)}.multiple-h{font-size:var(--step--1);font-weight:600}.barlist{list-style:none;margin:0;padding:0;font-size:var(--step--1)}.barlist li{display:grid;grid-template-columns:90px minmax(0,1fr) 48px;gap:10px;align-items:center;padding:3px 0}.bl-track{height:10px}.bl-bar{display:block;height:100%;background:var(--data);opacity:.8;border-radius:0 4px 4px 0;min-width:2px}.bl-value{text-align:right}.minimap{margin:0}.minimap svg{display:block;width:100%;height:auto;border:1px solid var(--ink-faint);border-radius:var(--radius-sketch)}.minimap figcaption{font-size:var(--step--2);color:var(--ink-soft);margin-top:4px}.ramp-legend{display:inline-flex;align-items:center;gap:6px}.ramp{width:90px;height:8px;border-radius:2px;background:linear-gradient(90deg,#2a6fb014,#2a6fb0e6)}.table-view{margin-top:var(--s-2);font-size:var(--step--2)}.table-view summary{cursor:pointer;color:var(--ink-soft);width:fit-content}.table-view .table-scroll{max-height:260px;overflow:auto;margin-top:4px}.table-view table{border-collapse:collapse}.table-view th,.table-view td{padding:2px 10px 2px 0;text-align:right;border-bottom:1px solid var(--rule)}.num-table td{text-align:right}.vr-head{display:flex;flex-wrap:wrap;gap:4px var(--s-4);align-items:baseline;margin-bottom:var(--s-4)}.vr-head h3{font-size:var(--step-2)}.ev-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px}.events-ledger td:last-child{text-align:right}.ink-btn{appearance:none;background:var(--paper);border:var(--stroke) solid var(--ink);border-radius:var(--radius-sketch);padding:4px 12px;min-height:34px;cursor:pointer;font-size:var(--step--1);white-space:nowrap}.ink-btn:hover:not(:disabled){background:var(--paper-deep)}.ink-btn:disabled{opacity:.45;cursor:not-allowed}.demo{display:grid;gap:var(--s-3);max-width:560px;margin-bottom:var(--s-4)}.demo-status{display:flex;align-items:center;gap:8px;font-size:var(--step--1);color:var(--ink-soft)}.demo-status .dot{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--ink-soft)}.demo-status.is-on .dot{background:var(--sig-green);border-color:var(--sig-green)}.drop{display:grid;place-items:center;gap:4px;min-height:150px;border:2px dashed var(--ink-soft);border-radius:10px 16px 12px 14px/14px 10px 16px 12px;padding:var(--s-4);text-align:center;cursor:pointer;position:relative}.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.drop input:disabled{cursor:not-allowed}.drop:focus-within{outline:2px dashed var(--ink);outline-offset:3px}.drop-h{font-size:var(--hand-2)}.demo-error{color:var(--ev-red_light)}.report-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:var(--s-5)}.links{list-style:none;margin:0;padding:0}.links li{display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr);gap:var(--s-2) var(--s-5);align-items:baseline;padding:var(--s-3) 0;border-bottom:1px dashed var(--rule);overflow-wrap:anywhere}.links .pending{margin:0}.links-k{font-weight:600}@media(max-width:900px){.two-col,.cast-row,.links li{grid-template-columns:1fr}.section-n{font-size:2rem}}.demo-playback{position:relative;margin-block:var(--s-3)}.demo-playback video{display:block;width:100%;height:auto}.demo-playback svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.demo-playback rect{fill:none;stroke:#fff;stroke-width:.2;filter:drop-shadow(0 1px 1px #000)}.demo-playback text{fill:#fff;stroke:#222;stroke-width:.08;paint-order:stroke;font-size:1.5px}.demo-seek{display:grid;gap:.5rem}.demo-seek input{width:100%}.demo-result{margin-block:var(--s-5)}
