/* pn-review-recompose-20260914.css — THE REVIEW: ONE HERO, NOT THREE VOICES.
   =============================================================================================
   Jon, same day as the CEO #24 pass, on a fresh crop: "this presentation ux is still a car
   crash." The 09-14 pass (pn-review-20260914.css) fixed the fork's ink and the sheet's type —
   real fixes, not enough, because the actual composition question was never answered: which of
   the routing sheet, the client card and the SIGN-OFF band is the ONE thing this screen is FOR?
   None of them was — all three were sized and weighted almost identically, so they compete
   (this pass's own diagnosis, confirmed against real renders in design/review-laptop-2026-09-14/).

   THE HERO DECISION: SIGN-OFF is the hero. The routing sheet is the evidence you present; the
   client card is the witness; the verdict — REWORK / AMENDS / APPROVED — is the one thing the
   whole scene resolves to, exactly the rhetorical job CEO #21 gave the CALL/PRESENT room's WORD
   ("the word at hero scale"). It was previously a 17px pill buried in a thin footer strip,
   competing on point-size with a dozen mono labels around it. It is now sized and lit like the
   verdict it is; the sheet and the aside are brought down a register (quieter hairlines, no
   competing card chrome) so the eye has exactly one place to land first.

   ALSO FIXED, both measured before touching CSS (renders in design/review-laptop-2026-09-14/before):
   · MOBILE DOUBLE-STICKY (Occlusion Law 2, hard fail). `.rv-signoff` and `.rv-dock` were BOTH
     independently `position:sticky;bottom:0` (pn-review-20260914.css §3) — two siblings claiming
     the same edge, the second painting over the first. That is the stray orange sliver in Jon's
     mobile crop: the signoff band's top edge peeking out from behind the dock that had silently
     eaten its position. Script-01.js now wraps both in one `.rv-foot`; this file makes THAT the
     sticky unit, and un-sticks the children.
   · THE VOID COLUMN. Unmarked rows printed nothing in the "their sign-off" column — a blank void
     beside filled stamps on the rows the client HAS marked, reading as an afterthought rather
     than a page still to come. `rv-stamp--none` now prints a quiet "···" (script-01.js), styled
     here as a waiting mark, never mistaken for a verdict.
   · THE TRUNCATED HEADER at narrow widths ("THEIR SIGN-O…", measured in review_sheet_light_390).
     The column head never had a narrow-width rule at all — it inherited the desktop 128px column
     at a font-size and letter-spacing tuned for the same width. Given room to wrap and a tighter
     track, it doesn't need one — the fix is not to abbreviate copy, it's to give it its own line.
   Loads LAST (after pn-pnp-one-design-20260914.css and pn-call-phone-20260914.css). Renders:
   design/review-laptop-2026-09-14/after/.
   ============================================================================================= */

/* ── THE HERO: SIGN-OFF ───────────────────────────────────────────────────────────────────── */
html body .pn-review .rv-foot{
  position:relative; z-index:3; display:flex; flex-direction:column;
}
html body .pn-review .rv-signoff{
  padding:clamp(14px,2.4vh,22px) clamp(16px,3vw,30px) clamp(10px,1.6vh,16px);
  border-top:3px solid var(--rvc-hair);
}
html body .pn-review.band-live-rejected .rv-signoff,
html body .pn-review.band-rejected .rv-signoff{ border-top-color:var(--rvc-bad); }
html body .pn-review.band-live-changes .rv-signoff,
html body .pn-review.band-changes .rv-signoff{ border-top-color:var(--rvc-amend); }
html body .pn-review.band-live-approved .rv-signoff,
html body .pn-review.band-approved .rv-signoff{ border-top-color:var(--rvc-ok); }
html body .pn-review .rv-signoff-hd{ align-items:flex-end; }
html body .pn-review .rv-signoff-k{
  font:800 9px/1 var(--mono),monospace !important; letter-spacing:.28em !important;
}
/* the word itself — was 17px italic inline text; it is now the loudest object on the screen,
   the one thing a player reads without trying, coloured by the same semantic tokens the track
   already used (no new hue introduced) */
html body .pn-review .rv-signoff-stamp{
  font:900 clamp(30px,4.6vw,52px)/.92 var(--pn-type-face),IS,sans-serif !important;
  font-style:normal !important; letter-spacing:-.02em !important; text-transform:uppercase;
  padding:0 !important; border:0 !important; margin-top:2px;
}
html body .pn-review .rv-signoff-stamp.is-unseen{ color:var(--rvc-dim) !important; font-weight:800 !important; font-size:clamp(20px,2.6vw,28px) !important; }
html body .pn-review .rv-track{ height:34px; margin:12px 0 10px; }
html body .pn-review .rv-zone>i{ font-size:9px; letter-spacing:.24em; }
html body .pn-review .rv-signoff-read{ font-size:13px; max-width:60ch; }

/* the dock drops a register — it is the NEXT ACTION under the verdict, not a second headline */
html body .pn-review .rv-dock{
  padding-top:clamp(10px,1.6vh,16px);
  border-top:1px solid var(--rvc-hair);
}
html body .pn-review .rv-dock-note{ font-size:12px; opacity:.88; }

/* ── THE SHEET + ASIDE DROP A REGISTER (evidence + witness, not co-heroes) ──────────────────── */
html body .pn-review .rv-sheet-hd,
html body .pn-review .rv-cols{ opacity:.92; }
html body .pn-review .rv-client-id b{ font-family:var(--pn-type-face) !important; font-weight:800 !important; letter-spacing:-.01em !important; }

/* THE VOID COLUMN — a waiting mark, not a blank cell */
html body .pn-review .rv-stamp-wait{
  font-style:normal; color:var(--rv-dim); opacity:.55; letter-spacing:.3em; font-size:11px;
}

/* ── THE HEADER, GIVEN ROOM INSTEAD OF ABBREVIATED ────────────────────────────────────────── */
@media (max-width:760px){
  html body .pn-review .rv-cols{
    grid-template-columns:24px minmax(0,1fr) 62px 66px !important; gap:6px !important;
    font-size:7.5px !important; letter-spacing:.12em !important; line-height:1.25;
    padding:7px 12px !important;
  }
  html body .pn-review .rv-cols-sig{ white-space:normal !important; text-align:right; }
  html body .pn-review .rv-cols-str{ grid-column:3 !important; }
  html body .pn-review .rv-cols>span:last-child{ grid-column:4 !important; }
}

/* ── THE DOUBLE-STICKY FIX (Occlusion Law 2) — the wrapper sticks, the children don't ───────── */
@media (max-width:760px){
  html body .pn-review:not(.has-fork) .rv-foot{
    position:sticky !important; bottom:0 !important; z-index:3 !important;
    background:var(--rvc-bg);
    box-shadow:0 -18px 30px -22px rgba(0,0,0,.55);
  }
  html body .pn-review:not(.has-fork) .rv-signoff,
  html body .pn-review:not(.has-fork) .rv-dock{
    position:static !important; bottom:auto !important;
  }
  html body .pn-review .rv-signoff{ padding-left:16px; padding-right:16px; }
  html body .pn-review .rv-dock{ padding-left:16px; padding-right:16px; padding-bottom:14px; }
  /* the sheet needs real clearance above the now-taller sticky hero, or the last row hides under it */
  html body .pn-review:not(.has-fork) .rv-rows{ padding-bottom:8px; }
}

@media (prefers-reduced-motion:reduce){
  html body .pn-review .rv-signoff-stamp{ animation:none !important; }
}
