/* TEMPORARY — remove at merge if pn-type-cabinet-20260912.css (or the G10 sweep landing in the
   main checkout) already declares a literal `Inter` @font-face by then. This worktree's copy of
   the codebase does not yet carry one (this file's own `Inter` literal, and this sheet's fix of
   pn-system-v4.css to also register `font-family:Inter` under its own name — see that file's
   2026-09-19 comment — are the only source of it here). Kept here too so this sheet renders
   correctly even if loaded before pn-system-v4.css or in isolation. */
@font-face{font-family:Inter;src:url('../../fonts/inter-400.woff2') format('woff2-variations');font-weight:100 900;font-display:swap}

/* pn-pitch-flow-20260919.css — ONE DESIGNED SEQUENCE: BRIEF -> WORK READY -> THE REVIEW -> VERDICT.
   =============================================================================================
   Jon, 2026-09-19, across three separate live sessions:
     - brief dossier + response board: "the design of these sections is terribly weak."
     - Work ready: "this screen STILL looks shot — the half closed laptop, the shoddy type design
       and layout… this was on your list last week."
     - THE REVIEW: "OMG and this PP screen STILL looks shot and was the biggest ask last weekend —
       WHAT IS HAPPENING?"
     - then, looking at the VERDICT screen (`.result-screen`, the one everyone agrees is good):
       "this screen is good so why does the preceding presentation experience look so different
       and crappy?"

   THIS REPLACES SEVEN PATCH SHEETS (kept on disk, unlinked from play.html — reversible):
     pn-review-20260731.css · pn-review-20260914.css · pn-review-recompose-20260914.css ·
     pn-ready-close-20260912.css · pn-ready-laptop-craft-20260914.css · pn-docket-fold-20260912.css ·
     pn-pitch-beats-20260914.css
   Seven passes, each re-lighting or re-stacking the SAME layout, is why it still reads assembled.
   This is one pass that borrows the one component in the whole journey Jon has approved without
   qualification — the verdict screen — and extends its actual language (dark ground, one orange,
   one display face, the ledger-row idiom, the hero word) backwards through the two screens that
   lead to it. Loaded genuinely last (after pn-final-20260820.css), so it wins the cascade the
   same way every other terminal sheet in this file does.

   ── THE LANGUAGE, IN ONE PLACE (mirrors .result-screen / .pn-rz-*; see style-01.css:1147-1183) ──
   --pf-bg     dark glass ground, same gradient as .pn-rz .result-inner
   --pf-ink    #eef3fb — the one ink, both themes (these are PINNED-DARK cinematic surfaces, same
               standing exception as .vc-summons/.result-screen — UX_RULES §5, recorded here)
   --pf-acc    #f97316 bright orange — the ONE accent. Status (RAG) stays on small chips/stripes,
               never on a hero-scale headline (the "AMENDS in a third colour at hero scale" fault).
   --pf-disp   the type-cabinet face (--pn-type-face, §5g IN-GAME headline treatment)
   --pf-mono   JB — eyebrows, labels, data

   THEME INTEGRITY (coordinator round 2, correcting the first pass): the brief dossier + response
   board live INSIDE the device, on the office page — they are not a full-bleed cinematic set-piece
   the way Work Ready/THE REVIEW/the Verdict are, so pinning them dark regardless of theme broke
   UX_RULES §5 theme integrity ("a theme switch must VISIBLY repaint every management surface").
   They are now genuinely theme-reactive: DARK glass in dark theme, PORCELAIN + burnt-orange with
   WHITE ink in light theme (SST §5f ink law — light-theme burnt-orange `#b4380d` takes white,
   never the dark-theme near-black). Work Ready + THE REVIEW stay pinned dark, full-bleed, matching
   the Verdict (itself unconditionally dark, style-01.css:1155, no theme selector) — that scope is
   confirmed correct; only the in-device dossier/response needed correcting.
   ============================================================================================= */

html body .wr-doss, html body .wr-resp,
html body .pn-ready, html body .pn-review{
  --pf-bg0:#0a0f1c; --pf-bg1:#050810;
  --pf-panel:linear-gradient(168deg,rgba(17,25,42,.94),rgba(8,13,22,.97));
  --pf-panel-2:linear-gradient(168deg,rgba(22,31,50,.92),rgba(11,17,28,.95));
  --pf-ink:#eef3fb; --pf-dim:rgba(238,243,251,.74); --pf-dim2:rgba(238,243,251,.5);
  --pf-hair:rgba(255,255,255,.14); --pf-hair-2:rgba(255,255,255,.22);
  --pf-acc:#f97316; --pf-acc-ink:#160a02;
  --pf-ok:#3ddc84; --pf-amend:#ffb638; --pf-bad:#ff6a55;
  /* §5g-ii (CEO ruling, mid-task 2026-09-19): ONE face for every in-game heading/subheading —
     Inter 900, -0.03em tracking, sentence case. Named directly (not through the `IN` alias —
     that token pointed a phantom face first with no confirmed @font-face reaching every screen;
     the shared token is fixed at source in pn-type-cabinet-20260912.css/pn-arcade-hub-20260914.css
     in this same pass, and this local var names Inter with no dependency on that alias at all). */
  --pf-disp:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --pf-mono:var(--pn-type-mono,'JB',ui-monospace,'JetBrains Mono',monospace);
  color:var(--pf-ink);
}
/* LIGHT THEME — the in-device dossier + response board ONLY (Work Ready/THE REVIEW keep the dark
   block above; both selector lists are deliberately disjoint). Porcelain surface (SST §2
   `surface-container` #e5eeff family), near-black navy ink, burnt-orange accent taking WHITE ink
   on its own fill (ink law). */
html body.mvc-light .wr-doss, html body.mvc-light .wr-resp{
  --pf-panel:linear-gradient(180deg,#f8f9ff,#eef1f8);
  --pf-panel-2:linear-gradient(180deg,#eef1f8,#e3e8f2);
  --pf-ink:#0b1c30; --pf-dim:rgba(11,28,48,.74); --pf-dim2:rgba(11,28,48,.52);
  --pf-hair:rgba(11,28,48,.16); --pf-hair-2:rgba(11,28,48,.26);
  --pf-acc:#b4380d; --pf-acc-ink:#ffffff;
  --pf-ok:#12703d; --pf-amend:#8a5008; --pf-bad:#b0261a;
}
/* ⛔ THE NEON LEAK (coordinator round 2): the "+"/"?" glyphs on THE WORD/THE BACKGROUND/YOUR ANGLE
   picked up the player's equipped cosmetic accent (Neon pack = pink/magenta) via `var(--accent)`
   in style-01.css (`.wr-more-cue::after`, `.help-chip:hover`, etc). Brand chrome inside the
   dossier is fixed-orange regardless of any equipped Store cosmetic (SST §5f/§5g-ii — cosmetic
   recolour touches gameplay surfaces, never the document/board idiom) — overriding `--accent`
   itself in this scope fixes every consumer of it at once, not just the ones this file styles
   directly. */
html body .wr-doss, html body .wr-resp{ --accent:#f97316; --accent-ink:#160a02; --glow:249,115,22; }
html body.mvc-light .wr-doss, html body.mvc-light .wr-resp{ --accent:#b4380d; --accent-ink:#fff; --glow:180,56,13; }
/* the actual carrier of the leak, found by computed style, not guessed: `.wr-more-cue`'s border
   is `rgba(var(--glow),.42)` (pn-touch-20260801.css:513) and `--glow` defaults to Neon Onyx pink
   (255,46,136 — mvc-os.css:51, the DARK theme's own default pack) wherever nothing more specific
   sets it — `--accent` was never the carrier for this one. Pinned here alongside `--accent`. */

/* ── shared primitives ────────────────────────────────────────────────────────────────────── */
html body .pf-eyebrow{ font:800 11px/1 var(--pf-mono); letter-spacing:.24em; text-transform:uppercase; color:var(--pf-acc); }
html body .pf-hair{ border-color:var(--pf-hair) !important; }
/* sentence-case-from-caps trick for source strings still baked ALL CAPS in JS (kept only where a
   JS split wasn't worth the risk this round — e.g. `room-eyebrow`'s literal "THE TEAM ON THE JOB"
   string): lowercase everything, then re-capitalise just the first letter. Fails on a string that
   starts with a digit, which is why the three-step numbers (wr-doss-stamp/wr-resp-band/wr-tab)
   were split at the JS source instead — see wrDossierHTML/screenPitch, 2026-09-19 round 2. */
html body .pf-sentence{ text-transform:lowercase !important; }
html body .pf-sentence::first-letter{ text-transform:uppercase !important; }

/* =============================================================================================
   1 · THE BRIEF DOSSIER + RESPONSE BOARD (wrDossierHTML / .wr-resp / .wr-work)
   ============================================================================================= */
html body .wr-doss{
  background:var(--pf-panel) !important; border:1px solid var(--pf-hair) !important;
  border-radius:14px !important; box-shadow:0 20px 60px rgba(0,0,0,.45) !important;
  overflow:hidden;
}
html body .wr-doss-band{
  display:flex; align-items:center; gap:14px; padding:12px 18px !important;
  background:linear-gradient(180deg,rgba(255,255,255,.05),transparent) !important;
  border-bottom:1px solid var(--pf-hair) !important;
}
html body .wr-doss-band-k{ font:800 11px/1 var(--pf-mono) !important; letter-spacing:.2em; text-transform:uppercase;
  color:var(--pf-acc) !important; font-style:normal !important; }
html body .wr-doss-band-ref, html body .wr-doss-band-cls{
  font:700 10.5px/1 var(--pf-mono) !important; letter-spacing:.14em; text-transform:uppercase;
  color:var(--pf-dim) !important; font-style:normal !important; }
html body .wr-doss-band-cls{ margin-left:auto; }
html body .wr-doss-body{ padding:20px !important; }
/* the step number is a small mono EYEBROW; the label is the real heading — Inter 900, sentence
   case (coordinator round 2: "02 · YOUR RESPONSE" as a caps mono line IS the weak treatment). */
html body .wr-doss-stamp{ display:flex !important; align-items:baseline !important; gap:10px !important; margin-bottom:8px !important; }
html body .wr-doss-stamp-n{ font:800 10.5px/1 var(--pf-mono) !important; letter-spacing:.16em; text-transform:uppercase;
  color:var(--pf-acc) !important; font-style:normal !important; flex:none; }
html body .wr-doss-stamp b{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  letter-spacing:-.02em !important; font-size:15px !important; color:var(--pf-dim) !important;
}
html body .wr-doss .wr-doss-body .wr-doss-line, html body .wr-doss-line.wr-doss-line{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  font-size:clamp(21px,2.6vw,30px) !important; line-height:1.12 !important; letter-spacing:-.03em !important;
  color:var(--pf-ink) !important; margin:6px 0 10px !important; text-wrap:balance;
}
html body .wr-doss-sub{ font:500 13.5px/1.6 IS,sans-serif !important; color:var(--pf-dim) !important; max-width:60ch; }
html body .wr-more summary{ color:var(--pf-dim) !important; border-color:var(--pf-hair) !important; }
html body .wr-more-k{ color:var(--pf-ink) !important; font-family:var(--pf-mono) !important; letter-spacing:.1em; text-transform:uppercase; font-size:11.5px !important; }
html body .wr-more-sub{ color:var(--pf-dim2) !important; }
html body .wr-doss-bg{ color:var(--pf-dim) !important; font:500 13.5px/1.65 IS,sans-serif !important; }

/* THE RESPONSE BOARD — one bolted instrument, not paper. Dark glass, orange spine (ALTERNATION
   LAW motif 6 — a brutalist slab), never cream-on-cream. */
html body .wr-resp{
  background:var(--pf-panel-2) !important; border:1px solid var(--pf-hair) !important;
  border-left:4px solid var(--pf-acc) !important; border-radius:12px !important;
  box-shadow:0 16px 44px rgba(0,0,0,.4) !important; overflow:hidden;
}
html body .wr-resp-band{
  display:flex; align-items:center; gap:12px; padding:13px 18px !important;
  background:rgba(0,0,0,.22) !important; border-bottom:1px solid var(--pf-hair) !important;
}
html body .wr-resp-band-n{ font:800 11px/1 var(--pf-mono) !important; letter-spacing:.2em; text-transform:uppercase;
  color:var(--pf-acc) !important; font-style:normal !important; flex:none; }
html body .wr-resp-band-k{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  letter-spacing:-.02em !important; font-size:16px !important; color:var(--pf-ink) !important;
}
html body .wr-resp-band-st{
  font:800 10px/1 var(--pf-mono) !important; letter-spacing:.16em; text-transform:uppercase;
  color:var(--pf-acc-ink) !important; background:var(--pf-acc) !important; padding:4px 9px; border-radius:999px;
  font-style:normal !important;
}
html body .wr-resp-band .help-chip{
  color:var(--pf-dim) !important; border-color:var(--pf-hair-2) !important; background:rgba(255,255,255,.06) !important;
}
html body .wr-work{ padding:18px !important; }
/* ⛔ THE WASHED-OUT LINE (Jon, screenshot): the instruction under the band measured under 2:1 in
   light theme because the surface was cream and the ink was a low-opacity dark. Fixed at the
   root — the surface is dark glass now, always, so ONE bright, fixed-opacity ink always applies. */
html body .wr-work > p.wr-deliver-note,
html body .wr-deliver-note{
  color:var(--pf-dim) !important; opacity:1 !important; font:500 13px/1.55 IS,sans-serif !important;
}
html body .wr-more--angle summary, html body .wr-more--page summary{ border-color:var(--pf-hair) !important; }
html body .wr-more--angle[open], html body .wr-more--page[open]{
  background:rgba(255,255,255,.03) !important; border-radius:10px;
}
html body .wr-angle{ padding:14px !important; display:flex !important; flex-direction:column !important; gap:10px !important; }
/* the details summary already states "Your angle" — the inner label repeating it six pixels
   below is the exact duplication UX_RULES §15 bans ("SAID ONCE"). Deleted visually; the row that
   held it now just carries the dice controls, right-aligned, in normal flow (was overlapping the
   textarea placeholder when the label text collapsed to nothing but the row kept its position). */
html body .wr-more--angle > .wr-angle > .wr-angle-label > .wr-angle-k{ display:none !important; }
/* THE DICE ROW OCCLUSION (coordinator round 2): the label row and the textarea below it were
   measured overlapping at the field's top edge. Given its own row, fixed height and clearance —
   not sharing a box with anything else — settles it regardless of what upstream sheet was
   fighting the margin. */
html body .wr-angle-label{
  position:static !important; display:flex !important; justify-content:flex-end !important;
  align-items:center !important; width:100% !important; margin:0 0 12px !important;
  min-height:44px !important; flex-wrap:nowrap !important;
}
html body .wr-angle textarea{ margin-top:0 !important; }
html body .wr-angle-locked{ color:var(--pf-ink) !important; font:700 15px/1.5 IS,sans-serif !important; }
html body .wr-angle textarea{
  background:rgba(0,0,0,.28) !important; border:1px solid var(--pf-hair) !important; color:var(--pf-ink) !important;
  border-radius:8px !important;
}
html body .wr-angle textarea::placeholder{ color:var(--pf-dim2) !important; }

/* ── ROLL THE DICE — the "empty white stub" fix ──────────────────────────────────────────────
   The "?" explainer button (`.pn-dice-q`) had a background forced to a pale/white fill in one
   theme with no ink set alongside it, so the glyph rendered as a blank pale box next to the dice
   button — exactly the artefact in Jon's screenshot. Both controls get one deliberate dark-glass
   treatment here, ink included, in every theme this board now ships in (pinned dark). */
html body .wr-work .pn-dice-wrap, html body.mvc-light .wr-work .pn-dice-wrap{
  display:inline-flex !important; align-items:stretch !important; gap:8px !important;
  background:none !important; border:0 !important;
}
html body .wr-work .pn-dice, html body.mvc-light .wr-work .pn-dice{
  display:inline-flex !important; align-items:center !important; gap:9px !important;
  background:rgba(255,255,255,.07) !important; border:1px solid var(--pf-hair-2) !important;
  color:var(--pf-ink) !important; border-radius:8px !important; padding:10px 16px !important;
  font:800 12px/1 var(--pf-mono) !important; letter-spacing:.08em; text-transform:uppercase;
  min-height:44px !important;
}
html body .wr-work .pn-dice:hover, html body.mvc-light .wr-work .pn-dice:hover{
  background:var(--pf-acc) !important; color:var(--pf-acc-ink) !important; border-color:var(--pf-acc) !important; }
html body .wr-work .pn-dice-i{ color:currentColor !important; width:18px !important; height:18px !important; opacity:1 !important; }
/* This selector MUST out-specificity `body.mvc-light .pn-dice-q{background:rgba(255,255,255,.7)}`
   (pn-touch-20260801.css:536, specificity 0,2,1) — that rule, with no ink set alongside it, is the
   exact "empty white stub" in Jon's screenshot. `.wr-work .pn-dice-q` + the light-mode variant
   below both clear it (0,3,1 / 0,3,2). */
html body .wr-work .pn-dice-q, html body.mvc-light .wr-work .pn-dice-q{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  width:44px !important; min-width:44px !important; height:auto !important; min-height:44px !important;
  background:rgba(255,255,255,.07) !important; border:1px solid var(--pf-hair-2) !important;
  color:var(--pf-ink) !important; border-radius:8px !important; font:800 14px/1 var(--pf-mono) !important;
  opacity:1 !important;
}
html body .wr-work .pn-dice-q:hover, html body.mvc-light .wr-work .pn-dice-q:hover,
html body .wr-work .pn-dice-q[aria-expanded="true"], html body.mvc-light .wr-work .pn-dice-q[aria-expanded="true"]{
  background:var(--pf-acc) !important; color:var(--pf-acc-ink) !important; border-color:var(--pf-acc) !important; }
html body .pn-dice-help{
  background:rgba(0,0,0,.3) !important; border:1px solid var(--pf-hair) !important; color:var(--pf-dim) !important;
  border-radius:8px; padding:10px 12px !important;
}

/* =============================================================================================
   2 · WORK READY (.pn-ready) — the laptop metaphor is retired after three failed material passes
   (09-01, 09-12, 09-14) — each time the settled state is a thin closed sliver stranded under a
   huge empty gap, with the deck's own data (the pillar scores) hidden inside it. The pillar list
   already exists in the DOM (`.pnr-deck`/`.pnr-pill`) with real data — the fix is to let it be
   the hero object, in the CONTACT-REPORT idiom the Verdict screen already proved works, instead
   of dressing it as a laptop. CSS-only: the fold/hinge/base decoration is neutralised, `.pnr-lid`
   becomes the card in its own right, and the vertical rhythm is one composition, not two.
   ============================================================================================= */
html body .pn-ready .pnr-lid-back,
html body .pn-ready .pnr-seam,
html body .pn-ready .pnr-base{ display:none !important; }
html body .pn-ready .pnr-lap-rig, html body .pn-ready .pnr-lap{
  transform:none !important; perspective:none !important;
}
html body .pn-ready.is-lap .pnr-lid,
html body .pn-ready.is-closed .pnr-lid,
html body .pn-ready .pnr-lid{
  transform:none !important; animation:none !important; transition:none !important;
}
/* style-01.css:5634 `.pn-ready.is-closed .pnr-screen{opacity:0}` is the OTHER HALF of the closing
   choreography — the lid rotation is gone (above) but the JS still adds `.is-closed` at 4260ms on
   its own timer, so without this the case renders as a blank dark box forever (measured: exactly
   the empty panel in the first render of this fix). The case is not closing any more; its content
   stays visible from the moment it mounts. */
html body .pn-ready.is-closed .pnr-screen,
html body .pn-ready .pnr-screen{ opacity:1 !important; transition:none !important; }
html body .pn-ready .pnr-lid{
  position:relative; background:var(--pf-panel) !important; border:1px solid var(--pf-hair-2) !important;
  border-top:4px solid var(--pf-acc) !important; border-radius:16px !important;
  box-shadow:0 30px 70px rgba(0,0,0,.5) !important; overflow:visible !important;
  /* style-01.css:5628 locks this to a 16:10 laptop-screen shape — the exact reason 5 ledger rows
     + a headline + a quote were clipping. It is a flat case now: height follows its content. */
  aspect-ratio:auto !important; height:auto !important; width:100% !important;
}
html body .pn-ready .pnr-screen{
  position:static !important; width:100% !important; height:auto !important; padding:26px 28px !important;
  display:flex !important; flex-direction:column !important; gap:16px;
  background:none !important;
}
html body .pn-ready .pnr-scr-k{
  font:800 10.5px/1 var(--pf-mono) !important; letter-spacing:.18em; text-transform:uppercase; color:var(--pf-acc) !important;
}
html body .pn-ready .pnr-scr-h{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  font-size:clamp(30px,4.2vw,46px) !important; line-height:.98 !important; letter-spacing:-.03em !important;
  color:var(--pf-ink) !important; margin:0 !important; text-wrap:balance;
}
html body .pn-ready .pnr-scr-angle{
  font:600 italic 16px/1.5 IS,sans-serif !important; color:var(--pf-dim) !important; margin:0 !important;
  border-left:2px solid var(--pf-acc); padding-left:12px;
}
/* the pillar row, restyled as the SAME ledger-row idiom as `.pn-rz-rows` on the verdict —
   label · track · numeral, one lead marked, so the deck's own strength reads at a glance */
html body .pn-ready .pnr-deck{ display:flex !important; flex-direction:column !important; gap:8px !important; }
html body .pn-ready .pnr-pill{
  display:grid !important; grid-template-columns:120px 1fr 40px auto !important; align-items:center !important; gap:12px !important;
  background:rgba(255,255,255,.04) !important; border:1px solid var(--pf-hair) !important; border-radius:8px !important;
  padding:9px 12px !important; position:relative !important; overflow:visible !important;
}
html body .pn-ready .pnr-pill.is-lead{ border-color:var(--pf-acc) !important; background:rgba(249,115,22,.1) !important; }
html body .pn-ready .pnr-pill b{
  font:700 12px/1 var(--pf-mono) !important; letter-spacing:.06em; text-transform:uppercase; color:var(--pf-ink) !important;
}
html body .pn-ready .pnr-pill i{
  grid-column:2; height:6px; border-radius:999px; background:rgba(255,255,255,.1) !important; position:relative; overflow:hidden;
  display:block !important;
}
html body .pn-ready .pnr-pill i u{
  position:absolute; inset:0; width:var(--q); background:var(--pf-acc) !important; border-radius:999px; display:block;
}
html body .pn-ready .pnr-pill .pnr-q{ font:800 13px/1 var(--pf-mono) !important; color:var(--pf-ink) !important; text-align:right; }
html body .pn-ready .pnr-pill em{
  font:800 9.5px/1 var(--pf-mono) !important; letter-spacing:.1em; text-transform:uppercase; font-style:normal !important;
  color:var(--pf-acc-ink) !important; background:var(--pf-acc) !important; padding:3px 7px; border-radius:999px;
}
html body .pn-ready .pnr-scr-foot{
  display:flex; justify-content:space-between; margin-top:4px; padding-top:14px; border-top:1px solid var(--pf-hair);
  font:700 11px/1 var(--pf-mono) !important; letter-spacing:.08em; text-transform:uppercase; color:var(--pf-dim) !important;
}
/* ONE COMPOSITION: the case and the CTA stack as siblings with one rhythm, not a floating card
   over a dead gap over a hardware sliver. */
html body .pn-ready-inner{
  display:flex !important; flex-direction:column !important; align-items:center !important; justify-content:flex-start !important;
  gap:clamp(22px,3.4vh,40px) !important; padding:clamp(24px,5vh,56px) 20px !important;
  position:relative !important; z-index:2; margin:auto 0 !important;
  /* the case + CTA together can run taller than a short/narrow viewport (5 ledger rows + the CTA
     block) — the OUTER `.pn-ready` scrolls the whole column rather than clipping it (UX_RULES: no
     dead crop, no h-scroll). flex-start + auto margins (not `center`) is what lets a tall column
     start at the top and scroll, instead of being squeezed/overlapped by a centred flex box that
     never reports its true scrollHeight. */
  width:100%; flex:none !important;
}
html body .pn-ready{ overflow-y:auto !important; -webkit-overflow-scrolling:touch; align-items:flex-start !important; }
@media (max-width:480px){
  html body .pn-ready .pnr-pill{ grid-template-columns:88px 1fr 32px auto !important; padding:7px 10px !important; }
  html body .pn-ready .pnr-screen{ padding:18px 18px !important; gap:12px; }
  html body .pn-ready .pnr-scr-h{ font-size:clamp(24px,7vw,32px) !important; }
}
html body .pn-ready .pnr-lap{ position:static !important; margin:0 auto !important; width:min(680px,100%) !important; max-width:100% !important; box-sizing:border-box !important; } /* round 2 #16: 92vw overflowed the padded phone box */
html body .pn-ready .pnr-cta{
  position:static !important; width:min(680px,100%) !important; margin:0 auto !important;
  display:flex !important; flex-direction:column !important; align-items:center !important; gap:16px !important;
  opacity:1 !important; transform:none !important; animation:none !important;
}
html body .pn-ready-head{ display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center; }
html body .pn-ready-eyebrow{ font:800 11px/1 var(--pf-mono) !important; letter-spacing:.22em; text-transform:uppercase; color:var(--pf-acc) !important; }
html body .pn-ready .pn-ready-head .pn-ready-title, html body .pn-ready-title.pn-ready-title{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  font-size:clamp(30px,4.6vw,46px) !important; line-height:1 !important; letter-spacing:-.03em !important;
  color:var(--pf-ink) !important; margin:0 !important;
}
html body .pn-ready-sub{ color:var(--pf-dim) !important; text-align:center; max-width:56ch; font:500 14px/1.55 IS,sans-serif !important; }
html body .pn-ready-actions{ display:flex; flex-direction:column; gap:10px; width:100%; max-width:420px; }
html body .pn-ready .pnr-bleed{ z-index:0 !important; }
html body .pn-ready .pn-ready-scrim{ z-index:1 !important; }

/* =============================================================================================
   3 · THE REVIEW (.pn-review) — joins the verdict's language outright: dark ground throughout
   (kills the light-sheet/dark-band seam), one accent for hero scale, RAG demoted to the small
   status chips/track where it belongs, the tester lane reserved, the bleed word behind the mast.
   ============================================================================================= */
html body .pn-review{ background:var(--pf-bg1) !important; }
html body .pn-review .rv-shell{
  background:var(--pf-panel) !important; color:var(--pf-ink) !important;
}
html body .pn-review .rv-bleed{
  z-index:0 !important; color:rgba(255,255,255,.05) !important; -webkit-text-fill-color:rgba(255,255,255,.05) !important;
}
html body .pn-review .rv-mast{ position:relative; z-index:2; background:rgba(0,0,0,.18) !important; border-bottom:1px solid var(--pf-hair) !important; }
html body .pn-review .rv-brand{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important; letter-spacing:-.03em !important; color:var(--pf-ink) !important;
}
html body .pn-review .rv-meta{ color:var(--pf-dim) !important; font-family:var(--pf-mono) !important; }
html body .pn-review .rv-atstake-k{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; letter-spacing:.14em; text-transform:uppercase; }
html body .pn-review .rv-atstake-v{ color:var(--pf-acc) !important; font-family:var(--pf-disp) !important; font-weight:900 !important; letter-spacing:-.03em !important; }
html body .pn-review .rv-atstake-s{ color:var(--pf-dim) !important; }

/* the sheet — dark glass, never cream. This is THE fix for the light-sheet/dark-band seam. */
html body .pn-review .rv-body{ background:none !important; }
html body .pn-review .rv-sheet{ background:rgba(0,0,0,.16) !important; border-right:1px solid var(--pf-hair) !important; }
html body .pn-review .rv-sheet-hd, html body .pn-review .rv-cols{
  color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; letter-spacing:.08em; text-transform:uppercase;
  border-color:var(--pf-hair) !important;
}
html body .pn-review .rv-row{ border-color:var(--pf-hair) !important; }
html body .pn-review .rv-row-disc{ color:var(--pf-ink) !important; font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important; letter-spacing:-.03em !important; }
html body .pn-review .rv-row-line{ color:var(--pf-dim) !important; }
html body .pn-review .rv-row-strength{ background:rgba(255,255,255,.08) !important; }
html body .pn-review .rv-row-strength i{ background:var(--pf-acc) !important; }
html body .pn-review .rv-row-q{ color:var(--pf-dim) !important; font-family:var(--pf-mono) !important; }
/* per-row stamps keep the RAG palette — this is the correct SCALE for status colour (a small
   chip), never the hero word */
html body .pn-review .rv-stamp--approve{ color:var(--pf-ok) !important; border-color:var(--pf-ok) !important; }
html body .pn-review .rv-stamp--amend{ color:var(--pf-amend) !important; border-color:var(--pf-amend) !important; }
html body .pn-review .rv-stamp--challenge{ color:var(--pf-bad) !important; border-color:var(--pf-bad) !important; }
html body .pn-review .rv-sheet-foot{ background:rgba(0,0,0,.2) !important; border-color:var(--pf-hair) !important; }
html body .pn-review .rv-foot-k{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; letter-spacing:.1em; text-transform:uppercase; }
html body .pn-review .rv-foot-angle{ color:var(--pf-ink) !important; }
html body .pn-review .rv-foot-by{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; }

html body .pn-review .rv-side{ background:rgba(0,0,0,.24) !important; }
html body .pn-review .rv-client-id b{ color:var(--pf-ink) !important; }
html body .pn-review .rv-client-id span{ color:var(--pf-dim) !important; }
html body .pn-review .rv-client-id em{ color:var(--pf-acc) !important; font-style:normal !important; }
html body .pn-review .rv-said{ color:var(--pf-ink) !important; }
html body .pn-review .rv-hist{ border-color:var(--pf-hair) !important; }
html body .pn-review .rv-hist-k, html body .pn-review .rv-notes-hd{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; letter-spacing:.1em; text-transform:uppercase; }
html body .pn-review .rv-hist-t{ color:var(--pf-dim) !important; }
html body .pn-review .rv-note{ background:rgba(255,255,255,.04) !important; border-color:var(--pf-hair) !important; }
html body .pn-review .rv-note-t{ color:var(--pf-ink) !important; }
html body .pn-review .rv-note-by{ color:var(--pf-dim2) !important; }
html body .pn-review .rv-note-empty{ color:var(--pf-dim2) !important; }

/* ⛔ THE HERO WORD IS ONE INK. Previously `.rv-signoff-stamp` (blown to hero scale by the 14 Sep
   recompose) painted the RAG hue directly — green/amber/red at the size the verdict screen
   reserves for ONE accent. Ink law (SST §5f/§5g): a hero headline takes the theme's ONE ink; the
   outcome is read from the small dot beside it + the track beneath, exactly like the verdict
   screen reads win/lose from --rv, not from a rainbow of hero words. */
html body .pn-review .rv-signoff{ background:rgba(0,0,0,.34) !important; border-top:4px solid var(--pf-acc) !important; }
html body .pn-review .rv-signoff-k{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; letter-spacing:.14em; text-transform:uppercase; }
html body .pn-review .rv-signoff-k .d{
  display:inline-block; width:8px; height:8px; border-radius:999px; background:var(--pf-acc); margin-right:8px;
}
html body .pn-review.band-live-approved .rv-signoff-k .d, html body .pn-review.band-approved .rv-signoff-k .d{ background:var(--pf-ok) !important; }
html body .pn-review.band-live-changes .rv-signoff-k .d, html body .pn-review.band-changes .rv-signoff-k .d{ background:var(--pf-amend) !important; }
html body .pn-review.band-live-rejected .rv-signoff-k .d, html body .pn-review.band-rejected .rv-signoff-k .d{ background:var(--pf-bad) !important; }
html body .pn-review .rv-signoff-stamp{
  font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important;
  color:var(--pf-ink) !important; -webkit-text-fill-color:var(--pf-ink) !important; border:0 !important;
  letter-spacing:-.03em !important;
}
html body .pn-review .rv-signoff-read{ color:var(--pf-dim) !important; }
/* the track keeps its RAG zones — a status stripe, exactly the scale that's earned for RAG */
html body .pn-review .rv-track{ background:rgba(255,255,255,.06) !important; border-color:var(--pf-hair) !important; }
html body .pn-review .rv-zone--rework i{ color:var(--pf-bad) !important; }
html body .pn-review .rv-zone--amend i{ color:var(--pf-amend) !important; }
html body .pn-review .rv-zone--approve i{ color:var(--pf-ok) !important; }
html body .pn-review .rv-ndl{ background:var(--pf-ink) !important; }
html body .pn-review .rv-dock{ background:rgba(0,0,0,.3) !important; border-top:1px solid var(--pf-hair) !important; }
html body .pn-review .rv-dock-note{ color:var(--pf-dim) !important; }

/* the fork sheet — dark glass card matching the response board */
html body .pn-review .rv-fork{
  background:linear-gradient(168deg,rgba(20,28,46,.97),rgba(9,14,24,.99)) !important; border-top:1px solid var(--pf-hair-2) !important;
}
html body .pn-review .rv-fork-k{ color:var(--pf-acc) !important; font-family:var(--pf-mono) !important; letter-spacing:.18em; }
html body .pn-review .rv-fork-h{ font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important; letter-spacing:-.03em !important; color:var(--pf-ink) !important; }
html body .pn-review .rv-fork-sub{ color:var(--pf-dim) !important; }
html body .pn-review .rv-opt{ background:rgba(255,255,255,.04) !important; border-color:var(--pf-hair) !important; }
html body .pn-review .rv-opt .lbl{ color:var(--pf-dim2) !important; font-family:var(--pf-mono) !important; }
html body .pn-review .rv-opt b{ color:var(--pf-ink) !important; font-family:var(--pf-disp) !important; font-weight:900 !important; font-style:normal !important; text-transform:none !important; letter-spacing:-.03em !important; }
html body .pn-review .rv-opt.is-defend{ border-color:var(--pf-acc) !important; }
html body .pn-review .rv-why{ color:var(--pf-dim) !important; border-color:var(--pf-hair) !important; background:rgba(255,255,255,.05) !important; }
html body .pn-review .rv-optdetail{ color:var(--pf-dim) !important; }
html body .pn-review .rv-stake{ background:rgba(255,255,255,.08) !important; color:var(--pf-dim) !important; }
html body .pn-review .rv-stake--odds, html body .pn-review .rv-stake--calm{ color:var(--pf-ok) !important; }
html body .pn-review .rv-stake--hot, html body .pn-review .rv-stake--dilute{ color:var(--pf-amend) !important; }

/* ⛔ THE TESTER RUN CHIP (pnos.js, fixed bottom-left, z-index 21000) occluded the dock's own
   controls on THE REVIEW — nothing on this screen ever reserved the lane the rest of the game
   already reserves (style-01.css :10484-85, :11021). Same fix, same value, applied here. */
html body.pn-tester-on .pn-review .rv-foot{ padding-left:96px !important; }
@media (max-width:760px){
  html body.pn-tester-on .pn-review .rv-foot{ padding-left:16px !important; padding-bottom:64px !important; }
  html body.pn-tester-on .pn-review .rv-dock{ padding-bottom:calc(12px + env(safe-area-inset-bottom,0px)); }
}

/* narrow widths: keep the fork sheet clear of the tester chip too */
@media (max-width:760px){
  html body.pn-tester-on .pn-review .rv-fork{ padding-bottom:calc(20px + 56px); }
}

/* =============================================================================================
   4 · ROUND 2 (coordinator review) — heading treatment inside the war-room team module, the
   Work Ready duplicate title + ghosted CTA, and THE REVIEW's row/hero/track fixes.
   ============================================================================================= */

/* "03 · THE TEAM" (the .wr-tab divider) and "THE TEAM ON THE JOB" (.room-eyebrow) were BOTH caps
   mono "headings" competing on the same module — the same duplication fault as "02 · YOUR
   RESPONSE". The step number is now a small eyebrow (.wr-tab-n, split at the JS source the same
   way as wr-doss-stamp/wr-resp-band, 2026-09-19 round 2); .room-eyebrow is promoted to the ONE
   real heading, Inter 900 sentence case (its literal JS string is still hard-caps — the
   lowercase+first-letter trick fixes it without a further JS change since "THE TEAM ON THE JOB"
   and "THE ROOM YOU'RE SENDING" both start with a real letter, not a digit). */
/* the wr-tab divider ("03 · The team … 5 disciplines") says nothing the room module directly
   below it doesn't already say ("The team on the job" heading, "5 disciplines fielded" summary)
   — its own stylesheet comment already calls it out for the §15 cut ("the fold's own summary is
   the label") but the `display:none` rule that was meant to do that (style-01.css:10826) does not
   reliably win the cascade at this view. Finished here instead of half-done. */
html body .wr-tab{ display:none !important; }
html body .room-eyebrow{
  display:block !important; font-family:var(--pf-disp,Inter,sans-serif) !important; font-weight:900 !important;
  font-size:clamp(19px,2.2vw,26px) !important; letter-spacing:-.02em !important; line-height:1.1 !important;
  color:var(--pf-ink,var(--ink)) !important;
  text-transform:lowercase !important;
}
html body .room-eyebrow::first-letter{ text-transform:uppercase !important; }
html body .room-sub{ color:var(--pf-dim,var(--muted)) !important; margin-top:4px !important; }

/* ── WORK READY: one title, one live CTA, nothing ghosted (coordinator round 2) ─────────────────
   `.pnr-scr-h` (on the case's own face) and `.pn-ready-title` (the outer CTA block) print the
   SAME string — a duplicate headline reads exactly like "02 · YOUR RESPONSE" repeating itself.
   The case is the hero object now; its own title IS the one heading. The outer block keeps its
   eyebrow + sub-copy + CTA, headline removed rather than restyled (UX_RULES §15: SAID ONCE). */
html body .pn-ready-head .pn-ready-title{ display:none !important; }
html body .pn-ready-head{ gap:4px !important; }
/* the CTA must never be caught mid-fade: kill the base opacity/transform keyframe entirely
   (style-01.css/pn-final-20260820.css animate `.pnr-cta`/`.pn-ready-actions` children in from 0)
   rather than rely on timing a screenshot correctly. Every child is opaque and un-transformed
   from the FIRST paint. */
html body .pn-ready .pnr-cta,
html body .pn-ready .pnr-cta *,
html body .pn-ready-actions,
html body .pn-ready-actions *{
  opacity:1 !important; transform:none !important; animation:none !important; transition:none !important;
  filter:none !important;
}
html body .pn-ready-actions .pn-btn--primary{
  background:var(--pf-acc) !important; color:var(--pf-acc-ink) !important; border-color:var(--pf-acc) !important;
}
html body .pn-ready-actions .pn-btn--secondary{
  background:rgba(255,255,255,.06) !important; color:var(--pf-ink) !important; border-color:var(--pf-hair-2) !important;
}

/* ── THE REVIEW round 2 ──────────────────────────────────────────────────────────────────────── */
/* the lead row (pn-review-20260731.css `.rv-row.is-lead`) bumped the discipline name to 21px and
   swapped in a taller grid-template-areas layout — reads as a hover/hit-state, not a mark. Rows
   now stay the SAME size and grid; the lead is marked by the accent left-border it already had
   (kept) — never a size jump. The quote line (real content, not decoration) still prints below
   the row, same width, just no longer inflating the discipline name beside it. */
html body .pn-review .rv-row.is-lead .rv-row-disc{ font-size:16px !important; }
html body .pn-review .rv-row.is-lead{ grid-template-columns:34px minmax(0,1fr) 108px 34px 128px !important; }
html body .pn-review .rv-row.is-lead .rv-row-line{ grid-column:2 / 4 !important; }

/* "UNSEEN"/"AMENDS"/"APPROVED"/"ON THE TABLE" are state words — headings, not eyebrows (§5g-ii) —
   so they take sentence case too, via the same lowercase+first-letter trick (none of RV_OUTCOMES'
   words start with a digit). */
html body .pn-review .rv-signoff-stamp{ text-transform:lowercase !important; }
html body .pn-review .rv-signoff-stamp::first-letter{ text-transform:uppercase !important; }

/* ONE ACCENT on the sign-off band: the track was three live hues across its full width (red/amber/
   green) — a hero-scale RAG wash, not the small chip the SST allows it as. It is now one neutral
   track with a single ORANGE position marker; RAG stays where it is legitimately earned — the
   small dot beside "SIGN-OFF" and the tiny per-page stamps on the routing sheet. */
html body .pn-review .rv-zone{ background:none !important; }
html body .pn-review .rv-zone::before{ display:none !important; }
html body .pn-review .rv-zone{ border-right-color:var(--pf-hair) !important; }
html body .pn-review .rv-zone>i{ color:var(--pf-dim2) !important; }
html body .pn-review.band-live-rejected .rv-zone--rework,
html body .pn-review.band-rejected .rv-zone--rework,
html body .pn-review.band-live-changes .rv-zone--amend,
html body .pn-review.band-changes .rv-zone--amend,
html body .pn-review.band-live-approved .rv-zone--approve,
html body .pn-review.band-approved .rv-zone--approve{ background:rgba(249,115,22,.14) !important; }
html body .pn-review.band-live-rejected .rv-zone--rework>i,
html body .pn-review.band-live-changes .rv-zone--amend>i,
html body .pn-review.band-live-approved .rv-zone--approve>i{ color:var(--pf-ink) !important; }
html body .pn-review .rv-ndl{ background:var(--pf-acc) !important; box-shadow:0 0 0 1px rgba(0,0,0,.4) !important; }

/* =============================================================================================
   5 · ROUND 3 (coordinator, final two) — the response-band at 390, the Work Ready stage-seal
   colour, the duplicate divider, and the "rec"/"lock" overprint.
   ============================================================================================= */

/* ── the response band at 390: eyebrow + heading each get their own line with room; DRAFT + "?"
   move to a second row so nothing is jammed; the band takes the SAME porcelain/dark-glass surface
   as the card above it (var(--pf-panel-2), already theme-reactive), not a flat darker grey slab
   (the grey read as `rgba(0,0,0,.22)` — a fixed dark overlay — sitting on TOP of the theme-
   reactive panel behind it; removed at this width). ────────────────────────────────────────── */
@media (max-width:480px){
  html body .wr-resp-band{
    flex-wrap:wrap !important; row-gap:6px !important; background:none !important;
    padding:14px 16px !important;
  }
  html body .wr-resp-band-n{ flex:0 0 100% !important; order:1; }
  html body .wr-resp-band-k{ flex:0 0 100% !important; order:2; font-size:18px !important; white-space:normal; }
  html body .wr-resp-band-st{ order:3; margin-left:0 !important; }
  html body .wr-resp-band .help-chip{ order:4; margin-left:auto !important; }
}

/* ── Work Ready: the stage-seal numeral is a per-stage semantic colour (amber for "present",
   pn-journey-20260801.css `--stg-hot`) — a legitimate system elsewhere, but a third colour next
   to this screen's orange CTA and ink headline. Pinned to the one accent here. ───────────────── */
html body .pn-ready .pn-stgseal-n, html body .pn-ready .pn-stgseal-t i{ color:var(--pf-acc) !important; }

/* the "— THE WORK IS READY —" divider repeats the case's own "Work ready" title directly above
   it — the same SAID-ONCE fault as the outer `.pn-ready-title`, just in mono instead of Inter.
   Dropped; the sub-copy line and the CTA carry the message on their own. */
html body .pn-ready-head .pn-ready-eyebrow{ display:none !important; }

/* the top-left status line was two strings sharing one box — `.rec` ("THE STUDIO · WORKING THE
   ACCOUNT") in normal flow and `.lock` ("WORK LOCKED // WALK IN & LAND IT") absolutely positioned
   on top of it (style-01.css:5584), meant to crossfade on the `.is-cta` timer this design no
   longer runs (the CTA is visible from first paint, round 2). Without that timer both sat at
   opacity 1 at once and overprinted. The settled state IS the locked state — this screen only
   exists once the work is ready — so `.lock` wins outright, always. */
html body .pn-ready .pnr-site .rec{ opacity:0 !important; }
html body .pn-ready .pnr-site .lock{ opacity:1 !important; position:static !important; transform:none !important; }
html body .pn-ready .pnr-site-l{ display:block !important; }

/* ── Merge sweep (2026-09-19, measured on the merged tree, not assumed) ─────────────────────
   1. `.wr-mh-name` was still Instrument Sans 900 — it is explicitly excluded from the pitch-view
      h2 rule in style-01 L8139. One heading face, §5g-ii.
   2. `.bop-ask` ("You call it" / weeks) measured 700 after the merge; hero weight is 900 (G6).
   3. Neon pink still reached `.wr-more-cue` borders outside `.wr-doss/.wr-resp` and the floating
      `.shard`. Brand elements never track the cosmetic palette: pin the three carriers for the
      whole pitch view, both themes. */
html body[data-view="pitch"] .wr-masthead .wr-mh-name,
html body .wr-mh-name{ font-family:Inter,ui-sans-serif,system-ui,sans-serif !important; font-weight:900 !important; letter-spacing:-.03em !important; text-transform:none !important; }
html body .pn-fwin .bop-ask, html body .bop-ask, html body .bop-hero-v{ font-weight:900 !important; }
html body[data-view="pitch"], html body[data-view="pitch"] .screen, html body[data-view="pitch"] .pn-fwin{
  --accent:#f97316; --p:#f97316; --glow:249,115,22; }
html body.mvc-light[data-view="pitch"], html body.mvc-light[data-view="pitch"] .screen, html body.mvc-light[data-view="pitch"] .pn-fwin{
  --accent:#b4380d; --p:#b4380d; --glow:180,56,13; }

/* ══ THE PILLAR BAR READS ITS OWN VERDICT · 2026-09-19 ════════════════════════════════════════
   CEO: "surely some should be green not orange?" — and he was looking at two different clients
   whose decks both scored 10 / 34 / 40 / 43 / 47 in the same accent. Two defects in one row:
   the numbers did not move (fixed in script-01.js — the OVR floor plus damping-from-zero left no
   headroom, and auto-played work was a literal constant), and the bar painted `--pf-acc` at
   every value, so a 10 and a 90 were the same colour and only length told them apart.

   Four bands now, semantic and NOT the accent — the accent still belongs to the LEAD pillar
   alone, so "this is your strongest" and "this is a good score" stay two separate readings
   instead of collapsing into one orange. Thresholds match the class names emitted by the
   renderer, so copy and colour cannot drift: weak <35 · fair 35-49 · good 50-69 · strong 70+.
   Contrast is carried by the numeral, not the 6px bar — colour here is the second signal, never
   the only one (UX_RULES §1: nothing critical is encoded in hue alone). */
html body .pn-ready .pnr-pill.q-weak   i u{ background:#E5484D !important; }   /* it is not there yet */
html body .pn-ready .pnr-pill.q-fair   i u{ background:#E8862C !important; }   /* serviceable */
html body .pn-ready .pnr-pill.q-good   i u{ background:#3FB950 !important; }   /* genuinely good */
html body .pn-ready .pnr-pill.q-strong i u{ background:#2EA043 !important; }   /* the room will feel this */

/* The numeral takes the same band, so the score is legible as good/bad without measuring the
   bar — and so the reading survives for anyone who cannot separate the hues at 6px. */
html body .pn-ready .pnr-pill.q-weak   .pnr-q{ color:#FF7B7F !important; }
html body .pn-ready .pnr-pill.q-fair   .pnr-q{ color:#F0A050 !important; }
html body .pn-ready .pnr-pill.q-good   .pnr-q,
html body .pn-ready .pnr-pill.q-strong .pnr-q{ color:#56D364 !important; }

/* A strong pillar earns a visible edge — the one place the row is allowed to shout, and it is
   earned by the score rather than assigned by position. */
html body .pn-ready .pnr-pill.q-strong{ border-color:rgba(46,160,67,.55) !important; }
