:root{color-scheme:dark;--bg:#171410;--panel:#211c16;--ink:#f3ebdc;--muted:#b5a58f;--line:#493b2b;--accent:#ffbe55;font-family:"IBM Plex Sans",Arial,Helvetica,sans-serif;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button,a,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}a{color:inherit;text-decoration:none}.masthead{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line)}.wordmark{font-weight:800;font-size:25px;letter-spacing:-2px}.wordmark span,h1 span{color:var(--accent)}.nav-label,.version,.eyebrow,.file,.sidebar-note,.memory-label,.cell,.legend,.metrics,.console,footer{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace}.nav-label,.version{font-size:10px;letter-spacing:1px;color:var(--muted)}.workspace{display:grid;grid-template-columns:300px minmax(0,1fr);max-width:1440px;margin:auto;min-height:calc(100vh - 130px)}.sidebar{padding:38px 28px;border-right:1px solid var(--line);background:linear-gradient(160deg,#302417,var(--bg) 60%)}.eyebrow{font-size:10px;letter-spacing:1px;color:var(--accent);line-height:1.8}h1{font-size:42px;letter-spacing:-1.2px;line-height:1.1;font-weight:500;margin:25px 0} .sidebar>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted)}.file{font-size:12px;padding:17px 12px;background:#ffbe5512;border-left:2px solid var(--accent);margin:35px -10px 18px}.file span{color:var(--accent);margin-right:12px}.sidebar .sidebar-note{font-size:11px!important}details{border-top:1px solid var(--line);margin-top:32px;padding-top:20px;font-size:12px;line-height:1.8;color:var(--muted)}summary{cursor:pointer;color:var(--ink)}.bench{padding:32px 40px;min-width:0}.bench-title{display:flex;align-items:center;justify-content:space-between;gap:16px}h2{font-size:34px;letter-spacing:-.7px;font-weight:500;margin:8px 0}.instructions{font-size:14px;line-height:1.6;color:var(--muted);margin:15px 0 24px}.controls{display:flex;align-items:center;gap:12px;padding:15px;background:var(--panel);border:1px solid var(--line)}.controls label{font-size:12px;color:var(--muted)}select{background:var(--bg);color:var(--ink);padding:11px;border:1px solid #796044;border-radius:0}.primary{background:var(--accent);color:#24190b;border:1px solid var(--accent);padding:12px 18px;font-size:12px;font-weight:700;margin-left:auto}.primary:hover{background:#ffd28a}.quiet{background:transparent;color:var(--ink);border:1px solid #796044;padding:10px 13px;font-size:11px;white-space:nowrap}.quiet:hover{background:#ffbe5515}.memory-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin:24px 0 10px}.memory{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}.cell{aspect-ratio:1.4;border:1px dashed #71593d;background:#231d16;color:#ad9270;font-size:12px;min-width:0}.cell[aria-disabled=true]{cursor:default}.occupied{border:1px solid transparent;color:#21190f}.color-0{background:#a8b993}.color-1{background:#ffbe55}.color-2{background:#94b5c7}.color-3{background:#b9abd2}.occupied:hover{filter:brightness(1.15);border:1px solid white}.legend{display:flex;gap:20px;font-size:10px;color:var(--muted);margin:14px 0 25px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line);padding:20px 0;gap:8px}.metrics span{display:block;font-size:23px}.metrics small{display:block;font-size:9px;color:var(--muted);margin-top:9px;letter-spacing:.5px}.challenge{display:flex;align-items:center;gap:20px;justify-content:space-between;margin:24px 0}.challenge strong{font-size:13px;font-weight:500;line-height:1.6}.challenge p{font-size:12px;color:var(--muted);line-height:1.6;margin:6px 0}.console{padding:17px;background:#100d09;border:1px solid var(--line);font-size:11px;line-height:1.8;min-height:100px}.console-label{color:var(--muted);font-size:9px;letter-spacing:1px}.console p{color:var(--accent);margin:8px 0 0}.console p.error{color:#ffa184}footer{display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);padding:20px 32px;font-size:9px;color:var(--muted)}
@media(min-width:1200px){.bench{padding:38px 60px}.cell{aspect-ratio:1.8}}
@media(max-width:800px){.workspace{grid-template-columns:1fr}.sidebar{padding:20px 24px;border-right:0;border-bottom:1px solid var(--line)}h1{font-size:28px;margin:12px 0}h1 br{display:none}.sidebar>p:not(.eyebrow){margin:8px 0}.file,.sidebar-note{display:none}details{margin-top:15px;padding-top:12px}.bench{padding:24px}.version{display:none}.masthead{padding:0 24px;height:64px}.nav-label{font-size:9px}.challenge{align-items:start;flex-direction:column;gap:8px}.cell{aspect-ratio:1}.controls{gap:8px;padding:10px}.controls label{display:none}.primary{padding:12px}.metrics span{font-size:20px}h2{font-size:30px}footer{padding:20px 24px;line-height:1.5}}

/* Shared project navigation and case-study shell. */
[hidden]{display:none!important}
#project-nav{margin:28px -10px 20px;display:grid;gap:4px}
#project-nav .file{display:block;margin:0;background:transparent;border-left:2px solid transparent;font-size:11px;line-height:1.6;padding:12px}
#project-nav .file:hover{background:#ffbe5509}
#project-nav .file[aria-current=page]{background:#ffbe5512;border-left-color:var(--accent)}
.project-status,.project-tags,.project-source{font-family:"IBM Plex Mono",monospace;font-size:10px}
.project-status{color:var(--accent);border:1px solid var(--line);padding:8px;white-space:nowrap}
.project-summary{font-size:23px;line-height:1.4;max-width:620px;margin:28px 0 20px}
.project-tags{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted)}
.project-tags span{border:1px solid var(--line);padding:7px 10px}
.case-section{margin:30px 0}.case-section h3,.demo-slot h3{font-size:18px;font-weight:500;margin:0 0 12px}
.case-section p,.case-section li,.demo-slot>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted);max-width:680px}
.case-section ul{padding-left:20px}.case-section li{margin:8px 0}
.demo-slot{padding:24px;border:1px dashed #796044;background:var(--panel);margin-top:28px}
.project-source{color:var(--muted);line-height:1.8;border-top:1px solid var(--line);padding-top:20px}
@media(max-width:800px){#project-nav{display:flex;overflow-x:auto;margin:20px -4px 0;padding:4px;gap:8px}#project-nav .file{white-space:nowrap;border:1px solid var(--line);flex-shrink:0}#project-nav .file[aria-current=page]{border:1px solid var(--accent)}.project-status{white-space:normal}.project-summary{font-size:21px}.size-label{display:block!important;position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}}

.semaphore-demo{margin:28px 0;border:1px solid var(--line);padding:22px;background:var(--panel)}
.sema-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.sema-heading h3{font-size:23px;font-weight:500;margin:8px 0}.sema-heading .eyebrow{margin:0}
.sema-intro,.sema-caption{font-size:13px;line-height:1.7;color:var(--muted)}
.sema-instruments{display:grid;grid-template-columns:1fr 1fr 1fr;border:1px solid var(--line);margin:22px 0 0}
.sema-instruments>div{padding:16px;min-width:0}.sema-instruments>div+div{border-left:1px solid var(--line)}
.sema-instruments small,.sema-thread span,.sema-waiters,.sema-actions>span,.sema-trace,.sema-reference{font-family:"IBM Plex Mono",monospace;font-size:10px}
.sema-instruments small{display:block;color:var(--muted);font-size:9px;line-height:1.6}.sema-value strong{font:40px "IBM Plex Mono",monospace;color:var(--accent)}
.sema-thread span{display:block;margin-top:17px;line-height:1.6}.sema-thread .is-blocked{color:#ffa184}
.sema-waiters{padding:14px 0;color:var(--muted);border-bottom:1px solid var(--line)}.sema-waiters span{color:var(--ink);margin-left:20px}
.sema-actions{display:flex;align-items:center;gap:16px;margin:20px 0}.sema-actions .primary{margin-left:0;white-space:nowrap}.sema-actions>span{color:var(--muted);line-height:1.6}.sema-actions [aria-disabled=true]{opacity:.6;cursor:default}
.sema-trace{margin-top:18px;padding-top:14px}.sema-trace li{line-height:2}.sema-caption{font-size:11px;margin-top:20px}.sema-reference{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
@media(max-width:600px){.semaphore-demo{padding:14px}.sema-instruments>div{padding:10px}.sema-value strong{font-size:32px}.sema-heading h3{font-size:20px}.sema-actions{align-items:flex-start;flex-direction:column;gap:10px}}

/* Permit-gate illustration follows the same semaphore state as the text. */
.permit-scene{margin:22px 0 0;padding:14px 12px 10px;background:#17120c;border:1px solid var(--line);overflow:hidden}
.permit-scene-label{display:flex;justify-content:space-between;gap:10px;font:9px "IBM Plex Mono",monospace;letter-spacing:1px;color:var(--muted)}
#gate-label{color:var(--accent)}.permit-scene svg{display:block;width:100%;height:auto;color:var(--accent);margin-top:8px}
.permit-rail{stroke:#6f5837;stroke-width:1;stroke-dasharray:3 6;fill:none}.resource-zone{fill:#ffbe5508;stroke:#695334;stroke-dasharray:4 4}
.scene-label{font:8px "IBM Plex Mono",monospace;fill:var(--muted);letter-spacing:1px}.gate-boundary{stroke:#ffbe5533;stroke-width:1;stroke-dasharray:2 4}
.lock-shackle{fill:none;stroke:var(--accent);stroke-width:5;stroke-linecap:round;transform-origin:255px 73px;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.is-open .lock-shackle{transform:translateY(-4px) rotate(28deg)}
.lock-body{fill:#322310;stroke:var(--accent);stroke-width:1.5}.lock-keyhole{fill:var(--accent)}.lock-keyhole-line{stroke:var(--accent);stroke-width:3}
.thread-token{transition:transform .7s cubic-bezier(.22,.8,.22,1);transform:translate(50px,62px)}.thread-token circle{stroke-width:1.5}.thread-token text{font:500 11px "IBM Plex Mono",monospace;fill:#21190f}
.token-a circle{fill:var(--accent);stroke:#ffda9b}.token-b circle{fill:#94b5c7;stroke:#bfdae8}.token-blocked circle{fill:#ffa184;stroke:#ffd1bd}.wait-mark{opacity:0;transition:opacity .3s;fill:none;stroke:#ffa184;stroke-width:2}.wait-mark.visible{opacity:1}
.permit-scene-note{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.6}
@media(prefers-reduced-motion:reduce){.thread-token,.lock-shackle,.wait-mark{transition:none}}

.demo-tabs{display:flex;margin-top:26px;border-bottom:1px solid var(--line);gap:4px}.demo-tabs button{padding:13px 16px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--muted);font:11px "IBM Plex Mono",monospace}.demo-tabs button[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent);background:#ffbe5508}#pintos-demos .semaphore-demo{margin-top:0;border-top:0}
.donation-switch{display:flex;align-items:center;flex-wrap:wrap;gap:9px;font-size:13px;cursor:pointer;line-height:1.6;margin:20px 0}.donation-switch input{accent-color:var(--accent);width:17px;height:17px}.donation-switch span{font-size:10px;color:var(--muted)}
.priority-machine{background:#17120c;border:1px solid var(--line);padding:10px 0;overflow:hidden}.priority-machine svg{display:block;width:100%;height:auto}.machine-label{font:9px "IBM Plex Mono",monospace;letter-spacing:.7px;fill:var(--muted)}.cpu-socket{fill:#ffbe5508;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 4}.machine-wire{fill:none;stroke:#796044;stroke-dasharray:3 4}.dependency-wire{fill:none;stroke:#ffa184;stroke-width:2;opacity:0;transition:opacity .3s}.dependency-wire.visible{opacity:1}
.machine-lock path{stroke:var(--accent);fill:none;stroke-width:3;transform-origin:269px 188px;transition:transform .5s}.machine-lock rect{fill:#322310;stroke:var(--accent)}.machine-lock circle{fill:var(--accent)}.lock-free .machine-lock path{transform:rotate(28deg)}
.priority-card{transition:transform .7s cubic-bezier(.22,.8,.22,1),opacity .4s;transform:translate(25px,60px)}.priority-card rect{fill:#282219;stroke:#796044;stroke-width:1}.priority-card text{fill:var(--ink);font-family:"IBM Plex Mono",monospace}.card-name{font-size:12px}.card-priority{font-size:9px}.card-L circle{fill:#94b5c7}.card-M circle{fill:#b9abd2}.card-H circle{fill:var(--accent)}.priority-card.not-arrived{opacity:.35}.priority-card.boosted rect{stroke:var(--accent);stroke-width:2;fill:#3b2b15}.priority-card.boosted .card-priority{fill:var(--accent)}
.donation-path{fill:none;stroke:var(--accent);stroke-width:3;stroke-dasharray:8 90;opacity:0}.donation-label{font:12px "IBM Plex Mono",monospace;fill:var(--accent);opacity:0}.donation-active .donation-path{opacity:1;animation:donation-flow 1.4s ease-out 1 forwards}.donation-active .donation-label{opacity:1}@keyframes donation-flow{from{stroke-dashoffset:180}to{stroke-dashoffset:0;stroke-dasharray:2 5;stroke-width:1}}
.priority-summary{font:10px/1.9 "IBM Plex Mono",monospace;color:var(--muted);margin:12px 0}.priority-controls{display:flex;gap:10px;margin:18px 0}.priority-controls .primary{margin:0}.priority-controls [aria-disabled=true]{opacity:.5;cursor:default}.priority-timeline{margin-top:20px}.priority-timeline ol{display:flex;gap:5px;padding:0;list-style:none;flex-wrap:wrap;min-height:30px}.priority-timeline li{padding:9px 13px;border:1px solid var(--line);font:11px "IBM Plex Mono",monospace}.tile-L{color:#94b5c7;background:#94b5c710}.tile-M{color:#b9abd2;background:#b9abd210}.tile-H{color:var(--accent);background:#ffbe5515}.priority-timeline p{color:var(--muted);font-size:12px;line-height:1.7}
@media(max-width:600px){.demo-tabs button{font-size:10px;padding:13px 9px}.donation-switch span{width:100%;margin-left:26px}.priority-timeline li{padding:8px}}
@media(prefers-reduced-motion:reduce){.priority-card,.machine-lock path,.dependency-wire{transition:none}.donation-active .donation-path{animation:none;stroke-dasharray:2 5}}

/* Project authorship stamps: a small ink-stamp treatment, scoped to original work. */
#project-authorship{margin:24px 0 26px}
.code-stamp-details{--stamp-ink:#bccba1;border:0;margin:0;padding:0;max-width:560px}
.code-stamp-details.stamp-ai-assisted{--stamp-ink:#a9c9db}
.code-stamp{display:inline-flex;align-items:center;gap:13px;padding:10px 13px;color:var(--stamp-ink);border:1px solid currentColor;outline:1px solid currentColor;outline-offset:-5px;transform:rotate(-2deg);background:#bccba106;list-style:none;cursor:pointer;transition:transform .2s,background .2s}
.code-stamp::-webkit-details-marker{display:none}.code-stamp::marker{content:''}
.code-stamp:hover,.code-stamp-details[open] .code-stamp{transform:rotate(0);background:#bccba110}
.code-stamp:focus-visible{outline:3px solid var(--accent);outline-offset:5px}
.stamp-symbol{display:grid;place-items:center;border:1px solid currentColor;border-radius:50%;width:35px;height:35px;font:500 14px "IBM Plex Mono",monospace;flex-shrink:0}
.code-stamp small,.code-stamp strong,.code-stamp span>span{display:block;font-family:"IBM Plex Mono",monospace}
.code-stamp small{font-size:8px;letter-spacing:1.4px;line-height:1.8}
.code-stamp strong{font-size:16px;line-height:1.5;letter-spacing:1px;text-transform:uppercase;font-weight:500}
.code-stamp span>span{font-size:9px;line-height:1.8;letter-spacing:.2px}.stamp-info{align-self:flex-start;font-size:12px;margin-top:2px}
.code-stamp-details>p{font-size:12px;line-height:1.8;color:var(--muted);border-left:1px solid var(--stamp-ink);padding-left:15px;margin:20px 0 0}
@media(prefers-reduced-motion:reduce){.code-stamp{transition:none}}

.message-label{display:block;color:var(--muted);font-size:12px;margin:18px 0 8px}.message-input{display:block;width:100%;background:var(--bg);color:var(--ink);border:1px solid #796044;padding:13px;font:13px "IBM Plex Mono",monospace;border-radius:0}.message-input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.syscall-scene{background:#17120c;border:1px solid var(--line);padding:8px 0;overflow:hidden}.syscall-scene svg{width:100%;height:auto;display:block}.user-region{fill:#94b5c708;stroke:#94b5c740}.kernel-region{fill:#ffbe5507;stroke:#796044}.syscall-boundary{stroke:#796044;stroke-width:1.5;stroke-dasharray:4 4;transition:stroke .4s}.syscall-in-kernel .syscall-boundary{stroke:var(--accent);filter:drop-shadow(0 0 3px #ffbe5570)}.syscall-boundary-label{font:8px "IBM Plex Mono",monospace;fill:var(--muted);stroke:#17120c;stroke-width:5;paint-order:stroke}.syscall-route{fill:none;stroke:#796044;stroke-width:1;stroke-dasharray:3 5}.syscall-node rect{fill:#211c16;stroke:#796044}.syscall-node text{font:9px "IBM Plex Mono",monospace;fill:var(--ink)}.syscall-packet{transition:transform .7s cubic-bezier(.22,.8,.22,1)}.syscall-packet rect{fill:var(--accent);stroke:#ffdda4}.syscall-packet path{fill:none;stroke:#21190f;stroke-width:1.5}.syscall-rejected .syscall-packet rect{fill:#ffa184;stroke:#ffa184}.syscall-rejected #validation-node rect{stroke:#ffa184}.syscall-rejected #user-explanation{color:#ffa184}
.syscall-arguments{font:10px/1.8 "IBM Plex Mono",monospace;color:var(--muted);margin:12px 0;overflow-wrap:anywhere}.user-state{display:grid;grid-template-columns:1fr 1fr;gap:16px;border-block:1px solid var(--line);padding:18px 0;margin:20px 0}.user-state dt{font:9px "IBM Plex Mono",monospace;color:var(--muted)}.user-state dd{font:11px/1.7 "IBM Plex Mono",monospace;margin:8px 0 0}.user-state>div:last-child{grid-column:1/-1}#user-kernel{color:#bccba1}.user-output{background:#100d09;border:1px solid var(--line);padding:16px;min-height:95px}.user-output pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.8 "IBM Plex Mono",monospace;color:var(--ink);margin:10px 0 0}.user-output pre:empty{display:none}.output-placeholder{display:block;font-size:12px;color:var(--muted);margin-top:12px}.demo-tabs{overflow-x:auto}.demo-tabs button{white-space:nowrap}
@media(prefers-reduced-motion:reduce){.syscall-packet,.syscall-boundary{transition:none}}

.vm-pages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}.vm-page{background:var(--bg);border:1px solid #796044;color:var(--ink);padding:14px 8px;text-align:left;transition:background .3s,border-color .3s}.vm-page strong{font:13px "IBM Plex Mono",monospace;display:block}.vm-page span{display:block;font:9px/1.7 "IBM Plex Mono",monospace;color:var(--muted);margin-top:8px}.vm-page:not([aria-disabled=true]):hover,.vm-page-selected{background:#ffbe5512;border-color:var(--accent)}.vm-page[aria-disabled=true]{cursor:default}.vm-page-selected strong{color:var(--accent)}
.vm-machine{padding:18px;background:#17120c;border:1px solid var(--line)}.vm-machine-heading{display:flex;justify-content:space-between;gap:10px;font:9px/1.6 "IBM Plex Mono",monospace;color:var(--muted);margin-bottom:16px}#vm-hand{color:var(--accent);white-space:nowrap}.vm-frames{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vm-frame{padding:14px;border:1px solid #55452f;position:relative;transition:border-color .4s,background .4s}.vm-frame.clock-current{border-color:var(--accent);box-shadow:inset 0 0 0 2px #ffbe5512}.vm-frame-label{display:flex;justify-content:space-between;gap:6px;font:8px "IBM Plex Mono",monospace;color:var(--muted)}.clock-pointer{color:var(--accent);opacity:0;transition:opacity .3s}.clock-current .clock-pointer{opacity:1}.vm-frame strong{display:block;color:var(--muted);font:22px "IBM Plex Mono",monospace;margin:20px 0 14px}.frame-filled strong{color:var(--ink)}.vm-frame p{font:10px/1.7 "IBM Plex Mono",monospace;color:var(--muted);margin-bottom:0}.vm-bits{display:flex;gap:8px;font:10px "IBM Plex Mono",monospace}.vm-bits span{padding:5px 9px;border:1px solid var(--line);color:var(--muted);transition:color .3s,background .3s}.vm-bits .bit-on{color:#94b5c7;background:#94b5c712;border-color:#94b5c760}.vm-bits .bit-dirty{color:var(--accent);background:#ffbe5512;border-color:#ffbe5560}
.vm-storage{display:grid;grid-template-columns:1fr 1fr;gap:14px}.vm-storage>div{border:1px dashed #695334;padding:13px;min-width:0}.vm-storage small{font:8px/1.7 "IBM Plex Mono",monospace;color:var(--muted)}.vm-storage p{font:11px/1.8 "IBM Plex Mono",monospace;color:var(--ink);margin:10px 0 0;overflow-wrap:anywhere}.vm-storage p span{display:block;font-size:9px;color:var(--muted)}.vm-transfer{position:relative;overflow:hidden;padding:17px 4px;text-align:center;font:9px/1.7 "IBM Plex Mono",monospace;color:var(--muted)}.vm-transfer span{position:relative;z-index:1;background:#17120c;padding:3px 5px}.vm-transfer::before{content:'';position:absolute;left:50%;top:0;height:100%;border-left:1px dashed #796044}.transfer-active{color:var(--accent)}.transfer-active::after{content:'';position:absolute;left:calc(50% - 5px);width:10px;height:10px;border:1px solid #ffe1a8;background:var(--accent);animation:vm-in .85s ease-out both}.transfer-out::after{animation-name:vm-out}.vm-loading{animation:vm-frame-in .85s ease-out}.vm-legend{font:9px/1.9 "IBM Plex Mono",monospace;color:var(--muted);margin:12px 0}.priority-controls [aria-disabled=true]{opacity:.5;cursor:default}
@keyframes vm-in{from{top:90%;opacity:0}30%{opacity:1}to{top:0;opacity:0}}@keyframes vm-out{from{top:0;opacity:0}30%{opacity:1}to{top:90%;opacity:0}}@keyframes vm-frame-in{from{background:#ffbe5530}to{background:transparent}}
@media(max-width:600px){.vm-pages{grid-template-columns:repeat(2,1fr)}.vm-machine{padding:12px}.vm-frame{padding:10px}.vm-frame-label{flex-wrap:wrap}.vm-frame strong{font-size:20px}.vm-storage{gap:8px}.vm-storage>div{padding:9px}.vm-machine-heading{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.vm-page,.vm-frame,.clock-pointer,.vm-bits span{transition:none}.vm-transfer::after,.vm-loading{animation:none}}
/* Keep every demo name visible as the PintOS collection grows. */
.demo-tabs{flex-wrap:wrap;overflow:visible}

.fs-layout{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:20px 0;font-size:12px}.fs-layout>span{font-size:10px;color:var(--muted)}.fs-layout select{font-size:12px;max-width:100%}.fs-file{border:1px solid var(--line);background:#17120c;padding:16px}.fs-file p{font-size:12px;color:var(--muted);line-height:1.7}.fs-blocks{display:flex;gap:7px;flex-wrap:wrap}.fs-logical{font:12px "IBM Plex Mono",monospace;min-width:35px;min-height:35px;border:1px solid #796044;background:transparent;color:var(--ink)}.fs-logical:hover,.fs-logical[aria-pressed=true]{background:#ffbe5518;border-color:var(--accent);color:var(--accent)}
.fs-lookup{padding:18px 0}.fs-lookup svg{display:block;width:100%;height:auto;margin:6px 0}.fs-lookup>p{font:9px/1.8 "IBM Plex Mono",monospace;color:var(--muted);margin:0;overflow-wrap:anywhere}.fs-path-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:4 4;animation:fs-wire .75s ease-out both}.fs-path-node{animation:fs-node .45s ease-out both}.fs-path-node rect{fill:#202a2d;stroke:#94b5c7}.fs-path-node text{font:9px "IBM Plex Mono",monospace;fill:#c3d8e3}.fs-path-data rect{fill:#322310;stroke:var(--accent)}.fs-path-data text{fill:var(--accent)}
.fs-disk{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:5px}.fs-sector{aspect-ratio:1.1;font:9px "IBM Plex Mono",monospace;min-width:0;padding:0;border:1px solid #55452f;background:transparent;color:var(--muted);transition:background .3s,border-color .3s}.fs-sector[aria-disabled=true]{cursor:default}.fs-data{background:#ffbe5520;border-color:#aa8040;color:var(--accent)}.fs-index{background:#94b5c720;border-color:#698ca0;color:#bad5e4}.fs-inode{border-style:double;border-width:3px;color:#b9abd2}.fs-other{background:repeating-linear-gradient(135deg,transparent,transparent 4px,#79604430 4px,#79604430 5px);color:#796044}.fs-sector-traced{outline:2px solid var(--accent);outline-offset:-3px}.fs-data:hover{background:#ffbe5540}.fs-legend{display:flex;flex-wrap:wrap;gap:8px 12px;font:8px/1.7 "IBM Plex Mono",monospace;color:var(--muted);margin-top:16px}.fs-legend span:nth-child(1){color:var(--accent)}.fs-legend span:nth-child(2){color:#94b5c7}.fs-legend span:nth-child(3){color:#b9abd2}.fs-console{margin-top:20px}#fs-message.fs-error{color:#ffa184}#fs-append[aria-disabled=true]{opacity:.6;cursor:default}
@keyframes fs-wire{from{stroke-dashoffset:32;opacity:0}to{stroke-dashoffset:0;opacity:1}}@keyframes fs-node{from{opacity:.25}to{opacity:1}}
@media(max-width:600px){.fs-file{padding:12px}.fs-layout>span{width:100%}.fs-disk{gap:4px}.fs-sector{font-size:8px;aspect-ratio:1}.fs-legend{font-size:8px}.fs-lookup>p{font-size:10px}}
@media(prefers-reduced-motion:reduce){.fs-sector{transition:none}.fs-path-line,.fs-path-node{animation:none}}

.alley-lesson{margin-top:28px;background:linear-gradient(135deg,#282016,var(--panel) 55%)}.alley-statements{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.alley-statement{border:1px solid var(--line);padding:18px;background:#17120c;transition:border-color .3s}.alley-number{font:10px "IBM Plex Mono",monospace;color:var(--muted)}.alley-statement p{font-size:18px;line-height:1.6;margin:14px 0 20px}.alley-statement strong{font-weight:500;color:var(--accent)}.alley-verdict{display:block;font:9px/1.8 "IBM Plex Mono",monospace;color:var(--muted)}.statement-true{border-color:#879974}.statement-true .alley-verdict{color:#bccba1}.statement-false{border-color:#9c735c}.statement-false .alley-verdict{color:#e1ae90}.alley-predict{display:flex;gap:10px;flex-wrap:wrap}.alley-predict [aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:#ffbe5512}.alley-feedback{font-size:13px;line-height:1.8;color:var(--muted);margin:18px 0}.alley-reveal{margin:0}.alley-step{margin:26px 0 14px}.alley-network{border:1px solid var(--line);background:#17120c;padding:12px 0}.alley-network svg{width:100%;height:auto;display:block}.alley-edge{fill:none;stroke:#a18d69;stroke-width:1.8;stroke-dasharray:5 4;opacity:0;transition:opacity .35s,stroke .35s,stroke-width .35s}.alley-edge.connected{opacity:.75}.alley-edge.edge-focused.connected{opacity:1;stroke:var(--accent);stroke-width:3;animation:alley-flow 1s ease-out}.alley-edge.edge-muted.connected{opacity:.12}.alley-student-node circle{fill:#322310;stroke:#796044;transition:stroke .3s}.alley-student-node text{fill:var(--ink);font:12px "IBM Plex Sans",sans-serif}.alley-student-node.node-focused circle{stroke:var(--accent);stroke-width:2}.alley-resource-node rect{fill:#202a2d;stroke:#698ca0;transition:stroke .3s}.alley-resource-node text{fill:#c3d8e3;font:11px "IBM Plex Sans",sans-serif}.alley-resource-node.common-resource rect{stroke:var(--accent);stroke-width:2}.alley-guide{font-size:12px;color:var(--muted);line-height:1.8}.alley-matrix-wrap{overflow-x:auto}.alley-matrix{width:100%;border-collapse:collapse;table-layout:fixed}.alley-matrix caption{text-align:left;font-size:12px;color:var(--ink);margin:12px 0}.alley-matrix th,.alley-matrix td{border-bottom:1px solid var(--line);padding:9px 3px;text-align:center}.alley-matrix thead th{font:9px/1.7 "IBM Plex Mono",monospace;color:var(--muted);font-weight:400}.alley-matrix th:first-child{width:60px;text-align:left}.alley-learner{background:transparent;color:var(--ink);border:0;padding:9px 0;font-size:12px;cursor:pointer}.alley-connection{width:40px;height:40px;background:#17120c;color:var(--muted);border:1px solid #796044;font-size:17px}.alley-connection[aria-pressed=true]{background:#ffbe5518;color:var(--accent);border-color:#aa8040}.alley-presets{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.alley-explanation{padding:18px;border-left:2px solid var(--accent);background:#ffbe5508}.alley-explanation p:not(.eyebrow){font-size:14px;line-height:1.9;margin:10px 0 0;color:var(--ink)}.alley-notation code{color:var(--accent);font-size:12px}.alley-notation p{font-size:12px;line-height:1.9}.alley-story{margin:30px 0;border-block:1px solid var(--line);padding:24px 0}.alley-story h3{font-size:21px;font-weight:500;margin:0 0 22px}.alley-story-grid{display:grid;grid-template-columns:1fr;gap:12px}.alley-story-grid article>p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.8;margin:8px 0}.alley-source-link{display:inline-block;margin-top:20px;color:var(--accent);font-size:13px;text-decoration:underline;text-underline-offset:4px}
@keyframes alley-flow{from{stroke-dashoffset:32}to{stroke-dashoffset:0}}@media(max-width:600px){.alley-statements{gap:8px}.alley-statement{padding:12px}.alley-statement p{font-size:16px}.alley-matrix thead th{font-size:8px}.alley-connection{width:36px;height:36px}.alley-predict .quiet{flex:1;white-space:normal;line-height:1.7}.alley-lesson .sema-heading{align-items:flex-start}}@media(prefers-reduced-motion:reduce){.alley-statement,.alley-edge,.alley-student-node circle,.alley-resource-node rect{transition:none}.alley-edge.edge-focused.connected{animation:none}}

/* Illustrated lesson: notebook covers, student portraits, and moving connection sparks. */
.alley-sketch{border:1px solid var(--line);margin:22px 0 0;background:#17120c;overflow:hidden}.alley-sketch svg{display:block;width:100%;height:auto}.alley-scribble{fill:none;stroke:#796044;stroke-width:1.3;stroke-dasharray:4 5;animation:sketch-draw 1.6s ease-out both}.sketch-book{transform-box:fill-box;transform-origin:center;animation:book-arrive .8s cubic-bezier(.22,.8,.22,1) both}.sketch-book rect{stroke-width:1.5}.sketch-book path{fill:none;stroke-width:1.5;stroke-linecap:round}.sketch-book text{font:12px "IBM Plex Mono",monospace}.sketch-book-one{animation-delay:.05s;rotate:-12deg}.sketch-book-one rect{fill:#382916;stroke:#ffbe55}.sketch-book-one path{stroke:#ffbe55}.sketch-book-one text{fill:#ffbe55}.sketch-book-two{animation-delay:.15s;rotate:4deg}.sketch-book-two rect{fill:#243039;stroke:#94b5c7}.sketch-book-two path{stroke:#94b5c7}.sketch-book-two text{fill:#94b5c7}.sketch-book-three{animation-delay:.25s;rotate:13deg}.sketch-book-three rect{fill:#2c2837;stroke:#b9abd2}.sketch-book-three path{stroke:#b9abd2}.sketch-book-three text{fill:#b9abd2}.sketch-aha{transform-origin:501px 45px;animation:aha-pop .7s .45s both}.sketch-aha path{fill:#ffbe55;stroke:#ffe0a4}.sketch-aha text{font:italic 23px Georgia,serif;fill:#24190b}.sketch-star{fill:none;stroke:var(--accent);stroke-width:1.5;animation:star-bloom 1.1s .3s both;transform-box:fill-box;transform-origin:center}.star-two{stroke:#94b5c7;animation-delay:.6s}.sketch-caption{font:8px "IBM Plex Mono",monospace;letter-spacing:1.3px;fill:var(--muted)}
.alley-network{background:radial-gradient(ellipse at 50% 50%,#ffbe5508,transparent 70%),#17120c;padding:16px 0}.alley-student-node .avatar-halo{fill:#211b13;stroke:#6f5837;stroke-width:1}.alley-student-node .avatar-face{fill:#cba879;stroke:none}.alley-student-node .avatar-shirt{fill:#94b5c7;stroke:#b3d0df;stroke-width:1}.alley-student-node .avatar-hair{fill:#4d3929;stroke:none}.alley-student-node .avatar-expression{fill:none;stroke:#35261c;stroke-width:1.5;stroke-linecap:round}.avatar-1 .avatar-shirt{fill:#b9abd2;stroke:#d0c3e6}.avatar-1 .avatar-face{fill:#b78060}.avatar-2 .avatar-shirt{fill:#bccba1;stroke:#d4dfbd}.avatar-2 .avatar-face{fill:#e6cba3}.alley-student-node .avatar-check-bg{fill:#211b13;stroke:#796044;opacity:0;transition:opacity .3s}.alley-student-node .avatar-check{fill:none;stroke:#bccba1;stroke-width:2;opacity:0;transition:opacity .3s}.alley-student-node.has-help .avatar-check-bg,.alley-student-node.has-help .avatar-check{opacity:1}.alley-student-node.node-focused .avatar-halo{stroke:var(--accent);filter:drop-shadow(0 0 4px #ffbe5530)}.alley-resource-node .resource-card-bg{fill:#202a2d;stroke:#698ca0}.alley-resource-node.resource-1 .resource-card-bg{fill:#292637;stroke:#84789f}.alley-resource-node.resource-2 .resource-card-bg{fill:#252c20;stroke:#829267}.alley-resource-node text{font-size:11px}.resource-icon path{fill:none;stroke:#b6cbd6;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.resource-1 .resource-icon path{stroke:#c7bbdc}.resource-2 .resource-icon path{stroke:#c4d1ac}.alley-resource-node.common-resource .resource-card-bg{stroke:var(--accent);stroke-width:2;filter:drop-shadow(0 0 4px #ffbe5520)}.alley-traveller{filter:drop-shadow(0 0 3px #ffbe55)}.alley-replay{display:block;margin:12px 0 0 auto}.alley-edge.connected{stroke-dasharray:none;opacity:.55}.alley-edge.edge-focused.connected{stroke-dasharray:5 4}.alley-exploration-open{animation:none}
@keyframes book-arrive{from{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes sketch-draw{from{stroke-dashoffset:100;opacity:0}to{stroke-dashoffset:0;opacity:1}}@keyframes aha-pop{from{opacity:0;transform:scale(.65) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes star-bloom{from{opacity:0;transform:scale(.3) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@media(prefers-reduced-motion:reduce){.alley-scribble,.sketch-book,.sketch-aha,.sketch-star{animation:none}.alley-student-node .avatar-check-bg,.alley-student-node .avatar-check{transition:none}}

.alley-formula{font:clamp(15px,2vw,22px)/1.6 "IBM Plex Mono",monospace;color:var(--ink);margin:18px 0 8px;white-space:nowrap;letter-spacing:-.5px}.alley-formula>span:first-child{color:var(--accent)}.alley-formula>span:nth-child(2){color:#94b5c7}.alley-statement .alley-number{font-size:8px;line-height:1.8;display:block}.alley-statement p{margin-top:12px}@media(max-width:600px){.alley-statements{grid-template-columns:1fr}.alley-formula{font-size:22px}}

/* Context is presented as a project record, separate from the demonstrations. */
.project-metadata{margin:28px 0 32px;border:1px solid #94b5c740;border-left:3px solid #94b5c7;background:#94b5c707;color:#c0cbd0;font-family:"IBM Plex Mono",ui-monospace,monospace}
.metadata-heading{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid #94b5c730;background:#94b5c708}
.metadata-heading h3{font:500 10px/1.6 "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:1.5px;margin:0;color:#b5cdda}
.metadata-symbol{color:#94b5c7;font-size:12px}.metadata-caption{margin-left:auto;font:8px/1.7 "IBM Plex Mono",monospace;letter-spacing:.7px;color:#a0aeb3}
.metadata-fields{margin:0;padding:4px 16px}.metadata-fields>div{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;padding:15px 0}.metadata-fields>div+div{border-top:1px solid #94b5c718}.metadata-fields dt{font:9px/1.9 "IBM Plex Mono",monospace;color:#94b5c7;text-transform:uppercase;letter-spacing:.6px}.metadata-fields dd{margin:0;font:11px/1.9 "IBM Plex Mono",ui-monospace,monospace;color:#bcc4c6;overflow-wrap:anywhere}
@media(max-width:600px){.metadata-caption{display:none}.metadata-fields>div{grid-template-columns:1fr;gap:6px;padding:13px 0}.metadata-fields dd{font-size:11px}.project-metadata{margin:24px 0}.metadata-heading{padding:12px 14px}.metadata-fields{padding:2px 14px}}

/* Evidence of teaching impact, distinct from project metadata and the lesson. */
.alley-impact{margin:34px 0 38px}.impact-heading h3{font-size:25px;font-weight:500;letter-spacing:-.6px;line-height:1.3;margin:8px 0 12px}.impact-heading>p:last-child{font-size:13px;line-height:1.8;color:var(--muted);margin:0 0 22px}.feedback-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.feedback-card{border:1px solid var(--line);background:#1e1a14;padding:20px;min-width:0}.feedback-featured{grid-column:1/-1;border-top:2px solid var(--accent);background:linear-gradient(125deg,#322616,#1e1a14 80%)}.feedback-theme{font:9px/1.8 "IBM Plex Mono",monospace;letter-spacing:.7px;color:var(--accent);margin:0}.feedback-card blockquote{font:21px/1.55 Georgia,"Times New Roman",serif;letter-spacing:-.2px;margin:17px 0;color:var(--ink)}.feedback-featured blockquote{font-size:28px;line-height:1.5;max-width:660px}.feedback-attribution{font:9px/1.9 "IBM Plex Mono",monospace;color:var(--muted);margin:12px 0 0}.feedback-source{border-top:1px solid var(--line);margin:18px 0 0;padding:12px 0 0;font-size:10px}.feedback-source summary{color:var(--muted)}.feedback-source img{display:block;width:100%;height:auto;margin-top:14px;border:1px solid #796044;background:#fff}.feedback-source a{display:block}.feedback-source a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.instructor-feedback{margin:14px 0 0;padding:18px 20px;border-left:2px solid #94b5c7;background:#94b5c707}.instructor-feedback .feedback-theme{color:#94b5c7}.instructor-feedback blockquote{font:20px/1.6 Georgia,"Times New Roman",serif;margin:10px 0}.impact-followups{font-size:12px;line-height:1.9;color:var(--muted);margin:18px 0 0}.impact-followups>span{color:var(--accent);margin-right:8px}
@media(max-width:600px){.feedback-grid{grid-template-columns:1fr}.feedback-featured{grid-column:auto}.feedback-card{padding:17px}.feedback-featured blockquote{font-size:24px}.feedback-card:not(.feedback-featured) blockquote{font-size:21px}.impact-heading h3{font-size:23px}}

.testability-demo{margin:30px 0}.testability-demo .demo-tabs{margin-top:0}.testability-demo>.semaphore-demo{margin-top:0;border-top:0}.dependency-options{display:flex;flex-wrap:wrap;gap:12px 20px;border:1px solid var(--line);padding:14px;margin:20px 0;color:var(--ink);font-size:12px}.dependency-options legend{font:9px "IBM Plex Mono",monospace;color:var(--muted);padding:0 6px}.dependency-options label{display:flex;align-items:center;gap:7px;cursor:pointer}.dependency-options input{accent-color:var(--accent);width:16px;height:16px}.dependency-options input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.dependency-socket{display:grid;grid-template-columns:1fr 22px 1fr 22px 1.3fr;align-items:center;gap:5px;padding:20px 12px;background:#17120c;border:1px solid var(--line);overflow:hidden}.socket-operation,.socket-interface,.socket-implementation{font:10px/1.7 "IBM Plex Mono",monospace;text-align:center;padding:12px 6px;min-width:0}.socket-operation{border:1px solid #796044}.socket-interface{border:1px dashed var(--accent);color:var(--accent)}.socket-interface small{display:block;color:var(--muted);font-size:7px;letter-spacing:1px;margin-top:5px}.socket-wire{color:#796044;text-align:center}.socket-implementation{position:relative;height:73px;overflow:hidden;border:1px solid #94b5c770;background:#94b5c708}.socket-implementation span{position:absolute;inset:0;display:grid;place-items:center;padding:8px;transition:transform .65s cubic-bezier(.22,.8,.22,1),opacity .4s}.adapter-test{transform:translateX(110%);opacity:0;color:var(--accent)}.socket-test .adapter-normal{transform:translateX(-110%);opacity:0}.socket-test .adapter-test{transform:translateX(0);opacity:1}.socket-test .socket-implementation{border-color:var(--accent);background:#ffbe5508}.socket-connection{grid-column:1/-1;text-align:center;font:7px "IBM Plex Mono",monospace;letter-spacing:1px;color:var(--muted);padding-top:12px}.socket-test .socket-connection{color:var(--accent)}.testability-note{font-size:12px;line-height:1.8;color:var(--muted);margin:18px 0}.testability-run{display:block;margin:18px 0 20px}.executor-tasks{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.executor-tasks article{border:1px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:10px}.executor-tasks strong{font:17px "IBM Plex Mono",monospace;margin:0 0 8px;font-weight:400}.executor-tasks [aria-disabled=true]{opacity:.4;cursor:default}.executor-tasks .quiet{white-space:normal;line-height:1.5}.testability-output{margin:20px 0}.testability-output ol{font:10px/1.9 "IBM Plex Mono",monospace;color:var(--muted);padding-left:20px;margin:15px 0 0}.testability-output ol:empty{display:none}.executor-timing{margin-top:18px;border:1px solid var(--line);background:#17120c;padding:14px 10px}.executor-timing svg{display:block;width:100%;height:auto}.executor-timing text{font:10px "IBM Plex Mono",monospace;fill:var(--muted)}.executor-timing rect{fill:#94b5c7;transform-box:fill-box;transform-origin:left;animation:test-bar .7s ease-out}.executor-timing .check-bar{fill:var(--accent);animation-delay:.2s;animation-fill-mode:both}.sleep-marker{stroke:#b9abd2;stroke-dasharray:3 4;fill:none}.timing-axis{stroke:#796044;fill:none}.filesystem-branches{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.filesystem-branches>div{border:1px solid var(--line);font:12px "IBM Plex Mono",monospace;padding:15px;color:var(--muted);transition:background .3s,border-color .3s}.filesystem-branches small{font:10px/1.7 "IBM Plex Sans",sans-serif;display:block;margin-top:8px}.filesystem-branches .branch-active{border-color:var(--accent);color:var(--accent);background:#ffbe5512;animation:branch-arrive .5s ease-out}.testability-story{border-block:1px solid var(--line);margin-top:28px;padding:24px 0}.testability-story h3{font-size:23px;font-weight:500;margin:10px 0 22px}.testability-story>div{display:grid;grid-template-columns:1fr 1fr;gap:20px}.testability-story h4{font:11px "IBM Plex Mono",monospace;color:var(--accent);font-weight:400;margin:0 0 10px}.testability-story article p{font-size:13px;line-height:1.9;color:var(--muted);margin:0}.testability-metric{display:flex;gap:18px;align-items:center;padding:20px;border:1px solid var(--line);background:#ffbe5506;margin-top:24px}.testability-metric strong{font:36px "IBM Plex Mono",monospace;color:var(--accent);font-weight:400}.testability-metric span{font-size:11px;line-height:1.9;color:var(--muted)}
@keyframes test-bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes branch-arrive{from{background:#ffbe5535}to{background:#ffbe5512}}
@media(max-width:600px){.dependency-socket{grid-template-columns:1fr;padding:16px}.socket-wire{transform:rotate(90deg);height:16px}.socket-connection{grid-column:1}.socket-implementation{height:54px}.executor-tasks{gap:8px}.executor-tasks article{padding:10px}.testability-story>div{grid-template-columns:1fr}.testability-metric{align-items:flex-start;flex-direction:column;gap:10px}.filesystem-branches>div{padding:12px}}
@media(prefers-reduced-motion:reduce){.socket-implementation span,.filesystem-branches>div{transition:none}.executor-timing rect,.filesystem-branches .branch-active{animation:none}}

/* Fictional vehicle screen; clock controls live outside the vehicle UI. */
.vehicle-display{border:1px solid #4a5558;border-radius:18px;background:linear-gradient(150deg,#19252b,#0c1217 65%);padding:20px;color:#e6ecef;overflow:hidden;box-shadow:0 10px 32px #0003;margin:24px 0}.vehicle-topbar{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #91acb325;padding-bottom:16px;font:8px/1.7 "IBM Plex Mono",monospace;letter-spacing:.8px;color:#a3b4bc}.vehicle-main{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:14px;padding:24px 0 16px}.vehicle-art{position:relative;min-width:0}.vehicle-art>svg{display:block;width:100%;height:auto}.car-body{fill:url(#car-body);stroke:#bfccd2;stroke-width:1}.car-glass{fill:#14212d;stroke:#76909c;stroke-width:1}.car-trim{fill:none;stroke:#5f747f;stroke-width:1.5}.car-tyre{fill:#0b1015;stroke:#566b75;stroke-width:2}.car-wheel{fill:#344a55;stroke:#93a7af;stroke-width:2}.car-light{stroke:#e5b968;stroke-width:3;stroke-linecap:round}.car-shadow{fill:#0005}.vehicle-clock-dial{width:62px;position:absolute;top:-16px;left:4px}.vehicle-clock-dial svg{display:block;width:100%;filter:drop-shadow(0 2px 8px #0005)}.vehicle-clock-dial circle{fill:#14212d;stroke:#657e88;stroke-width:1}.vehicle-clock-dial path{fill:none;stroke:#9db9c6;stroke-width:2;stroke-linecap:round}#update-hour-hand,#update-minute-hand{transform-origin:50px 50px;transition:transform .75s ease-in-out}#update-hour-hand{stroke:#ffbe55;stroke-width:3}.vehicle-clock-dial .dial-pin{fill:#ffbe55;stroke:none}.vehicle-kicker{font:8px/1.8 "IBM Plex Mono",monospace;color:#b1c5cf;letter-spacing:.7px;margin:0}.vehicle-copy h4{font-size:26px;font-weight:500;letter-spacing:-.7px;line-height:1.2;margin:10px 0}.vehicle-copy>p:last-child{font-size:12px;line-height:1.7;color:#b1c1ca;margin:10px 0}.vehicle-schedule{border-top:1px solid #91acb325;display:flex;align-items:end;flex-wrap:wrap;gap:12px;padding:18px 0 0}.vehicle-schedule>div{flex:1;min-width:160px}.vehicle-schedule label{display:block;font-size:11px;line-height:1.6;color:#b1c1ca;margin-bottom:8px}.vehicle-schedule input{background:#0c1217;color:#e6ecef;border:1px solid #627985;padding:10px 12px;min-height:43px;font:16px "IBM Plex Sans",sans-serif;width:100%;border-radius:5px;color-scheme:dark}.vehicle-schedule input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.vehicle-schedule .primary{margin:0;min-height:43px;border-radius:5px}.vehicle-schedule>p{flex-basis:100%;font-size:10px;line-height:1.8;color:#b1c1ca;margin:0}#update-error{color:#ffc6a5}.vehicle-confirmation{display:flex;align-items:center;gap:12px;border:1px solid #bccba140;background:#bccba108;border-radius:7px;padding:13px;margin-top:16px}.schedule-check{display:grid;place-items:center;width:25px;height:25px;border:1px solid #bccba170;border-radius:50%;color:#c3d5ac}.vehicle-confirmation strong{font-size:12px;font-weight:500}.vehicle-confirmation p{font-size:10px;line-height:1.7;color:#b1c1ca;margin:5px 0 0}.vehicle-notification{display:flex;gap:12px;border:1px solid #d8ab61;border-radius:8px;background:#302719;padding:15px;margin-top:14px;animation:notification-in .5s ease-out}.vehicle-notification strong{display:block;font-size:16px;font-weight:500;line-height:1.4;margin:5px 0}.vehicle-notification p{font-size:11px;line-height:1.8;color:#dfcfb5;margin:7px 0 0}.notification-bell{flex:0 0 30px;align-self:flex-start;transform-origin:top;animation:bell-alert .65s .1s ease-in-out}.notification-bell svg{width:30px;display:block}.notification-bell path{fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.update-due .vehicle-notification{background:#243129;border-color:#9bb694}.update-due .notification-bell path{stroke:#c3d5ac}.vehicle-concept-label{font:8px/1.8 "IBM Plex Mono",monospace;color:#8297a2;margin:18px 0 0}.schedule-simulation{border:1px solid var(--line);background:#17120c;padding:17px;margin:20px 0}.schedule-simulation .eyebrow{margin-top:0}.schedule-clock{display:flex;gap:15px;align-items:center}.schedule-clock>span:first-child{font:32px "IBM Plex Mono",monospace;color:var(--accent)}.schedule-clock>span:last-child{font-size:10px;line-height:1.8;color:var(--muted)}.schedule-simulation .priority-controls{flex-wrap:wrap}.schedule-simulation>p:last-child{font-size:12px;line-height:1.8;color:var(--muted);margin-bottom:0}.schedule-simulation [aria-disabled=true]{opacity:.5;cursor:default}.schedule-events>ol{list-style:none;padding:0;margin:18px 0}.schedule-event{display:grid;grid-template-columns:52px 1fr;gap:15px;padding:13px 0 13px 14px;border-left:2px solid #796044;position:relative;font-size:11px;line-height:1.8;color:var(--muted)}.schedule-event::before{content:'';position:absolute;width:7px;height:7px;left:-4.5px;top:20px;background:#94b5c7;border-radius:50%}.event-warning::before{background:var(--accent)}.event-due::before{background:#bccba1}.schedule-event-time{font:10px/1.9 "IBM Plex Mono",monospace;color:var(--ink)}#update-events-empty{font-size:12px;color:var(--muted);line-height:1.8}
@keyframes notification-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes bell-alert{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}
@media(max-width:600px){.vehicle-display{padding:16px;border-radius:12px}.vehicle-main{grid-template-columns:1fr}.vehicle-art{max-width:260px;width:100%;margin:8px auto 0}.vehicle-clock-dial{width:55px;top:0}.vehicle-copy h4 br{display:none}.vehicle-copy h4{font-size:24px}.vehicle-topbar{font-size:7px;letter-spacing:0}.vehicle-schedule .primary{width:100%}.schedule-simulation .priority-controls{align-items:stretch;flex-direction:column}.schedule-simulation .primary{margin:0;white-space:normal}.schedule-event{gap:10px}}
@media(prefers-reduced-motion:reduce){#update-hour-hand,#update-minute-hand{transition:none}.vehicle-notification,.notification-bell{animation:none}}
/* Prevent long navigation and native time controls from widening a narrow workbench. */
.sidebar,.testability-demo,.vehicle-display{min-width:0}.vehicle-schedule input{min-width:0}
@media(max-width:800px){.workspace{grid-template-columns:minmax(0,1fr)}}

/* Zephyr: connector configuration and cloud topology. */
#zephyr-demo { margin-top: 28px; min-width: 0; }
.cloud-form { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 22px 0 12px; }
.cloud-form label { font: 11px var(--mono, 'IBM Plex Mono', monospace); color: #c8bea9; }
.cloud-form select { max-width: 100%; min-width: 0; padding: 9px 28px 9px 10px; border: 1px solid #635338; border-radius: 4px; background: #211c14; color: #f1d5a0; font: 12px 'IBM Plex Mono', monospace; }
.cloud-code { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 20px 0; min-width: 0; }
.cloud-code > div { min-width: 0; border: 1px solid #463b29; background: #15130f; border-radius: 6px; padding: 16px; }
.cloud-code pre { margin-bottom: 0; height: 255px; overflow: auto; font: 12px/1.65 'IBM Plex Mono', monospace; color: #e4c78f; tab-size: 2; }
.connector-pipeline { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }
.connector-pipeline span { border-top: 2px solid #443c2e; padding: 12px 4px; color: #aaa08e; font: 10px/1.5 'IBM Plex Mono',monospace; transition: color .3s, border-color .3s; }
.connector-pipeline .pipeline-complete { color: #ffbe55; border-color: #ffbe55; }
.connector-engine { display: flex; align-items: center; gap: 16px; padding: 16px; margin: 12px 0 20px; background: #262015; border: 1px dashed #79613b; border-radius: 6px; }
.connector-engine > span { color: #ffbe55; font: 30px 'IBM Plex Mono',monospace; }
.connector-engine strong { font: 11px 'IBM Plex Mono',monospace; letter-spacing: .08em; color: #ffce7d; }
.connector-engine p { margin: 6px 0 0; font-size: 12px; color: #bcb29f; }
.cloud-node-preview { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
.cloud-preview-tile { padding: 6px 9px; border: 1px solid #58482e; font: 10px 'IBM Plex Mono',monospace; color: #d5c29d; animation: cloud-arrive .35s ease-out; }
.cloud-graph-source { color: #b1a48e; font: 10px/1.6 'IBM Plex Mono',monospace; }
.cloud-layer { display: flex; align-items: center; gap: 7px; }
.cloud-layer input { accent-color: #ffbe55; }
.cloud-graph-wrap { margin-top: 18px; border: 1px solid #4b402d; border-radius: 8px; overflow-x: auto; background: radial-gradient(ellipse at center,#2a2418,#16140f); }
#cloud-graph { width: 100%; min-width: 600px; display: block; }
.cloud-region-bg { fill: #211d14; fill-opacity: .7; stroke: #544731; stroke-dasharray: 4 8; }
.cloud-edge { fill: none; stroke: #86795f; stroke-width: 1.5; opacity: .6; }
.cloud-location { stroke-dasharray: 3 6; stroke: #b4ad96; opacity: .35; }
.cloud-edge-selected { opacity: 1; stroke-width: 2; }
.cloud-edge-affected { stroke: #ffbe55; opacity: 1; stroke-width: 2.5; stroke-dasharray: 7 5; animation: cloud-flow 1.2s linear 3; }
.cloud-node { cursor: pointer; outline: none; }
.cloud-node rect { fill: #29251b; stroke: #6a6048; stroke-width: 1; transition: fill .2s,stroke .2s; }
.cloud-node-type { font: 8px 'IBM Plex Mono',monospace; fill: #b6ab95; }
.cloud-node-label { font: 12px 'IBM Plex Sans',sans-serif; fill: #efdfbf; }
.cloud-node circle { fill: #a7b899; }
.cloud-node:hover rect,.cloud-node-selected rect { stroke: #ffce7d; stroke-width: 2; }
.cloud-node:focus-visible rect { stroke: #b9d9df; stroke-width: 3; }
.cloud-failed rect { fill: #44271e; stroke: #e49174; }
.cloud-failed circle { fill: #f39c7c; }
.cloud-affected rect { fill: #3a2d16; stroke: #dba84c; }
.cloud-affected circle { fill: #ffbe55; }
.cloud-legend { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 15px 0; font: 10px 'IBM Plex Mono',monospace; color: #c7baa0; }
.cloud-legend span:nth-child(1) { color: #a7b899; }
.cloud-legend span:nth-child(2) { color: #f39c7c; }
.cloud-legend span:nth-child(3) { color: #ffbe55; }
.cloud-help { font-size: 12px; line-height: 1.7; color: #b8ad97; }
.cloud-inspector { display: grid; grid-template-columns: 1fr auto; gap: 10px 20px; align-items: center; border-top: 1px solid #4b402d; padding: 20px 0; }
.cloud-inspector h4 { margin: 6px 0; font-size: 21px; }
.cloud-inspector code { font: 11px 'IBM Plex Mono',monospace; color: #b3a487; }
.cloud-inspector > p,.cloud-inspector > ul { grid-column: 1/-1; color: #c5b89f; font: 11px/1.8 'IBM Plex Mono',monospace; margin: 0; }
.cloud-inspector > ul { padding-left: 20px; overflow-wrap: anywhere; }
@keyframes cloud-flow { to { stroke-dashoffset: 24; } }
@keyframes cloud-arrive { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 650px) {
 .cloud-code { grid-template-columns: 1fr; }
 .cloud-code pre { height: 210px; }
 .cloud-form { align-items: stretch; flex-direction: column; }
 .connector-pipeline { grid-template-columns: repeat(2,1fr); }
 .cloud-inspector { grid-template-columns: 1fr; }
 .cloud-inspector .primary { justify-self: start; }
}
@media (prefers-reduced-motion: reduce) {
 .cloud-edge-affected,.cloud-preview-tile { animation: none; }
 .cloud-node rect,.connector-pipeline span { transition: none; }
}

#connector-panel .cloud-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: start; }
#connector-panel .cloud-form > div { display: grid; gap: 9px; min-width: 0; }
#connector-panel .cloud-form select { width: 100%; font-size: 11px; }
@media (max-width: 650px) { #connector-panel .cloud-form { grid-template-columns: 1fr; } }

/* MediaCAT: static worker assignments, local buffers, and referral merge. */
#mediacat-demo { margin-top: 28px; min-width: 0; }
.cat-controls { display: flex; align-items: end; flex-wrap: wrap; gap: 22px; margin: 24px 0 12px; }
.cat-controls label { display: grid; gap: 9px; color: #d2c2a4; font: 11px 'IBM Plex Mono', monospace; }
.cat-controls select { padding: 10px; max-width: 100%; color: #ead3aa; background: #211d15; border: 1px solid #655238; border-radius: 4px; font: inherit; }
.cat-controls .cat-check { display: flex; gap: 9px; align-items: center; padding-bottom: 10px; }
.cat-check input { accent-color: #ffbe55; }
.cat-note { color: #b2a68f; font: 11px/1.8 'IBM Plex Mono',monospace; }
.cat-pipeline { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; margin: 25px 0; font: 11px 'IBM Plex Mono',monospace; color: #a69c88; }
.cat-pipeline span { border-top: 2px solid #51452f; padding-top: 12px; }
.cat-pipeline .cat-stage-active { color: #ffce7d; border-color: #ffbe55; }
.cat-pipeline .cat-stage-done { color: #b7c8a3; border-color: #80916e; }
.cat-records { display: grid; grid-template-columns: repeat(8,1fr); gap: 8px; }
.cat-record { padding: 12px 3px; background: #2b2419; border: 1px solid #6b5735; color: #e1c28d; font: 12px 'IBM Plex Mono',monospace; cursor: pointer; border-radius: 4px; }
.cat-record[aria-pressed=true] { border-color: #ffce7d; box-shadow: inset 0 -2px #ffbe55; }
.cat-record-done { color: #b7c8a3; background: #25291e; }
.cat-record-detail { margin: 12px 0 24px; padding: 14px 16px; border-left: 2px solid #8c7041; background: #1b1812; }
.cat-record-detail strong { font-size: 14px; }
.cat-record-detail p { font: 11px/1.8 'IBM Plex Mono',monospace; color: #c0ad89; margin: 8px 0 0; overflow-wrap: anywhere; }
.cat-lanes { display: grid; grid-template-columns: repeat(auto-fit,minmax(145px,1fr)); gap: 12px; align-items: stretch; }
.cat-worker { background: #211d15; border: 1px solid #5b4b32; border-radius: 6px; padding: 16px 12px; min-width: 0; }
.cat-worker h4 { font: 12px 'IBM Plex Mono',monospace; letter-spacing: .06em; color: #ffce7d; margin: 0 0 9px; }
.cat-worker-state { display: block; min-height: 27px; color: #b4aa96; font: 9px/1.6 'IBM Plex Mono',monospace; }
.cat-jobs { display: flex; flex-wrap: wrap; gap: 6px; min-height: 62px; align-content: start; margin: 12px 0; }
.cat-job { border: 1px solid #7a633d; padding: 7px; font: 10px 'IBM Plex Mono',monospace; color: #d3b681; }
.cat-job-pending { opacity: .3; border-style: dashed; }
.cat-job-done { color: #afc294; border-color: #788b61; }
.cat-job-current { background: #43331a; border-color: #ffbe55; animation: cat-arrival .45s ease-out; }
.cat-worker-count { font: 10px 'IBM Plex Mono',monospace; color: #b4a487; }
.cat-worker .console-label { font-size: 8px; }
.cat-buffer { height: 7px; background: #100f0b; margin: 9px 0 12px; }
.cat-buffer span { display: block; height: 100%; background: #c89341; transition: width .35s; }
.cat-files { display: grid; gap: 7px; }
.cat-file { overflow-wrap: anywhere; font: 9px/1.6 'IBM Plex Mono',monospace; color: #dfbe83; border: 1px dashed #79613a; padding: 7px; animation: cat-arrival .4s ease-out; }
.cat-file-merged { color: #9fb889; border-color: #61734e; }
.cat-merge { display: flex; align-items: center; justify-content: center; gap: 20px; margin: 22px 0; text-align: center; }
.cat-merge > span { font: 28px 'IBM Plex Mono',monospace; color: #a9884f; }
.cat-merge strong { font: 11px 'IBM Plex Mono',monospace; color: #e8c58b; letter-spacing: .12em; }
.cat-merge p { font: 10px/1.7 'IBM Plex Mono',monospace; color: #b5a68a; margin: 7px 0 0; }
.cat-result { background: #14120e; border: 1px solid #54442c; padding: 18px; border-radius: 5px; margin-bottom: 22px; }
.cat-empty { color: #a99d86; font-size: 12px; line-height: 1.8; }
.cat-output-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 16px; border-bottom: 1px solid #3c3324; padding: 12px 0; font: 11px/1.7 'IBM Plex Mono',monospace; }
.cat-output-row code { color: #ffce7d; overflow-wrap: anywhere; }
.cat-output-row span { color: #b8c9a4; }
@keyframes cat-arrival { from { opacity: .3; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
@media(max-width: 650px) { .cat-records { grid-template-columns: repeat(4,1fr); } .cat-pipeline { font-size: 9px; } .cat-controls { align-items: start; flex-direction: column; gap: 12px; } }
@media(prefers-reduced-motion: reduce) { .cat-job-current,.cat-file { animation: none; } .cat-buffer span { transition: none; } }

.code-stamp-details.stamp-mixed{--stamp-ink:#cbb6de}
.ford-milestone{border:1px solid var(--line);border-left:3px solid var(--accent);background:linear-gradient(120deg,#31271b,#211c16);padding:24px;margin:28px 0}
.ford-milestone h3{font-size:24px;font-weight:500;margin:10px 0}
.ford-milestone>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted);max-width:650px}
.ford-milestone a{display:block;border-top:1px solid var(--line);padding-top:17px;margin-top:20px;font-size:14px;line-height:1.7;color:#e9ca96}
.ford-milestone a span{display:block;font:9px/1.8 'IBM Plex Mono',monospace;letter-spacing:1px;color:var(--muted);margin-bottom:7px}
.ford-milestone a:hover,.other-projects-list a:hover{text-decoration:underline;text-underline-offset:4px}
.other-projects-list{margin-top:30px;border-top:1px solid var(--line)}
.other-projects-list article{padding:26px 0;border-bottom:1px solid var(--line)}
.other-projects-list h3{font-size:24px;font-weight:500;margin:10px 0}
.other-projects-list article>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted);max-width:700px}
.other-projects-list article .other-project-tags{font:10px/1.8 'IBM Plex Mono',monospace!important;color:#d3bc92!important}
.other-projects-list a{display:inline-block;margin-top:8px;font:11px/1.8 'IBM Plex Mono',monospace;color:var(--accent)}

/* A living desk figurine, with accessible field notes beside it. */
#about-portrait{margin-top:30px}
.portrait-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,1fr);gap:24px;align-items:start}
.portrait-exhibit{border:1px solid #5a4930;background:radial-gradient(ellipse at 50% 44%,#44392a 0%,#25221b 50%,#171610 90%);border-radius:8px;overflow:hidden;min-width:0}
.portrait-caption{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding:17px 18px;border-bottom:1px solid #55472e;font:8px/1.5 'IBM Plex Mono',monospace;letter-spacing:.7px;color:#d8bc89}
.portrait-live{color:#b0ba9c;display:flex;align-items:center;gap:7px}
.portrait-live i{width:5px;height:5px;border-radius:50%;background:#b0ba9c;display:inline-block}
.portrait-stage{height:470px;position:relative;min-width:0}
.portrait-stage canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}
.portrait-stage canvas:active{cursor:grabbing}
.portrait-loading{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:#d4c4a5;padding:35px;font:12px/1.8 'IBM Plex Mono',monospace;pointer-events:none}
.portrait-hover{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);font:9px 'IBM Plex Mono',monospace;white-space:nowrap;letter-spacing:1px;color:#e8c48a;background:#171510c9;padding:9px 12px;border:1px solid #655234;pointer-events:none}
.portrait-instructions{display:flex;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid #51432e;color:#b8ab94;font:9px/1.8 'IBM Plex Mono',monospace}
.portrait-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:0 16px 16px}
.portrait-tools label{width:100%;display:flex;align-items:center;gap:14px;font:9px/1.7 'IBM Plex Mono',monospace;color:#b8ab94}
.portrait-tools input{min-width:0;flex:1;accent-color:#ffbe55}
.portrait-tools button{font-size:9px;padding:8px 10px}
.portrait-notes{min-width:0;padding-top:9px}
.portrait-topics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0 28px}
.portrait-topics button{border:1px solid #655338;background:#211c16;padding:12px 9px;text-align:left;color:#bfb19b;font:11px 'IBM Plex Mono',monospace}
.portrait-topics button span{font-size:9px;color:#8b7b62;margin-right:6px}
.portrait-topics button[aria-pressed=true]{color:#ffce7d;border-color:#bd9149;background:#332819}
.portrait-topic-content{min-height:300px}
.portrait-note-index{font:9px 'IBM Plex Mono',monospace;color:#b89b6a;letter-spacing:1px}
#portrait-topic-content h3{font-size:27px;font-weight:500;line-height:1.2;margin:14px 0}
.portrait-intro{font-size:15px;line-height:1.8;color:#d6c9b3}
#portrait-topic-content dl{margin:22px 0}
#portrait-topic-content dl>div{padding:12px 0;border-top:1px solid #493d2b}
#portrait-topic-content dt{font:9px/1.6 'IBM Plex Mono',monospace;color:#b29c79;text-transform:uppercase;letter-spacing:1px}
#portrait-topic-content dd{margin:6px 0 0;font-size:14px;line-height:1.6;color:#f1dfbe}
.portrait-footnote{border-left:2px solid #8d754b;padding-left:13px;font:10px/1.9 'IBM Plex Mono',monospace;color:#b9aa90;margin-top:24px}
@media(max-width:1100px){.portrait-layout{grid-template-columns:1fr}.portrait-stage{height:480px}.portrait-topics{grid-template-columns:repeat(4,1fr)}.portrait-caption{font-size:9px}.portrait-notes{padding:10px 2px}}
@media(max-width:500px){.portrait-stage{height:400px}.portrait-topics{grid-template-columns:1fr 1fr}.portrait-instructions{font-size:8px}.portrait-caption{font-size:8px}.portrait-layout{gap:16px}}
