/* The Next Patient — visual operating system candidate kit
   Grammar: the floor (Green Night field carrying one code-drawn dimensional stage) and the ledger (paper, hairlines).
   Brand tokens from work/brand-kit/tokens/brand-tokens.json (REV 2). State colors from visual-operating-system/styles.css. */
:root{
  --ink:#111714; --body:#28302E; --muted:#4D5955; --muted-2:#66716D;
  --tourer:#24513F; --deep:#173529; --night:#08231B; --green-2:#356E57;
  --blue:#163B63; --lime:#D9EA00;
  --paper:#F7F4EA; --paper-cool:#FAF8F2; --linen:#EFE9DD; --stone:#E7E0D2; --graphite:#E8E8E1; --cream:#F7F3D1; --frost:#EEF1F4; --white:#FFFFFF;
  --line:#DED7CA; --line-strong:#C9BFAE;
  --working:#16885B; --reference:#2C6DA3; --open:#B96C13; --blocked:#B23A36; --stale:#7F8582;
  --font:Aptos,"Segoe UI",Arial,sans-serif; --shell:1440px;
  --focus:0 0 0 3px var(--paper),0 0 0 6px var(--blue);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--body);font-family:var(--font);font-size:16px;line-height:1.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .2 0 0 0 0 .18 0 0 0 0 .1 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23g)'/%3E%3C/svg%3E")}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{color:var(--ink);line-height:1.08;letter-spacing:-.02em;text-wrap:balance}
h1{font-size:clamp(40px,4.6vw,56px);font-weight:700;line-height:1;letter-spacing:-.035em;margin:0 0 14px}
h2{font-size:clamp(26px,2.6vw,34px);font-weight:700;margin:0 0 6px}
h3{font-size:21px;font-weight:700;margin:0 0 6px}
p{margin-bottom:0}
a{color:var(--blue)}
button{font:inherit}
code{font-family:inherit;font-weight:600;color:var(--blue)}
:focus-visible{outline:none;box-shadow:var(--focus)}
.skip{position:absolute;left:-999px;top:8px;z-index:200;padding:10px 14px;background:var(--lime);color:var(--ink);font-weight:700}
.skip:focus{left:8px}
.eyebrow{margin:0 0 10px;color:var(--green-2);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.shell{width:min(var(--shell),calc(100% - 40px));margin:0 auto}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:40;background:var(--deep);color:var(--white);border-bottom:1px solid rgba(255,255,255,.14)}
.topbar-inner{width:min(var(--shell),calc(100% - 40px));margin:0 auto;min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{display:flex;align-items:center;gap:12px;color:var(--white);text-decoration:none}
.brand svg{width:40px;height:40px;display:block;flex:0 0 40px}
.brand strong{display:block;font-size:14px;letter-spacing:.06em}
.brand span span{display:block;color:rgba(255,255,255,.66);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.nav{display:flex;align-items:center;gap:2px;flex-wrap:wrap}
.nav a,.nav button{display:inline-block;padding:8px 9px;border:0;border-radius:4px;background:transparent;color:rgba(255,255,255,.76);font-size:13px;text-decoration:none;cursor:pointer}
.nav a:hover,.nav button:hover{color:var(--white);background:rgba(255,255,255,.08)}
.nav a[aria-current="page"]{color:var(--deep);background:var(--lime)}
.nav .print-button{margin-left:6px;border:1px solid rgba(255,255,255,.28)}
.nav-toggle{display:none;border:1px solid rgba(255,255,255,.3);background:transparent;color:var(--white);padding:8px 12px;border-radius:4px;cursor:pointer}
.nav-toggle[aria-expanded="true"]{background:var(--lime);color:var(--deep);border-color:var(--lime)}
.topbar :focus-visible{box-shadow:0 0 0 2px var(--deep),0 0 0 5px var(--lime)}

/* ---------- the floor (dark field) ---------- */
.floor{position:relative;color:var(--paper);background:linear-gradient(180deg,var(--night) 0%,#0E2E24 55%,var(--deep) 100%)}
.floor::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(55% 40% at 22% 0%,rgba(217,234,0,.07),transparent 70%)}
.floor-inner{position:relative;z-index:1;width:min(var(--shell),calc(100% - 40px));margin:0 auto;padding:44px 0 40px}
.floor .eyebrow{color:#B6D9C4}
.floor h1,.floor h2,.floor h3{color:var(--white)}
.floor-head{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px;align-items:end;padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.14)}
.floor-head .lede{max-width:62ch;font-size:18px;color:#CFDCD3}
.aside-note{padding:14px 0 14px 18px;border-left:3px solid var(--lime)}
.aside-note small{display:block;color:#B6D9C4;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.aside-note strong{display:block;color:var(--white);font-size:17px;margin:4px 0 4px}
.aside-note span{display:block;color:#CFDCD3;font-size:14px;line-height:1.4}
.thesis{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:36px;align-items:end;padding:26px 0 18px}
.thesis blockquote{margin:0;color:var(--white);font-size:clamp(24px,2.6vw,36px);font-weight:700;line-height:1.1;letter-spacing:-.025em;text-wrap:balance}
.thesis p{margin:0;color:#CFDCD3;font-size:15px}
.thesis p strong{color:var(--white)}
.stage-head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:36px;align-items:end;padding:26px 0 14px}
.stage-head h2{margin:0}
.stage-head p.note{margin:0;color:#CFDCD3;font-size:15px}

/* stage (code-drawn scene) */
.stage-wrap{position:relative;margin-top:8px}
.diagram-expand{position:absolute;right:12px;top:12px;z-index:30;border:1px solid rgba(255,255,255,.45);background:rgba(10,42,32,.9);color:var(--white);padding:8px 11px;font:700 12px/1 Aptos,"Segoe UI",Arial,sans-serif;letter-spacing:.04em;cursor:pointer}
.floor.paper .diagram-expand{border-color:var(--line-strong);background:rgba(247,244,234,.94);color:var(--ink)}
.diagram-expand:focus-visible,.walkthrough button:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.stage-wrap.is-expanded{position:fixed;inset:12px;z-index:1000;margin:0;padding:54px 18px 18px;background:var(--deep);overflow:auto;box-shadow:0 0 0 100vmax rgba(5,18,14,.86)}
.floor.paper .stage-wrap.is-expanded{background:var(--paper)}
.stage-wrap.is-expanded svg.stage{width:100%;min-width:1000px}
body.diagram-expanded{overflow:hidden}
.walkthrough{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 18px;background:#102A20;color:var(--white);border-top:3px solid var(--lime)}
.walkthrough small{display:block;color:#B6D9C4;text-transform:uppercase;letter-spacing:.1em;font-size:11px}.walkthrough strong{font-size:15px}.walk-actions{display:flex;gap:8px}.walkthrough button{border:1px solid #829B75;background:transparent;color:var(--white);padding:8px 11px;font:600 13px/1 Aptos,"Segoe UI",Arial,sans-serif;cursor:pointer}.walkthrough button:disabled{opacity:.35;cursor:default}
.proof-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:36px}.proof-card{background:var(--white);border:1px solid var(--line);border-top:4px solid var(--tourer);padding:16px}.proof-card img{display:block;width:100%;height:260px;object-fit:cover;object-position:top;border:1px solid var(--line);background:var(--paper)}.proof-card h3{margin:14px 0 6px}.proof-card p{font-size:14px;color:var(--muted)}.proof-card a{font-weight:700;text-underline-offset:4px}
.stage-wrap svg.stage{display:block;width:100%;height:auto;overflow:visible}
.plates{list-style:none;margin:0;padding:0}
.plates li{margin:0}
.plates .zone-head{display:none}
.plate{position:absolute;left:var(--x);top:var(--y);width:var(--w,7%);transform:translateX(-50%);display:flex;flex-direction:column;gap:2px;padding:6px 7px 7px;text-align:center;color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);border-top:3px solid var(--tourer);font-size:clamp(10.5px,.82vw,12.5px);line-height:1.15;cursor:pointer;transition:transform .15s,opacity .2s}
.plate small{display:block;color:var(--muted);font-size:.85em;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.plate .short{font-weight:700;letter-spacing:-.005em}
.plate .full,.plate .state-txt,.plate .load{display:none}
.plate.gate{border-top-color:var(--lime);background:var(--cream)}
.plate.gate.proof{border-top-color:var(--blocked);background:#FFF3EE}
.plate.gate.evidence{border-top-color:var(--reference);background:#EEF3F8}
.plate.core{border-top-color:var(--deep);background:var(--linen)}
.plate.store{border-top-color:var(--reference);background:var(--frost)}
.plate.hold{border-top-color:var(--blocked);background:var(--graphite);color:var(--muted)}
.plate.reference{border-top-color:var(--stale);background:var(--paper-cool)}
.plate.on-top{background:transparent;border:0;padding:2px 4px;gap:1px}
.plate.on-top.dark{color:var(--white)}.plate.on-top.dark small{color:#B6D9C4}.plate.on-top.dark.gate small{color:var(--lime)}
.plate.on-top.hold{color:var(--ink)}
.plate:hover{transform:translateX(-50%) translateY(-2px)}
.plate.on-top:hover{transform:translateX(-50%)}
.plate[aria-pressed="true"]{box-shadow:0 0 0 2px var(--night),0 0 0 5px var(--lime)}
.plate:focus-visible{box-shadow:0 0 0 2px var(--night),0 0 0 5px var(--white)}
.stage-wrap.has-selection .plate:not([aria-pressed="true"]):not(.is-linked){opacity:.5}
.stage .node{transition:opacity .2s}
.stage-wrap.has-selection .stage .node:not(.is-on):not(.is-linked){opacity:.4}
.stage-wrap.has-selection .stage .edge:not(.is-on){opacity:.25}
.stage .sel{fill:none;stroke:var(--lime);stroke-width:2.5;stroke-linejoin:round}
.stage .draw{stroke-dashoffset:var(--len);animation:drawin 1.1s cubic-bezier(.4,0,.2,1) forwards}
@keyframes drawin{to{stroke-dashoffset:0}}
.flag{position:absolute;left:var(--x);top:var(--y);margin:0;padding:4px 7px;color:var(--ink);background:var(--lime);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;line-height:1.2;pointer-events:none}
.flag.amber{background:#F0BE7A}.flag.red{background:var(--blocked);color:var(--white)}.flag.blue{background:#5B9BD5;color:var(--night)}
.flag[hidden]{display:none}
.edge-label{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);margin:0;padding:2px 6px;color:#CFDCD3;background:rgba(8,35,27,.85);border:1px solid rgba(255,255,255,.14);font-size:10.5px;font-weight:600;letter-spacing:.04em;white-space:nowrap;line-height:1.25;pointer-events:none}
.edge-label.approval{color:var(--lime)}.edge-label.return{color:#8FC2F0}
.legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin:14px 0 0;padding:0;list-style:none;color:#CFDCD3;font-size:13px}
.legend li{display:inline-flex;align-items:center;gap:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--working);flex:none}
.legend i.reference{background:var(--reference)}.legend i.open{background:var(--open)}.legend i.blocked{background:var(--blocked)}.legend i.stale{background:var(--stale)}
.legend i.gate{border-radius:0;width:5px;height:14px;background:var(--lime)}.legend i.evgate{border-radius:0;width:5px;height:14px;background:var(--reference)}.legend i.prgate{border-radius:0;width:5px;height:14px;background:var(--blocked)}
.legend i.flow{border-radius:0;width:22px;height:3px;background:#7FE0B4}
.legend i.approval{border-radius:0;width:22px;height:3px;background:var(--lime)}
.legend i.pipe{border-radius:0;width:22px;height:3px;background:repeating-linear-gradient(90deg,#5B9BD5 0 6px,transparent 6px 10px)}
.legend i.hold{border-radius:0;width:22px;height:3px;background:repeating-linear-gradient(90deg,#9AA5A0 0 4px,transparent 4px 8px)}
.legend i.rt{border-radius:0;width:22px;height:3px;background:repeating-linear-gradient(90deg,#E07A74 0 6px,transparent 6px 10px)}

/* detail panel */
.floor-detail{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);margin:18px 0 0;border:1px solid rgba(255,255,255,.18);background:rgba(8,35,27,.55)}
.detail-body{padding:22px 24px;border-right:1px solid rgba(255,255,255,.14)}
.detail-side{padding:22px 24px}
.detail-body h3{font-size:22px;margin-bottom:8px}
.detail-body p{color:#D8E3DC;font-size:16px;max-width:62ch}
.detail-body p+p{margin-top:10px}
.detail-body p strong{color:var(--white)}
.detail-side dl{margin:0;display:grid;gap:12px}
.detail-side dt{color:#B6D9C4;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.detail-side dd{margin:2px 0 0;color:#EAF0EC;font-size:15px}
.state{display:inline-block;margin:0 6px 10px 0;padding:3px 8px;border:1px solid currentColor;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.state.working{color:#7FE0B4}.state.reference{color:#8FC2F0}.state.open{color:#F0BE7A}.state.blocked{color:#F2A19B}.state.stale{color:#B7C2BC}.state.gate{color:var(--lime)}.state.zone{color:#B6D9C4;border-style:dashed}
.detail-item[hidden],.detail-actions [hidden]{display:none}
.detail-actions{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}
.detail-actions a,.detail-actions button{display:inline-flex;align-items:center;min-height:38px;padding:7px 13px;border:1px solid rgba(255,255,255,.34);background:transparent;color:var(--white);font-size:14px;font-weight:600;text-decoration:none;cursor:pointer}
.detail-actions a{background:var(--lime);color:var(--deep);border-color:var(--lime)}
.detail-actions button:hover{background:rgba(255,255,255,.1)}
.io{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.14)}
.io div{min-width:0}
.io small{display:block;color:#B6D9C4;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.io span{display:block;color:#EAF0EC;font-size:14px;line-height:1.35;margin-top:2px}

/* ---------- paper ---------- */
.section-title{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:30px;align-items:end;margin:52px 0 18px}
.section-title p{margin:0;color:var(--muted);font-size:16px}
.section-title .legend{color:var(--muted);margin:0;justify-self:end}
.ledger{border-top:2px solid var(--deep)}
.row{display:grid;grid-template-columns:52px minmax(0,1.35fr) minmax(0,1fr) 190px;gap:18px 24px;align-items:start;padding:22px 0;border-bottom:1px solid var(--line-strong)}
.row b{font-size:30px;font-weight:300;color:var(--muted-2);line-height:1;font-variant-numeric:tabular-nums}
.row h3{font-size:22px;margin:4px 0 8px;letter-spacing:-.015em}
.row .desc{color:var(--body);font-size:16px;max-width:56ch}
.row .meta{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:12px;color:var(--muted)}
.chip{display:inline-block;padding:2px 0;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.chip.working{color:var(--working)}.chip.reference{color:var(--reference)}.chip.open{color:var(--open)}.chip.blocked{color:var(--blocked)}.chip.stale{color:var(--stale)}.chip.decision{color:#6B7400}
.tag{display:inline-block;padding:3px 8px;border:1px solid currentColor;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tag.working{color:var(--working)}.tag.reference{color:var(--reference)}.tag.open{color:var(--open)}.tag.blocked{color:var(--blocked)}.tag.stale{color:var(--stale)}.tag.steve{color:#6B7400;background:var(--cream)}
.row .outcome{padding-left:16px;border-left:2px solid var(--line-strong)}
.row .outcome small{display:block;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.row .outcome strong{display:block;margin-top:3px;color:var(--ink);font-size:16px;line-height:1.3}
.row-actions{display:grid;gap:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 14px;border:1px solid var(--tourer);background:transparent;color:var(--tourer);font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;transition:background .15s}
.btn:hover{background:var(--cream)}
.btn.primary{background:var(--tourer);color:var(--white)}
.btn.primary:hover{background:var(--deep)}
/* generic table ledger */
.tbl{border-top:2px solid var(--deep)}
.tr{display:grid;grid-template-columns:var(--cols,180px minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.1fr));gap:18px 24px;padding:16px 0;border-bottom:1px solid var(--line-strong);font-size:15px}
.tr.head{padding:10px 0;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.tr strong{color:var(--ink)}
.tr .dim{color:var(--muted)}
/* numbered grid */
.grid3{border-top:2px solid var(--deep);display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.grid3 article{padding:18px 18px 18px 0;border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line);margin-right:18px}
.grid3 article:nth-child(3n){border-right:0;margin-right:0}
.grid3 b{display:block;font-size:26px;font-weight:300;color:var(--muted-2);line-height:1;font-variant-numeric:tabular-nums}
.grid3 h3{font-size:17px;margin:10px 0 4px}
.grid3 p{color:var(--muted);font-size:14px}
.grid3 .chip{margin-top:8px}
.grid4{border-top:2px solid var(--deep);display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.grid4 article{padding:18px 18px 18px 0;border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line);margin-right:18px}
.grid4 article:nth-child(4n){border-right:0;margin-right:0}
.grid4 h3{font-size:17px;margin:8px 0 4px}
.grid4 p{color:var(--muted);font-size:14px}
/* pair / boundary cards */
.pair{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pair>div,.pair>article{padding:20px 22px;border:1px solid var(--line-strong);background:var(--paper-cool);border-top:3px solid var(--tourer)}
.pair>.alt{border-top-color:var(--blocked)}
.pair>.lime{border-top-color:var(--lime)}
.pair ul{margin:8px 0 0;padding-left:18px;color:var(--body);font-size:15px}
.pair li{padding:2px 0}
.pair small{display:block;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.pair p{color:var(--muted);font-size:15px}
/* gate bar */
.gate-bar{display:grid;grid-template-columns:200px minmax(0,1fr);gap:22px;align-items:center;margin-top:28px;padding:20px 24px;background:var(--deep);color:var(--white);border-left:8px solid var(--lime)}
.gate-bar strong{font-size:20px}
.gate-bar p{margin:0;color:rgba(255,255,255,.8);font-size:15px}
/* journey (horizons / ladders) */
.journey{display:grid;grid-template-columns:1fr 92px 1fr 92px 1fr 92px 1fr;align-items:stretch;border:1px solid var(--line-strong);background:var(--paper-cool)}
.journey article{padding:20px 20px;min-width:0}
.journey article small{display:block;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.journey article h3{margin:8px 0 6px;font-size:18px}
.journey article p{color:var(--muted);font-size:14px}
.journey .gate{position:relative;display:grid;place-items:center;border-left:1px solid var(--line);border-right:1px solid var(--line);background:var(--linen)}
.journey .gate::before{content:"";position:absolute;left:0;right:0;top:50%;height:3px;background:var(--line-strong)}
.journey .gate span{position:relative;z-index:1;padding:4px 7px;border:1px solid currentColor;background:var(--white);color:var(--blocked);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-align:center;line-height:1.2}
.journey .gate.pass span{color:var(--working)}
.journey .gate.lime span{color:#6B7400;background:var(--cream)}
.journey article.pale{color:var(--muted)}
.journey article.pale h3{color:var(--muted)}
/* chips list, swatches, type */
.swatches{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.swatch{border:1px solid var(--line-strong);background:var(--white);min-width:0}
.swatch div{height:84px;background:var(--c)}
.swatch p{margin:0;padding:10px 12px;font-size:13px;color:var(--muted)}
.swatch p strong{display:block;color:var(--ink)}
.specimen{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:18px}
.specimen>div{padding:26px 28px;border:1px solid var(--line-strong);background:var(--paper-cool)}
.specimen .display{margin:14px 0 10px;color:var(--ink);font-size:48px;font-weight:700;line-height:1;letter-spacing:-.04em}
.specimen .body{max-width:58ch;color:var(--body);font-size:18px}
.scale{display:grid;gap:8px;margin-top:14px}
.scale div{display:flex;justify-content:space-between;gap:14px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:15px}
.scale strong{color:var(--ink)}.scale span{color:var(--muted);font-variant-numeric:tabular-nums}
/* steps / lists */
.steps{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:18px}
.steps>div{padding:20px 24px;border:1px solid var(--line-strong);background:var(--paper-cool)}
.steps ol,.steps ul{margin:0;padding-left:22px}
.steps li{padding:5px 0;font-size:15px}
.steps li strong{color:var(--ink)}
.steps ul li{color:var(--muted)}
/* boundary + footer */
.boundary{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px;margin:52px 0 0;padding:22px 0;border-top:2px solid var(--deep);border-bottom:1px solid var(--line-strong)}
.boundary strong{color:var(--ink);font-size:18px}.boundary span{color:var(--muted);font-size:16px}
.page-footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:18px 0 56px;color:var(--muted);font-size:13px}
.toast{position:fixed;right:20px;bottom:20px;z-index:120;padding:12px 16px;background:var(--deep);color:var(--white);border-left:4px solid var(--lime);font-weight:600;box-shadow:0 12px 30px rgba(0,0,0,.2)}
.toast[hidden]{display:none}
.no-js .stage-wrap svg.stage{visibility:hidden}
.no-js .flag,.no-js .edge-label{display:none}
.no-js .plate{position:static;transform:none;width:auto}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .topbar-inner{flex-wrap:wrap}
  .nav-toggle{display:inline-block;margin-left:auto}
  .nav{display:none;flex-basis:100%;padding:6px 0 12px}
  .nav.is-open{display:flex}
  .floor-head,.thesis,.stage-head{grid-template-columns:1fr;gap:16px}
  .stage-wrap svg.stage,.flag,.edge-label{display:none}
  .plates{position:relative;display:grid;grid-template-columns:1fr;gap:10px;padding-left:34px}
  .plates::before{content:"";position:absolute;left:11px;top:8px;bottom:8px;width:4px;background:#2F5A47}
  .plates .zone-head{display:block;margin:14px 0 2px;color:#B6D9C4;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
  .plates .zone-head:first-child{margin-top:0}
  .plates .zone-head::before{content:"";position:absolute;left:2px;width:16px;height:16px;margin-top:2px;background:var(--night);border:3px solid #2F5A47;border-radius:50%}
  .plate,.plate.on-top{position:relative;left:auto;top:auto;width:100%;transform:none;text-align:left;font-size:15px;padding:12px 14px;gap:4px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;background:var(--paper);border:1px solid var(--line-strong);border-top:3px solid var(--tourer);color:var(--ink)}
  .plate.on-top.dark,.plate.on-top.dark small{color:var(--ink)}.plate.on-top.dark small{color:var(--muted)}
  .plate.gate,.plate.on-top.gate{border-top-color:var(--lime);background:var(--cream)}
  .plate.gate.proof,.plate.on-top.gate.proof{border-top-color:var(--blocked);background:#FFF3EE}
  .plate.gate.evidence,.plate.on-top.gate.evidence{border-top-color:var(--reference);background:#EEF3F8}
  .plate.core,.plate.on-top.core{border-top-color:var(--deep);background:var(--linen)}
  .plate.store,.plate.on-top.store{border-top-color:var(--reference);background:var(--frost)}
  .plate.hold,.plate.on-top.hold{border-top-color:var(--blocked);background:var(--graphite)}
  .plate.reference,.plate.on-top.reference{border-top-color:var(--stale);background:var(--paper-cool)}
  .plate:hover{transform:none}
  .plate small{grid-column:1;font-size:11px;padding-right:10px}
  .plate .short{display:none}
  .plate .full{display:block;grid-column:2;font-weight:700;font-size:17px}
  .plate .state-txt{display:block;grid-column:2;color:var(--muted);font-size:13px;font-weight:500}
  .plate .load{display:block;grid-column:2;margin-top:4px;padding:3px 8px;background:var(--lime);color:var(--ink);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;justify-self:start}
  .plate .load.amber{background:#F0BE7A}
  .plate::before{content:"";position:absolute;left:-27px;top:50%;width:19px;height:3px;background:#2F5A47}
  .plate.gate::before{background:var(--lime)}.plate.gate.proof::before{background:var(--blocked)}.plate.gate.evidence::before{background:var(--reference)}
  .floor-detail{grid-template-columns:1fr}
  .detail-body{border-right:0;border-bottom:1px solid rgba(255,255,255,.14)}
  .io{grid-template-columns:1fr}
  .row{grid-template-columns:44px minmax(0,1fr) 180px;grid-template-areas:"n main act" "n side act"}
  .row b{grid-area:n}.row .main{grid-area:main}.row .outcome{grid-area:side;border-left:0;padding-left:0;padding-top:12px;border-top:1px solid var(--line)}.row-actions{grid-area:act}
  .tr{grid-template-columns:150px minmax(0,1fr)}
  .tr.head{display:none}
  .tr>div:nth-child(n+3){grid-column:2}
  .tr>div[data-h]::before{content:attr(data-h) " · ";color:var(--muted)}
  .grid3{grid-template-columns:1fr 1fr}
  .grid3 article:nth-child(3n){border-right:1px solid var(--line);margin-right:18px}
  .grid3 article:nth-child(2n){border-right:0;margin-right:0}
  .grid4{grid-template-columns:1fr 1fr}
  .grid4 article:nth-child(4n){border-right:1px solid var(--line);margin-right:18px}
  .grid4 article:nth-child(2n){border-right:0;margin-right:0}
  .journey{grid-template-columns:1fr}
  .journey .gate{min-height:46px;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .journey .gate::before{left:0;right:0;top:50%}
  .swatches{grid-template-columns:repeat(3,minmax(0,1fr))}
  .specimen,.steps{grid-template-columns:1fr}
  .gate-bar{grid-template-columns:1fr;gap:6px}
}
@media (max-width:720px){
  .diagram-expand{right:8px;top:8px}.stage-wrap.is-expanded{inset:5px;padding:48px 10px 10px}.stage-wrap.is-expanded svg.stage{min-width:900px}.walkthrough{align-items:flex-start;flex-direction:column}.walk-actions{width:100%}.walkthrough button{flex:1}.detail-item h3:focus{outline:none}.proof-gallery{grid-template-columns:1fr}.proof-card img{height:220px}
  .shell,.topbar-inner,.floor-inner{width:min(var(--shell),calc(100% - 28px))}
  .brand span span{display:none}
  .section-title{grid-template-columns:1fr;gap:8px;margin-top:44px}
  .section-title .legend{justify-self:start}
  .row{grid-template-columns:36px minmax(0,1fr);grid-template-areas:"n main" "n side" "n act"}
  .row-actions{display:flex;flex-wrap:wrap}.row-actions .btn{flex:1}
  .tr{grid-template-columns:1fr}.tr>div:nth-child(n+3){grid-column:1}
  .grid3,.grid4,.pair,.swatches{grid-template-columns:1fr}
  .grid3 article,.grid4 article,.grid3 article:nth-child(3n),.grid4 article:nth-child(4n){border-right:0;margin-right:0}
  .boundary{grid-template-columns:1fr;gap:8px}
  .plate{font-size:14px}.plate .full{font-size:16px}
  .specimen .display{font-size:36px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .plate,.stage .node{transition:none}
  .stage .draw{animation:none!important;stroke-dashoffset:0!important}
}
@media print{
  body{background:var(--white)}
  .topbar{position:static}
  .nav,.nav-toggle,.skip,.detail-actions,.toast,.row-actions{display:none!important}
  .floor{background:var(--white);color:var(--ink)}
  .floor::after{display:none}
  .floor .eyebrow{color:var(--green-2)}.floor h1,.floor h2,.floor h3{color:var(--ink)}
  .floor-head .lede,.thesis p,.aside-note span,.legend,.stage-head p.note{color:var(--muted)}.aside-note strong,.thesis blockquote,.thesis p strong{color:var(--ink)}
  .stage-wrap svg.stage,.flag,.edge-label{display:none}
  .plates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding-left:0}
  .plates::before,.plates .zone-head::before,.plate::before{display:none!important}
  .plates .zone-head{display:block;grid-column:1/-1;margin-top:10px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
  .plate{position:static;transform:none;width:auto;text-align:left;font-size:13px;opacity:1!important;box-shadow:none!important}
  .plate .short{display:none}.plate .full,.plate .state-txt,.plate .load{display:block}
  .floor-detail{background:var(--white);color:var(--ink);border-color:var(--line-strong)}
  .detail-item[hidden]{display:block;margin-bottom:12px;padding-top:10px;border-top:1px solid var(--line)}
  .detail-body p,.detail-side dd,.io span{color:var(--body)}.detail-side dt,.io small{color:var(--muted)}.detail-body p strong{color:var(--ink)}
  .state.working{color:var(--working)}.state.reference{color:var(--reference)}.state.open{color:var(--open)}.state.blocked{color:var(--blocked)}.state.stale{color:var(--stale)}.state.gate,.state.zone{color:#6B7400}
  .gate-bar{background:var(--white);color:var(--ink);border:1px solid var(--line-strong);border-left:8px solid var(--lime)}.gate-bar p{color:var(--body)}
  a{text-decoration:none}
}
a.tr{text-decoration:none;color:inherit}a.tr:hover{background:var(--linen)}

/* ---------- V2: families, positioned plates, paper fields ---------- */
.plate.pos-c{transform:translate(-50%,-50%)}.plate.pos-l{transform:translate(0,-50%)}.plate.pos-r{transform:translate(-100%,-50%)}.plate.pos-b{transform:translate(-50%,0)}
.plate.pos-c:hover{transform:translate(-50%,-50%) translateY(-2px)}.plate.pos-l:hover{transform:translate(0,-50%) translateY(-2px)}.plate.pos-r:hover{transform:translate(-100%,-50%) translateY(-2px)}.plate.pos-b:hover{transform:translate(-50%,0) translateY(-2px)}
.edge-label.pos-l{transform:translate(0,-50%)}.edge-label.pos-r{transform:translate(-100%,-50%)}.edge-label.pos-b{transform:translate(-50%,0)}
.stage-wrap.has-selection .stage [data-node]:not(.is-on):not(.is-linked){opacity:.32}
.stage-wrap.has-selection .stage [data-from]:not(.is-on){opacity:.22}
.stage [data-node],.stage [data-from]{transition:opacity .2s}
.stage .pulse{stroke-linecap:round;animation:pulse 1.2s linear forwards;fill:none}
@keyframes pulse{to{stroke-dashoffset:calc(-1 * var(--len))}}
.stage .spin{transform-box:fill-box;transform-origin:center;animation:spin 70s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.stage .open-blade{transform-box:fill-box;transform-origin:var(--ox) var(--oy);animation:blade .9s cubic-bezier(.3,.8,.3,1) both}
@keyframes blade{from{transform:rotate(var(--from,-40deg));opacity:0}to{transform:rotate(0);opacity:1}}
.stage .fan{transform-box:fill-box;transform-origin:var(--ox) var(--oy);animation:fan .8s cubic-bezier(.3,.8,.3,1) both}
@keyframes fan{from{transform:rotate(0deg)}to{transform:rotate(var(--rot))}}
.stage .lamp-on{animation:lampon .35s ease both}
@keyframes lampon{from{opacity:.15}to{opacity:1}}
.stage .stamp{transform-box:fill-box;transform-origin:center;animation:stamp .35s cubic-bezier(.2,1.4,.4,1) both}
@keyframes stamp{from{transform:scale(1.9) rotate(-18deg);opacity:0}to{transform:scale(1) rotate(-12deg);opacity:1}}
/* paper-field pages (drawings, creative sheets) */
.floor.paper{color:var(--body);background:var(--paper-cool)}
.floor.paper::after{display:none}
.floor.paper .eyebrow{color:var(--green-2)}
.floor.paper h1,.floor.paper h2,.floor.paper h3{color:var(--ink)}
.floor.paper .floor-head{border-bottom-color:var(--line-strong)}
.floor.paper .floor-head .lede,.floor.paper .thesis p,.floor.paper .stage-head p.note,.floor.paper .aside-note span{color:var(--muted)}
.floor.paper .aside-note small{color:var(--green-2)}.floor.paper .aside-note strong,.floor.paper .thesis blockquote,.floor.paper .thesis p strong{color:var(--ink)}
.floor.paper .legend{color:var(--muted)}
.floor.paper .floor-detail{background:var(--white);border-color:var(--line-strong)}
.floor.paper .detail-body{border-right-color:var(--line)}
.floor.paper .detail-body p{color:var(--body)}.floor.paper .detail-body p strong{color:var(--ink)}
.floor.paper .detail-side dt,.floor.paper .io small{color:var(--muted)}.floor.paper .detail-side dd,.floor.paper .io span{color:var(--body)}
.floor.paper .io{border-top-color:var(--line)}
.floor.paper .detail-actions a{background:var(--tourer);color:var(--white);border-color:var(--tourer)}
.floor.paper .detail-actions button{color:var(--tourer);border-color:var(--line-strong)}
.floor.paper .detail-actions button:hover{background:var(--linen)}
.floor.paper .state.working{color:var(--working)}.floor.paper .state.reference{color:var(--reference)}.floor.paper .state.open{color:var(--open)}.floor.paper .state.blocked{color:var(--blocked)}.floor.paper .state.stale{color:var(--stale)}.floor.paper .state.gate{color:#6B7400}.floor.paper .state.zone{color:var(--muted)}
.floor.paper .plate[aria-pressed="true"]{box-shadow:0 0 0 2px var(--white),0 0 0 5px var(--tourer)}
.floor.paper .plate:focus-visible{box-shadow:0 0 0 2px var(--white),0 0 0 5px var(--blue)}
.floor.paper .edge-label{color:var(--muted);background:rgba(250,248,242,.92);border-color:var(--line-strong)}
.floor.paper .edge-label.approval{color:#6B7400}.floor.paper .edge-label.return{color:var(--reference)}
.floor.paper .flag{background:var(--lime);color:var(--ink)}
@media (max-width:1100px){
  .floor.paper .plates::before{background:var(--line-strong)}
  .floor.paper .plates .zone-head{color:var(--muted)}
  .floor.paper .plates .zone-head::before{background:var(--white);border-color:var(--line-strong)}
  .floor.paper .plate::before{background:var(--line-strong)}
  .stage-wrap.pan svg.stage{display:block;min-width:1100px}
  .stage-wrap.pan{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:6px}
  .stage-wrap.pan .plates{margin-top:16px}
  .stage-wrap.keep svg.stage{display:block}
  .pan-hint{display:block;margin:6px 0 0;color:#B6D9C4;font-size:12px}
  .floor.paper .pan-hint{color:var(--muted)}
}
.pan-hint{display:none}
@media (max-width:1100px){.stage-wrap.pan .pan-hint{display:block}}
@media (prefers-reduced-motion:reduce){.stage .spin,.stage .open-blade,.stage .fan,.stage .lamp-on,.stage .stamp,.stage .pulse{animation:none!important}}
@media print{.stage .spin,.stage .open-blade,.stage .fan{animation:none!important}}
@media (max-width:1100px){
  .plate.pos-c,.plate.pos-l,.plate.pos-r,.plate.pos-b,.plate.pos-c:hover,.plate.pos-l:hover,.plate.pos-r:hover,.plate.pos-b:hover{transform:none}
  .stage-wrap.keep svg.stage,.stage-wrap.pan svg.stage{margin-bottom:14px}
}
.stage .m-only{display:none}
@media (max-width:1100px){.stage .m-only{display:block}}

/* Audit: V2 plate transforms must not override the print grid. */
@media print{.stage-wrap svg.stage,.stage-wrap.pan svg.stage,.stage-wrap.keep svg.stage{display:none!important}.plate.pos-c,.plate.pos-l,.plate.pos-r,.plate.pos-b{position:static!important;transform:none!important;width:auto!important}}
