/* print.css — dedicated, sellable PDF report.
 *
 * A separate print-only document (rendered via ReactDOM.createPortal into
 * <body> by PrintReport in print-report.jsx) is shown ONLY when printing and
 * ONLY for the business_location domain (body.has-print-doc). It replaces the
 * old "print the live React view" approach with a clean, paginated,
 * light-theme report: cover → executive summary → scoring logic → market
 * intelligence → per-candidate pages → methodology & disclaimer.
 *
 * On screen the print-doc is always display:none. For domains that don't
 * render a print-doc (broker / renewables), body has no .has-print-doc class,
 * so #app stays visible and the legacy @media print rules in app.html still
 * produce a usable printout. */

.print-doc { display: none; }

@media print {
  /* A4 with comfortable margins; the running header/footer is drawn by the
     report itself, not @page, for cross-browser consistency. */
  /* The DEFAULT page is zero-margin so the cover — which is the document's
     FIRST page — bleeds the indigo hero to the physical sheet edges. Content
     margins live on a NAMED `content` page instead (applied to every .pp
     except the cover). Why this inversion: a named page on the FIRST element
     (e.g. `page: cover`) whose name differs from the default page forces a
     leading break, so Chrome emits a BLANK first page before the cover. Keeping
     the cover on the unnamed default page avoids that mismatch entirely.
     (Negative margins to cancel @page margins do NOT bleed in headless Chrome —
     Chromium clips content backgrounds at the @page margin box → white frame.) */
  @page { size: A4; margin: 0; }
  @page content { size: A4; margin: 16mm 15mm 18mm; }

  /* Hide the interactive app entirely when a print-doc exists. */
  body.has-print-doc #app { display: none !important; }

  body.has-print-doc {
    background: #fff !important;
    margin: 0 !important;
  }

  .print-doc {
    display: block !important;
    /* Redesign 2026-10: dieselben Werte wie tokens.css (hell) — eine Akzent-
       farbe, Status nur fuer Bewertungen, neutrale Datenskala. Bewusst hier
       noch einmal fest: der Bericht ist immer hell, auch wenn die App dunkel ist. */
    --pi: #2F55A4;          /* Akzent */
    --pi-soft: #E9EEF8;
    --pi-line: #C9D4EC;
    --ink: #1C1D1F;
    --ink-2: #4A4D52;
    --ink-3: #6B6E74;
    --line: #E4E2DD;
    --line-2: #F0EFEB;
    --paper: #F6F5F2;
    --d1: #F1EEF5; --d2: #D7CDE4; --d3: #B4A3CD; --d4: #8C77B1; --d5: #5F4B8B;
    --ok: #2B7550;  --ok-soft: #E5F0E9;  --ok-line: #BCD8C6;
    --warn:#8A5E0E;  --warn-soft:#F6EEDC; --warn-line:#E3CF9F;
    --bad: #AE3628;  --bad-soft: #F8E6E3; --bad-line: #E8B9B1;
    color: var(--ink);
    background: #fff;
    font-family: "IBM Plex Sans", system-ui, sans-serif;
    font-size: 10.5pt;
    line-height: 1.5;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .print-doc * { box-sizing: border-box; }

  /* ── Pagination ─────────────────────────────────────────────────────── */
  .pp { page-break-after: always; break-after: page; position: relative; }
  .pp:last-child { page-break-after: auto; break-after: auto; }
  .pp-avoid { page-break-inside: avoid; break-inside: avoid; }
  /* All content pages use the margined `content` page; the cover stays on the
     zero-margin default page (see @page above). Applying `content` to every .pp
     EXCEPT the cover keeps proper margins on multi-page content blocks too — the
     margin lives on the page box, so overflow/continuation pages inherit it. */
  .pp:not(.pr-cover) { page: content; }

  /* ── Typography ─────────────────────────────────────────────────────── */
  .print-doc h1, .print-doc h2, .print-doc h3 {
    font-family: "Newsreader", Georgia, serif;
    font-weight: 500;
    color: var(--ink);
    margin: 0;
  }
  .print-doc h2 { font-size: 20pt; line-height: 1.1; margin-bottom: 4mm; }
  .print-doc h3 { font-size: 14pt; line-height: 1.15; }
  .print-doc p  { margin: 0 0 2.6mm; }
  .pr-eyebrow {
    font-size: 7.5pt; letter-spacing: .14em; text-transform: uppercase;
    color: var(--ink-3); font-weight: 600; margin-bottom: 2mm;
  }
  .pr-mute  { color: var(--ink-3); }
  .pr-mono  { font-family: "IBM Plex Mono", ui-monospace, monospace; }

  /* ── Deckblatt (Redesign): heller Grund, kurzer Titel, keine Farbflaeche ── */
  .pr-cover {
    margin: 0;
    width: 210mm;
    height: 297mm;
    padding: 24mm 24mm 22mm;
    box-sizing: border-box;
    display: flex; flex-direction: column;
    background: var(--paper);
    color: var(--ink);
    overflow: hidden;
  }
  .pr-cover__brand {
    display: flex; align-items: center; gap: 3mm;
    font-family: "Newsreader", Georgia, serif; font-weight: 500; font-size: 14pt; color: var(--ink);
  }
  .pr-cover__dot { width: 7mm; height: 7mm; border-radius: 1.8mm; background: var(--ink); position: relative; }
  .pr-cover__dot::after { content: ""; position: absolute; left: 50%; top: 50%; width: 2.2mm; height: 2.2mm; border: .5mm solid var(--paper); transform: translate(-50%, -50%) rotate(45deg); }
  .pr-cover__url {
    display: block; margin: 2.5mm 0 0 10mm;
    font-size: 9pt; letter-spacing: .02em; color: var(--ink-3);
    text-decoration: none;
  }
  .pr-cover__mid { margin-top: auto; padding-top: 8mm; border-top: 1px solid var(--line); }
  .pr-cover__kicker { font-size: 8.5pt; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; }
  .pr-cover h1 { font-size: 36pt; line-height: 1.08; margin: 5mm 0 0; max-width: 22ch; color: var(--ink); }
  .pr-cover__sub { font-size: 11.5pt; line-height: 1.55; color: var(--ink-2); margin-top: 6mm; max-width: 52ch; }
  .pr-cover__foot {
    margin-top: auto; padding-top: 6mm; border-top: 1px solid var(--line);
    display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, .6fr) minmax(0, 1fr); gap: 6mm; align-items: end;
    font-size: 9pt; color: var(--ink-3);
  }
  .pr-cover__meta b { display: block; color: var(--ink); font-size: 10pt; }

  /* ── Executive Report (Standort-Check, eine Seite) ──────────────────── */
  /* Feste Hoehe = Seitenhoehe minus @page-content-Raender: die Seite darf nie
     umbrechen; was nicht passt, wird abgeschnitten statt auf Seite 2 zu laufen. */
  /* Eigene Raender statt der benannten `content`-Seite: ein benannter Seitentyp
     am ERSTEN Element erzeugt in Chrome eine leere Vorseite (siehe @page oben). */
  .print-doc .pp.pr-exec { page: auto; width: 210mm; height: 297mm; padding: 13mm 15mm 12mm; overflow: hidden; display: flex; flex-direction: column; }
  .pr-exec__head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 2.4mm; border-bottom: 2px solid var(--ink); }
  .pr-exec__meta { font-size: 7.5pt; color: var(--ink-3); text-align: right; letter-spacing: .04em; line-height: 1.45; }
  .pr-exec__title { margin: 4mm 0 0 !important; line-height: 1.1; }
  .pr-exec__concept { font-size: 8.8pt; color: var(--ink-2); margin-top: 1.4mm; line-height: 1.45; }
  .pr-exec__hero { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(0, 1fr); gap: 5mm; margin-top: 3.5mm; align-items: start; }
  .pr-exec__map .pp-avoid { margin: 0 !important; }
  .pr-exec__verdict { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 2.4mm; padding: 3.5mm 4mm; background: var(--paper); }
  .pr-exec__scale { display: grid; grid-template-columns: repeat(10, 1fr); gap: .8mm; margin-top: 2.4mm; }
  .pr-exec__scale > i { display: block; height: 2mm; border-radius: .4mm; background: var(--line); }
  .pr-exec__scale > i.is-on { background: var(--ink-2); }
  .pr-exec__scale > i.is-on.is-ok   { background: var(--ok); }
  .pr-exec__scale > i.is-on.is-warn { background: var(--warn); }
  .pr-exec__scale > i.is-on.is-bad  { background: var(--bad); }
  .pr-exec__headline { font-family: "Newsreader", Georgia, serif; font-size: 10.5pt; line-height: 1.32; color: var(--ink); margin-top: 2.6mm; padding-top: 2.2mm; border-top: 1px solid var(--line); }
  .pr-exec__k { font-size: 6.8pt; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; margin-bottom: 1.2mm; }
  .pr-exec__tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.4mm; margin-top: 3.5mm; }
  .pr-exec__tile { border: 1px solid var(--line); border-radius: 2mm; padding: 2mm 2.8mm; }
  .pr-exec__v { font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 14pt; line-height: 1.15; color: var(--ink); }
  .pr-exec__sub { font-size: 7.2pt; color: var(--ink-3); line-height: 1.35; margin-top: .8mm; }
  .pr-exec__dims { margin-top: 3.5mm; }
  .pr-exec__dimgrid { display: grid; grid-template-columns: 1fr 1fr; column-gap: 7mm; }
  .pr-exec__dim { display: grid; grid-template-columns: 44mm 1fr 9mm; align-items: center; gap: 3mm; font-size: 8.2pt; padding: .8mm 0; border-bottom: 1px solid var(--line-2); }
  .pr-exec__pc { margin-top: 3.5mm; gap: 5mm; }
  .pr-exec__pc .pr-li, .pr-exec__acts .pr-li { font-size: 8.4pt; line-height: 1.4; padding: 1.1mm 0; }
  .pr-exec__pc .pr-pc-k, .pr-exec__acts .pr-pc-k { font-size: 8.8pt; margin-bottom: .8mm; }
  .pr-exec__acts { margin-top: 3mm; }
  .pr-exec__dimrow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2.4mm; }
  .pr-exec__dimcell { border-top: 1px solid var(--line); padding-top: 1.2mm; }
  .pr-exec__dimlab { font-size: 6.9pt; color: var(--ink-2); line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pr-exec__cmp { margin-top: 3.2mm; }
  .pr-exec__table { width: 100%; border-collapse: collapse; font-size: 8.2pt; }
  .pr-exec__table th { text-align: left; font-size: 6.8pt; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; padding: 0 2mm 1.2mm 0; border-bottom: 1px solid var(--line); }
  .pr-exec__table td { padding: 1.3mm 2mm 1.3mm 0; border-bottom: 1px solid var(--line-2); vertical-align: middle; line-height: 1.35; }
  .pr-exec__sum { margin-top: 3mm; }
  .pr-exec__sum p { font-size: 8.6pt; line-height: 1.45; color: var(--ink-2); margin: 0; }
  .pr-exec__crit { margin-top: 3.2mm; }
  .pr-exec__crit .pr-exec__table td { padding: 0.9mm 2mm 0.9mm 0; }
  .pr-exec__h { font-size: 7.4pt; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; margin: 3.5mm 0 1.4mm; padding-bottom: 1mm; border-bottom: 1px solid var(--line); }
  .pr-exec__2col { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 6mm; }
  .pr-exec__kv { display: grid; grid-template-columns: 30mm minmax(0,1fr); column-gap: 2.4mm; row-gap: 0.9mm; font-size: 8.2pt; line-height: 1.35; margin-top: 1.6mm; }
  /* ── Standortvergleich (print-compare.jsx, 2 Seiten) ───────────────── */
  .scmp-badge { display: inline-flex; align-items: center; justify-content: center; width: 5.4mm; height: 5.4mm; border-radius: 50%; color: #fff; font-weight: 700; font-size: 8pt; font-family: "IBM Plex Sans", sans-serif; flex: none; vertical-align: middle; }
  .scmp-badge--sm { width: 4.2mm; height: 4.2mm; font-size: 6.6pt; }
  .scmp-rank td { vertical-align: middle; }
  .scmp-cmp th, .scmp-cmp td { font-size: 7.6pt; padding: .75mm 1.6mm .75mm 0; }
  .scmp-chars { margin-top: 3mm; display: grid; gap: 1.4mm; }
  .scmp-char { display: flex; gap: 2mm; align-items: flex-start; font-size: 8pt; line-height: 1.42; color: var(--ink-2); }
  .scmp-sr { display: grid; gap: 3.5mm; }
  .scmp-sr__c { border-top: 2px solid var(--line); padding-top: 1.4mm; }
  .scmp-sr__h { font-weight: 600; font-size: 8.6pt; margin-bottom: 1mm; display: flex; align-items: center; gap: 1.4mm; }
  .scmp-li { font-size: 7.9pt; line-height: 1.4; padding: .5mm 0; color: var(--ink-2); }
  .scmp-li.is-ok { color: var(--ink); }
  .scmp-method { font-size: 6.6pt; line-height: 1.45; border-top: 1px solid var(--line); padding-top: 1.6mm; margin-top: 2mm; }
  /* Standortvergleich, drei Seiten (2026-11-06) */
  .scmp-view { margin-top: 2.6mm; padding: 1.8mm 2.6mm; border-left: 2px solid var(--ink-2); background: #F6F5F2; font-size: 7.8pt; line-height: 1.4; color: var(--ink-2); }
  .scmp-view b { color: var(--ink); }
  .scmp-ai { margin-top: 1.6mm; padding: 1.4mm 2.6mm; border: 0.5pt solid #C9C3B8; border-radius: 1.5mm; font-size: 7.4pt; line-height: 1.4; color: var(--ink-2); }
  .scmp-ai b { color: var(--ink); }
  .scmp-rk { display: flex; gap: 2.2mm; align-items: flex-start; padding: 1.6mm 0; border-bottom: 1px solid var(--line-2); }
  .scmp-rk:last-child { border-bottom: 0; }
  .scmp-rk__main { flex: 1; min-width: 0; }
  .scmp-rk__top { display: flex; justify-content: space-between; align-items: center; gap: 2mm; }
  .scmp-rk__name { font-family: "Newsreader", Georgia, serif; font-size: 11.5pt; line-height: 1.2; color: var(--ink); }
  .scmp-sub { font-size: 6.9pt; line-height: 1.35; color: var(--ink-3); margin-top: .5mm; }
  .scmp-bad, .scmp-sub.scmp-bad { color: var(--bad); font-weight: 600; }
  .scmp-vd { display: inline-flex; align-items: center; gap: 1.6mm; white-space: nowrap; }
  .scmp-vb { font-size: 7pt; font-weight: 600; border: 1px solid currentColor; border-radius: 1.2mm; padding: .3mm 1.4mm; }
  .scmp-vb.is-ok { color: var(--ok); } .scmp-vb.is-warn { color: var(--warn); } .scmp-vb.is-bad { color: var(--bad); } .scmp-vb.is-mute { color: var(--ink-3); }
  .scmp-vs { font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 9pt; color: var(--ink); }
  .scmp-vd--lg .scmp-vs { font-size: 13pt; }
  /* Orte aus Standortsuchen (2026-11-06): eigenes Etikett, eckiges Symbol, Score klein */
  .scmp-vb.is-search { color: #1F7A7A; }
  .scmp-vd .scmp-vs.scmp-vs--search { font-size: 8pt; font-weight: 500; color: var(--ink-3); }
  .scmp-badge.scmp-badge--sq { border-radius: 1mm; }
  .scmp-rk__grp { margin-top: 1.6mm; }
  .scmp-glance p { font-size: 8.5pt; line-height: 1.45; color: var(--ink-2); margin: 0 0 1.6mm; }
  .scmp-glance b, .scmp-p b, .scmp-call b { color: var(--ink); }
  .scmp-dims td, .scmp-dims th { font-size: 7.4pt; padding: .7mm 1.6mm .7mm 0; }
  .scmp-bar { display: flex; align-items: center; gap: 1.4mm; }
  .scmp-bar i { display: block; height: 1.8mm; border-radius: .4mm; flex: none; min-width: .5mm; }
  .scmp-bar b { font-family: "IBM Plex Mono", monospace; font-size: 7.4pt; font-weight: 600; }
  .scmp-dims__tot td { border-top: 1px solid var(--line); }
  .scmp-cmp td.scmp-best { font-weight: 600; color: var(--ink); }
  .scmp-cmp td.scmp-best .scmp-sub { font-weight: 400; }
  .scmp-ref { color: var(--ink-3); }
  .scmp-p { font-size: 8.3pt; line-height: 1.45; color: var(--ink-2); margin: 0; }
  .scmp-mx td, .scmp-mx th { font-size: 7.4pt; padding: .8mm 1.6mm; }
  /* Sechs Orte (Checks + Orte aus Suchen): dichter setzen */
  .scmp-cmp--dense th, .scmp-cmp--dense td { font-size: 7pt; padding: .5mm 1.2mm .5mm 0; }
  .scmp-cmp--dense .scmp-sub { font-size: 6.3pt; margin-top: .3mm; }
  .scmp-mx--dense td, .scmp-mx--dense th { font-size: 7pt; padding: .55mm 1.2mm; }
  .scmp-mx td.scmp-mx--mid { background: #F5EDE3; }
  .scmp-mx td.scmp-mx--hi { background: #EBD9C3; }
  .scmp-call { margin-top: 3mm; padding: 2.2mm 3mm; border-left: 2px solid #B4691E; background: #FBF6EF; font-size: 8.2pt; line-height: 1.45; color: var(--ink-2); }
  .scmp-ic { display: inline-block; width: 3.4mm; font-weight: 700; }
  .scmp-ic.is-ok { color: var(--ok); } .scmp-ic.is-warn { color: var(--warn); }
  .scmp-li { display: flex; gap: .6mm; border-bottom: 1px solid var(--line-2); }
  .scmp-step { display: grid; grid-template-columns: 5mm 1fr; font-size: 8.2pt; line-height: 1.42; padding: 1mm 0; border-bottom: 1px solid var(--line-2); color: var(--ink-2); }
  .scmp-step > span { font-family: "IBM Plex Mono", monospace; color: var(--ink-3); }
  .scmp-notes { margin-top: 2.6mm; font-size: 6.9pt; line-height: 1.45; color: var(--ink-3); }
  .pr-exec__line { font-size: 8.2pt; line-height: 1.4; padding: 0.6mm 0; }
  .pr-exec__note { font-size: 6.8pt; line-height: 1.35; color: var(--ink-3); margin-top: 1.2mm; }
  .pr-exec__chips { display: flex; flex-wrap: wrap; gap: 1.2mm 2.4mm; font-size: 7.8pt; }
  .pr-exec__chip { border: 1px solid var(--line); border-radius: 1.4mm; padding: 0.6mm 2mm; }
  .pr-exec__foot { margin-top: auto; padding-top: 2.2mm; border-top: 1px solid var(--line); font-size: 6.8pt; line-height: 1.45; color: var(--ink-3); }

  /* ── Section header (running) ───────────────────────────────────────── */
  .pr-running {
    display: flex; justify-content: space-between; align-items: baseline;
    border-bottom: 1px solid var(--line); padding-bottom: 2mm; margin-bottom: 6mm;
  }
  .pr-running__id { font-size: 8pt; color: var(--ink-3); }

  /* ── Top-3 summary table ────────────────────────────────────────────── */
  .pr-toptable { width: 100%; border-collapse: collapse; margin-top: 3mm; }
  .pr-toptable th {
    text-align: left; font-size: 7.5pt; letter-spacing: .08em; text-transform: uppercase;
    color: var(--ink-3); font-weight: 600; padding: 0 3mm 2mm 0; border-bottom: 1px solid var(--line);
  }
  .pr-toptable td { padding: 3mm 3mm 3mm 0; border-bottom: 1px solid var(--line-2); vertical-align: top; }
  .pr-toptable tr:last-child td { border-bottom: 0; }
  .pr-rank {
    display: inline-flex; align-items: center; justify-content: center;
    width: 7mm; height: 7mm; border-radius: 50%; font-weight: 600; font-size: 9.5pt;
    background: #fff; color: var(--ink); border: 1px solid var(--ink-2);
    font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 8.5pt;
  }
  .pr-rank.is-1 { background: var(--pi); color: #fff; border-color: var(--pi); }
  .pr-rank.is-2, .pr-rank.is-3 { background: var(--ink); color: #fff; border-color: var(--ink); }
  .pr-score-big { font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 13pt; }

  /* ── Score tones ────────────────────────────────────────────────────── */
  .tone-ok   { color: var(--ok); }
  .tone-warn { color: var(--warn); }
  .tone-bad  { color: var(--bad); }

  /* ── Dimension score grid ───────────────────────────────────────────── */
  .pr-dims { display: grid; grid-template-columns: repeat(5, 1fr); gap: 3mm; margin: 4mm 0; }
  .pr-dim { border: 1px solid var(--line); border-radius: 2mm; padding: 2.4mm 2.6mm; }
  .pr-dim__l { font-size: 7pt; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 1.5mm; min-height: 5mm; }
  .pr-dim__v { font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 12pt; }
  .pr-bar { height: 1.4mm; background: var(--line-2); border-radius: 999px; overflow: hidden; margin-top: 1.4mm; }
  /* Kennzahlen sind neutral — Status-Farben gehoeren nur ans Urteil. */
  .pr-bar > i, .pr-bar > i.tone-ok, .pr-bar > i.tone-warn, .pr-bar > i.tone-bad { display: block; height: 100%; background: var(--ink-2); }
  .pr-dim__v.tone-ok, .pr-dim__v.tone-warn, .pr-dim__v.tone-bad,
  .pr-score-big.tone-ok, .pr-score-big.tone-warn, .pr-score-big.tone-bad,
  .pr-cand__score .tone-ok, .pr-cand__score .tone-warn, .pr-cand__score .tone-bad { color: var(--ink); }

  /* ── Weights ────────────────────────────────────────────────────────── */
  .pr-weight { display: grid; grid-template-columns: 42mm 1fr 12mm; align-items: center; gap: 3mm; margin-bottom: 2.6mm; }
  .pr-weight__bar { height: 2mm; background: var(--line-2); border-radius: 999px; overflow: hidden; }
  .pr-weight__bar > i { display: block; height: 100%; background: var(--d4); }
  .pr-weight__pct { font-family: "IBM Plex Mono", monospace; font-size: 9.5pt; text-align: right; }

  /* ── Revenue indication box ─────────────────────────────────────────── */
  .pr-rev {
    border: 1px solid var(--line); background: var(--paper);
    border-radius: 2.4mm; padding: 4mm 4.5mm; margin: 4mm 0;
  }
  .pr-rev__top { display: flex; justify-content: space-between; align-items: baseline; }
  .pr-rev__band { font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 21pt; color: var(--ink); letter-spacing: -.01em; }
  .pr-rev__unit { font-size: 10pt; color: var(--ink-3); }
  .pr-rev__conf { font-size: 8pt; padding: 1mm 2.4mm; border-radius: 999px; border: 1px solid var(--line); background: #fff; color: var(--ink-2); }
  .pr-rev__basis { font-size: 9pt; color: var(--ink-2); margin-top: 2.4mm; }
  .pr-rev__drivers { display: flex; flex-wrap: wrap; gap: 1.6mm; margin-top: 2.4mm; }
  .pr-rev__drivers span { font-size: 7.5pt; padding: .8mm 2.2mm; border-radius: 999px; background: #fff; border: 1px solid var(--line); color: var(--ink-2); }
  .pr-rev__disc { font-size: 7.5pt; font-style: italic; color: var(--ink-3); margin-top: 2.4mm; }

  /* ── Chips ──────────────────────────────────────────────────────────── */
  .pr-chips { display: flex; flex-wrap: wrap; gap: 1.6mm; margin-top: 2mm; }
  .pr-chip { font-size: 8pt; padding: 1mm 2.4mm; border-radius: 999px; border: 1px solid var(--line); }
  .pr-chip.is-ok   { background: var(--ok-soft);   color: var(--ok);   border-color: var(--ok-line); }
  .pr-chip.is-warn { background: var(--warn-soft); color: var(--warn); border-color: var(--warn-line); }
  .pr-fit { display: inline-block; font-size: 8pt; padding: 1mm 2.6mm; border-radius: 999px; font-weight: 600; }
  .pr-fit.is-ok   { background: var(--ok-soft);   color: var(--ok);   border: 1px solid var(--ok-line); }
  .pr-fit.is-warn { background: var(--warn-soft); color: var(--warn); border: 1px solid var(--warn-line); }
  .pr-fit.is-bad  { background: var(--bad-soft);  color: var(--bad);  border: 1px solid var(--bad-line); }

  /* ── Reasoning prose ────────────────────────────────────────────────── */
  .pr-prose { font-size: 10pt; line-height: 1.6; color: var(--ink); }
  .pr-prose p { margin: 0 0 2.8mm; }

  /* ── Umfeld-Zeile (Frequenzbringer, keine Wettbewerber) ─────────────── */
  .pr-note { font-size: 9pt; line-height: 1.5; color: var(--ink-2); margin: 0 0 3mm;
             padding: 2mm 3mm; border-left: 2px solid var(--line); }
  .pr-note b { color: var(--ink); }

  /* ── Candidate header ───────────────────────────────────────────────── */
  .pr-cand__hd { display: flex; align-items: center; gap: 4mm; margin-bottom: 1mm; }
  .pr-cand__name { font-family: "Newsreader", Georgia, serif; font-size: 24pt; line-height: 1; }
  .pr-cand__hl { color: var(--ink-2); font-size: 11pt; margin: 1mm 0 0; }
  .pr-cand__score { margin-left: auto; text-align: right; }
  .pr-cand__score b { font-family: "IBM Plex Mono", monospace; font-size: 22pt; font-weight: 600; }

  /* ── Listings table ─────────────────────────────────────────────────── */
  .pr-listings { width: 100%; border-collapse: collapse; margin-top: 2mm; font-size: 8.5pt; }
  .pr-listings th { text-align: left; font-size: 7pt; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; padding: 0 2mm 1.6mm 0; border-bottom: 1px solid var(--line); }
  .pr-listings td { padding: 2mm 2mm 2mm 0; border-bottom: 1px solid var(--line-2); vertical-align: top; }
  .pr-listings a { color: var(--pi); text-decoration: none; word-break: break-all; }

  /* ── Generic blocks ─────────────────────────────────────────────────── */
  .pr-block { margin-bottom: 6mm; }
  .pr-card { border: 1px solid var(--line); border-radius: 2.4mm; padding: 4mm 4.5mm; margin-bottom: 4mm; }
  .pr-ul { margin: 0; padding-left: 4.5mm; font-size: 9.5pt; line-height: 1.55; }
  .pr-ul li { margin-bottom: 1.4mm; }
  .pr-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 6mm; }
  .pr-foot-note { font-size: 8pt; color: var(--ink-3); border-top: 1px solid var(--line); padding-top: 2.4mm; margin-top: 4mm; }
  .pr-cta { text-align: center; font-size: 9.5pt; color: var(--ink-2); margin: 6mm 0 2mm; }
  .pr-cta a { font-weight: 600; }
  .pr-a { color: var(--pi); text-decoration: none; }
  /* Für/Gegen + Auflagen wie in der App: neutrale Zeilen, Status nur am Symbol. */
  .pr-pc-k { font-weight: 600; font-size: 9.5pt; margin-bottom: 1.5mm; }
  .pr-li { display: grid; grid-template-columns: 5mm minmax(0, 1fr); gap: 1.5mm; padding: 1.6mm 0; border-top: 1px solid var(--line); font-size: 9.5pt; line-height: 1.5; color: var(--ink-2); }
  .pr-sym { font-weight: 600; color: var(--ink-3); }
  .pr-sym.is-ok { color: var(--ok); } .pr-sym.is-warn { color: var(--warn); }
}
