/* 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. */

  /* ═══════════════════════════════════════════════════════════════════════════════════════════════
     THE REVIEW — the client-work set-piece (CEO 2026-07-31, the second experience)

     It must not look like THE CALL. The call is a night boardroom on a video link: black chrome,
     webcams, a needle that says WINNING or LOSING. The review is a DAYLIGHT TABLE and a ROUTING
     SHEET — an office document being marked in front of you, page by page, with the client's notes
     stacking up in the margin and a three-zone SIGN-OFF instrument along the bottom.

     ALTERNATION LAW (SST §5f). The sheet is the page; the SIGN-OFF strip and the dock are its CHROME,
     so they invert against it: dark slab chrome on the light sheet, pale machined slate chrome on the
     dark sheet. Both directions measured for AA. Controls are styled by COMPONENT class only — there
     is not one element catch-all in this stylesheet (that was the beige-button defect).
     ═══════════════════════════════════════════════════════════════════════════════════════════════ */
  body.pn-review-live{ overflow:hidden !important; }
  body.pn-review-live .topbar,
  body.pn-review-live .mvc-theme-toggle,
  body.pn-review-live .pnos-dock,
  body.pn-review-live .mvc-palfloat{ display:none !important; }   /* Law 2: nothing floats over the set-piece */

  /* ── the surface + its token set ─────────────────────────────────────────────────────────────── */
  .pn-review{
    position:fixed; inset:0; z-index:120; display:block; overflow:hidden;
    /* DARK theme = a late studio table. Accent is BRIGHT orange on dark ink (7.3:1 with #0b1c30). */
    --rv-paper:#111826; --rv-paper2:#0d131f; --rv-ink:#eef3fb; --rv-dim:rgba(238,243,251,.66);
    --rv-hair:rgba(238,243,251,.14); --rv-edge:rgba(0,0,0,.6);
    --rv-accent:#f97316; --rv-accent-ink:#0b1c30;
    --rv-ok:#3ddc84; --rv-amend:#ffb638; --rv-bad:#ff6a55;
    /* the CHROME inverts against the sheet — pale slate on a dark page */
    --rvc-bg:linear-gradient(180deg,#e6ebf3,#d4dce8); --rvc-ink:#0b1c30; --rvc-dim:rgba(11,28,48,.74);
    --rvc-hair:rgba(11,28,48,.2); --rvc-edge:rgba(6,11,20,.7);
    --rvc-on:#b4380d; --rvc-on-ink:#fff;
    --rvc-ok:#12703d; --rvc-amend:#8a5008; --rvc-bad:#b0261a;
    color:var(--rv-ink); font-family:Inter,system-ui,sans-serif;
    background:#070a11;
  }
  body.mvc-light .pn-review{
    /* LIGHT theme = their meeting room at 11am. Paper stock, near-black navy ink, deep burnt accent. */
    --rv-paper:#eef1f8; --rv-paper2:#e3e8f2; --rv-ink:#0b1c30; --rv-dim:rgba(11,28,48,.72);
    --rv-hair:rgba(11,28,48,.16); --rv-edge:rgba(11,28,48,.34);
    --rv-accent:#b4380d; --rv-accent-ink:#fff;
    --rv-ok:#12703d; --rv-amend:#8a5008; --rv-bad:#b0261a;
    /* …and the chrome goes DARK against it */
    --rvc-bg:linear-gradient(180deg,#14263f,#0b1c30); --rvc-ink:#eaf0fa; --rvc-dim:rgba(234,240,250,.68);
    --rvc-hair:rgba(234,240,250,.16); --rvc-edge:rgba(0,0,0,.5);
    --rvc-on:#f97316; --rvc-on-ink:#0b1c30;
    --rvc-ok:#3ddc84; --rvc-amend:#ffb638; --rvc-bad:#ff6a55;
    background:#dfe4ee;
  }
  /* the decoration layers (room plate, grain, bleed word) live inside their OWN clipping box, so a
     scaled plate and a 25vw bleed word can never widen the set-piece's scroll extent (Law 3). */
  .pn-review .rv-deco{ position:absolute; inset:0; overflow:hidden; pointer-events:none; }
  /* the room behind the sheet: their office, graded so type always wins */
  .pn-review .rv-plate{ position:absolute; inset:0; background-size:cover; background-position:center;
    filter:grayscale(.55) contrast(1.12) brightness(.42) saturate(.8); transform:scale(1.04); }
  body.mvc-light .pn-review .rv-plate{ filter:grayscale(.62) contrast(1.02) brightness(1.02) saturate(.62); opacity:.5; }
  .pn-review .rv-grain{ position:absolute; inset:0; pointer-events:none; opacity:.5;
    background-image:radial-gradient(rgba(255,255,255,.09) .6px,transparent .7px); background-size:3px 3px; }
  body.mvc-light .pn-review .rv-grain{ background-image:radial-gradient(rgba(11,28,48,.13) .6px,transparent .7px); opacity:.6; mix-blend-mode:multiply; }
  /* motif 4 — the giant bleed word behind everything */
  .pn-review .rv-bleed{ position:absolute; left:-2vw; bottom:-4vh; font:900 italic 25vw/0.72 Inter,sans-serif;
    letter-spacing:-.06em; color:var(--rv-ink); opacity:.045; pointer-events:none; white-space:nowrap; }

  .pn-review .rv-shell{ position:relative; height:100%; max-width:1420px; margin:0 auto;
    display:grid; grid-template-rows:auto minmax(0,1fr) auto auto;
    padding:0 clamp(14px,3vw,34px) clamp(12px,2vh,20px); }   /* Law 3: an inner gutter, never the bezel */
  /* the masthead sits on photography — it gets its own scrim so ink never fights the room (Law 1) */
  .pn-review .rv-shell::before{ content:""; position:absolute; left:0; right:0; top:0; height:clamp(150px,26vh,260px);
    pointer-events:none; background:linear-gradient(180deg,rgba(4,7,13,.86),rgba(4,7,13,.34) 62%,transparent); }
  body.mvc-light .pn-review .rv-shell::before{ background:linear-gradient(180deg,rgba(238,241,248,.94),rgba(238,241,248,.5) 62%,transparent); }

  /* ── THE MASTHEAD: their name, huge; the money, quiet ──────────────────────────────────────── */
  .pn-review .rv-mast{ position:relative; display:flex; align-items:flex-end; justify-content:space-between; gap:20px;
    padding:clamp(16px,3vh,30px) 0 14px; border-bottom:2px solid var(--rv-edge); }
  .pn-review .rv-kick{ display:block; font:800 10px/1 var(--mono),monospace; letter-spacing:.28em;
    text-transform:uppercase; color:var(--rv-accent); margin-bottom:9px; }
  .pn-review .rv-kick b{ color:var(--rv-ink); font-weight:800; }
  .pn-review .rv-brand{ margin:0; font:900 italic clamp(34px,6.4vw,74px)/0.84 Inter,sans-serif;
    letter-spacing:-.045em; text-transform:uppercase; color:var(--rv-ink); text-wrap:balance; }
  .pn-review .rv-meta{ display:block; margin-top:9px; font:700 10.5px/1.5 var(--mono),monospace;
    letter-spacing:.2em; text-transform:uppercase; color:var(--rv-dim); }
  /* the one asymmetric block — money set as an instrument, flush right, hung off a rule */
  .pn-review .rv-atstake{ flex:none; text-align:right; padding-left:20px; border-left:2px solid var(--rv-edge); }
  .pn-review .rv-atstake-k{ display:block; font:800 9px/1 var(--mono),monospace; letter-spacing:.24em;
    text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-atstake-v{ display:block; margin-top:5px; font:800 clamp(20px,2.6vw,30px)/1 var(--mono),monospace;
    font-variant-numeric:tabular-nums; color:var(--rv-ink); }
  .pn-review .rv-atstake-s{ display:block; margin-top:5px; font:700 10px/1 var(--mono),monospace;
    letter-spacing:.16em; text-transform:uppercase; color:var(--rv-dim); }

  /* ── THE BODY: sheet + margin. One hairline between them, no cards floating in space. ──────── */
  .pn-review .rv-body{ display:grid; grid-template-columns:minmax(0,1.6fr) minmax(272px,.8fr);
    min-height:0; overflow:hidden;                    /* the sheet never bleeds onto its own chrome */
    border-bottom:2px solid var(--rv-edge); }
  .pn-review .rv-sheet{ position:relative; min-width:0; min-height:0; display:flex; flex-direction:column;
    background:linear-gradient(180deg,var(--rv-paper),var(--rv-paper2));
    border-left:2px solid var(--rv-edge); border-right:1px solid var(--rv-hair);
    box-shadow:0 26px 60px -30px rgba(0,0,0,.7); }
  .pn-review .rv-sheet-hd{ display:flex; align-items:baseline; justify-content:space-between; gap:12px;
    padding:11px 18px; border-bottom:2px solid var(--rv-edge);
    font:800 9.5px/1 var(--mono),monospace; letter-spacing:.22em; text-transform:uppercase; }
  .pn-review .rv-sheet-t{ color:var(--rv-ink); }
  .pn-review .rv-sheet-r{ color:var(--rv-dim); }
  /* the column head — turns the waiting right-hand column into a named SIGN-OFF column */
  .pn-review .rv-cols{ display:grid; grid-template-columns:34px minmax(0,1fr) 108px 34px 128px; gap:12px;
    padding:7px 18px; border-bottom:1px solid var(--rv-hair);
    font:800 8.5px/1 var(--mono),monospace; letter-spacing:.2em; text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-cols>span:first-child{ grid-column:1 / 3; }
  .pn-review .rv-cols-str{ grid-column:3 / 5; }
  .pn-review .rv-cols-sig{ grid-column:5; text-align:right; }
  .pn-review .rv-rows{ list-style:none; margin:0; padding:0; overflow:auto; min-height:0; }
  .pn-review .rv-row{ display:grid; grid-template-columns:34px minmax(0,1fr) 108px 34px 128px;
    align-items:center; gap:12px; padding:13px 18px; border-bottom:1px solid var(--rv-hair);
    opacity:.55; transition:opacity .35s ease,background .35s ease; }
  .pn-review .rv-row.is-marked{ opacity:1; }
  .pn-review .rv-row.is-live{ opacity:1; background:color-mix(in srgb,var(--rv-accent) 9%,transparent); }
  .pn-review .rv-row.is-live::before{ content:""; position:absolute; }
  .pn-review .rv-row-n{ font:800 11px/1 var(--mono),monospace; color:var(--rv-dim); font-variant-numeric:tabular-nums; }
  .pn-review .rv-row-disc{ font:800 16px/1.15 Inter,sans-serif; letter-spacing:-.01em; color:var(--rv-ink);
    overflow:hidden; text-overflow:ellipsis; }
  .pn-review .rv-row-line{ grid-column:2 / 4; margin:6px 0 0; font:400 italic 14px/1.45 Inter,sans-serif;
    color:var(--rv-dim); max-width:62ch; }
  /* the lead page — the strongest thing you made gets the space it earned (content shapes layout) */
  .pn-review .rv-row.is-lead{ grid-template-areas:"n disc str q stamp" ". line line line stamp"; padding:17px 18px 19px;
    border-left:3px solid var(--rv-accent); }
  .pn-review .rv-row.is-lead .rv-row-n{ grid-area:n; }
  .pn-review .rv-row.is-lead .rv-row-disc{ grid-area:disc; font-size:21px; }
  .pn-review .rv-row.is-lead .rv-row-line{ grid-area:line; }
  .pn-review .rv-row.is-lead .rv-row-strength{ grid-area:str; }
  .pn-review .rv-row.is-lead .rv-row-q{ grid-area:q; }
  .pn-review .rv-row.is-lead .rv-stamp{ grid-area:stamp; }
  .pn-review .rv-row-strength{ height:6px; background:color-mix(in srgb,var(--rv-ink) 13%,transparent); overflow:hidden; }
  .pn-review .rv-row-strength>i{ display:block; height:100%; background:var(--rv-ink); opacity:.45; }
  .pn-review .rv-row.is-lead .rv-row-strength>i{ background:var(--rv-accent); opacity:1; }
  .pn-review .rv-row-q{ font:800 13px/1 var(--mono),monospace; font-variant-numeric:tabular-nums; color:var(--rv-dim); text-align:right; }

  /* THE STAMP — the one loud move: it lands on the page, rotated, letterpressed, semantic */
  .pn-review .rv-stamp{ justify-self:end; display:inline-flex; flex-direction:column; align-items:center;
    padding:5px 9px; min-width:112px; text-align:center; transform:rotate(-6deg);
    font:800 10.5px/1.15 var(--mono),monospace; letter-spacing:.16em; text-transform:uppercase;
    border:2px solid transparent; }
  .pn-review .rv-stamp em{ display:block; margin-top:3px; font-style:normal; font-size:8.5px; letter-spacing:.1em; opacity:.85; }
  .pn-review .rv-stamp--none{ border:0; }
  .pn-review .rv-stamp--approve{ color:var(--rv-ok); border-color:color-mix(in srgb,var(--rv-ok) 72%,transparent); }
  .pn-review .rv-stamp--amend{ color:var(--rv-amend); border-color:color-mix(in srgb,var(--rv-amend) 72%,transparent); }
  .pn-review .rv-stamp--challenge{ color:var(--rv-bad); border-color:color-mix(in srgb,var(--rv-bad) 76%,transparent); }
  .pn-review .rv-stamp.is-landing{ animation:rvStamp .5s cubic-bezier(.2,.9,.25,1) both; }
  @keyframes rvStamp{ 0%{ transform:rotate(-16deg) scale(1.9); opacity:0 } 60%{ transform:rotate(-4deg) scale(.94); opacity:1 } 100%{ transform:rotate(-6deg) scale(1) } }

  /* the sheet's foot — the LINE the whole campaign hangs off, printed where a routing sheet prints
     its sign-off block. This is the thing being defended, so it lives on the document, not in a tip. */
  .pn-review .rv-sheet-foot{ margin-top:auto; padding:15px 18px 17px; border-top:2px solid var(--rv-edge);
    background:color-mix(in srgb,var(--rv-ink) 5%,transparent); }
  .pn-review .rv-foot-k{ display:block; font:800 9px/1 var(--mono),monospace; letter-spacing:.24em;
    text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-foot-angle{ margin:8px 0 0; max-width:56ch;
    font:600 italic clamp(16px,1.6vw,21px)/1.32 Inter,sans-serif; letter-spacing:-.015em; color:var(--rv-ink); }
  .pn-review .rv-foot-by{ display:block; margin-top:9px; font:700 9.5px/1 var(--mono),monospace;
    letter-spacing:.16em; text-transform:uppercase; color:var(--rv-dim); }

  /* ── THE MARGIN: who is in the chair, and what they are writing ───────────────────────────── */
  .pn-review .rv-side{ min-width:0; min-height:0; overflow:hidden; display:flex; flex-direction:column;
    /* 92%, not a fashionable 55% — the client's notes are the copy that MUST be read, and a
       half-transparent panel over a photographic room fails AA in the light theme (UX Law 1). */
    background:color-mix(in srgb,var(--rv-paper) 92%,transparent);
    backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
    border-right:2px solid var(--rv-edge); }
  .pn-review .rv-client{ display:flex; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid var(--rv-hair); }
  .pn-review .rv-client-mug{ width:52px; height:62px; object-fit:cover; object-position:center top; flex:none;
    filter:grayscale(1) contrast(1.35); border:2px solid var(--rv-edge); }
  .pn-review .rv-client-id b{ display:block; font:800 15px/1.15 Inter,sans-serif; color:var(--rv-ink); }
  .pn-review .rv-client-id span{ display:block; margin-top:3px; font:600 11px/1.3 Inter,sans-serif; color:var(--rv-dim); }
  .pn-review .rv-client-id em{ display:inline-block; margin-top:6px; padding:2px 6px; font:800 8.5px/1.4 var(--mono),monospace;
    letter-spacing:.18em; text-transform:uppercase; font-style:normal;
    color:var(--rv-accent); border:1px solid color-mix(in srgb,var(--rv-accent) 50%,transparent); }
  .pn-review .rv-said{ margin:0; padding:14px 16px; font:500 italic 15px/1.5 Inter,sans-serif;
    color:var(--rv-ink); border-bottom:1px solid var(--rv-hair); min-height:74px; }
  /* the account's history — a hairline plate, not another card */
  .pn-review .rv-hist{ padding:11px 16px 13px; border-bottom:1px solid var(--rv-hair);
    border-left:3px solid color-mix(in srgb,var(--rv-accent) 60%,transparent); }
  .pn-review .rv-hist-k{ display:block; font:800 8.5px/1 var(--mono),monospace; letter-spacing:.22em;
    text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-hist-t{ margin:6px 0 0; font:500 12.5px/1.45 Inter,sans-serif; color:var(--rv-ink); }
  .pn-review .rv-hist-t b{ font-weight:800; }
  .pn-review .rv-hist-tape{ display:block; margin-top:6px; font:700 9.5px/1 var(--mono),monospace;
    letter-spacing:.14em; text-transform:uppercase; color:var(--rv-dim); font-variant-numeric:tabular-nums; }
  .pn-review .rv-notes-hd{ display:flex; align-items:center; justify-content:space-between;
    padding:9px 16px; border-bottom:2px solid var(--rv-edge);
    font:800 9.5px/1 var(--mono),monospace; letter-spacing:.24em; text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-notes-n{ font-style:normal; color:var(--rv-ink); font-variant-numeric:tabular-nums; }
  .pn-review .rv-notes{ flex:1 1 auto; min-height:0; overflow:auto; padding:12px 16px 16px; display:flex; flex-direction:column; gap:11px; }
  .pn-review .rv-note{ position:relative; padding:9px 11px 9px 13px; transform:rotate(var(--tilt,0deg));
    background:color-mix(in srgb,var(--rv-paper) 92%,transparent); border-left:3px solid var(--rv-dim);
    box-shadow:0 8px 18px -14px rgba(0,0,0,.9); }
  .pn-review .rv-note--approve{ border-left-color:var(--rv-ok); }
  .pn-review .rv-note--amend{ border-left-color:var(--rv-amend); }
  .pn-review .rv-note--challenge{ border-left-color:var(--rv-bad); }
  .pn-review .rv-note-k{ font:800 8.5px/1 var(--mono),monospace; letter-spacing:.2em; text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-note-t{ margin:5px 0 0; font:500 13px/1.45 Inter,sans-serif; color:var(--rv-ink); }
  .pn-review .rv-note-by{ display:block; margin-top:5px; font:700 9.5px/1 var(--mono),monospace;
    letter-spacing:.12em; color:var(--rv-dim); }
  .pn-review .rv-note-empty{ margin:0; font:400 italic 13px/1.5 Inter,sans-serif; color:var(--rv-dim); }

  /* ── THE FORK: the room stops. Fully occludes the sheet (Law 2 — no double exposure). ──────── */
  .pn-review .rv-fork-host:empty{ display:none; }
  /* CEO 2026-08-01 ("I hit answer their note and it jumped to this unresponsive page... it ended
     session"): at desktop widths the fork was position:absolute inside the review CONTAINER — on a
     tall review that put the sheet wherever the container happened to sit, and reaching it meant
     scrolling the document under a set-piece, which read as a broken page. The narrow-width bottom
     SHEET treatment was already correct, so it is now the treatment at EVERY width: fixed to the
     viewport, always on screen, the room dimmed and inert behind it. Nothing scrolls to nothing. */
  .pn-review .rv-fork{ position:fixed; left:0; right:0; bottom:0; top:auto; z-index:9;
    display:flex; flex-direction:column; justify-content:flex-start;
    gap:8px; padding:clamp(16px,3vw,34px);
    max-height:84vh; overflow:auto;
    border-top:3px solid var(--rv-accent);
    background:color-mix(in srgb,var(--rv-paper) 98%,transparent);
    backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
    box-shadow:0 -26px 64px -22px rgba(0,0,0,.72);
    animation:rvForkIn .34s cubic-bezier(.2,.9,.25,1) both; }
  .pn-review.has-fork .rv-sheet-hd, .pn-review.has-fork .rv-rows,
  .pn-review.has-fork .rv-sheet-foot, .pn-review.has-fork .rv-side{
    filter:blur(3px) saturate(.75); opacity:.45; pointer-events:none; }
  .pn-review.has-fork .rv-signoff, .pn-review.has-fork .rv-dock{ opacity:.45; pointer-events:none; }
  @keyframes rvForkIn{ from{ opacity:0; transform:translateY(26px) } to{ opacity:1; transform:none } }
  .pn-review .rv-fork-k{ font:800 9.5px/1 var(--mono),monospace; letter-spacing:.26em; text-transform:uppercase; color:var(--rv-bad); }
  .pn-review .rv-fork-h{ margin:8px 0 0; font:900 italic clamp(24px,3.4vw,40px)/0.94 Inter,sans-serif;
    letter-spacing:-.035em; text-transform:uppercase; color:var(--rv-ink); }
  .pn-review .rv-fork-sub{ margin:9px 0 16px; max-width:62ch; font:500 15px/1.5 Inter,sans-serif; color:var(--rv-dim); }
  .pn-review .rv-fork-opts{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .pn-review .rv-opt{ display:block; text-align:left; padding:16px 18px; cursor:pointer;
    background:color-mix(in srgb,var(--rv-ink) 6%,transparent);
    border:2px solid var(--rv-edge); color:var(--rv-ink); font-family:inherit;
    transition:transform .18s ease,border-color .18s ease,background .18s ease; }
  .pn-review .rv-opt:hover{ transform:translateY(-3px); background:color-mix(in srgb,var(--rv-ink) 11%,transparent); }
  .pn-review .rv-opt:focus-visible{ outline:3px solid var(--rv-accent); outline-offset:2px; }
  .pn-review .rv-opt.is-defend{ border-color:var(--rv-accent); }
  .pn-review .rv-opt .lbl{ display:block; font:800 9px/1 var(--mono),monospace; letter-spacing:.22em;
    text-transform:uppercase; color:var(--rv-dim); }
  .pn-review .rv-opt b{ display:block; margin:7px 0 6px; font:900 20px/1.1 Inter,sans-serif; letter-spacing:-.02em; }
  .pn-review .rv-opt.is-defend b{ color:var(--rv-accent); }
  .pn-review .rv-opt small{ display:block; font:400 12.5px/1.5 Inter,sans-serif; color:var(--rv-dim); }
  .pn-review .rv-stakes{ display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
  .pn-review .rv-stake{ padding:3px 7px; font:800 9px/1.4 var(--mono),monospace; letter-spacing:.14em; text-transform:uppercase;
    border:1px solid var(--rv-hair); color:var(--rv-dim); }
  .pn-review .rv-stake--odds{ color:var(--rv-accent); border-color:color-mix(in srgb,var(--rv-accent) 52%,transparent); }
  .pn-review .rv-stake--hot{ color:var(--rv-bad); border-color:color-mix(in srgb,var(--rv-bad) 52%,transparent); }
  .pn-review .rv-stake--calm{ color:var(--rv-ok); border-color:color-mix(in srgb,var(--rv-ok) 52%,transparent); }

  /* ── THE SIGN-OFF INSTRUMENT: the chrome, inverted against the sheet (alternation law) ─────── */
  .pn-review .rv-signoff{ position:relative; z-index:3;   /* chrome always sits above the page it measures */
    background:var(--rvc-bg); border:1px solid var(--rvc-edge); border-top:0;
    padding:11px clamp(12px,2vw,20px) 13px; box-shadow:0 -1px 0 rgba(0,0,0,.25) inset; }
  .pn-review .rv-signoff-hd{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
  .pn-review .rv-signoff-k{ display:inline-flex; align-items:center; gap:7px;
    font:800 9.5px/1 var(--mono),monospace; letter-spacing:.26em; text-transform:uppercase; color:var(--rvc-dim); }
  .pn-review .rv-signoff-k .d{ width:7px; height:7px; background:var(--rvc-on); }
  .pn-review .rv-signoff-stamp{ font:900 italic 17px/1 Inter,sans-serif; letter-spacing:.02em;
    text-transform:uppercase; color:var(--rvc-ink); padding:3px 9px; border:2px solid var(--rvc-hair); }
  .pn-review .rv-signoff-stamp.is-approved{ color:var(--rvc-ok); border-color:var(--rvc-ok); }
  .pn-review .rv-signoff-stamp.is-changes{ color:var(--rvc-amend); border-color:var(--rvc-amend); }
  .pn-review .rv-signoff-stamp.is-rejected{ color:var(--rvc-bad); border-color:var(--rvc-bad); }
  .pn-review .rv-signoff-stamp.is-unseen{ color:var(--rvc-dim); }
  /* The track is an INSTRUMENT, not a pastel bar chart: three machined cells divided by hairlines,
     each carrying a 3px semantic top rule. Only the zone the needle is standing in takes a fill —
     colour earns its place by meaning something at that moment. */
  .pn-review .rv-track{ position:relative; height:28px; margin:9px 0 8px;
    border:1px solid var(--rvc-hair); background:color-mix(in srgb,var(--rvc-ink) 8%,transparent); overflow:hidden; }
  .pn-review .rv-zone{ position:absolute; top:0; bottom:0; display:flex; align-items:center; justify-content:center;
    border-right:1px solid var(--rvc-hair); transition:background .5s ease; }
  .pn-review .rv-zone::before{ content:""; position:absolute; left:0; right:0; top:0; height:3px; opacity:.55; }
  .pn-review .rv-zone>i{ font:800 8.5px/1 var(--mono),monospace; letter-spacing:.22em; text-transform:uppercase;
    font-style:normal; color:var(--rvc-dim); }
  .pn-review .rv-zone--rework{ left:0; }
  .pn-review .rv-zone--rework::before{ background:var(--rvc-bad); }
  .pn-review .rv-zone--amend::before{ background:var(--rvc-amend); }
  .pn-review .rv-zone--approve{ border-right:0; }
  .pn-review .rv-zone--approve::before{ background:var(--rvc-ok); }
  .pn-review.band-live-rejected .rv-zone--rework,
  .pn-review.band-rejected .rv-zone--rework{ background:color-mix(in srgb,var(--rvc-bad) 26%,transparent); }
  .pn-review.band-live-changes .rv-zone--amend,
  .pn-review.band-changes .rv-zone--amend{ background:color-mix(in srgb,var(--rvc-amend) 26%,transparent); }
  .pn-review.band-live-approved .rv-zone--approve,
  .pn-review.band-approved .rv-zone--approve{ background:color-mix(in srgb,var(--rvc-ok) 26%,transparent); }
  .pn-review.band-live-rejected .rv-zone--rework>i,
  .pn-review.band-live-changes .rv-zone--amend>i,
  .pn-review.band-live-approved .rv-zone--approve>i{ color:var(--rvc-ink); }
  .pn-review.is-hold .rv-zone{ background:none !important; }
  .pn-review .rv-ndl{ position:absolute; top:-2px; bottom:-2px; width:4px; margin-left:-2px;
    background:var(--rvc-on); box-shadow:0 0 0 1px var(--rvc-edge); transition:left .7s cubic-bezier(.3,.9,.3,1); }
  .pn-review .rv-signoff-read{ margin:0; font:600 12px/1.4 Inter,sans-serif; color:var(--rvc-ink); }

  /* ── THE DOCK: the affirmative control lives here (CEO's "Pitch it" button, named by workVerb) ── */
  .pn-review .rv-dock{ position:relative; z-index:3; display:flex; align-items:center; justify-content:space-between; gap:16px;
    padding:12px clamp(12px,2vw,20px) clamp(14px,2.4vh,20px);
    background:var(--rvc-bg); border:1px solid var(--rvc-edge); border-top:1px solid var(--rvc-hair); }
  .pn-review .rv-dock-note{ font:500 12.5px/1.45 Inter,sans-serif; color:var(--rvc-ink); max-width:70ch; }
  .pn-review .rv-dock-note b{ font-weight:800; }
  /* component-scoped control skins ONLY — never an element catch-all (the 2026-07-31 beige defect) */
  .pn-review .rv-dock .pn-btn--primary{ background:var(--rvc-on) !important; color:var(--rvc-on-ink) !important;
    border:2px solid var(--rvc-on) !important; box-shadow:5px 5px 0 var(--rvc-edge) !important; }
  .pn-review .rv-dock .pn-btn--primary:hover{ transform:translate(-1px,-1px); box-shadow:7px 7px 0 var(--rvc-edge) !important; }
  .pn-review .rv-dock .pn-btn--secondary{ background:transparent !important; color:var(--rvc-ink) !important;
    border:2px solid var(--rvc-hair) !important; }
  .pn-review .rv-dock .pn-btn--secondary:hover{ background:color-mix(in srgb,var(--rvc-ink) 12%,transparent) !important; }
  .pn-review .rv-dock .pn-btn--secondary[disabled]{ opacity:.5; cursor:not-allowed; }
  .pn-review .rv-arrow{ margin-left:.5em; }

  /* the hold state: the sheet is unmarked and the room is waiting on YOU */
  .pn-review.is-hold .rv-rows{ opacity:.9; }
  .pn-review.is-hold .rv-dock{ padding-bottom:clamp(16px,3vh,26px); }
  .pn-review.is-signed .rv-signoff-stamp{ animation:rvStamp .6s cubic-bezier(.2,.9,.25,1) both; }
  .pn-review.is-signed .rv-sheet::after{ content:""; position:absolute; inset:0; pointer-events:none;
    background:color-mix(in srgb,var(--rv-accent) 6%,transparent); }
  .pn-review.band-rejected .rv-sheet::after{ background:color-mix(in srgb,var(--rv-bad) 9%,transparent); }
  .pn-review.band-approved .rv-sheet::after{ background:color-mix(in srgb,var(--rv-ok) 9%,transparent); }

  /* ── TABLET / NARROW (834 and below): one column, sheet first, no horizontal scroll ────────── */
  @media (max-width:980px){
    .pn-review .rv-body{ grid-template-columns:1fr; grid-auto-rows:minmax(0,auto); overflow:auto; }
    .pn-review .rv-sheet{ border-right:2px solid var(--rv-edge); }
    .pn-review .rv-side{ border-right:2px solid var(--rv-edge); border-top:0; }
    .pn-review .rv-notes{ max-height:260px; }
    .pn-review .rv-rows{ overflow:visible; }
    .pn-review .rv-mast{ flex-direction:column; align-items:flex-start; gap:14px; }
    .pn-review .rv-atstake{ text-align:left; padding:0 0 0 14px; border-left:3px solid var(--rv-accent); }
    /* narrow: the fork rises as a real SHEET from the bottom instead of becoming a full-screen void
       (Law 3 — no dead half-screens). The room it interrupts is heavily blurred and dimmed behind it,
       which is what Law 2 actually asks for: no double exposure, but no amputation either. */
    .pn-review .rv-fork{ position:fixed; left:0; right:0; bottom:0; top:auto; z-index:9;
      max-height:84vh; overflow:auto; justify-content:flex-start;
      border-top:3px solid var(--rv-accent);
      background:color-mix(in srgb,var(--rv-paper) 98%,transparent);
      box-shadow:0 -26px 64px -22px rgba(0,0,0,.72);
      animation:rvSheetIn .34s cubic-bezier(.2,.9,.25,1) both; }
    @keyframes rvSheetIn{ from{ opacity:0; transform:translateY(26px) } to{ opacity:1; transform:none } }
    /* dim the PARTS, never .rv-body — a filter on an ancestor of the fixed sheet would capture and
       blur the sheet itself (it did, first render of this fix). */
    .pn-review.has-fork .rv-sheet-hd,
    .pn-review.has-fork .rv-rows,
    .pn-review.has-fork .rv-sheet-foot,
    .pn-review.has-fork .rv-side{ filter:blur(3px) saturate(.75); opacity:.45; pointer-events:none; }
    .pn-review.has-fork .rv-signoff,.pn-review.has-fork .rv-dock{ opacity:.45; pointer-events:none; }
  }
  @media (max-width:720px){
    .pn-review .rv-row{ grid-template-columns:26px minmax(0,1fr) 70px; grid-auto-rows:auto; }
    .pn-review .rv-row-q{ display:none; }
    .pn-review .rv-row .rv-stamp{ grid-column:2 / 4; justify-self:start; margin-top:8px; min-width:0; }
    .pn-review .rv-row.is-lead{ grid-template-areas:"n disc str" ". line line" ". stamp stamp"; }
    .pn-review .rv-fork-opts{ grid-template-columns:1fr; }
    .pn-review .rv-dock{ flex-direction:column; align-items:stretch; gap:10px; }
    .pn-review .rv-dock .pn-btn{ width:100%; }
  }
  /* UX Law 4 — reduced motion keeps every state, drops every movement */
  @media (prefers-reduced-motion:reduce){
    .pn-review .rv-stamp.is-landing,.pn-review.is-signed .rv-signoff-stamp,.pn-review .rv-fork{ animation:none !important; }
    .pn-review .rv-ndl{ transition:none !important; }
    .pn-review .rv-opt:hover,.pn-review .rv-dock .pn-btn--primary:hover{ transform:none !important; }
  }

  /* ── THE VERDICT, in review mode: AMENDS is its own state, not a dressed-up win ────────────── */
  /* three states, three semantics — an amends is not a win and a rejection is not a lost pitch */
  .pn-rz.pn-rz-review .pn-rz-word{ letter-spacing:-.03em; }
  .pn-rz.rz-band-changes .pn-rz-word{ color:#ffb638 !important; }
  .pn-rz.rz-band-rejected .pn-rz-word{ color:#ff6a55 !important; }
  body.mvc-light .pn-rz.rz-band-changes .pn-rz-word{ color:#8a5008 !important; }
  body.mvc-light .pn-rz.rz-band-rejected .pn-rz-word{ color:#b0261a !important; }
  .pn-rz.rz-band-changes .result-debrief{ border-left-color:#ffb638 !important; }
  .pn-rz.rz-band-rejected .result-debrief{ border-left-color:#ff6a55 !important; }
