/* ============================================================
   HOUSE LIGHTS — PAPER
   A research report is a printed document, so it is set as one. The
   light substrate itself now lives in light.css and is shared with
   the rest of the site — this file is only what makes this page a
   document rather than a web page.

   Loaded only by venue-rates.html, last in the cascade, and scoped to
   html.paper throughout so none of it can leak onto another page.
   ============================================================ */

html.paper {
  /* A report is read, not scanned. Wider measure, longer line. */
  --maxw-text: 900px;
}

/* ============================================================
   THE DOCUMENT
   Report-specific components. Prefixed .rep- because they only ever
   appear on this page and should never be mistaken for site
   primitives.
   ============================================================ */

/* ---------- Masthead -------------------------------------------- */
.rep-head {
  padding-block: calc(var(--s-11) * 0.7) var(--s-8);
  border-bottom: 2px solid var(--bone);
}
.rep-kicker {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2) var(--s-4);
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: var(--tk-label); text-transform: uppercase;
  color: var(--bone-faint);
  padding-bottom: var(--s-5);
}
.rep-kicker b { color: var(--cue); font-weight: 500; }

.rep-head h1 {
  font-family: var(--f-display); font-weight: 800; text-transform: uppercase;
  font-size: var(--t-h1); letter-spacing: var(--tk-tight); line-height: var(--lh-tight);
  max-width: 17ch;
}
.rep-head h1 em {
  display: block;
  font-family: var(--f-serif); font-style: italic; font-weight: 400;
  text-transform: none; letter-spacing: -0.01em; font-stretch: normal;
  color: var(--cue-bright);
  font-size: 0.72em;
  margin-top: 0.12em;
}
.rep-standfirst {
  font-size: var(--t-lead); line-height: 1.5;
  max-width: 56ch; margin-top: var(--s-6);
  color: var(--bone-dim);
}
.rep-standfirst strong { color: var(--bone); font-weight: 600; }

/* Publication metadata, set like a colophon */
.rep-meta {
  display: grid; gap: var(--s-4) var(--s-6);
  margin-top: var(--s-7);
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: 0.1em; text-transform: uppercase;
  line-height: 1.7;
}
@media (min-width: 720px) { .rep-meta { grid-template-columns: repeat(4, auto); justify-content: start; column-gap: var(--s-8); } }
.rep-meta dt { color: var(--bone-faint); }
.rep-meta dd { color: var(--bone); margin: 0; }

/* ---------- Headline numbers ------------------------------------ */
.rep-stats {
  display: grid; gap: var(--s-5);
  border-block: 1px solid var(--edge);
  padding-block: var(--s-7);
}
@media (min-width: 640px)  { .rep-stats { grid-template-columns: repeat(2, 1fr); gap: var(--s-7); } }
@media (min-width: 1040px) { .rep-stats { grid-template-columns: repeat(4, 1fr); } }
.rep-stat { display: grid; gap: var(--s-2); align-content: start; min-width: 0; }
.rep-stat .v {
  font-family: var(--f-display); font-weight: 800; font-stretch: 112%;
  font-size: clamp(2.75rem, 1.6rem + 3.4vw, 4.25rem);
  line-height: 0.86; letter-spacing: var(--tk-tight);
  color: var(--cue);
}
.rep-stat .k {
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: var(--tk-label); text-transform: uppercase;
  color: var(--bone);
}
.rep-stat .n { font-size: 0.875rem; line-height: 1.55; color: var(--bone-dim); }

/* ---------- Contents -------------------------------------------- */
.rep-toc { display: grid; gap: var(--s-3); margin-top: var(--s-6); }
@media (min-width: 760px) { .rep-toc { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-8); } }
.rep-toc a {
  display: flex; gap: var(--s-4); align-items: baseline;
  padding-block: var(--s-2);
  border-bottom: 1px solid var(--edge);
  font-size: 0.9375rem; color: var(--bone-dim);
  transition: color var(--d-fast) var(--e-out), border-color var(--d-fast);
}
.rep-toc a:hover { color: var(--cue-bright); border-bottom-color: var(--cue); }
.rep-toc .tn {
  flex: none; width: 2.25ch;
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: 0.08em; color: var(--cue);
}

/* ---------- Sections --------------------------------------------
   The report sections own their own vertical rhythm rather than
   sitting inside a .band: stacking both left a screen of dead space
   between every finding. */
.rep-sec { padding-block: calc(var(--band) * 0.5); border-top: 1px solid var(--edge); }
.rep-sec:first-of-type { border-top: 0; }
.rep-sn {
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: var(--tk-label); text-transform: uppercase;
  color: var(--cue); margin-bottom: var(--s-4);
}
.rep-sec > h2 {
  font-family: var(--f-display); font-weight: 800; text-transform: uppercase;
  font-size: var(--t-h3); letter-spacing: -0.02em;
  color: var(--bone); max-width: 30ch;
  margin-bottom: var(--s-5);
}
.rep-sec .prose p { color: var(--bone-dim); }

/* A finding stated as a sentence, before the evidence for it */
.rep-claim {
  padding: var(--s-5) var(--s-6);
  background: var(--ink);
  border-left: 3px solid var(--cue);
  border-radius: 0 var(--radius) var(--radius) 0;
  font-size: var(--t-lead); line-height: 1.5;
  color: var(--bone);
  margin-bottom: var(--s-6);
  max-width: none;
}
.rep-claim strong { font-weight: 600; }

/* Where a claim panel already carries the cue rule, the answer-first
   paragraph under it drops its own — two stacked left borders read as a
   formatting accident rather than a hierarchy. */
.rep-claim + .prose .answer-first { border-left: 0; padding-left: 0; }

/* ---------- Data tables ----------------------------------------- */
/* The raw table is the citable asset, so it gets tighter type and a
   sticky header rather than the display-weight spec-table treatment. */
.rep-table { font-size: 0.875rem; min-width: 720px; }
.rep-table tbody td { color: var(--bone-dim); vertical-align: top; }
.rep-table tbody th[scope="row"] { min-width: 16ch; font-weight: 600; }
.rep-table tbody td:nth-child(2) { font-family: inherit; font-size: inherit; color: var(--bone-dim); white-space: normal; }
.rep-table td.num, .rep-table th.num {
  font-family: var(--f-mono); font-size: 0.8125rem;
  white-space: nowrap; color: var(--bone);
}
.rep-table td.np { color: var(--bone-faint); font-style: italic; }
.rep-table tbody a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--edge-strong);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color var(--d-fast) var(--e-out), text-decoration-color var(--d-fast);
}
.rep-table tbody a:hover { color: var(--cue-bright); text-decoration-color: var(--cue); }

/* Yes / partial / no, as a mark rather than a word repeated 43 times */
.rep-flag {
  display: inline-block; min-width: 8ch;
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: 0.1em; text-transform: uppercase;
}
.rep-flag--y { color: var(--cue-bright); }
.rep-flag--p { color: var(--bone-dim); }
.rep-flag--n { color: var(--bone-faint); }

/* ---------- Sidebar / aside ------------------------------------- */
.rep-aside {
  padding: var(--s-6);
  border: 1px solid var(--edge-strong);
  border-top: 3px solid var(--cue);
  background: var(--ink);
  margin-block: var(--s-7);
}
.rep-aside h3 {
  font-family: var(--f-display); font-weight: 800; text-transform: uppercase;
  font-size: 1rem; letter-spacing: -0.01em; color: var(--bone);
  margin-bottom: var(--s-3);
}
.rep-aside p { font-size: 0.9375rem; color: var(--bone-dim); }
.rep-aside p + p { margin-top: var(--s-4); }

/* ---------- Method list ----------------------------------------- */
.rep-method { display: grid; gap: var(--s-5); margin-top: var(--s-5); }
@media (min-width: 760px) { .rep-method { grid-template-columns: 14ch minmax(0, 1fr); gap: var(--s-4) var(--s-6); } }
.rep-method dt {
  font-family: var(--f-mono); font-size: var(--t-micro);
  letter-spacing: var(--tk-label); text-transform: uppercase;
  color: var(--cue); padding-top: 0.2em;
}
.rep-method dd { margin: 0; color: var(--bone-dim); font-size: 0.9375rem; line-height: 1.65; }
.rep-method dd + dt { margin-top: var(--s-2); }

/* ---------- Citation block -------------------------------------- */
.rep-cite {
  margin-top: var(--s-5);
  padding: var(--s-5);
  border: 1px dashed var(--edge-strong);
  background: var(--ink-2);
  font-family: var(--f-mono); font-size: 0.8125rem; line-height: 1.7;
  color: var(--bone);
  overflow-wrap: anywhere;
}

/* ---------- Footnotes ------------------------------------------- */
.rep-notes {
  margin-top: var(--s-6); padding-top: var(--s-5);
  border-top: 1px solid var(--edge);
  display: grid; gap: var(--s-3);
  counter-reset: fn;
}
.rep-notes li {
  position: relative; padding-left: var(--s-6);
  font-size: 0.8125rem; line-height: 1.65; color: var(--bone-faint);
  counter-increment: fn;
}
.rep-notes li::before {
  content: counter(fn); position: absolute; left: 0; top: 0;
  font-family: var(--f-mono); font-size: var(--t-micro); color: var(--cue);
}

/* ============================================================
   PRINT
   People print reports, and a printed report gets cited. Strip the
   stage machinery, keep the data.
   ============================================================ */
@media print {
  html.paper { --void: #fff; --ink: #fff; --ink-2: #fff; }
  .grain, .vignette, .nav, .nav-drawer, .skip-link, .cta-band, .footer-grid { display: none !important; }
  .rep-head { padding-top: 0; }
  .rep-sec { break-inside: auto; padding-block: var(--s-6); }
  .rep-sec > h2, .rep-stat { break-after: avoid; }
  .table-scroll { overflow: visible; }
  .rep-table { min-width: 0; font-size: 8pt; }
  .rep-table tbody td a { text-decoration: none; color: inherit; }
  .rep-claim, .rep-aside { border-color: #999; background: #fff; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 7pt; color: #555; word-break: break-all; }
  .rep-table a[href^="http"]::after { content: none; }
}
