/*
 * Property Hub Ltd - premium property report stylesheet.
 *
 * The report is built as a stack of fixed A4 pages so that what appears on
 * screen is exactly what lands on the page. Every page carries its own running
 * header and footer, so pagination never depends on browser header/footer
 * settings. Colour is forced to print exactly: the navy panels and chart fills
 * are load-bearing, not decoration.
 */

:root {
  --rpt-navy: #0b2545;
  --rpt-navy-deep: #071a33;
  --rpt-ink: #0e2136;
  --rpt-body: #33475c;
  --rpt-slate: #7c8ca0;
  --rpt-line: #cbd8e6;
  --rpt-hair: #e2eaf3;
  --rpt-haze: #f2f6fa;
  --rpt-mist: #e4ebf3;
  --rpt-gold: #b0862f;
  --rpt-gold-soft: #f7efdc;
  --rpt-teal: #1b7f6b;
  --rpt-teal-soft: #e4f2ee;
  --rpt-azure: #2e6da4;
  --rpt-danger: #a6412f;
  --rpt-page-w: 210mm;
  --rpt-page-h: 297mm;
  --rpt-pad-x: 15mm;
  --rpt-pad-top: 13mm;
  --rpt-pad-bottom: 12mm;
}

/* ------------------------------------------------------------- container */

.rpt-overlay {
  position: fixed;
  inset: 0;
  z-index: 900;
  overflow: auto;
  background: #56657a;
  padding: 28px 16px 64px;
  display: none;
}

body.rpt-open {
  overflow: hidden;
}

body.rpt-open .rpt-overlay {
  display: block;
}

.rpt-toolbar {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: center;
  max-width: var(--rpt-page-w);
  margin: 0 auto 22px;
  padding: 12px 16px;
  border-radius: 12px;
  background: rgba(11, 37, 69, 0.95);
  box-shadow: 0 18px 40px rgba(7, 18, 34, 0.34);
  color: #fff;
}

.rpt-toolbar p {
  margin: 0 auto 0 0;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.01em;
}

.rpt-toolbar small {
  display: block;
  font-weight: 500;
  font-size: 11px;
  opacity: 0.72;
}

.rpt-btn {
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border-radius: 8px;
  padding: 9px 16px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.rpt-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}

.rpt-btn.primary {
  background: var(--rpt-gold);
  border-color: var(--rpt-gold);
  color: #21160a;
}

.rpt-btn.primary:hover {
  background: #c69735;
}

/* ------------------------------------------------------------------ page */

.rpt-doc {
  margin: 0 auto;
  width: var(--rpt-page-w);
  max-width: 100%;
}

.rpt-page {
  position: relative;
  box-sizing: border-box;
  width: var(--rpt-page-w);
  height: var(--rpt-page-h);
  padding: var(--rpt-pad-top) var(--rpt-pad-x) var(--rpt-pad-bottom);
  margin: 0 auto 20px;
  background: #fff;
  color: var(--rpt-body);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 10pt;
  line-height: 1.5;
  overflow: hidden;
  box-shadow: 0 14px 34px rgba(6, 16, 30, 0.28);
  display: flex;
  flex-direction: column;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.rpt-page * {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.rpt-body-area {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

/* ------------------------------------------------------- header / footer */

.rpt-runhead {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding-bottom: 6px;
  margin-bottom: 10px;
  border-bottom: 0.6pt solid var(--rpt-line);
  flex: 0 0 auto;
}

.rpt-runhead img {
  width: 21mm;
  height: auto;
  flex: 0 0 auto;
}

.rpt-runhead .rpt-agent {
  border-left: 0.8pt solid var(--rpt-line);
  padding-left: 9px;
  line-height: 1.34;
}

.rpt-runhead .rpt-agent strong {
  display: block;
  color: var(--rpt-ink);
  font-size: 8.4pt;
  font-weight: 700;
}

.rpt-runhead .rpt-agent span {
  display: block;
  color: var(--rpt-slate);
  font-size: 7.2pt;
}

.rpt-runhead .rpt-section-tag {
  margin-left: auto;
  text-align: right;
  align-self: flex-end;
}

.rpt-runhead .rpt-section-tag b {
  display: block;
  font-size: 7.8pt;
  font-weight: 700;
  color: var(--rpt-navy);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.rpt-runhead .rpt-section-tag i {
  font-style: normal;
  font-size: 6.8pt;
  color: var(--rpt-slate);
  letter-spacing: 0.05em;
}

.rpt-foot {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-end;
  gap: 12px;
  padding-top: 6px;
  margin-top: 8px;
  border-top: 0.6pt solid var(--rpt-line);
  font-size: 6.6pt;
  color: var(--rpt-slate);
  line-height: 1.35;
}

.rpt-foot .rpt-foot-legal {
  flex: 1 1 auto;
  max-width: 118mm;
}

.rpt-foot .rpt-foot-brand {
  font-weight: 700;
  color: var(--rpt-navy);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: 6.8pt;
}

.rpt-foot .rpt-foot-page {
  font-weight: 700;
  color: var(--rpt-ink);
  font-size: 7.4pt;
  white-space: nowrap;
}

/* ------------------------------------------------------------ typography */

.rpt-eyebrow {
  margin: 0 0 3px;
  font-size: 7.2pt;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rpt-gold);
}

.rpt-eyebrow.navy { color: var(--rpt-navy); }
.rpt-eyebrow.muted { color: var(--rpt-slate); }

h1.rpt-h1 {
  margin: 0 0 6px;
  font-size: 25pt;
  line-height: 1.08;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--rpt-ink);
}

h2.rpt-h2 {
  margin: 0 0 11px;
  padding-bottom: 6px;
  border-bottom: 1.6pt solid var(--rpt-navy);
  font-size: 15pt;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: var(--rpt-ink);
}

h2.rpt-h2 .rpt-h2-index {
  color: var(--rpt-gold);
  margin-right: 7px;
}

h3.rpt-h3 {
  margin: 0 0 5px;
  font-size: 10pt;
  font-weight: 700;
  color: var(--rpt-ink);
  letter-spacing: -0.005em;
}

h4.rpt-h4 {
  margin: 0 0 3px;
  font-size: 8.2pt;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--rpt-slate);
}

.rpt-page p {
  margin: 0 0 6px;
}

.rpt-lead {
  font-size: 10.4pt;
  line-height: 1.5;
  color: var(--rpt-body);
}

.rpt-note {
  font-size: 8pt;
  line-height: 1.5;
  color: var(--rpt-slate);
}

.rpt-caption {
  margin: 7px 0 0;
  font-size: 8pt;
  line-height: 1.5;
  color: var(--rpt-slate);
}

.rpt-caption strong {
  display: block;
  color: var(--rpt-ink);
  font-size: 9.2pt;
  font-weight: 700;
  margin-bottom: 2px;
}

/* ----------------------------------------------------------------- grids */

.rpt-grid {
  display: grid;
  gap: 11px;
}

.rpt-grid.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rpt-grid.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rpt-grid.c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.rpt-grid.c5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.rpt-grid.c6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.rpt-grid.split { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
.rpt-grid.split-wide { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); }
.rpt-grid.gap-lg { gap: 14px; }

.rpt-stack > * + * { margin-top: 11px; }

/* ----------------------------------------------------------------- cards */

.rpt-card {
  border: 0.7pt solid var(--rpt-line);
  border-radius: 4px;
  padding: 12px 13px;
  background: #fff;
  break-inside: avoid;
}

.rpt-card.tint { background: var(--rpt-haze); border-color: var(--rpt-hair); }
.rpt-card.gold { background: var(--rpt-gold-soft); border-color: #e8d5aa; }
.rpt-card.teal { background: var(--rpt-teal-soft); border-color: #bfded6; }
.rpt-card.navy { background: var(--rpt-navy); border-color: var(--rpt-navy); color: #dce7f4; }
.rpt-card.navy h3.rpt-h3, .rpt-card.navy .rpt-kpi-value { color: #fff; }
.rpt-card.navy .rpt-kpi-label, .rpt-card.navy .rpt-note { color: rgba(232, 240, 250, 0.72); }
.rpt-card.flush { padding: 0; overflow: hidden; }

.rpt-kpi {
  border: 0.7pt solid var(--rpt-line);
  border-radius: 4px;
  padding: 11px 11px;
  background: #fff;
}

.rpt-kpi-label {
  font-size: 6.8pt;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rpt-slate);
  margin-bottom: 2px;
}

.rpt-kpi-value {
  font-size: 15.5pt;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--rpt-ink);
  line-height: 1.1;
}

.rpt-kpi-value.sm { font-size: 11.5pt; }
.rpt-kpi-value.lg { font-size: 18pt; }

.rpt-kpi-sub {
  font-size: 7pt;
  color: var(--rpt-slate);
  margin-top: 2px;
  line-height: 1.35;
}

.rpt-kpi.accent { border-left: 2.4pt solid var(--rpt-gold); }
.rpt-kpi.accent-teal { border-left: 2.4pt solid var(--rpt-teal); }
.rpt-kpi.accent-navy { border-left: 2.4pt solid var(--rpt-navy); }

/* ----------------------------------------------------------------- pills */

.rpt-pill {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 20px;
  font-size: 6.8pt;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  background: var(--rpt-mist);
  color: var(--rpt-navy);
  white-space: nowrap;
}

.rpt-pill.gold { background: var(--rpt-gold); color: #fff; }
.rpt-pill.teal { background: var(--rpt-teal); color: #fff; }
.rpt-pill.navy { background: var(--rpt-navy); color: #fff; }
.rpt-pill.outline { background: transparent; border: 0.7pt solid var(--rpt-line); color: var(--rpt-slate); }
.rpt-pill.warn { background: #f6e6e2; color: var(--rpt-danger); }

.rpt-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

/* ---------------------------------------------------------------- tables */

.rpt-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 8.6pt;
}

.rpt-table th {
  text-align: left;
  font-size: 6.8pt;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--rpt-slate);
  padding: 4px 6px;
  border-bottom: 0.9pt solid var(--rpt-navy);
  white-space: nowrap;
}

.rpt-table td {
  padding: 5.6px 6px;
  border-bottom: 0.5pt solid var(--rpt-hair);
  color: var(--rpt-body);
  vertical-align: top;
}

.rpt-table tr:last-child td { border-bottom: 0; }
.rpt-table td.num, .rpt-table th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rpt-table td.strong { font-weight: 700; color: var(--rpt-ink); }
.rpt-table tbody tr.tint td { background: var(--rpt-haze); }
.rpt-table tbody tr.highlight td { background: var(--rpt-gold-soft); font-weight: 700; color: var(--rpt-ink); }
.rpt-table.compact td, .rpt-table.compact th { padding: 3px 5px; font-size: 7.4pt; }

/* Definition rows with dotted leaders, as used on the property schedule. */
.rpt-deflist { margin: 0; }

.rpt-defrow {
  display: flex;
  align-items: baseline;
  gap: 5px;
  padding: 4.2px 0;
  border-bottom: 0.5pt dotted var(--rpt-line);
  font-size: 8.6pt;
}

.rpt-defrow:last-child { border-bottom: 0; }
.rpt-defrow dt { flex: 0 0 auto; color: var(--rpt-slate); margin: 0; }
.rpt-defrow dd { margin: 0 0 0 auto; font-weight: 700; color: var(--rpt-ink); text-align: right; }

/* ---------------------------------------------------------------- charts */

.rpt-chart {
  width: 100%;
  break-inside: avoid;
}

.rpt-svg {
  display: block;
  width: 100%;
  height: auto;
}

.rpt-chart-block { break-inside: avoid; }

/* ------------------------------------------------------------------ map */

.rpt-map {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: 4px;
  border: 0.7pt solid var(--rpt-line);
  background: var(--rpt-haze);
  break-inside: avoid;
}

/* The map is a single SVG; it clips to its own viewport, so tile overrun can
   never influence page layout. See the note in report-charts.js mapView(). */
.rpt-map-svg {
  display: block;
  width: 100%;
  height: 100%;
}

.rpt-map-attr {
  position: absolute;
  right: 0;
  bottom: 0;
  padding: 1.5px 5px;
  background: rgba(255, 255, 255, 0.82);
  border-top-left-radius: 3px;
  font-size: 5.8pt;
  color: var(--rpt-body);
  letter-spacing: 0.01em;
}

.rpt-map-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 16px;
  border-style: dashed;
  font-size: 8pt;
  color: var(--rpt-slate);
}

.rpt-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin-top: 6px;
  font-size: 7.4pt;
  color: var(--rpt-body);
}

.rpt-map-legend span { display: inline-flex; align-items: center; gap: 4px; }
.rpt-map-legend i { width: 9px; height: 9px; border-radius: 50%; display: block; flex: 0 0 auto; }

/* --------------------------------------------------------------- cover */

.rpt-page.cover {
  padding: 0;
  color: #fff;
  background: var(--rpt-navy-deep);
}

.rpt-cover-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 16mm 15mm 13mm;
  background:
    radial-gradient(120% 78% at 88% 4%, rgba(176, 134, 47, 0.28), transparent 58%),
    radial-gradient(96% 62% at 4% 96%, rgba(46, 109, 164, 0.34), transparent 62%),
    linear-gradient(168deg, #0b2545 0%, #071a33 62%, #061529 100%);
}

.rpt-cover-head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding-bottom: 9px;
  border-bottom: 0.8pt solid rgba(255, 255, 255, 0.22);
}

.rpt-cover-head img {
  width: 23mm;
  height: auto;
  background: #fff;
  padding: 3px;
  border-radius: 3px;
}

.rpt-cover-head .rpt-agent strong { color: #fff; font-size: 8.8pt; font-weight: 700; display: block; }
.rpt-cover-head .rpt-agent span { color: rgba(226, 236, 248, 0.74); font-size: 7.4pt; display: block; }
.rpt-cover-head .rpt-agent { border-left: 0.8pt solid rgba(255, 255, 255, 0.28); padding-left: 10px; }

.rpt-cover-ref {
  margin-left: auto;
  text-align: right;
  font-size: 7pt;
  color: rgba(226, 236, 248, 0.74);
  letter-spacing: 0.05em;
}

.rpt-cover-ref b { display: block; color: var(--rpt-gold); font-size: 8pt; letter-spacing: 0.1em; text-transform: uppercase; }

.rpt-cover-title { margin-top: 22mm; }

.rpt-cover-title .rpt-eyebrow { color: var(--rpt-gold); letter-spacing: 0.28em; }

.rpt-cover-title h1 {
  margin: 4px 0 0;
  font-size: 40pt;
  line-height: 0.98;
  font-weight: 800;
  letter-spacing: -0.035em;
  color: #fff;
}

.rpt-cover-title .rpt-cover-sub {
  margin-top: 9px;
  padding-top: 9px;
  border-top: 0.8pt solid rgba(255, 255, 255, 0.2);
  max-width: 118mm;
  font-size: 10pt;
  line-height: 1.5;
  color: rgba(226, 236, 248, 0.86);
}

.rpt-cover-address {
  margin-top: 13mm;
}

.rpt-cover-address .rpt-cover-addr-label {
  font-size: 6.8pt;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rpt-gold);
  margin-bottom: 4px;
}

.rpt-cover-address .rpt-cover-addr-main {
  font-size: 17pt;
  font-weight: 800;
  letter-spacing: -0.015em;
  color: #fff;
  line-height: 1.16;
}

.rpt-cover-address .rpt-cover-addr-sub {
  margin-top: 3px;
  font-size: 9.6pt;
  color: rgba(226, 236, 248, 0.78);
}

/* Absorbs the leftover cover height here, so the slack reads as deliberate
   space under the address rather than a gap above the figures. */
.rpt-cover-highlights {
  margin-top: auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  border-top: 0.8pt solid rgba(255, 255, 255, 0.2);
}

.rpt-cover-highlights > div {
  padding: 9px 14px 9px 0;
  border-bottom: 0.6pt solid rgba(255, 255, 255, 0.12);
}

.rpt-cover-highlights > div:nth-child(even) { padding-left: 14px; border-left: 0.6pt solid rgba(255, 255, 255, 0.12); }
.rpt-cover-highlights .k { display: block; font-size: 6.6pt; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--rpt-gold); }
.rpt-cover-highlights .v { display: block; margin-top: 2px; font-size: 12pt; font-weight: 800; letter-spacing: -0.015em; color: #fff; }
.rpt-cover-highlights .s { display: block; font-size: 7.2pt; color: rgba(226, 236, 248, 0.66); }

.rpt-cover-headline {
  margin-top: 9px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border: 0.8pt solid rgba(255, 255, 255, 0.24);
  border-radius: 4px;
  overflow: hidden;
}

.rpt-cover-headline > div {
  padding: 9px 11px;
  border-right: 0.8pt solid rgba(255, 255, 255, 0.18);
}

.rpt-cover-headline > div:last-child { border-right: 0; }
.rpt-cover-headline > div.lead { background: rgba(176, 134, 47, 0.2); }

.rpt-cover-headline .k {
  font-size: 6.6pt;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: rgba(226, 236, 248, 0.66);
  margin-bottom: 3px;
}

.rpt-cover-headline .v {
  font-size: 17pt;
  font-weight: 800;
  letter-spacing: -0.025em;
  color: #fff;
  line-height: 1.05;
}

.rpt-cover-headline .s {
  font-size: 7pt;
  color: rgba(226, 236, 248, 0.7);
  margin-top: 3px;
}

.rpt-cover-criteria {
  margin-top: 9px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px 12px;
  padding: 10px 12px;
  border: 0.8pt solid rgba(255, 255, 255, 0.2);
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.05);
}

.rpt-cover-criteria .k {
  font-size: 6.6pt;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(226, 236, 248, 0.6);
}

.rpt-cover-criteria .v { font-size: 8.6pt; font-weight: 700; color: #fff; }

.rpt-cover-foot {
  margin-top: 9px;
  display: flex;
  align-items: flex-end;
  gap: 12px;
  padding-top: 8px;
  border-top: 0.8pt solid rgba(255, 255, 255, 0.2);
  font-size: 6.8pt;
  color: rgba(226, 236, 248, 0.66);
  line-height: 1.4;
}

.rpt-cover-foot .rpt-cover-prepared { margin-left: auto; text-align: right; white-space: nowrap; }
.rpt-cover-foot .rpt-cover-prepared b { display: block; color: #fff; font-size: 8.4pt; }

/* -------------------------------------------------------- contents page */

.rpt-toc { column-count: 2; column-gap: 12mm; }

.rpt-toc-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 6.2px 0;
  border-bottom: 0.5pt dotted var(--rpt-line);
  break-inside: avoid;
  font-size: 9pt;
}

.rpt-toc-row .n {
  flex: 0 0 auto;
  width: 15px;
  font-weight: 800;
  color: var(--rpt-gold);
  font-size: 7.6pt;
}

.rpt-toc-row .t { color: var(--rpt-ink); font-weight: 600; }
.rpt-toc-row .p { margin-left: auto; font-weight: 800; color: var(--rpt-navy); font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------ scorecards */

.rpt-score-row {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 6.4px 0;
  border-bottom: 0.5pt solid var(--rpt-hair);
}

.rpt-score-row:last-child { border-bottom: 0; }
.rpt-score-row .lbl { flex: 0 0 30mm; font-size: 8pt; font-weight: 600; color: var(--rpt-ink); }

.rpt-score-row .bar {
  flex: 1 1 auto;
  height: 7px;
  border-radius: 4px;
  background: var(--rpt-haze);
  overflow: hidden;
}

.rpt-score-row .bar i { display: block; height: 100%; border-radius: 4px; background: var(--rpt-navy); }
.rpt-score-row .bar i.teal { background: var(--rpt-teal); }
.rpt-score-row .bar i.gold { background: var(--rpt-gold); }
.rpt-score-row .bar i.slate { background: var(--rpt-slate); }
.rpt-score-row .val { flex: 0 0 auto; width: 26px; text-align: right; font-size: 8.6pt; font-weight: 800; color: var(--rpt-ink); font-variant-numeric: tabular-nums; }
.rpt-score-row .val.na { color: var(--rpt-slate); font-size: 7pt; font-weight: 700; width: 46px; }

.rpt-gauge-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  text-align: center;
}

.rpt-gauge-grid .g { border: 0.7pt solid var(--rpt-line); border-radius: 4px; padding: 6px 4px 7px; }
.rpt-gauge-grid .g .t { font-size: 7pt; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; color: var(--rpt-slate); margin-top: 1px; }

/* --------------------------------------------------------- comparables */

.rpt-comp {
  display: grid;
  grid-template-columns: 10mm minmax(0, 1fr) 32mm;
  gap: 9px;
  padding: 8.4px 0;
  border-bottom: 0.7pt solid var(--rpt-hair);
  break-inside: avoid;
}

.rpt-comp:last-child { border-bottom: 0; }

.rpt-comp .rpt-comp-letter {
  width: 8mm;
  height: 8mm;
  border-radius: 50%;
  background: var(--rpt-navy);
  color: #fff;
  font-size: 10pt;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
}

.rpt-comp .rpt-comp-price { font-size: 12pt; font-weight: 800; color: var(--rpt-ink); letter-spacing: -0.02em; line-height: 1.15; }
.rpt-comp .rpt-comp-addr { font-size: 8.4pt; font-weight: 600; color: var(--rpt-body); margin: 1px 0 3px; }
.rpt-comp .rpt-comp-meta { font-size: 7.2pt; color: var(--rpt-slate); }
.rpt-comp .rpt-comp-right { text-align: right; }
.rpt-comp .rpt-comp-right .d { font-size: 8.6pt; font-weight: 800; color: var(--rpt-ink); }
.rpt-comp .rpt-comp-right .l { font-size: 6.6pt; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--rpt-slate); }

.rpt-match {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 6.8pt;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--rpt-teal);
}

.rpt-match i { display: block; width: 16px; height: 4px; border-radius: 2px; background: var(--rpt-mist); overflow: hidden; }
.rpt-match i b { display: block; height: 100%; background: var(--rpt-teal); }

/* ------------------------------------------------------------- callouts */

.rpt-callout {
  border-left: 2.6pt solid var(--rpt-navy);
  background: var(--rpt-haze);
  padding: 11px 13px;
  border-radius: 0 4px 4px 0;
  break-inside: avoid;
}

.rpt-callout.gold { border-left-color: var(--rpt-gold); background: var(--rpt-gold-soft); }
.rpt-callout.teal { border-left-color: var(--rpt-teal); background: var(--rpt-teal-soft); }
.rpt-callout.warn { border-left-color: var(--rpt-danger); background: #f8ece9; }

.rpt-bullets { margin: 0; padding: 0; list-style: none; }

.rpt-bullets li {
  position: relative;
  padding-left: 12px;
  margin-bottom: 6px;
  font-size: 8.6pt;
  line-height: 1.5;
}

.rpt-bullets li:last-child { margin-bottom: 0; }

.rpt-bullets li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4.6px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--rpt-gold);
}

.rpt-bullets.teal li::before { background: var(--rpt-teal); }
.rpt-bullets.navy li::before { background: var(--rpt-navy); }
.rpt-bullets.warn li::before { background: var(--rpt-danger); }
.rpt-bullets.check li::before { border-radius: 1px; }

.rpt-unavailable {
  border: 0.7pt dashed var(--rpt-line);
  border-radius: 4px;
  background: var(--rpt-haze);
  padding: 13px 14px;
  color: var(--rpt-slate);
  font-size: 8.4pt;
  line-height: 1.45;
}

.rpt-unavailable strong {
  display: block;
  color: var(--rpt-ink);
  font-size: 8.4pt;
  margin-bottom: 2px;
}

/* -------------------------------------------------------------- legend */

.rpt-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  font-size: 7.2pt;
  color: var(--rpt-body);
}

.rpt-legend span { display: inline-flex; align-items: center; gap: 4px; }
.rpt-legend i { width: 8px; height: 8px; border-radius: 50%; display: block; }

/* ------------------------------------------------------------ heat grid */

.rpt-heat { width: 100%; border-collapse: collapse; font-size: 8pt; }
.rpt-heat th { padding: 3px 4px; font-size: 6.6pt; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: var(--rpt-slate); }
.rpt-heat td { padding: 7px 4px; text-align: center; font-weight: 700; color: var(--rpt-ink); border: 0.5pt solid #fff; font-variant-numeric: tabular-nums; }
.rpt-heat td.h5 { background: #1b7f6b; color: #fff; }
.rpt-heat td.h4 { background: #7ab5a5; }
.rpt-heat td.h3 { background: #e4ebf3; }
.rpt-heat td.h2 { background: #e9c9a3; }
.rpt-heat td.h1 { background: #cf8f6a; color: #fff; }
.rpt-heat td.axis { background: var(--rpt-navy); color: #fff; }

/* ------------------------------------------------------------- printing */

@page {
  size: A4 portrait;
  margin: 0;
}

@media print {
  html, body {
    width: 210mm;
    background: #fff !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  /* The live app is suppressed entirely; the report becomes the document. */
  body.rpt-open > *:not(.rpt-overlay) { display: none !important; }

  body.rpt-open .rpt-overlay {
    position: static;
    display: block;
    overflow: visible;
    padding: 0;
    background: #fff;
  }

  .rpt-toolbar { display: none !important; }

  .rpt-doc { width: auto; margin: 0; }

  .rpt-page {
    width: 210mm;
    height: 297mm;
    margin: 0;
    box-shadow: none;
    break-after: page;
    page-break-after: always;
    break-inside: avoid;
  }

  .rpt-page:last-child { break-after: auto; page-break-after: auto; }

  a { text-decoration: none; color: inherit; }
}

/* Screen-only comfort: let narrow viewports scale the fixed page down. */
@media screen and (max-width: 820px) {
  .rpt-doc { width: 100%; }
  .rpt-page { transform-origin: top center; }
}
