/* ===== A4 print — light, clean, ink-friendly ===== */

/* The app ships <meta name="color-scheme" content="dark">, which makes the UA
   paint the page canvas dark. The canvas sits behind html/body, so setting a
   white background on those is not enough — the sheet margins still print
   near-black (#121212). Forcing a light colour-scheme for print resets the
   canvas itself, so the whole A4 page is white. */
html { color-scheme: light !important; }

@page { size: A4; margin: 14mm 12mm; background: #fff; }

html, body {
  background: #fff !important;
  background-color: #fff !important;
  color: #14141a !important;
  font-size: 10.6pt !important;
  line-height: 1.42 !important;
  /* keep the meaningful colour (bands, region bars, pass/amber/fail) */
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.topbar, .foot, .toast-wrap, .storage-banner, .no-print,
.page-head, .wiz-top, .wiz-foot, .filters, .tab-row, .skip-link,
.guide > summary, .modal-back { display: none !important; }

.main { max-width: none !important; padding: 0 !important; }
.section { margin-bottom: 10mm !important; }

h1, h2, h3, h4 { color: #0d0d12 !important; }
h1 { font-size: 20pt !important; }
h2 { font-size: 14pt !important; }
h3 { font-size: 11.5pt !important; }
.eyebrow, .lbl, .muted, .mc-n, .rep-meta div span { color: #45454f !important; }
/* These three set color:var(--muted) (#9A9A9E) directly, so the rule above never
   reaches them. At 2.4:1 on white they printed too faint to read: .ks-p is the
   keystone card label, .mc-p the exercise-menu sub-line, .mr-s the asymmetry
   "FAIL vs AMBER" comparison. */
.ks-p, .mc-p, .mr-s { color: #45454f !important; }

.report, .card, .protocol, .ks-card, .menu-card, .prio, .mini-row, .score-hero, .block-score {
  background: #fff !important;
  border-color: #c9c9d1 !important;
  box-shadow: none !important;
  break-inside: avoid;
}
.report { padding: 0 !important; border: 0 !important; }
.card { padding: 5mm !important; }
.rep-head { border-bottom: 2pt solid #001010 !important; align-items: start !important; }

/* ===== Brand lockup =====
   The identity is volt (#CAFF00) on near-black and only ever appears that way.
   Volt on white is ~1.1:1 contrast — illegible — so instead of recolouring the
   text we give the lockup its own dark brand plate. That reproduces the real
   mark in its real colours while the rest of the sheet stays white.
   The SVG uses fill="currentColor", so `color` drives it. */
.rep-lockup, .proto-mark {
  background: #001010 !important;
  color: #CAFF00 !important;
  display: inline-block !important;
  /* the lockup is a flex item inside a column, which would stretch the plate to
     the full column width — keep it hugging the mark */
  align-self: flex-start !important;
  height: auto !important;
  width: auto !important;
  padding: 4mm 5.5mm !important;
  border-radius: 1.6mm !important;
  line-height: 0 !important;
}
.rep-lockup svg, .proto-mark svg {
  fill: #CAFF00 !important;
  display: block !important;
  width: auto !important;
}
.rep-lockup svg { height: 11mm !important; }
.proto-mark svg { height: 7mm !important; }

/* Marks that sit inline in body copy stay dark brand ink — no plate. */
.brand-lockup, .brand-wordmark, .foot-mark { color: #001010 !important; }
.brand-lockup svg, .brand-wordmark svg { fill: #001010 !important; }

.score-hero { border: 1pt solid #c9c9d1 !important; }
.score-big { color: #14141a !important; font-size: 46pt !important; }
.band-chip { border: 1pt solid #14141a !important; }
.band-green { background: #CAFF00 !important; color: #14141a !important; }
.band-amber { background: #FFB020 !important; color: #14141a !important; }
.band-red { background: #E23A3A !important; color: #fff !important; }

.rb .track { background: #ececed !important; border-color: #c9c9d1 !important; }
.rb .rb-name, .rb .rb-val { color: #14141a !important; }
.rb .track i { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

.chip, .tag, .asym-chip, .auto-band, .pill { border-color: #b9b9c2 !important; color: #33333c !important; background: #f4f4f6 !important; }
.chip.green, .pill.g { background: #eaffb0 !important; color: #2f3d00 !important; }
.chip.amber, .pill.a, .asym-chip { background: #ffeccd !important; color: #6b4400 !important; }
.chip.red, .pill.r { background: #ffdede !important; color: #7a1414 !important; }

.ks-v.ks-MOBILITY { color: #0a6f9e !important; }
.ks-v.ks-STABILITY { color: #4d6600 !important; }
.ks-v.ks-MOTOR { color: #6b2c8f !important; }
.ks-v.ks-NONE { color: #55555f !important; }

.menu-card.g { border-left-color: #7fa300 !important; }
.menu-card.a { border-left-color: #c07800 !important; }
.menu-card.r { border-left-color: #cc2f2f !important; }
.prio::before { color: #6f8f00 !important; }
.prio p b, .prio h4 { color: #14141a !important; }
/* .prio p uses var(--muted) directly (#9A9A9E), so the generic .muted rule above
   never reaches it — on a white page that prints far too faint to read. */
.prio p, .cue { color: #1f1f27 !important; }
.cue { border-left-color: #7fa300 !important; }

.two-col { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 6mm !important; }
.chart-box { height: 68mm !important; }
.chart-box.sm { height: 52mm !important; }
canvas { max-width: 100% !important; filter: brightness(.42) saturate(1.5); }

/* protocol */
.protocol { max-width: none !important; }
.protocol h2 { border-bottom: 1pt solid #c9c9d1 !important; margin-top: 8mm !important; break-after: avoid; }
.protocol h3, .protocol h4 { break-after: avoid; }
.protocol p, .protocol li { color: #1f1f27 !important; font-size: 10pt !important; }
.proto-item { border-left: 1.5pt solid #c9c9d1 !important; break-inside: avoid; }
.protocol .card { border: 1pt solid #c9c9d1 !important; }

/* guidance opens for teaching printouts */
details.guide { border-color: #c9c9d1 !important; background: #fafafb !important; }
details.guide .guide-body { display: grid !important; }

/* Coach notes block */
.note-list, .note-item, .sec-note-block { break-inside: avoid; }
.note-item { background: #fafafb !important; border: 1pt solid #d5d5dc !important; }
.note-item .ni-txt, .sec-note-txt { color: #1f1f27 !important; }
.sec-note-block { border-top: 1pt solid #d5d5dc !important; }
.sec-note-block h4 { color: #14141a !important; }
.verdict-chip { border: 1pt solid #b9b9c2 !important; }
.verdict-chip.v-A { background: #ffeccd !important; color: #6b4400 !important; }
.verdict-chip.v-F { background: #ffdede !important; color: #7a1414 !important; }
.verdict-chip.v-P { background: #eaffb0 !important; color: #2f3d00 !important; }
/* matches the Do/Cue weight beside it — was noticeably lighter on paper */
.note-inline { color: #33333c !important; }
.note-badge { background: #ffeccd !important; color: #6b4400 !important; border-color: #b9b9c2 !important; }
.note-box, .section-note, .note-chips { display: none !important; }

a { color: #14141a !important; text-decoration: none !important; }
table { min-width: 0 !important; font-size: 8.6pt !important; }
th { background: #f4f4f6 !important; color: #33333c !important; position: static !important; }
th, td { border-color: #d5d5dc !important; }
.table-scroll { overflow: visible !important; border-color: #c9c9d1 !important; }

/* PWA chrome never prints */
.net-status,.net-strip,.storage-banner,.sw-update,.device-note{display:none !important}
