/* VIPER Survival Lab — Risk report tab, share box, challenge banner/compare,
   and ALL @media print rules for the page. Modernist tokens from site.css;
   the report itself is white paper with ink type and square corners. */

/* ── report tab frame ─────────────────────────────────────────────────── */
.lab-report-head { margin: 0 0 14px; }
.lab-report-head .lab-card-sub { max-width: 70ch; margin-bottom: 0; }
.lab-report-actions { border: 1px solid var(--lab-line); background: var(--lab-panel); padding: 14px 16px; }
.lab-report-actions .lab-help { margin-top: 10px; }
.lab-report-btns .btn[hidden] { display: none; }
.lab-report-status:not(:empty) { margin: 10px 0 0; }
.lab-report-status .lab-copyfield, .lab-share-status .lab-copyfield { margin-top: 8px; }
.lab-share-ok, .lab-share-warn, .lab-share-note { margin: 0; font-size: 13.5px; line-height: 20px; display: flex; gap: 8px; align-items: flex-start; }
.lab-share-ok { color: var(--lab-win); font-weight: 600; }
.lab-share-ok::before { content: "✓"; font-weight: 800; }
.lab-share-warn { color: var(--lab-caution); font-weight: 600; }
.lab-share-warn::before { content: "!"; display: inline-grid; place-items: center; width: 18px; height: 18px; flex: none; border: 2px solid currentColor; font-size: 11px; font-weight: 800; line-height: 1; }
.lab-share-note { color: var(--lab-muted); }
.lab-share-status:not(:empty) { margin-top: 12px; }
.lab-share-status .btn { margin-top: 8px; }

/* share box */
.lab-share { margin: 16px 0 0; border: 2px solid var(--color-text); background: #fff; padding: 18px; }
.lab-share-head .lab-card-sub { margin-bottom: 14px; max-width: 64ch; }
.lab-share-btns { gap: 8px; }
.lab-email-slot { display: contents; }
.lab-email { text-decoration: none; }
/* The mailto anchor must look exactly like its sibling buttons: site.css's
   a:hover colour outranks .btn, which turned it red on hover and after a tap. */
a.lab-email, a.lab-email:visited, a.lab-email:hover, a.lab-email:focus, a.lab-email:active { color: var(--color-text); }
/* Scrollable tables are focusable regions (keyboard scrolling, WCAG 2.1.1). */
.lab-report .lab-table-wrap:focus-visible, .lab-challenge .lab-table-wrap:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.lab-share-help { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 6px 22px; margin-top: 12px; }
.lab-share-help .lab-help { margin: 0; }
.lab-share-help strong { color: var(--color-text); font-weight: 700; }
.lab-challenge-composer { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--lab-line); }
.lab-composer-title { font-size: 15px; margin: 0 0 4px; }
.lab-composer-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 4px 16px; align-items: end; margin: 10px 0 4px; }
.lab-composer-grid .lab-field { margin-bottom: 8px; }
.lab-rcheck { display: flex; gap: 10px; align-items: flex-start; font-size: 13.5px; line-height: 19px; margin: 0 0 12px; cursor: pointer; }
.lab-rcheck input { width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--color-text); flex: none; }
@media (max-width: 640px) { .lab-composer-grid { grid-template-columns: minmax(0, 1fr); } }

.lab-report-notice:not(:empty) { margin-top: 16px; }
.lab-report-notice .lab-banner { margin: 0; }
.lab-notice-btns { margin-top: 10px; }

/* ── the paper ───────────────────────────────────────────────────────── */
.lab-paper {
  --ink: #201e1d; --ink-2: #4a4544; --rule: #d9d5d3; --tint: #f6f5f4;
  margin: 18px 0 0; background: #fff; color: var(--ink);
  border: 1px solid var(--lab-line); box-shadow: 0 1px 0 rgba(32, 30, 29, .04), 0 10px 30px rgba(32, 30, 29, .07);
}
.lab-paper-empty { padding: 48px clamp(18px, 4vw, 48px); text-align: left; }
.lab-paper-empty h3 { font-size: 22px; margin: 0 0 8px; }
.lab-paper-empty p { font-size: 15px; line-height: 24px; max-width: 56ch; color: var(--ink-2); }
.lab-sheet { padding: clamp(18px, 4vw, 44px) clamp(16px, 4.2vw, 48px) 22px; position: relative; }
.lab-sheet + .lab-sheet { border-top: 6px solid var(--color-bg); }
.lab-sheet-bar {
  display: flex; justify-content: space-between; gap: 12px; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ink-2); padding-bottom: 10px; border-bottom: 2px solid var(--ink); margin-bottom: 20px;
}
.lab-sheet-num { white-space: nowrap; font-feature-settings: 'tnum' 1; }
.lab-sheet-title { font-size: clamp(22px, 2.6vw, 30px); line-height: 1.12; letter-spacing: -.015em; margin: 0 0 6px; max-width: 26ch; }

.lab-paper-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.lab-rbrand { display: inline-flex; align-items: center; gap: 10px; }
.lab-rbrand-mark { display: block; }
.lab-rbrand-name { font-family: var(--font-heading); font-weight: 800; font-size: 14px; letter-spacing: .14em; }
.lab-paper-meta { display: flex; gap: 22px; margin: 0; font-size: 12px; }
.lab-paper-meta dt { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.lab-paper-meta dd { margin: 2px 0 0; font-weight: 600; font-feature-settings: 'tnum' 1; }
.lab-report-id { font-family: ui-monospace, Consolas, monospace; letter-spacing: .02em; }
.lab-paper-eyebrow { margin: 26px 0 6px; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--color-accent-700); font-weight: 700; }
.lab-paper-title { font-size: clamp(28px, 3.6vw, 42px); line-height: 1.04; letter-spacing: -.02em; margin: 0; max-width: 20ch; }
.lab-paper-label { font-size: 15px; margin: 8px 0 0; color: var(--ink-2); font-style: italic; overflow-wrap: anywhere; }

.lab-rfacts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0; margin: 18px 0 0; border-top: 1px solid var(--rule); }
.lab-rfact { padding: 9px 12px 9px 0; border-bottom: 1px solid var(--rule); min-width: 0; }
.lab-rfact dt { font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-2); margin: 0 0 2px; }
.lab-rfact dd { margin: 0; font-size: 14px; line-height: 20px; font-weight: 600; font-feature-settings: 'tnum' 1; overflow-wrap: anywhere; }

.lab-rkpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: 20px 0 0; border: 2px solid var(--ink); }
.lab-rkpi { padding: 14px 14px 12px; min-width: 0; }
.lab-rkpi + .lab-rkpi { border-left: 1px solid var(--rule); }
.lab-rkpi-label { margin: 0 0 6px; font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-2); }
.lab-rkpi-value { margin: 0; font-family: var(--font-heading); font-weight: 800; font-size: clamp(20px, 2.3vw, 27px); line-height: 1.05; font-feature-settings: 'tnum' 1; letter-spacing: -.01em; }
.lab-rkpi-split { white-space: nowrap; font-size: clamp(18px, 1.9vw, 23px); }
.lab-rkpi-sep { color: var(--ink-2); font-weight: 600; }
.lab-rkpi-note { margin: 7px 0 0; font-size: 11.5px; line-height: 16px; color: var(--ink-2); }
@media (max-width: 760px) {
  .lab-rkpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lab-rkpi:nth-child(3) { border-left: 0; }
  .lab-rkpi:nth-child(n + 3) { border-top: 1px solid var(--rule); }
}

.lab-rfinding { margin: 18px 0 0; border-left: 4px solid var(--color-accent); background: var(--tint); padding: 14px 16px; }
.lab-rfinding-label { margin: 0 0 4px; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--color-accent-700); }
.lab-rfinding-text { margin: 0; font-family: var(--font-heading); font-weight: 700; font-size: 16.5px; line-height: 24px; }
.lab-rfinding-note { margin: 8px 0 0; font-size: 12.5px; line-height: 18px; color: var(--ink-2); }

.lab-rh {
  font-size: 13px; letter-spacing: .1em; text-transform: uppercase; margin: 28px 0 10px; padding-top: 12px;
  border-top: 1px solid var(--ink); display: flex; align-items: baseline; gap: 10px;
}

/* tags */
.lab-rtag { display: inline-block; font-size: 10px; line-height: 1; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; padding: 3px 6px; border: 1px solid currentColor; vertical-align: 1px; white-space: nowrap; }
.lab-rtag-exact { color: var(--lab-win); }
.lab-rtag-approx { color: var(--lab-caution); }
.lab-rtag-method { color: var(--ink-2); }
.lab-rtag-win { color: var(--lab-win); } .lab-rtag-push { color: var(--lab-push); } .lab-rtag-loss { color: var(--lab-loss); }
.lab-rsev-high { color: var(--lab-loss); } .lab-rsev-medium { color: var(--lab-caution); }

/* felt illustration */
.lab-rfelt-fig { margin: 0; }
.lab-rfelt-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--rule); background: #fff; }
.lab-rfelt { display: block; width: 100%; height: auto; min-width: 560px; }
.lab-rf-num { font: 700 21px var(--font-heading); }
.lab-rf-cls { font: 700 12px var(--font-body); }
.lab-rf-box { font: 700 15px var(--font-heading); letter-spacing: .04em; }
.lab-rf-chiptext { font: 800 12px var(--font-heading); }
.lab-rf-chiptext-sm { font-size: 11px; }
.lab-rfelt-cap { display: flex; flex-wrap: wrap; gap: 4px 18px; justify-content: space-between; font-size: 12px; line-height: 17px; color: var(--ink-2); margin-top: 8px; }
.lab-rlegend { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; color: var(--ink); }
.lab-rkey { display: inline-grid; place-items: center; width: 18px; height: 18px; border: 1px solid var(--ink); font-weight: 800; font-size: 12px; line-height: 1; margin-left: 6px; }
.lab-rkey:first-child { margin-left: 0; }
.lab-rkey-win { background: #dcefe4; } .lab-rkey-push { background: #e3e8ef; } .lab-rkey-loss { background: #fbe3dc; }

/* layouts per level (only when the progression changes the layout at some levels) */
.lab-rlevels { margin: 18px 0 0; }
.lab-rlevels-lead { margin: 0 0 10px; max-width: 72ch; }
.lab-rtable.lab-rlevels-table td, .lab-rtable.lab-rlevels-table tbody th { white-space: nowrap; }
.lab-rtable.lab-rlevels-table thead th { white-space: normal; vertical-align: bottom; }
.lab-rtable.lab-rlevels-table td:nth-child(2) { white-space: normal; }
.lab-rlevels-table .lab-rlevel-custom th { box-shadow: inset 3px 0 0 var(--ink); }
/* Levels a losing run from the starting bankroll never reaches: greyed, and labelled in words for print. */
.lab-rlevels-table .lab-rlevel-unfunded th, .lab-rlevels-table .lab-rlevel-unfunded td { color: #5f5a58; }
.lab-rlevels-table .lab-rlevel-unfunded .lab-pos, .lab-rlevels-table .lab-rlevel-unfunded .lab-neg, .lab-rlevels-table .lab-rlevel-unfunded .lab-zero { color: #5f5a58; }
.lab-rlevel-nf { font-weight: 400; white-space: nowrap; }
.lab-rcovladder { margin: 12px 0 0; }
.lab-rtag-custom { color: var(--ink); }
.lab-rlevel-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 14px 16px; margin: 14px 0 0; }
.lab-rlevel-fig { margin: 0; min-width: 0; }
.lab-rlevel-cap { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; font-size: 12.5px; line-height: 18px; margin: 0 0 6px; }
.lab-rlevel-name { font-weight: 800; }
.lab-rlevel-meta { color: var(--ink-2); font-feature-settings: 'tnum' 1; }
.lab-rlevel-felt { overflow: hidden; }
.lab-rfelt.lab-rfelt-sm { min-width: 0; }
.lab-rfelt-sm .lab-rf-num { font-size: 30px; }
.lab-rfelt-sm .lab-rf-box { font-size: 18px; }
.lab-rfelt-sm .lab-rf-chiptext { font-size: 17px; }
.lab-rfelt-sm .lab-rf-chiptext-sm { font-size: 14px; }

/* distribution */
.lab-rdist { display: grid; gap: 6px; }
.lab-rdist-row { display: grid; grid-template-columns: 74px minmax(60px, 1fr) 118px 92px; gap: 12px; align-items: center; font-size: 13px; font-feature-settings: 'tnum' 1; }
.lab-rdist-net { font-weight: 700; text-align: right; }
.lab-rdist-track { display: block; height: 12px; }
.lab-rdist-svg { display: block; width: 100%; height: 12px; }
.lab-fill-win { fill: #2f8a5c; } .lab-fill-push { fill: #7d8ba0; } .lab-fill-loss { fill: #d4472c; }
.lab-rdist-count { color: var(--ink-2); white-space: nowrap; }
.lab-rdist-cls { font-size: 12px; color: var(--ink-2); white-space: nowrap; }
@media (max-width: 560px) {
  .lab-rdist-row { grid-template-columns: 62px minmax(40px, 1fr) auto; gap: 8px; }
  .lab-rdist-cls { display: none; }
}

/* tables on paper */
.lab-rtable { font-size: 13px; }
.lab-rtable caption { color: var(--ink-2); }
/* tableWrap(): caption text shown above the scroll area on screen, the real
   <caption> kept for assistive tech and restored for print. */
.lab-rcap { font-size: 12.5px; line-height: 18px; color: var(--ink-2); margin: 0 0 6px; }
@media screen {
  .lab-rcap-src { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
}
@media print {
  .lab-rcap { display: none; }
}
.lab-rtable th, .lab-rtable td { padding: 7px 8px; }
.lab-rtable thead th { color: var(--ink-2); border-bottom: 2px solid var(--ink); white-space: nowrap; }
.lab-rtable tbody th, .lab-rtable tfoot th { font-weight: 600; text-align: left; text-transform: none; letter-spacing: 0; font-size: inherit; color: var(--ink); border-bottom: 1px solid var(--rule); }
.lab-rtable tbody th.r { text-align: right; }
.lab-rtable td, .lab-rtable tbody th { border-bottom: 1px solid var(--rule); vertical-align: top; }
.lab-rtable tfoot th, .lab-rtable tfoot td { border-top: 2px solid var(--ink); font-weight: 700; padding-top: 9px; }
.lab-rtable tfoot th { text-align: left; }
.lab-pockets { font-size: 12px; color: var(--ink-2); min-width: 160px; }
.lab-rcoverage { margin: 12px 0 0; display: grid; gap: 0; border-top: 1px solid var(--rule); }
.lab-rcoverage .lab-rfact { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 12px; align-items: baseline; }
.lab-rcoverage .lab-rfact dd { font-weight: 500; }
@media (max-width: 560px) { .lab-rcoverage .lab-rfact { grid-template-columns: minmax(0, 1fr); gap: 2px; } }

.lab-rladder td:last-child { min-width: 150px; }
/* Three-column desktop grid at laptop widths leaves the report ~550px: tighten
   the ladder's cell padding so its seven columns fit without a sideways scroll. */
@media screen and (min-width: 1181px) and (max-width: 1340px) {
  .lab-rladder th, .lab-rladder td { padding-left: 5px; padding-right: 5px; }
  .lab-rladder td:last-child { min-width: 120px; }
}
/* The ladder gains a Level column: keep eight columns inside the laptop-width report. */
@media screen and (min-width: 561px) and (max-width: 1340px) {
  .lab-rladder-levels th, .lab-rladder-levels td { padding-left: 3px; padding-right: 3px; }
  .lab-rladder-levels td:last-child { min-width: 80px; }
  .lab-rtable.lab-rlevels-table th, .lab-rtable.lab-rlevels-table td { padding-left: 5px; padding-right: 5px; }
  .lab-rwhatif th, .lab-rwhatif td { padding-left: 5px; padding-right: 5px; }
}
.lab-rrow-fail td, .lab-rrow-fail th { background: #fbe3dc; font-weight: 700; color: var(--color-accent-800); }
.lab-rrow-stop td, .lab-rrow-stop th { background: #fbf0d9; font-weight: 700; color: var(--lab-caution); }
.lab-rrow-mark td, .lab-rrow-mark th { box-shadow: inset 0 -2px 0 var(--lab-caution); }
.lab-rrow-gap td { text-align: center; color: var(--ink-2); font-style: italic; font-size: 12px; }
.lab-rrow-base th, .lab-rrow-base td { background: var(--tint); font-weight: 700; }
/* Phone screens: each ladder row becomes a labelled block with its status on
   the first line, so "Not fundable" never hides behind a sideways scroll.
   Screen only: print keeps the ordinary table. The header row stays in the
   accessibility tree (clipped, not removed) and the roles set in report.js
   keep the table structure. */
@media screen and (max-width: 560px) {
  .lab-rladder, .lab-rladder caption, .lab-rladder tbody { display: block; }
  .lab-rladder thead { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .lab-rladder tbody tr { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 10px; padding: 9px 0; border-bottom: 1px solid var(--rule); }
  .lab-rladder tbody th, .lab-rladder tbody td { padding: 0; border: 0; min-width: 0; text-align: left; background: none; }
  .lab-rladder tbody th.r, .lab-rladder tbody td.r { text-align: left; }
  .lab-rladder tbody [data-label]::before { content: attr(data-label); display: block; font-size: 10.5px; line-height: 14px; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; color: var(--ink-2); }
  .lab-rladder tbody th { grid-column: 1; grid-row: 1; }
  .lab-rladder td.lab-rladder-status { grid-column: 2 / -1; grid-row: 1; min-width: 0; }
  .lab-rladder .lab-rrow-fail, .lab-rladder .lab-rrow-stop { padding: 9px 8px; }
  .lab-rladder .lab-rrow-fail { background: #fbe3dc; }
  .lab-rladder .lab-rrow-stop { background: #fbf0d9; }
  .lab-rladder .lab-rrow-mark { box-shadow: inset 0 -2px 0 var(--lab-caution); }
  .lab-rladder .lab-rrow-mark td, .lab-rladder .lab-rrow-mark th { box-shadow: none; }
  .lab-rladder .lab-rrow-gap td { grid-column: 1 / -1; text-align: center; }
}
.lab-stopnote { margin: 12px 0 0; }
.lab-stoppath { margin: 12px 0 0; }
.lab-stoppath summary { cursor: pointer; font-weight: 700; font-size: 13.5px; padding: 6px 0; min-height: 32px; }

.lab-legexs { margin: 16px 0 0; }
.lab-legexs-title { margin: 0 0 8px; font-weight: 600; color: var(--ink); }
.lab-legex-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.lab-legex { border: 1px solid var(--rule); padding: 12px 14px; font-size: 13px; line-height: 19px; }
.lab-legex-head { margin: 0 0 8px; }
.lab-legex ul { list-style: none; padding: 0; margin: 0; }
.lab-legex li { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; border-bottom: 1px dotted var(--rule); }
.lab-legex-sum { margin: 8px 0 0; }
.lab-rexact { margin: 14px 0 0; font-size: 13.5px; line-height: 20px; }

.lab-rfps { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.lab-rfp { min-width: 0; }
.lab-rfp-head .lab-rtag, .lab-rfindings .lab-rtag { white-space: normal; line-height: 1.25; }
.lab-rfp { border-left: 3px solid var(--ink); padding: 2px 0 2px 14px; }
.lab-rfp p { margin: 0; font-size: 13.5px; line-height: 20px; }
.lab-rfp-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-bottom: 4px !important; }
.lab-rfp-disclaimer { margin-top: 6px !important; font-size: 12px !important; line-height: 17px !important; color: var(--ink-2); font-style: italic; }
.lab-rmono { font-family: ui-monospace, Consolas, monospace; font-size: 12.5px; }
.lab-rfindings { list-style: none; padding: 0; margin: 6px 0 0; display: grid; gap: 6px; font-size: 13px; line-height: 19px; }
.lab-rwhatif-name { display: block; font-weight: 700; }
.lab-rwhatif-change { display: block; font-weight: 400; font-size: 12px; color: var(--ink-2); }
.lab-rwhatif td { white-space: nowrap; }
/* A scenario whose chip rounding changes which pockets lose: flagged, never a reduction. */
.lab-rwhatif-flag { display: block; margin-top: 4px; font-weight: 600; font-size: 12px; line-height: 16px; color: var(--lab-caution); }
.lab-rwhatif-flag::before { content: "! "; font-weight: 800; }
.lab-rrow-caution th, .lab-rrow-caution td { background: var(--lab-caution-bg); }
.lab-rrow-caution th { box-shadow: inset 3px 0 0 var(--lab-caution); }
@media screen and (max-width: 560px) { .lab-rwhatif tbody th { min-width: 170px; } }
/* Long column names wrap so the ladders and what-ifs fit the paper on desktop. */
.lab-rladder thead th, .lab-rwhatif thead th { white-space: normal; vertical-align: bottom; }

.lab-rexactonly { border: 1px solid var(--rule); padding: 14px 16px; font-size: 13.5px; line-height: 21px; }
.lab-rexactonly p { margin: 0; }
.lab-rexactonly-tag { margin-bottom: 6px !important; }
.lab-rsimtag { font-size: 13px; color: var(--ink-2); margin: 0; }
.lab-rsimblock .lab-rkpis { margin-top: 14px; }
.lab-rsimblock .lab-table-wrap { margin-top: 14px; }
.lab-assume { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 21px; }
.lab-assume li + li { margin-top: 4px; }
.lab-repro { margin-top: 10px; overflow-wrap: anywhere; }
.lab-gloss { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; margin: 0; }
.lab-gloss > div { padding: 7px 0; border-bottom: 1px solid var(--rule); font-size: 12.5px; line-height: 18px; }
.lab-gloss dt { font-weight: 700; }
.lab-gloss dd { margin: 1px 0 0; color: var(--ink-2); }
@media (max-width: 560px) { .lab-gloss { grid-template-columns: minmax(0, 1fr); } }
.lab-privacy { margin: 18px 0 0; padding: 12px 14px; border: 1px solid var(--ink); font-size: 13px; line-height: 19px; }

/* One footer closes the paper, aligned with the last sheet's text. */
.lab-sheet-foot { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 6px clamp(16px, 4.2vw, 48px) 0; padding: 10px 0 22px; border-top: 1px solid var(--rule); font-size: 11px; line-height: 16px; color: var(--ink-2); }
.lab-sheet-foot p { margin: 0; }
.lab-foot-meta { text-align: right; font-feature-settings: 'tnum' 1; }
@media (max-width: 560px) { .lab-foot-meta { text-align: left; } }
.lab-foot-print { display: none; }

/* end-of-report CTA (screen only) */
.lab-report-cta {
  display: flex; align-items: center; justify-content: space-between; gap: 18px 32px; flex-wrap: wrap;
  margin: 18px 0 0; padding: 22px clamp(16px, 3vw, 28px); border: 2px solid var(--color-divider); background: var(--color-bg);
}
.lab-rcta-copy { flex: 1 1 380px; min-width: 0; }
.lab-rcta-title { font-size: 20px; line-height: 1.2; margin: 0 0 8px; }
.lab-rcta-body { font-size: 14.5px; line-height: 23px; margin: 0; max-width: 66ch; color: color-mix(in srgb, var(--color-text) 82%, transparent); }
.lab-rcta-small { font-size: 12px; line-height: 17px; margin: 10px 0 0; color: var(--lab-muted); }
.lab-rcta-btn { text-decoration: none; white-space: nowrap; }

/* ── challenge banner + compare ──────────────────────────────────────── */
.lab-challenge { border: 2px solid var(--color-text); background: #fff; padding: 18px clamp(14px, 2.4vw, 24px); margin: 0 0 16px; scroll-margin-top: 12px; }
.lab-challenge-intro { display: flex; flex-direction: column; min-width: 0; }
.lab-challenge-main { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px 32px; }
.lab-challenge-title { font-size: clamp(19px, 2.1vw, 24px); line-height: 1.2; margin: 0 0 8px; max-width: 34ch; }
.lab-challenge-obj { font-size: 15px; line-height: 23px; margin: 0 0 8px; }
.lab-challenge-disc { font-size: 12.5px; line-height: 18px; color: var(--lab-muted); margin: 0; }
.lab-chpins { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; margin: 0; }
.lab-chpin { padding: 6px 0; border-bottom: 1px solid var(--lab-line); min-width: 0; }
.lab-chpin dt { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-muted); }
.lab-chpin dd { margin: 1px 0 0; font-size: 13.5px; font-weight: 600; overflow-wrap: anywhere; font-feature-settings: 'tnum' 1; }
.lab-chpin-changed dd { color: var(--lab-caution); }
.lab-chpin-flag { font-weight: 800; }
.lab-challenge-warn { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 14px 0 0; padding: 10px 12px; border-left: 4px solid var(--lab-caution); background: var(--lab-caution-bg); }
.lab-challenge-warn p { margin: 0; font-size: 13.5px; line-height: 20px; }
.lab-challenge-btns { margin-top: auto; padding-top: 14px; }
.lab-challenge-close { margin-left: auto; color: var(--lab-muted); }
@media (max-width: 760px) {
  .lab-challenge-main { grid-template-columns: minmax(0, 1fr); }
  .lab-challenge-close { margin-left: 0; }
}
.lab-chcompare { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--lab-line); }
.lab-chcompare:focus { outline: none; }
.lab-chcompare:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
.lab-chverdict { display: inline-flex; align-items: center; gap: 10px; margin: 4px 0 12px; padding: 8px 12px; border: 2px solid currentColor; font-family: var(--font-heading); font-weight: 800; font-size: 16px; }
.lab-chverdict-better { color: var(--lab-win); } .lab-chverdict-worse { color: var(--lab-loss); }
.lab-chverdict-mixed { color: var(--lab-caution); } .lab-chverdict-same { color: var(--lab-push); }
.lab-chverdict-invalid { color: var(--lab-caution); background: var(--lab-caution-bg); border-style: dashed; }
.lab-chcompare-table tbody th { text-transform: none; letter-spacing: 0; font-size: 13.5px; font-weight: 600; color: var(--color-text); border-bottom: 1px solid var(--lab-line); }
.lab-chcompare-table td:last-child { white-space: nowrap; font-weight: 600; }
.lab-chres-better { color: var(--lab-win); } .lab-chres-worse { color: var(--lab-loss); } .lab-chres-same { color: var(--lab-push); }
.lab-chres-mixed { color: var(--lab-caution); font-weight: 600; }
.lab-chlevels { margin: 14px 0 6px; }
.lab-chlevels-title { margin: 0 0 6px; font-size: 14px; font-weight: 800; }
.lab-chlevels-table td { min-width: 104px; }
.lab-chlevels-table tbody th { text-transform: none; letter-spacing: 0; font-size: inherit; font-weight: 700; color: var(--color-text); white-space: nowrap; }
.lab-challenge-levels { margin: 0 0 8px; font-size: 13.5px; line-height: 20px; }
.lab-chcompare-viol, .lab-chcompare-notes { margin: 10px 0; padding-left: 18px; font-size: 13.5px; line-height: 20px; }
.lab-chcompare-viol { color: var(--lab-caution); font-weight: 600; }
.lab-chcompare .lab-btn-row { margin: 12px 0 0; }
.lab-chcompare .lab-challenge-disc { margin-top: 12px; }

/* ── small screens ───────────────────────────────────────────────────── */
@media (max-width: 860px) {
  .lab-report-btns .btn, .lab-share-btns .btn { flex: 1 1 calc(50% - 8px); }
  .lab-report-btns .btn-primary, .lab-share-btns .btn-primary { flex-basis: 100%; }
  .lab-challenge-btns .btn { flex: 1 1 calc(50% - 8px); min-height: 44px; }
  .lab-page .btn-sm { min-height: 44px; }
  .lab-rcheck input { width: 22px; height: 22px; }
}
@media (max-width: 420px) {
  .lab-paper-meta { gap: 14px; }
}

/* ══════════════════════════════════════════════════════════════════════
   PRINT — only the report paper, black on white, Letter or A4, 0.5in.
   Page size is left to the visitor's print dialog (Letter and A4 both fit).
   ══════════════════════════════════════════════════════════════════════ */
@page {
  margin: 0.5in;
  @bottom-left { content: var(--lab-print-stamp, ""); font: 7.5pt "Archivo", system-ui, sans-serif; color: #555; }
  @bottom-right { content: "Page " counter(page) " of " counter(pages); font: 7.5pt "Archivo", system-ui, sans-serif; color: #555; }
}
@media print {
  html, body.lab-page { background: #fff !important; color: #000; }
  body.lab-page { font-size: 10pt; }
  /* Site chrome, intro, tabs, side columns, learn sections, other panels. */
  .lab-page .nav, .lab-page .subbar, .lab-page main > .page, .lab-page body > .page, body.lab-page > .page,
  .lab-page #lab-challenge, .lab-page .lab-tabs, .lab-page #lab-settings, .lab-page #lab-slip,
  .lab-page #lab-panel-build, .lab-page #lab-panel-analyze, .lab-page #lab-panel-sessions,
  .lab-page .lab-report-head, .lab-page .lab-report-actions, .lab-page .lab-report-status, .lab-page .lab-share,
  .lab-page .lab-report-notice, .lab-page .lab-report-cta, .lab-page dialog, .lab-page .lab-noscript, .lab-page #lab-live { display: none !important; }
  /* Ctrl+P from any tab prints the report. */
  .lab-page #lab-panel-report, .lab-page #lab-panel-report[hidden] { display: block !important; }
  .lab-page .lab-app { max-width: none; margin: 0; padding: 0; }
  .lab-page .lab-grid { display: block; }
  .lab-page .lab-col-main, .lab-page .lab-col { position: static !important; max-height: none !important; overflow: visible !important; }
  .lab-page .lab-panel { outline: none !important; }

  .lab-paper { margin: 0; border: 0; box-shadow: none; --tint: #fff; --rule: #bdb8b5; --ink-2: #333; }
  .lab-sheet { padding: 0; }
  .lab-sheet + .lab-sheet { border-top: 0; break-before: page; page-break-before: always; }
  .lab-sheet-bar { margin-bottom: 10pt; padding-bottom: 6pt; }
  .lab-paper-title { font-size: 22pt; }
  .lab-paper-eyebrow { margin-top: 12pt; }
  .lab-rbrand-name { font-size: 10pt; }
  .lab-rfacts { margin-top: 10pt; }
  .lab-rkpis { margin-top: 10pt; }
  .lab-rfinding { margin-top: 10pt; }
  .lab-rfinding-note { margin-top: 4pt; font-size: 8.5pt; line-height: 1.35; }
  .lab-rfelt-fig { max-width: 88%; }
  .lab-rfelt-cap { font-size: 8pt; line-height: 1.3; margin-top: 4pt; }
  /* Pagination: only parts 2 and 3 force a new page; the attribution footer
     appears once, at the end. Open-ended tables (payout by pocket, bets) flow
     across pages with repeated headers; small atoms and short bounded blocks
     never split, and headings and lead-ins stay with what follows. */
  .lab-rtable .lab-rrow-mark td, .lab-rtable .lab-rrow-mark th { box-shadow: none; border-bottom: 1.5pt solid #000; }
  .lab-sheet-title { font-size: 16pt; max-width: none; margin-bottom: 0; }
  .lab-paper-title { max-width: none; }
  .lab-rh { margin: 10pt 0 4pt; padding-top: 5pt; font-size: 9pt; break-after: avoid; page-break-after: avoid; }
  .lab-rkeep > .lab-note, .lab-legexs-title, .lab-stoppath summary, .lab-rsimtag, .lab-rfp-head { break-after: avoid; page-break-after: avoid; }
  .lab-paper p, .lab-paper li { orphans: 3; widows: 3; }
  .lab-rh, .lab-sheet-title, .lab-paper-head, .lab-rfinding, .lab-rfp, .lab-legex, .lab-privacy, .lab-rexactonly, .lab-stopnote, .lab-rkpis, .lab-rfacts, .lab-rcoverage, .lab-rdist-row, .lab-rfelt-fig, .lab-gloss > div, .lab-sheet-foot { break-inside: avoid; page-break-inside: avoid; }
  /* Short, bounded blocks stay whole (a ladder shows at most 14 rows, the
     what-ifs at most 5, the distribution one row per distinct result). */
  .lab-rdist, .lab-rladder, .lab-rwhatif, .lab-rkeep { break-inside: avoid; page-break-inside: avoid; }
  /* Print type scale: body copy at 9pt so part 3 fits one page. */
  .lab-rexact, .lab-rfp p, .lab-rfindings, .lab-legex, .lab-assume, .lab-rexactonly, .lab-privacy, .lab-stopnote { font-size: 9pt; line-height: 1.4; }
  .lab-paper .lab-note, .lab-paper .lab-help { font-size: 8.5pt; line-height: 1.4; }
  .lab-assume li + li { margin-top: 2pt; }
  .lab-rexactonly { padding: 7pt 9pt; }
  .lab-privacy { margin-top: 10pt; padding: 6pt 8pt; }
  .lab-gloss { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12pt; }
  .lab-gloss dt, .lab-gloss dd { display: inline; margin: 0; }
  .lab-gloss dt::after { content: " — "; font-weight: 400; }
  .lab-table-wrap { overflow: visible !important; }
  .lab-rtable { font-size: 8.5pt; }
  .lab-rtable th, .lab-rtable td { padding: 3.5pt 4pt; }
  .lab-rtable thead th { white-space: normal; }
  .lab-rtable thead { display: table-header-group; }
  .lab-rtable tr { break-inside: avoid; page-break-inside: avoid; }
  .lab-rtable caption { break-after: avoid; }
  .lab-pockets { min-width: 0; font-size: 8pt; }
  .lab-rladder td:last-child { min-width: 0; }
  .lab-rfelt-scroll { overflow: visible; border-color: #999; }
  .lab-rfelt { min-width: 0; }
  .lab-rkpi-value { font-size: 16pt; }
  .lab-rkpi { padding: 8pt 8pt 7pt; }
  .lab-rfinding { background: #fff; border: 1px solid #999; border-left: 4px solid #000; padding: 8pt 10pt; }
  .lab-rfinding-text { font-size: 11.5pt; line-height: 1.4; }
  .lab-rfact dd { font-size: 9.5pt; line-height: 1.35; }
  .lab-rfact { padding: 5pt 8pt 5pt 0; }
  .lab-rdist-row { font-size: 9pt; grid-template-columns: 58pt minmax(40pt, 1fr) 92pt 70pt; }
  .lab-rdist-cls { display: block; }
  .lab-rrow-fail td, .lab-rrow-fail th, .lab-rrow-stop td, .lab-rrow-stop th, .lab-rrow-base td, .lab-rrow-base th, .lab-rrow-caution td, .lab-rrow-caution th { background: none !important; }
  .lab-rtable .lab-rrow-caution th { box-shadow: inset 1.5pt 0 0 #000; }
  .lab-rtable .lab-rrow-fail td, .lab-rtable .lab-rrow-fail th { border-top: 1.5pt solid #000; border-bottom: 1.5pt solid #000; color: #000; }
  .lab-rtable .lab-rrow-stop td, .lab-rtable .lab-rrow-stop th { border-bottom: 1.5pt dashed #000; color: #000; }
  .lab-stoppath summary { list-style: none; }
  .lab-stoppath summary::-webkit-details-marker { display: none; }
  .lab-gloss > div { font-size: 8pt; line-height: 1.35; padding: 3pt 0; }
  .lab-sheet-foot { margin: 12pt 0 0; padding: 6pt 0 0; font-size: 7.5pt; line-height: 1.4; color: #333; }
  .lab-foot-screen { display: none; }
  .lab-foot-print { display: block; }
  /* Colour-safe marks: keep fills where the printer allows, and every mark also has a sign or label. */
  .lab-rfelt, .lab-rdist-svg, .lab-rkey { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .lab-pos, .lab-neg, .lab-zero, .lab-rtag, .lab-rsev-high, .lab-rsev-medium, .lab-rwhatif-flag { color: #000 !important; }
  a { color: #000; text-decoration: none; }
}
@media print {
  /* Layouts per level: two small felts a row, three when there are many, never split. */
  .lab-rlevels-lead { margin-bottom: 6pt; }
  .lab-rlevels-top, .lab-rlevels-table, .lab-rlevel-fig, .lab-rcovladder { break-inside: avoid; page-break-inside: avoid; }
  .lab-rlevel-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8pt 12pt; margin-top: 8pt; }
  .lab-rlevel-grid-dense { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6pt 9pt; }
  .lab-rlevel-cap { font-size: 7.5pt; line-height: 1.3; margin-bottom: 2pt; }
  .lab-rlevels-table .lab-rlevel-custom th { box-shadow: inset 1.5pt 0 0 #000; }
  .lab-rcovladder { font-size: 9pt; line-height: 1.4; background: #fff; border-left-color: #000; padding: 5pt 8pt; }
}
