/* Extracted from play.html by tools/split_play.py — INFRA.
   Linked at the SAME position the <style> block occupied: this sheet's cascade order
   is load-bearing, including several deliberate late overrides. */

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   ONE LANGUAGE PASS — CEO-17 (stage identity) · CEO-15 (the build sheet) · CEO-16 (one button)
   2026-08-01. Three notes from the same complaint: the journey doesn't declare itself, the right
   column wastes the best real estate, and the controls speak five dialects. Answered as ONE system.

   LAWS HELD: ALTERNATION (SST §5f) — the stage rail and the build-sheet letterhead are CHROME, so
   they go DARK on light themes and PALE MACHINED SLATE on dark ones, with the stage carried by an
   ACCENT FILL + INVERTED INK, never a tint. NO element catch-alls — every selector below names a
   component class. Tap targets ≥44px (pn-touch-20260801) are preserved, never shrunk.
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* ── 1. STAGE TOKENS ───────────────────────────────────────────────────────────────────────────
   A temperature ladder, not four decorative hues: cold steel (reading) → the house burnt orange
   (making) → hot amber (the room, lights up) → a stamped inversion (final). Two values per stage:
   --stg-hot paints on DARK ground, --stg-deep paints on LIGHT ground. Ink is declared both ways. */
#pn-stagerail, .pn-stgseal{
  --stg-hot:#8fb6e8; --stg-deep:#1d4f86; --stg-on-hot:#07121f; --stg-on-deep:#f4f8ff;
}
#pn-stagerail[data-stg="brief"],   .pn-stgseal[data-stg="brief"]{
  --stg-hot:#8fb6e8; --stg-deep:#1d4f86; --stg-on-hot:#07121f; --stg-on-deep:#f4f8ff; }
#pn-stagerail[data-stg="build"],   .pn-stgseal[data-stg="build"]{
  --stg-hot:#ff8a4f; --stg-deep:#9d4300; --stg-on-hot:#07080c; --stg-on-deep:#ffffff; }
#pn-stagerail[data-stg="present"], .pn-stgseal[data-stg="present"]{
  --stg-hot:#fbbf24; --stg-deep:#8a5a00; --stg-on-hot:#0b1c30; --stg-on-deep:#ffffff; }
#pn-stagerail[data-stg="verdict"], .pn-stgseal[data-stg="verdict"]{
  --stg-hot:#eef3fb; --stg-deep:#0b1c30; --stg-on-hot:#0b1c30; --stg-on-deep:#eef3fb; }
/* the segments inside the rail each carry their OWN stage colour, so the spine reads as a ladder */
/* LIGHT theme → the rail is a DARK slab, so the stage fill is the BRIGHT tint with near-black ink */
#pn-stagerail .pn-stgseg[data-stg="brief"]  { --seg-fill:#8fb6e8; --seg-ink:#07121f }
#pn-stagerail .pn-stgseg[data-stg="build"]  { --seg-fill:#ff8a4f; --seg-ink:#07080c }
#pn-stagerail .pn-stgseg[data-stg="present"]{ --seg-fill:#fbbf24; --seg-ink:#0b1c30 }
#pn-stagerail .pn-stgseg[data-stg="verdict"]{ --seg-fill:#eef3fb; --seg-ink:#0b1c30 }
/* DARK theme → the rail is PALE SLATE, so the stage fill is the DEEP tint with light ink */
html body:not(.mvc-light) #pn-stagerail .pn-stgseg[data-stg="brief"]  { --seg-fill:#1d4f86; --seg-ink:#f4f8ff }
html body:not(.mvc-light) #pn-stagerail .pn-stgseg[data-stg="build"]  { --seg-fill:#9d4300; --seg-ink:#ffffff }
html body:not(.mvc-light) #pn-stagerail .pn-stgseg[data-stg="present"]{ --seg-fill:#8a5a00; --seg-ink:#ffffff }
html body:not(.mvc-light) #pn-stagerail .pn-stgseg[data-stg="verdict"]{ --seg-fill:#0b1c30; --seg-ink:#eef3fb }

/* ── 2. THE STAGE RAIL — the persistent marker, obeying the ALTERNATION LAW ──────────────────── */
#pn-stagerail{
  --rail-ink:#eaf1fb; --rail-dim:rgba(234,241,251,.78); --rail-hair:rgba(234,241,251,.2);
  display:flex; align-items:stretch; gap:0; position:sticky; top:0; z-index:19;
  padding:0 clamp(8px,2.4vw,22px); min-height:38px; max-width:100%;
  background-color:#0a1a2c;                                  /* light theme → DARK slab (opaque) */
  background-image:linear-gradient(180deg,#0f2138,#0a1a2c);
  color:var(--rail-ink);
  border-bottom:2px solid rgba(0,0,0,.55);
  box-shadow:0 1px 0 rgba(234,241,251,.09) inset, 0 10px 22px -18px rgba(9,16,28,.9);
  overflow:hidden;
}
html body:not(.mvc-light) #pn-stagerail{                     /* dark theme → PALE MACHINED SLATE */
  background-color:#d3dbe7;
  background-image:linear-gradient(180deg,#e3e9f2,#d3dbe7 62%,#cbd5e2);
  --rail-ink:#0b1c30; --rail-dim:rgba(11,28,48,.82); --rail-hair:rgba(11,28,48,.24);
  border-bottom:2px solid rgba(6,11,20,.7);
  box-shadow:0 1px 0 rgba(255,255,255,.85) inset, 0 12px 26px -18px rgba(0,0,0,.7);
}
/* chrome weight rises with the stage — a quiet pressure gauge you feel before you read it */
#pn-stagerail[data-stg="brief"]  { border-bottom-width:1px }
#pn-stagerail[data-stg="build"]  { border-bottom-width:2px }
#pn-stagerail[data-stg="present"]{ border-bottom-width:3px }
#pn-stagerail[data-stg="verdict"]{ border-bottom-width:4px }
#pn-stagerail[hidden]{ display:none }
html body.pn-call-live #pn-stagerail,
html body.pn-review-live #pn-stagerail{ display:none !important }   /* Law 2: nothing floats over a set-piece */
#pn-stagerail .pn-stgseg{
  display:inline-flex; align-items:baseline; gap:.6em; padding:9px 14px;
  font-family:var(--mono),ui-monospace,monospace; letter-spacing:.2em; text-transform:uppercase;
  color:var(--rail-dim); white-space:nowrap; min-width:0;
}
#pn-stagerail .pn-stgseg b{ font-size:11px; font-weight:800; letter-spacing:.06em; font-variant-numeric:tabular-nums }
#pn-stagerail .pn-stgseg i{ font-style:normal; font-size:9.5px; font-weight:700 }
#pn-stagerail .pn-stgseg em{ font-style:normal; font-size:9.5px; font-weight:500; letter-spacing:.14em;
  opacity:.9; overflow:hidden; text-overflow:ellipsis }
#pn-stagerail .pn-stgseg.is-done{ color:var(--rail-ink); opacity:.72 }
#pn-stagerail .pn-stgseg.is-done b::after{ content:"\2713"; margin-left:.5em; font-size:.9em }
#pn-stagerail .pn-stgseg.is-next{ color:var(--rail-dim); opacity:.62 }
#pn-stagerail .pn-stgseg.is-on{
  background:var(--seg-fill); color:var(--seg-ink); font-weight:800;
  box-shadow:0 0 0 1px rgba(0,0,0,.22) inset;
}
#pn-stagerail .pn-stgseg.is-on b{ font-size:12px }
#pn-stagerail .pn-stgseg.is-on em{ opacity:1 }
#pn-stagerail .pn-stgsep{ align-self:center; width:14px; height:1px; background:var(--rail-hair); flex:none }
@media (max-width:620px){
  #pn-stagerail{ padding:0 8px; min-height:34px }
  #pn-stagerail .pn-stgseg{ padding:8px 8px; gap:.45em }
  #pn-stagerail .pn-stgseg:not(.is-on) i{ display:none }   /* one clean row at 390: numerals + the live stage */
  #pn-stagerail .pn-stgseg.is-on{ flex:1 1 auto; min-width:0; overflow:hidden }
  #pn-stagerail .pn-stgsep{ width:8px }
}

/* ── 3. THE STAGE SEAL — the inline stamp (masthead · ready · review · call · verdict) ────────── */
.pn-stgseal{ display:inline-flex; align-items:center; gap:10px; min-width:0; vertical-align:middle }
.pn-stgseal-n{
  font-family:'Inter',system-ui,sans-serif; font-weight:900; font-style:italic; font-size:30px; line-height:.8;
  letter-spacing:-.05em; color:var(--stg-hot); font-variant-numeric:tabular-nums;
  padding-right:10px; border-right:2px solid currentColor; opacity:1;
}
.pn-stgseal-t{ display:flex; flex-direction:column; gap:3px; min-width:0 }
.pn-stgseal-t i{ font-style:normal; font-family:var(--mono),ui-monospace,monospace; font-size:11px;
  font-weight:800; letter-spacing:.3em; text-transform:uppercase; color:var(--stg-hot) }
.pn-stgseal-t em{ font-style:normal; font-family:var(--mono),ui-monospace,monospace; font-size:9.5px;
  font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.78);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
/* the compact variant that rides the call's Finder title bar */
.pn-stgseal--tb{ gap:7px; margin-right:10px }
.pn-stgseal--tb .pn-stgseal-n{ font-size:14px; padding-right:7px; border-right-width:1px }
.pn-stgseal--tb i{ font-style:normal; font-family:var(--mono),ui-monospace,monospace; font-size:9px;
  font-weight:800; letter-spacing:.22em; color:var(--stg-hot) }
/* THE REVIEW's sheet is PAPER, light or dark by theme — the seal takes that surface's own tokens */
.pn-review .pn-stgseal-n, .pn-review .pn-stgseal-t i{ color:var(--rv-accent) }
.pn-review .pn-stgseal-t em{ color:var(--rv-dim) }
@media (max-width:620px){
  .pn-stgseal-n{ font-size:24px; padding-right:8px }
  .pn-stgseal-t i{ font-size:10px; letter-spacing:.24em }
}
/* the war-room masthead wears its stage as a top edge — framing, not decoration */
.wr-masthead .wr-mh-case{ top:68px }
.wr-masthead .pn-stgseal-t em{ display:none }   /* the rail above already names the room */
/* At 390 the masthead has no room for BOTH the stage seal and the floating CASE FILE stamp — the
   stamp landed on the brand headline. The stamp is retired on phones rather than crammed: the build
   sheet's letterhead prints the same case ref a screen-length below, so nothing is lost. */
@media (max-width:640px){ .wr-masthead .wr-mh-case{ display:none } }
.wr-masthead{ border-top:3px solid var(--stg-edge,transparent) }
body[data-stg="brief"]   .wr-masthead{ --stg-edge:#8fb6e8 }
body[data-stg="build"]   .wr-masthead{ --stg-edge:#ff8a4f }
/* the verdict eyebrow becomes seal + text on one baseline */
.result-eyebrow{ display:flex; align-items:center; gap:14px; flex-wrap:wrap }
.result-eyebrow-t{ display:inline-block }

/* ── 4. THE BUILD SHEET (CEO-15) ──────────────────────────────────────────────────────────────
   ONE docket, not five plates. Letterhead (chrome, alternating) → four numbered lines that fill in
   → the sign-off dock. Deliberately unequal: the team line is the tall one, because it carries the
   most content. That asymmetry is the point — a wall of equal cells is what it replaced.          */
@media (min-width:1080px){ .wr-split{ grid-template-columns:minmax(0,1fr) 344px } }
.wr-rail{ gap:0 }
/* INK CONTRACT (UX Law 1: ink is never inherited or assumed). The war room's own token set resolves
   --mvc-fg to WHITE inside the light "rust paper" world — measured 1.24:1 on the first gate run. So
   the docket declares its OWN paper and its OWN ink, both directions, exactly like THE REVIEW's
   --rv-* pair. The accent-bearing NON-TEXT parts still read --p/--p2, so theme packs repaint it. */
.wr-bs{
  --bs-paper:#f6f3ec; --bs-ink:#141b26; --bs-dim:rgba(20,27,38,.78); --bs-hair:rgba(20,27,38,.17);
  --bs-acc:#9d4300; --bs-pos:#146b3f; --bs-neg:#a8321d; --bs-track:rgba(20,27,38,.14);
  --bs-head-bg:#0a1a2c; --bs-head-img:linear-gradient(180deg,#0f2138,#0a1a2c);
  --bs-head-ink:#eaf1fb; --bs-head-dim:rgba(234,241,251,.8); --bs-head-hair:rgba(234,241,251,.22);
  position:relative; display:flex; flex-direction:column; min-width:0;
  background:var(--bs-paper);
  border:1px solid var(--bs-hair); border-radius:3px; color:var(--bs-ink); overflow:hidden;
  box-shadow:0 18px 40px -26px rgba(0,0,0,.6);
}
html body:not(.mvc-light) .wr-bs{                        /* ALTERNATION: dark page → pale letterhead */
  --bs-paper:#12161f; --bs-ink:#eef2f8; --bs-dim:rgba(238,242,248,.8); --bs-hair:rgba(238,242,248,.17);
  --bs-acc:#ff8a4f; --bs-pos:#5fd39b; --bs-neg:#ff8f7a; --bs-track:rgba(238,242,248,.16);
  --bs-head-bg:#d3dbe7; --bs-head-img:linear-gradient(180deg,#e3e9f2,#d3dbe7 62%,#cbd5e2);
  --bs-head-ink:#0b1c30; --bs-head-dim:rgba(11,28,48,.82); --bs-head-hair:rgba(11,28,48,.22);
}
.wr-bs-head{ position:relative; padding:16px 18px 0; background-color:var(--bs-head-bg);
  background-image:var(--bs-head-img); color:var(--bs-head-ink) }
.wr-bs-k{ display:block; font-family:var(--mono),ui-monospace,monospace; font-size:9px; font-weight:800;
  letter-spacing:.26em; text-transform:uppercase; color:var(--bs-head-dim) }
.wr-bs-brand{ margin:8px 0 2px; font-family:'Inter',system-ui,sans-serif; font-weight:900; font-style:italic;
  text-transform:uppercase; font-size:clamp(21px,2.1vw,26px); line-height:.92; letter-spacing:-.035em;
  color:var(--bs-head-ink); text-wrap:balance }
.wr-bs-sub{ display:block; font-family:var(--mono),ui-monospace,monospace; font-size:9.5px; font-weight:600;
  letter-spacing:.14em; text-transform:uppercase; color:var(--bs-head-dim) }
.wr-bs-facts{ display:flex; flex-wrap:wrap; gap:0 20px; margin:12px 0 0; padding:11px 0 12px;
  border-top:1px solid var(--bs-head-hair) }
.wr-bs-facts div{ display:flex; flex-direction:column; gap:2px }
.wr-bs-facts dt{ font-family:var(--mono),ui-monospace,monospace; font-size:8.5px; font-weight:700;
  letter-spacing:.2em; text-transform:uppercase; color:var(--bs-head-dim) }
.wr-bs-facts dd{ margin:0; font-family:var(--mono),ui-monospace,monospace; font-size:13px; font-weight:700;
  letter-spacing:.01em; color:var(--bs-head-ink); font-variant-numeric:tabular-nums }
.wr-bs-prog{ display:block; height:3px; margin:0 -18px; background:var(--bs-head-hair) }
.wr-bs-prog i{ display:block; height:100%; background:var(--p2,#f97316); transition:width .3s ease }

.wr-bs-list{ list-style:none; margin:0; padding:0 }
.wr-bs-item{ position:relative; display:grid; grid-template-columns:26px 1fr auto; gap:2px 10px;
  align-items:baseline; padding:13px 18px 14px; border-bottom:1px solid var(--bs-hair) }
.wr-bs-item::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:transparent }
.wr-bs-item.is-on::before{ background:var(--p2,#f97316) }
.wr-bs-item.is-off::before{ background:repeating-linear-gradient(180deg,var(--bs-hair) 0 4px,transparent 4px 8px) }
.wr-bs-n{ font-family:var(--mono),ui-monospace,monospace; font-size:10px; font-weight:800; letter-spacing:.06em;
  color:var(--bs-dim); font-variant-numeric:tabular-nums }
.wr-bs-lbl{ font-family:'Inter',system-ui,sans-serif; font-weight:800; font-size:14px; letter-spacing:-.012em;
  color:var(--bs-ink) }
.wr-bs-state{ justify-self:end; font-family:var(--mono),ui-monospace,monospace; font-size:9px; font-weight:800;
  letter-spacing:.18em; text-transform:uppercase; padding:4px 8px; border:1px solid var(--bs-hair);
  border-radius:2px; color:var(--bs-dim); white-space:nowrap }
.wr-bs-item.is-on > .wr-bs-state{ color:var(--bs-ink); border-color:currentColor }
.wr-bs-val{ grid-column:2 / -1; margin:5px 0 0; font-family:var(--pn-sans),system-ui,sans-serif;
  font-size:12.5px; line-height:1.5; color:var(--bs-dim) }
.wr-bs-item.is-on#bs-angle .wr-bs-val{ font-style:italic; font-size:13.5px; color:var(--bs-ink) }
.wr-bs-bar{ grid-column:2 / -1; position:relative; display:block; height:3px; margin:8px 0 0;
  background:var(--bs-track) }
.wr-bs-bar i{ display:block; height:100%; background:var(--p2,#f97316); transition:width .25s ease }
.wr-bs-bar.is-time u{ position:absolute; top:-2px; bottom:-2px; width:1px; background:var(--bs-ink); opacity:.5 }
.wr-bs-warn{ grid-column:1 / -1; margin:9px 0 0; font-family:var(--mono),ui-monospace,monospace; font-size:9.5px;
  font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--bs-neg) }

.wr-bs-team{ grid-column:1 / -1; list-style:none; margin:10px 0 0; padding:0; display:flex;
  flex-direction:column; gap:0 }
.wr-bs-p{ display:grid; grid-template-columns:22px minmax(0,1fr) auto; gap:2px 9px; align-items:center;
  padding:7px 0; border-top:1px solid var(--bs-hair) }
.wr-bs-p:first-child{ border-top:0 }
.wr-bs-face{ grid-row:1 / span 2; width:22px; height:22px; border-radius:2px; object-fit:cover;
  background:var(--bs-track); filter:grayscale(1) contrast(1.08) }
.wr-bs-disc{ font-family:var(--mono),ui-monospace,monospace; font-size:9px; font-weight:800; letter-spacing:.16em;
  text-transform:uppercase; color:var(--bs-dim); display:flex; align-items:center; gap:7px; min-width:0 }
.wr-bs-disc em{ font-style:normal; font-size:8px; font-weight:700; letter-spacing:.1em; padding:1px 5px;
  border:1px solid currentColor; border-radius:2px; color:var(--bs-acc); white-space:nowrap }
.wr-bs-p.is-marked .wr-bs-disc{ color:var(--bs-ink) }
.wr-bs-who{ grid-column:2; font-family:'Inter',system-ui,sans-serif; font-weight:700; font-size:12.5px;
  color:var(--bs-ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.wr-bs-sk{ grid-column:3; grid-row:1; display:block; width:48px; height:3px; background:var(--bs-track) }
.wr-bs-sk i{ display:block; height:100%; background:var(--bs-ink); opacity:.55 }
.wr-bs-sk i.read-strong{ background:var(--bs-pos); opacity:1 }
.wr-bs-sk i.read-thin{ background:var(--bs-neg); opacity:1 }
.wr-bs-read{ grid-column:3; grid-row:2; justify-self:end; font-family:var(--mono),ui-monospace,monospace;
  font-size:8.5px; font-weight:800; letter-spacing:.14em; color:var(--bs-dim) }
.wr-bs-read.read-strong{ color:var(--bs-pos) } .wr-bs-read.read-thin{ color:var(--bs-neg) }

.wr-bs-dock{ display:flex; flex-direction:column; gap:9px; padding:15px 18px 17px;
  background-color:var(--bs-head-bg); background-image:var(--bs-head-img);
  color:var(--bs-head-ink); border-top:2px solid var(--p2,#f97316) }
.wr-bs-dock-k{ font-family:var(--mono),ui-monospace,monospace; font-size:9px; font-weight:800;
  letter-spacing:.24em; text-transform:uppercase; color:var(--bs-head-dim) }
.wr-bs-dock-note{ margin:1px 0 0; font-family:var(--pn-sans),system-ui,sans-serif; font-size:12px;
  line-height:1.45; color:var(--bs-head-dim) }
.wr-bs-dock .pn-btn--secondary{ background:transparent; color:var(--bs-head-ink);
  border-color:var(--bs-head-hair) }
.wr-bs-dock .pn-btn--secondary:hover{ color:var(--bs-head-ink); border-color:var(--bs-head-ink) }
/* SAFE AREA (Law 6, caught by eyeballing the 390 dock render): the floating theme chip is fixed to
   the bottom-right, and the sign-off CTA — now the last thing on the page — was running under it.
   The dock keeps a gutter deep enough that the button always clears the chip on a phone. */
@media (max-width:640px){ .wr-bs-dock{ padding-bottom:62px } }
/* the main column's terminal mark — where the sign-off went */
.wr-handoff{ display:flex; align-items:center; gap:10px; margin:18px 24px 4px 0;
  font-family:var(--mono),ui-monospace,monospace; font-size:9.5px; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; color:rgba(20,27,38,.78) }
.wr-handoff::before{ content:""; flex:1 1 auto; height:1px; background:rgba(20,27,38,.22) }
html body:not(.mvc-light) .wr-handoff{ color:rgba(238,242,248,.78) }
html body:not(.mvc-light) .wr-handoff::before{ background:rgba(238,242,248,.22) }
@media (max-width:1079px){ .wr-handoff{ margin-left:20px } }

/* ── 5. ONE BUTTON SYSTEM (CEO-16) ────────────────────────────────────────────────────────────
   At least five grammars were live: pn-btn 12px soft-rect pills, lg-btn chamfered glass slabs,
   tb-btn mono chips, rv-opt choice slabs, plus raw inline-styled overlay buttons. JS binds to those
   class names, so NOTHING is renamed — the grammars are consolidated onto ONE silhouette instead.
   THE SILHOUETTE is the one the CEO already ruled ownable (2026-07-17/18): a near-square brutalist
   slab (3px) with the TOP-RIGHT corner sliced on a 45° chamfer. lg-btn already wore it; pn-btn now
   does too, so primary/secondary/ghost read as one object wherever they appear.
   PILLS ARE NOT BUTTONS: .tb-btn / .pn-tab stay 999px because SYSTEM_V2 canon is rect = ACTION,
   pill = NAV-OR-STATE. That distinction is the system, not a violation of it.
   CRAFT NOTE: clip-path clips box-shadow, so the primary's outer glow moves to filter:drop-shadow
   and the focus ring becomes an INSET ring (an outline would be sliced off by the cut).            */
.pn-btn{
  --pnb-cut:12px;
  border-radius:3px;
  clip-path:polygon(0 0, calc(100% - var(--pnb-cut)) 0, 100% var(--pnb-cut), 100% 100%, 0 100%);
}
.pn-btn--sm{ --pnb-cut:9px }
.pn-btn--lg{ --pnb-cut:16px }
.pn-btn--icon{ --pnb-cut:8px }
/* focus: the SAME inset ring .lg-btn already uses (an outline would be sliced off by the chamfer).
   One ring for the whole system — the earlier accent-then-white pair read as an error state on an
   orange fill, which is exactly the "five grammars" problem in miniature. */
.pn-btn:focus-visible{ outline:2px solid transparent; outline-offset:0;
  box-shadow:inset 0 0 0 2px #fff, inset 0 0 0 4px #07080c }
.pn-btn--secondary:focus-visible,.pn-btn--ghost:focus-visible{
  box-shadow:inset 0 0 0 2px var(--p,#f97316) }
/* primary: same accent fill, but its depth is drawn with drop-shadow so it follows the cut */
.pn-btn--primary{ box-shadow:0 1px 0 rgba(255,255,255,.28) inset;
  filter:drop-shadow(0 8px 14px rgba(var(--glow),.34)) }
.pn-btn--primary:hover{ box-shadow:0 1px 0 rgba(255,255,255,.32) inset;
  filter:drop-shadow(0 12px 18px rgba(var(--glow),.42)) }
/* the review's fork slabs already carry a cut — align their metrics to the canon so the two
   controls in the same dock are visibly the same family */
.pn-review .rv-opt{ border-radius:3px }
/* the READY screen's CTA sits on pinned-dark film — the canon primary, at hero size */
.pn-ready-actions .pn-btn{ min-width:min(320px,80vw) }
@media (prefers-reduced-motion: reduce){
  .pn-btn--primary, .pn-btn--primary:hover{ filter:none }
  .wr-bs-prog i, .wr-bs-bar i{ transition:none }
}

/* ── 6. WAR-ROOM LIGHT-THEME INK CONTRACT (P1, found by this pass's own contrast sweep) ────────
   Nine NAMED war-room text components were painting WHITE ink on the light "rust paper" world —
   measured 1.09:1 to 1.29:1, i.e. effectively invisible whenever the CEO flips to a light theme.
   Same root cause as the CEO-05 breach: ink inherited from the dark token set into a light surface.
   UX_RULES §1: ink is DECLARED, never assumed. Every selector here names a component — no element
   catch-alls (the defect that shipped three times). Dark themes are untouched; they already pass. */
html body.mvc-light[data-view="pitch"] .wr-brief-lead,
html body.mvc-light[data-view="pitch"] .wr-tension-line,
html body.mvc-light[data-view="pitch"] .wr-angle-locked,
html body.mvc-light[data-view="pitch"] .tmeter-v{ color:#1c1611 !important }          /* 9.3:1 */
html body.mvc-light[data-view="pitch"] .poap-sub,
html body.mvc-light[data-view="pitch"] .room-sub{ color:rgba(28,22,17,.86) !important } /* 9.2:1 */
html body.mvc-light[data-view="pitch"] .wr-tension-sub,
html body.mvc-light[data-view="pitch"] .wr-work-note,
html body.mvc-light[data-view="pitch"] .wr-angle-hint,
html body.mvc-light[data-view="pitch"] .tmeter-k{ color:rgba(28,22,17,.72) !important } /* 6.1:1 */

/* ── 7. TOUCH FLOOR — never regress pn-touch-20260801 ───────────────────────────────────────── */
.wr-bs-dock .pn-btn{ min-height:44px }
