/* ============================================================
   OWL INTELLIGENCE REPORT — editorial print system
   US Letter portrait · server-render (HTML → PDF) friendly
   Syne (display/numerals) + DM Mono (labels/body)
   Lime is reserved for YOU and the headline score; competitors
   render in the neutral ink scale. One accent, used surgically.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Manrope:wght@400;500;600;700;800&family=Syne:wght@500;600;700;800&display=swap');

:root{
  --ink:#0d0d0c; --ink2:#36352f; --ink3:#73716a; --ink4:#a3a09a; --ink5:#cbc8c1;
  --paper:#f3f1ea; --card:#ffffff; --panel:#faf8f2; --panel2:#efece3;
  --line:#e3e0d6; --line2:#d4d0c4; --hair:rgba(13,13,12,.07);
  --lime:#c8f135; --lime-ink:#5c6e10; --lime-dim:#aacb1f;
  --good:#3f9a52; --good-soft:#e7f2e3; --good-ink:#2c6b39;
  --warn:#d98a2b; --warn-soft:#f8ecd6; --warn-ink:#9a5d12;
  --bad:#cf4b3e;  --bad-soft:#f6e0dc;  --bad-ink:#9a2f25;
  --blue:#3a6ea8; --blue-soft:#e1e9f2;
  --sans:'Syne',system-ui,sans-serif;
  --mono:'DM Mono',ui-monospace,monospace;
  /* Type system v2: running prose uses Manrope; Syne stays for the
     editorial display headers + numerals, DM Mono for eyebrow labels. */
  --font-ui:'Manrope',system-ui,-apple-system,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
body{
  font-family:var(--mono); color:var(--ink); background:var(--paper);
  font-size:11px; line-height:1.55; -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  /* DM Mono ships only 300/400/500 — stop the browser faux-bolding the
     weight-700 eyebrow labels (the smeared look). Falls back to real 500. */
  font-synthesis:style;
}

/* ---- PAGE: US Letter portrait ---- */
.page{
  position:relative;
  width:8.5in; min-height:11in;
  margin:0 auto; background:var(--card);
  padding:0.72in 0.7in 0.78in;
  display:flex; flex-direction:column;
  overflow:hidden;
}
.screen .page{ margin:26px auto; box-shadow:0 1px 0 var(--line),0 18px 50px -22px rgba(0,0,0,.28); min-height:auto !important; }
/* On screen, don't let next-move (or any margin-top:auto element) push to the
   bottom of a paper-sized flex container — sections collapse to content height. */
.screen .next-move{ margin-top: 14px !important; }

/* ---- running header / footer ---- */
.rh{ position:absolute; left:0.7in; right:0.7in; top:0.4in;
  display:flex; justify-content:space-between; align-items:center;
  font-size:8px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink4);
  padding-bottom:7px; border-bottom:1px solid var(--hair); }
.rh b{ color:var(--ink2); font-weight:500; letter-spacing:.14em; }
.rf{ position:absolute; left:0.7in; right:0.7in; bottom:0.42in;
  display:flex; justify-content:space-between; align-items:center;
  font-size:8px; letter-spacing:.13em; text-transform:uppercase; color:var(--ink4);
  padding-top:7px; border-top:1px solid var(--hair); }
.rf .mid{ position:absolute; left:50%; transform:translateX(-50%);
  font-family:var(--sans); font-weight:700; letter-spacing:.04em; color:var(--ink3); }
.rf .conf{ color:var(--bad-ink); letter-spacing:.16em; }
.page-body{ flex:1; display:flex; flex-direction:column; }

/* ---- type primitives ---- */
.eyebrow{ font-size:8.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--ink4); font-weight:500; }
.num{ font-family:var(--sans); font-weight:800; letter-spacing:-.02em; font-feature-settings:"tnum" 1; }
.serifless{ font-family:var(--sans); }
.you-tag{ font-family:var(--sans); font-weight:800; font-size:8px; letter-spacing:.08em;
  background:var(--lime); color:#0d0d0c; padding:2px 5px; border-radius:3px; vertical-align:middle; }

/* band chip */
.band{ display:inline-flex; align-items:center; gap:6px; font-family:var(--sans); font-weight:800;
  font-size:10px; letter-spacing:.05em; padding:4px 10px; border-radius:4px; text-transform:uppercase; }
.band::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.band.CRITICAL{ background:var(--bad-soft); color:var(--bad-ink); }
.band.WEAK{ background:var(--warn-soft); color:var(--warn-ink); }
.band.MODERATE{ background:var(--blue-soft); color:var(--blue); }
.band.STRONG{ background:var(--good-soft); color:var(--good-ink); }

/* ============================================================
   COVER
   ============================================================ */
.cover{ padding:0.62in 0.7in; }
.cover-top{ display:flex; justify-content:space-between; align-items:flex-start;
  padding-bottom:14px; border-bottom:1.5px solid var(--ink); }
.logo-lock{ display:flex; align-items:center; gap:11px; }
.logo-lock img{ width:34px; height:34px; border-radius:8px; }
.logo-lock .lk-name{ font-family:var(--sans); font-weight:800; font-size:15px; letter-spacing:-.01em; line-height:1; }
.logo-lock .lk-sub{ font-size:8px; letter-spacing:.2em; text-transform:uppercase; color:var(--ink3); margin-top:4px; }
.cobrand{ text-align:right; font-size:8.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink3); line-height:1.7; }
.cobrand b{ font-family:var(--sans); font-weight:700; color:var(--ink); font-size:12px; letter-spacing:.02em; display:block; }
/* ── Agency lockup (split + stacked variants) ──
   When the user uploads a logo, render it next to the agency name.
   Falls back to a colored initial chip when no logo is uploaded. */
.cobrand.cb-split{ display:flex; align-items:center; gap:11px; text-align:right; }
.cobrand.cb-stacked{ display:flex; flex-direction:column; align-items:flex-end; gap:6px; text-align:right; }
.cobrand .cb-logo-wrap{ display:flex; align-items:center; justify-content:center; }
.cobrand .cb-logo{ display:block; max-height:40px; max-width:120px; object-fit:contain; }
.cobrand .cb-initial{ width:34px; height:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-family:var(--sans); font-weight:800; font-size:15px; letter-spacing:-.01em; }
.cobrand .cb-meta{ display:flex; flex-direction:column; gap:1px; line-height:1.3; }
.cobrand.cb-split .cb-meta{ text-align:left; }
.cobrand .cb-name{ font-family:var(--sans); font-weight:700; color:var(--ink); font-size:13px; letter-spacing:-.005em; text-transform:none; }
.cobrand .cb-tag{ font-family:var(--mono); font-size:9px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink3); }
.cobrand .cb-prep{ font-family:var(--mono); font-size:8.5px; letter-spacing:.04em; text-transform:none; color:var(--ink4); margin-top:3px; }

.cover-mid{ flex:1; display:flex; flex-direction:column; justify-content:center; padding:0.5in 0; }
.cover-kicker{ display:flex; align-items:center; gap:12px; margin-bottom:26px; }
.cover-kicker .k-line{ height:1px; width:42px; background:var(--ink3); }
.cover-h1{ font-family:var(--sans); font-weight:800; font-size:clamp(28px, 4.2vw, 46px); line-height:1.05; text-wrap:balance;
  letter-spacing:-.028em; text-wrap:balance; max-width:8.5in; }
.cover-h1 .hl{ background:linear-gradient(transparent 14%, var(--lime) 14% 86%, transparent 86%); padding:0 .04em; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
.cover-lead{ font-size:13px; line-height:1.6; color:var(--ink2); max-width:6.2in; margin-top:22px; }
.cover-lead strong{ font-family:var(--sans); font-weight:700; color:var(--ink); }

/* score tab on cover */
.cover-score{ display:flex; align-items:flex-end; gap:18px; margin-top:34px; }
.cover-score .cs-big{ font-family:var(--sans); font-weight:800; font-size:78px; line-height:.82; letter-spacing:-.04em; }
.cover-score .cs-den{ font-size:11px; color:var(--ink3); letter-spacing:.04em; padding-bottom:8px; }
.cover-score .cs-den b{ font-family:var(--sans); color:var(--ink); }

/* tombstone metadata band */
.tombstone{ display:grid; grid-template-columns:repeat(5,1fr); border:1px solid var(--line2);
  border-radius:10px; overflow:hidden; margin-top:6px; }
.tomb{ padding:14px 16px; border-right:1px solid var(--line); }
.tomb:last-child{ border-right:none; }
.tomb .t-l{ font-size:8px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink4); margin-bottom:6px; }
.tomb .t-v{ font-family:var(--sans); font-weight:700; font-size:13px; letter-spacing:-.01em; }
.cover-foot{ display:flex; justify-content:space-between; align-items:center; margin-top:18px;
  font-size:8.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink4); }
.cover-foot .conf{ color:var(--bad-ink); }

/* ============================================================
   SECTION SCAFFOLD
   ============================================================ */
.sec-head{ display:flex; align-items:baseline; gap:14px; padding-bottom:10px;
  border-bottom:1.5px solid var(--ink); margin-bottom:13px; }
/* Section-number badge: always high-contrast (dark bg + light text)
   regardless of the user's cobrand accent color, since accent
   overrides --lime and could be anything (lime/purple/red). The
   accent gets featured elsewhere (cover pills, highlights, CTAs)
   but section numbers stay neutral so they're always legible. */
.sec-num{ font-family:var(--sans); font-weight:800; font-size:13px; color:var(--paper, #f7f6f2);
  background:var(--ink, #0a0a0a); border-radius:5px; padding:4px 9px; letter-spacing:0.02em;
  text-shadow:0 1px 0 rgba(0,0,0,0.15); }
.sec-title{ font-family:var(--sans); font-weight:800; font-size:23px; letter-spacing:-.018em; line-height:1; }
.sec-q{ margin-left:auto; font-size:11px; font-style:italic; color:var(--ink3); }

/* ============================================================
   4-PILLAR DIAGNOSTIC SCORECARD (§02 of the report)
   Per Claude Design's spec: AI Visibility is the composite (full-width
   hero), the other three are diagnostic pillars (3-card row below).
   Hero scores in Syne, color-matched to band — turns text into a
   scorecard.
   ============================================================ */
.pillar-intro{ font-size:12.5px; color:var(--ink2); line-height:1.55; margin-bottom:16px; }
.pillar-container{ display:flex; flex-direction:column; gap:14px; }

/* ── Composite (AI Visibility) — full-width hero ───────────── */
.pillar-hero{
  background:var(--card,#fff); border:1px solid var(--hair,#e8e5dc); border-radius:14px;
  padding:22px 26px; display:grid; grid-template-columns:1fr 200px; gap:24px; align-items:center;
  position:relative; overflow:hidden;
}
/* Band-tinted top stripe — uses an absolutely-positioned bar instead
   of a border-top so it can't be overridden by the .pillar-hero border
   shorthand. Width = full card width minus the radius corners. */
.pillar-hero::after{
  content:""; position:absolute; left:0; right:0; top:0; height:4px;
  background:var(--ink,#0a0a0a);  /* default — overridden by band class */
}
.pillar-hero.band-strong::after    { background: var(--good,#16a34a); }
.pillar-hero.band-developing::after{ background: var(--warn,#d97706); }
.pillar-hero.band-weak::after      { background: var(--bad,#dc2626); }
.pillar-hero.band-critical::after  { background: #991b1b; }
.pillar-hero.band-pending::after   { background: var(--hair,#e8e5dc); }
.pillar-hero::before{
  content:""; position:absolute; left:0; top:4px; bottom:0; width:5px;
  background:var(--ink,#0a0a0a);
}
.pillar-hero-label{ font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink3); margin-bottom:6px; }
.pillar-hero-name{ font-family:var(--sans); font-size:22px; font-weight:800; letter-spacing:-0.018em; line-height:1.15; color:var(--ink); display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.pillar-hero-icon{ width:32px; height:32px; border-radius:8px; background:var(--paper2,#f1efe9); color:var(--ink2,#3a3a36); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.pillar-hero-icon svg{ width:18px; height:18px; display:block; }
.pillar-hero.band-strong    .pillar-hero-icon{ color:var(--good,#16a34a); }
.pillar-hero.band-developing .pillar-hero-icon{ color:var(--warn,#d97706); }
.pillar-hero.band-weak      .pillar-hero-icon{ color:var(--bad,#dc2626); }
.pillar-hero.band-critical  .pillar-hero-icon{ color:#991b1b; }
.pillar-hero.band-pending   .pillar-hero-icon{ color:var(--ink4,#9a978f); }
.pillar-hero-desc{ font-family:var(--sans); font-size:12px; color:var(--ink3); line-height:1.5; margin-bottom:10px; }
.pillar-hero-finding{ font-size:12.5px; color:var(--ink2); line-height:1.55; padding-top:12px; border-top:1px solid rgba(0,0,0,0.10); }
/* Hero score: big number stacked over a tight "/ 10" — clean and never
   wraps. Mirrors the snapshot dial's vertical proportions. */
.pillar-hero-score-wrap{ text-align:center; display:flex; flex-direction:column; align-items:center; gap:8px; }
.pillar-hero-score{ font-family:var(--sans); font-weight:800; font-size:64px; line-height:1; letter-spacing:-0.03em; font-variant-ligatures:none; }
.pillar-hero-score.s-strong{    color:var(--good,#16a34a); }
.pillar-hero-score.s-developing{color:var(--warn,#d97706); }
.pillar-hero-score.s-weak{      color:var(--bad,#dc2626); }
.pillar-hero-score.s-critical{  color:#991b1b; }
.pillar-hero-score-den{ font-family:var(--sans); font-size:13px; color:var(--ink4); font-weight:700; line-height:1; letter-spacing:0.02em; margin-top:-2px; }

/* ── Two-score scorecard (methodology v1.0, 2026-06-14) ──────
   Used when .score-card-v1 is present alongside .pillar-hero. Adds
   a grid-friendly inner layout and a component breakdown table so
   the customer can see exactly how each top-line score is composed.
   Legacy pre-v1.0 audits still render the 3-diagnostic-card view. */
.pillar-hero.score-card-v1{
  grid-template-columns:1fr;
  gap:18px;
  padding:24px 26px;
}
.score-card-top{ display:grid; grid-template-columns:1fr 200px; gap:24px; align-items:start; }
.score-card-meta{ min-width:0; }
.score-card-label{ font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink3); margin-bottom:6px; }
.score-card-name{ font-family:var(--sans); font-size:22px; font-weight:800; letter-spacing:-0.018em; line-height:1.15; color:var(--ink); display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.score-card-desc{ font-family:var(--sans); font-size:12.5px; color:var(--ink3); line-height:1.5; }
.score-card-hero{ text-align:center; display:flex; flex-direction:column; align-items:center; gap:8px; }

.score-comp-table{ border:1px solid var(--hair,#e8e5dc); border-radius:10px; overflow:hidden; }
.score-comp-head{ display:grid; grid-template-columns:1.5fr 0.85fr 0.6fr 0.85fr; gap:10px; padding:9px 14px; background:var(--paper2,#f1efe9); font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink3); }
.score-comp-head span:not(:first-child){ text-align:right; }
.score-comp-row{ display:grid; grid-template-columns:1.5fr 0.85fr 0.6fr 0.85fr; gap:10px; padding:10px 14px; border-top:1px solid var(--hair,#e8e5dc); font-family:var(--mono); font-size:12.5px; align-items:baseline; }
.score-comp-name{ color:var(--ink); font-weight:600; }
.score-comp-cur{ color:var(--ink); font-weight:600; text-align:right; }
.score-comp-cur.s-strong{    color:var(--good,#16a34a); }
.score-comp-cur.s-developing{color:var(--warn,#d97706); }
.score-comp-cur.s-weak{      color:var(--bad,#dc2626); }
.score-comp-cur.s-critical{  color:#991b1b; }
.score-comp-weight{ color:var(--ink3); font-weight:500; text-align:right; }
.score-comp-contrib{ color:var(--lime-dim,#5c6e10); font-weight:700; text-align:right; }

/* When two score-card-v1 cards are present (AIV + Readiness) stack
   them vertically with consistent spacing. */
.pillar-container > .pillar-hero.score-card-v1 + .pillar-hero.score-card-v1{ margin-top:14px; }

/* ── Diagnostic row (Technical / Content / Authority) ──────── */
.pillar-diagnostics{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:12px; }
.pillar-card{
  background:var(--card,#fff); border:1px solid var(--hair,#e8e5dc); border-radius:12px;
  padding:16px 18px; display:flex; flex-direction:column; min-width:0;
  position:relative; overflow:hidden;
}
/* Band stripe via pseudo-element — same bulletproof pattern as the hero. */
.pillar-card::before{
  content:""; position:absolute; left:0; right:0; top:0; height:4px;
  background:var(--hair,#e8e5dc);
}
.pillar-card.band-strong::before    { background: var(--good,#16a34a); }
.pillar-card.band-developing::before{ background: var(--warn,#d97706); }
.pillar-card.band-weak::before      { background: var(--bad,#dc2626); }
.pillar-card.band-critical::before  { background: #991b1b; }
.pillar-card.band-pending::before   { background: var(--hair,#e8e5dc); }
.pillar-card.is-pending{ opacity:0.7; background:var(--paper2,#efede8); }
.pillar-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
/* Monoline SVG icons (2026-06-22, replaced emoji): soft neutral square with the
   icon stroked in the card's band color via currentColor. */
.pillar-card-icon{ width:32px; height:32px; border-radius:8px; background:var(--paper2,#f1efe9); color:var(--ink2,#3a3a36); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.pillar-card-icon svg{ width:18px; height:18px; display:block; }
.pillar-card.band-strong    .pillar-card-icon{ color:var(--good,#16a34a); }
.pillar-card.band-developing .pillar-card-icon{ color:var(--warn,#d97706); }
.pillar-card.band-weak      .pillar-card-icon{ color:var(--bad,#dc2626); }
.pillar-card.band-critical  .pillar-card-icon{ color:#991b1b; }
.pillar-card.band-pending   .pillar-card-icon{ color:var(--ink4,#9a978f); }
.pillar-card-tag{ font-family:var(--mono); font-size:8.5px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink4); }
.pillar-card-name{ font-family:var(--sans); font-size:13px; font-weight:700; letter-spacing:-0.005em; color:var(--ink); line-height:1.2; margin-top:1px; }
.pillar-card-score-row{ display:flex; align-items:baseline; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.pillar-card-score{ font-family:var(--sans); font-weight:800; font-size:42px; line-height:1; letter-spacing:-0.025em; font-variant-ligatures:none; }
.pillar-card-score.s-strong{    color:var(--good,#16a34a); }
.pillar-card-score.s-developing{color:var(--warn,#d97706); }
.pillar-card-score.s-weak{      color:var(--bad,#dc2626); }
.pillar-card-score.s-critical{  color:#991b1b; }
.pillar-card-score.s-pending{   color:var(--ink4); }
.pillar-card-score-den{ font-family:var(--sans); font-size:13px; color:var(--ink4); font-weight:600; }
.pillar-card-desc{ font-size:10.5px; color:var(--ink3); line-height:1.45; margin-bottom:10px; }
.pillar-card-finding{ font-size:11px; color:var(--ink2); line-height:1.5; padding-top:12px; margin-top:auto; border-top:1px solid rgba(0,0,0,0.10); }

/* ── Band pills (used in both hero and cards) ──────────────── */
.pillar-band{ display:inline-block; font-family:var(--sans); font-size:9px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; padding:3px 8px; border-radius:4px; }
.pillar-band.s-strong{    background:rgba(22,163,74,0.13); color:#15803d; }
.pillar-band.s-developing{background:rgba(217,119,6,0.16); color:#b45309; }
.pillar-band.s-weak{      background:rgba(220,38,38,0.13); color:#b91c1c; }
.pillar-band.s-critical{  background:rgba(153,27,27,0.14); color:#7f1d1d; }
.pillar-band.s-pending{   background:var(--hair,#e8e5dc); color:var(--ink3); }

/* three-beat blocks */
.beat{ margin-bottom:12px; }
/* Section sub-headings — promoted 2026-06-26 from tiny uppercase eyebrows to
   real sentence-case headings (display font, dark, lime accent tick + trailing
   rule). The all-caps/letter-spacing/light-gray treatment read as annotation no
   matter the size; dropping it is what makes these stand out as headings.
   Labels are authored sentence-case, so this is pure CSS — no copy edits.
   Report-wide (every section of every deliverable) so the rhythm stays consistent. */
.beat-lbl{ font-family:var(--sans); font-size:14px; font-weight:700; letter-spacing:-.005em;
  color:var(--ink); margin-bottom:9px; display:flex; align-items:center; gap:9px; }
.beat-lbl::before{ content:""; flex:none; width:4px; height:15px; border-radius:2px; background:var(--lime-dim); }
.beat-lbl::after{ content:""; flex:1; height:1px; background:var(--hair); }
.measures{ font-size:11px; line-height:1.5; color:var(--ink2); max-width:7.1in; }
.measures strong{ font-family:var(--sans); font-weight:700; color:var(--ink); }
.universe{ margin-top:6px; padding:7px 13px; background:var(--panel); border:1px solid var(--line);
  border-radius:8px; font-size:10px; line-height:1.5; color:var(--ink3); }
.universe b{ color:var(--ink2); font-family:var(--sans); font-weight:600; }

/* margin-top:18px (was auto): auto pushed the interpretation to the page
   bottom, which left a big mid-page gap on sparse sections (e.g. Trajectory).
   A fixed gap lets it sit right after the content; leftover space falls to the
   bottom of the page where it reads as normal margin, not a hole. */
.interp{ border-top:1px solid var(--ink); padding-top:13px; margin-top:13px; }
.interp .beat-lbl{ color:var(--ink3); }
.interp p{ font-size:12px; line-height:1.62; color:var(--ink); max-width:7.2in; text-wrap:pretty; }
.interp p strong{ font-family:var(--sans); font-weight:700; }
.interp .pull{ font-family:var(--sans); font-weight:700; }

/* ============================================================
   SNAPSHOT
   ============================================================ */
.snap-verdict{ display:grid; grid-template-columns:1fr 2in; gap:26px; align-items:center;
  padding-bottom:12px; border-bottom:1px solid var(--line); margin-bottom:13px; }
.snap-verdict .sv-h{ font-family:var(--sans); font-weight:800; font-size:23px; line-height:1.12;
  letter-spacing:-.018em; text-wrap:balance; }
.snap-verdict .sv-p{ font-size:11px; line-height:1.5; color:var(--ink2); margin-top:8px; max-width:4.6in; }
.snap-verdict .sv-p strong{ font-family:var(--sans); font-weight:700; color:var(--ink); }
.dial{ text-align:center; padding:18px 10px; border:1px solid var(--line2); border-radius:12px; background:var(--panel); }
.dial .d-num{ font-family:var(--sans); font-weight:800; font-size:62px; line-height:.85; letter-spacing:-.04em; }
.dial .d-den{ font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink3); margin:8px 0 11px; }

/* four signal rows, each vs leader */
.signals{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px; }
.sig{ border:1px solid var(--line); border-radius:10px; padding:11px 15px; background:var(--card); }
.sig-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.sig-lbl{ font-size:9px; letter-spacing:.13em; text-transform:uppercase; color:var(--ink3); }
.sig-you{ font-family:var(--sans); font-weight:800; font-size:22px; letter-spacing:-.02em; }
.sig-bars{ display:flex; flex-direction:column; gap:5px; }
.sig-bar{ display:grid; grid-template-columns:42px 1fr auto; gap:8px; align-items:center; font-size:9px; }
.sig-bar .b-who{ letter-spacing:.06em; text-transform:uppercase; color:var(--ink4); }
.sig-bar .b-who.you{ color:var(--lime-ink); font-weight:500; }
.sig-track{ height:6px; background:var(--panel2); border-radius:3px; overflow:hidden; }
.sig-fill{ height:100%; border-radius:3px; background:var(--ink2); }
.sig-fill.you{ background:var(--lime); }
.sig-val{ font-family:var(--sans); font-weight:700; font-size:10px; color:var(--ink2); min-width:34px; text-align:right; }
.sig-sub{ font-size:8.5px; color:var(--ink4); margin-top:5px; letter-spacing:.02em; }

/* rank ribbon */
.rank-ribbon{ margin-bottom:11px; }
.rr-lbl{ font-size:8.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--ink4); margin-bottom:6px; }
.rr-track{ display:flex; gap:6px; }
.rr-cell{ flex:1; border:1px solid var(--line); border-radius:8px; padding:6px 8px; text-align:center; background:var(--card); position:relative; }
.rr-cell.you{ border-color:var(--lime-dim); background:rgba(200,241,53,.1); }
.rr-rank{ font-family:var(--sans); font-weight:800; font-size:11px; color:var(--ink4); }
.rr-cell.you .rr-rank{ color:var(--lime-ink); }
.rr-name{ font-family:var(--sans); font-weight:700; font-size:10px; margin:3px 0 2px; letter-spacing:-.01em;
  /* allow long brand names to wrap to 2 lines instead of clipping —
     "The Bernard Group" was getting truncated to "The" because the
     flex parent + min-width interaction killed the ellipsis fallback */
  line-height:1.2; word-break:break-word; hyphens:auto; }
.rr-sov{ font-size:8.5px; color:var(--ink3); }

/* next move bar */
.next-move{ display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:center;
  background:var(--ink); color:#fff; border-radius:11px; padding:12px 18px; margin-top:auto; }
.nm-tag{ font-family:var(--sans); font-weight:800; font-size:9px; letter-spacing:.1em; text-transform:uppercase;
  color:#0d0d0c; background:var(--lime); padding:6px 9px; border-radius:5px; white-space:nowrap; align-self:flex-start; }
.nm-txt{ font-size:11.5px; line-height:1.5; color:rgba(255,255,255,.9); }
.nm-txt strong{ font-family:var(--sans); font-weight:700; color:#fff; }

/* ============================================================
   COVERAGE GRID  (engines × questions, scales to 9×10)
   ============================================================ */
.perf-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:9px; }
.perf-stat{ display:flex; align-items:baseline; gap:9px; }
.perf-stat .ps-big{ font-family:var(--sans); font-weight:800; font-size:34px; letter-spacing:-.03em; line-height:.85; }
.perf-stat .ps-cap{ font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink3); max-width:1.5in; line-height:1.4; }
.perf-mini{ display:flex; gap:22px; }
.pm{ text-align:right; }
.pm .pm-v{ font-family:var(--sans); font-weight:800; font-size:17px; letter-spacing:-.02em; }
.pm .pm-l{ font-size:8px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); margin-top:3px; }

.cov{ border:1px solid var(--line2); border-radius:10px; overflow:hidden; }
.cov-grid{ width:100%; border-collapse:collapse; table-layout:fixed; }
.cov-grid th,.cov-grid td{ border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.cov-grid th:last-child,.cov-grid td:last-child{ border-right:none; }
.cov-grid tr:last-child td{ border-bottom:none; }
.cov-grid thead th{ background:var(--panel2); padding:8px 4px; font-family:var(--sans); font-weight:700;
  font-size:9px; color:var(--ink3); letter-spacing:.02em; }
.cov-grid thead th.eng-col{ text-align:left; padding-left:13px; width:1.45in; }
.cov-grid thead th.sum-col{ width:0.92in; background:var(--ink); color:#fff; }
.cov-eng{ text-align:left; padding:0 13px; font-family:var(--sans); font-weight:600; font-size:10.5px;
  color:var(--ink2); height:30px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cov-cell{ text-align:center; height:27px; font-family:var(--sans); font-weight:800; font-size:11px; }
.cov-cell.c0{ color:var(--ink5); }
.cov-cell.c1{ background:rgba(200,241,53,.16); color:var(--lime-ink); }
.cov-cell.c2{ background:rgba(200,241,53,.42); color:var(--lime-ink); }
.cov-cell.c3{ background:var(--lime); color:#0d0d0c; }
.cov-sum{ text-align:center; background:#16160f; color:#fff; font-size:9px; }
.cov-sum .cs-you{ font-family:var(--sans); font-weight:800; font-size:12px; color:var(--lime); }
.cov-sum .cs-vs{ color:rgba(255,255,255,.4); }
.cov-sum .cs-ld{ font-family:var(--sans); font-weight:700; color:rgba(255,255,255,.82); }
.cov-foot{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:10px; font-size:9px; color:var(--ink3); }
.cov-key{ display:flex; align-items:center; gap:6px; }
.cov-key .sw{ width:13px; height:13px; border-radius:3px; border:1px solid var(--line2); }
.qlegend{ columns:2; column-gap:26px; margin-top:9px; font-size:9px; line-height:1.5; }
.qlegend .ql{ break-inside:avoid; display:flex; gap:8px; color:var(--ink2); padding:1.5px 0; }
.qlegend .ql b{ font-family:var(--sans); font-weight:700; color:var(--ink); min-width:24px; }
.qlegend .ql .qi{ margin-left:auto; font-size:8px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink4); white-space:nowrap; }

/* ============================================================
   LEADERBOARD  (scales to 6 brands)
   ============================================================ */
.lb{ border:1px solid var(--line2); border-radius:10px; overflow:hidden; }
.lb-row{ display:grid; grid-template-columns:30px 1.9fr 1.5fr 64px 58px; gap:14px; align-items:center;
  padding:6px 16px; border-bottom:1px solid var(--line); }
.lb-row:last-child{ border-bottom:none; }
.lb-row.head{ background:var(--panel2); padding:9px 16px; font-size:8px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink4); }
.lb-row.head .r-num,.lb-row.head .r-end{ text-align:center; }
.lb-row.you{ background:rgba(200,241,53,.1); }
.lb-row.you::before{ content:""; position:absolute; }
.lb-rank{ font-family:var(--sans); font-weight:800; font-size:15px; color:var(--ink4); text-align:center; }
.lb-rank.first{ color:var(--good-ink); }
.lb-row.you .lb-rank{ color:var(--lime-ink); }
.lb-brand{ display:flex; flex-direction:column; gap:1px; }
.lb-brand b{ font-family:var(--sans); font-weight:700; font-size:12px; letter-spacing:-.01em; display:flex; align-items:center; gap:6px; }
.lb-brand .dom{ font-size:8.5px; color:var(--ink3); }
.lb-sov{ display:flex; align-items:center; gap:9px; }
.lb-track{ flex:1; height:7px; background:var(--panel2); border-radius:4px; overflow:hidden; }
.lb-fill{ height:100%; background:var(--ink2); border-radius:4px; }
.lb-row.you .lb-fill{ background:var(--lime); }
.lb-pct{ font-family:var(--sans); font-weight:700; font-size:11px; min-width:38px; text-align:right; }
.lb-rankq{ font-family:var(--sans); font-weight:700; font-size:12px; text-align:center; color:var(--ink2); }
.lb-won{ font-family:var(--sans); font-weight:700; font-size:12px; text-align:center; }
.lb-won .w-hi{ color:var(--good-ink); }
.lb-won .w-lo{ color:var(--ink4); }

/* per-question loss list — two columns, scales with question count */
.qloss{ display:grid; grid-template-columns:1fr 1fr; gap:0 28px; margin-top:12px; }
.qloss-row{ display:grid; grid-template-columns:1fr auto; gap:11px; align-items:center;
  padding:3px 0; border-bottom:1px solid var(--hair); }
.qloss-q{ font-size:9.5px; color:var(--ink2); display:flex; gap:8px; align-items:baseline; min-width:0; }
.qloss-q b{ font-family:var(--sans); font-weight:700; color:var(--ink); flex:none; }
.qloss-q span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.qloss-bar{ display:flex; align-items:center; gap:6px; }
.qloss-seg{ height:14px; border-radius:3px; }
.qloss-seg.you{ background:var(--lime); }
.qloss-seg.ld{ background:var(--ink2); }
.qloss-n{ font-size:8.5px; color:var(--ink3); white-space:nowrap; }
.qloss-n .yv{ color:var(--lime-ink); font-family:var(--sans); font-weight:700; }
.qloss-n .lv{ font-family:var(--sans); font-weight:700; color:var(--ink2); }

/* ============================================================
   ENGINE TABLE  (you vs leader, scales to 9)
   ============================================================ */
.etbl{ border:1px solid var(--line2); border-radius:10px; overflow:hidden; }
.etbl-row{ display:grid; grid-template-columns:1.5in 1fr 70px 92px; gap:14px; align-items:center;
  padding:5px 16px; border-bottom:1px solid var(--line); }
.etbl-row:last-child{ border-bottom:none; }
.etbl-row.head{ background:var(--panel2); padding:8px 16px; font-size:8px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink4); }
.etbl-eng{ font-family:var(--sans); font-weight:700; font-size:11px; letter-spacing:-.005em; }
.etbl-scores{ position:relative; height:18px; }
.etbl-ld{ position:absolute; left:0; top:50%; transform:translateY(-50%); height:7px;
  background:var(--panel2); border-radius:4px; width:100%; }
.etbl-ld-fill{ position:absolute; left:0; top:50%; transform:translateY(-50%); height:7px;
  background:repeating-linear-gradient(90deg,var(--ink4) 0 4px,transparent 4px 7px); border-radius:4px; opacity:.55; }
.etbl-you-fill{ position:absolute; left:0; top:50%; transform:translateY(-50%); height:7px;
  background:var(--lime); border-radius:4px; }
.etbl-nums{ font-size:9px; text-align:right; }
.etbl-nums .yv{ font-family:var(--sans); font-weight:800; font-size:13px; }
.etbl-nums .lv{ color:var(--ink3); }
.etbl-cite{ text-align:center; font-size:9px; color:var(--ink3); }
.etbl-cite b{ font-family:var(--sans); font-weight:700; color:var(--ink2); font-size:11px; }
.etbl-band{ text-align:right; }
.eband{ font-family:var(--sans); font-weight:800; font-size:8.5px; letter-spacing:.05em; padding:3px 7px; border-radius:4px; }
.eband.STRONG{ background:var(--good-soft); color:var(--good-ink); }
.eband.MODERATE{ background:var(--blue-soft); color:var(--blue); }
.eband.WEAK{ background:var(--warn-soft); color:var(--warn-ink); }
.eband.CRITICAL{ background:var(--bad-soft); color:var(--bad-ink); }
.eband.MISSING{ background:var(--panel2); color:var(--ink4); }

/* ============================================================
   PLAYBOOK — horizon-grouped, diagnosis-led
   ============================================================ */
/* horizon group banners — NEUTRAL (color cleanse 2026-06-22). The three
   horizons read by label + icon + caption, not by hue; one treatment for all.
   Green is reserved for the lift numbers (the payoff the customer is buying). */
.hz{ display:flex; align-items:center; gap:10px; margin:8px 0 5px; padding:7px 13px; border-radius:8px; border:1px solid var(--line2); background:var(--panel2,#f4f2ec); }
.hz:first-child{ margin-top:2px; }
.hz.imm, .hz.ong, .hz.lng{ background:var(--panel2,#f4f2ec); border-color:var(--line2); }
.hz-ic{ width:26px; height:26px; border-radius:6px; display:flex; align-items:center; justify-content:center; color:#fff; flex:none; background:var(--ink,#1a1a1a); }
.hz-ic svg{ width:15px; height:15px; display:block; }
.hz-nm{ font-family:var(--sans); font-weight:800; font-size:13px; letter-spacing:-.01em; }
.hz-sb{ font-size:8px; color:var(--ink3); margin-left:auto; letter-spacing:.06em; text-transform:uppercase; }
/* diagnosis-led action card additions */
/* Priority — neutral charcoal→gray scale: order + contrast carry priority, not hue. */
.a-pri{ font-family:var(--sans); font-weight:800; font-size:8px; letter-spacing:.04em; color:#fff; padding:2px 5px; border-radius:3px; }
.a-pri.p0{ background:#1a1a1a; } .a-pri.p1{ background:#6f6d67; } .a-pri.p2{ background:#d9d6cd; color:#3a3a36; }
.a-find{ font-family:var(--sans); font-weight:800; font-size:7.5px; letter-spacing:.04em; color:var(--ink2); background:var(--panel2); padding:2px 5px; border-radius:3px; }
/* Diagnostic cause tags — outline metadata, no fill. */
.a-cause{ font-size:7px; letter-spacing:.06em; text-transform:uppercase; font-family:var(--sans); font-weight:700; padding:2px 6px; border-radius:3px; white-space:nowrap; background:transparent; color:var(--ink3); border:1px solid var(--line2); }
.a-cause.reach, .a-cause.know{ background:transparent; color:var(--ink3); border:1px solid var(--line2); }
.a-diag{ font-size:9.5px; color:var(--ink2); margin-top:3px; line-height:1.45; }
.a-diag b{ font-family:var(--sans); font-weight:700; color:var(--ink); }
.a-diag .lbl{ font-size:7.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); font-family:var(--mono); }
.action{ display:grid; grid-template-columns:1fr 1.15in; gap:14px; padding:8px 15px;
  border:1px solid var(--line); border-radius:9px; margin-bottom:4px; background:var(--card); }
/* Action plans legitimately vary in length. When a brand has long/many actions,
   let the section flow to a 2nd page — but never split a card or orphan the
   OUTLOOK: break-inside:avoid moves whole cards/blocks to the next page. */
.action, .next-move, .hz{ break-inside:avoid; }
.action-l .a-top{ display:flex; align-items:center; gap:9px; margin-bottom:3px; flex-wrap:wrap; }
.action-l .a-title{ font-family:var(--sans); font-weight:700; font-size:12.5px; letter-spacing:-.01em; }
.a-type{ font-size:7.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink3);
  border:1px solid var(--line2); border-radius:3px; padding:2px 6px; white-space:nowrap; }
.action-l .a-body{ font-size:10.5px; line-height:1.45; color:var(--ink2); }
.action-r{ border-left:1px solid var(--line); padding-left:16px; text-align:center; align-self:center; }
.action-r .a-lift{ font-family:var(--sans); font-weight:800; font-size:18px; letter-spacing:-.02em; color:var(--good-ink); }
.action-r .a-cap{ font-size:7.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink4); margin-top:4px; line-height:1.4; }
/* Calibration v1.0 structured lift on each play (Group D, 2026-06-15) */
.action-r .a-lift-pillar{ font-family:var(--mono); font-size:8.5px; font-weight:600; color:var(--ink3); margin-top:2px; text-transform:none; letter-spacing:0; line-height:1.3; }
.action-r .a-lift-sec{ font-family:var(--mono); font-size:8.5px; color:var(--ink3); margin-top:4px; line-height:1.3; }
.action-r .a-lift-sec b{ font-weight:600; color:var(--ink2); }
.action-r .a-lift-clamp{ display:inline-block; padding:1px 4px; border-radius:3px; background:rgba(0,0,0,0.06); color:var(--ink3); font-family:var(--mono); font-size:7.5px; font-weight:700; letter-spacing:.06em; margin-left:2px; }
/* Calibration v1.1 — category fit badge (neutral; green is reserved for lift). */
.action-r .a-lift-fit{ display:inline-block; margin-top:4px; padding:1.5px 5px; border-radius:3px; font-family:var(--mono); font-size:7.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; line-height:1.4; }
.action-r .a-lift-fit-high{ background:rgba(0,0,0,0.06); color:var(--ink2); }
.action-r .a-lift-fit-low{ background:rgba(0,0,0,0.06); color:var(--ink3); }
.action-r .a-metric{ font-size:7.5px; color:var(--ink3); margin-top:6px; line-height:1.35; }
.action-r .a-metric b{ font-family:var(--sans); font-weight:700; color:var(--ink2); }

/* ============================================================
   STANDALONE ACTION PLAN PDF (type=action-plan)
   Richer expanded action card: diagnosis + do-this + projected lift +
   a "how to ship this" guide and a copy-paste code blueprint. Reuses the
   Owl Report tokens, cover and CSS; green stays reserved for lift.
   ============================================================ */
/* Cover hero — the WORK is the headline number (total prioritised actions).
   Beside it: the label + the potential AEO Readiness lift, broken by pillar
   (the plan moves Readiness; the appendix explains how Readiness shapes
   Visibility). Horizon counts live in the tombstone. */
.apc-hero{ align-items:center; }
.apc-bk-lbl{ font-size:9px; letter-spacing:.04em; text-transform:uppercase; color:var(--ink3); font-family:var(--sans); font-weight:600; }
.apc-lift{ margin-top:8px; }
.apc-lift-lbl{ font-size:8px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); font-family:var(--mono); margin-bottom:3px; }
.apc-lift-rows{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.apc-lift-item{ font-family:var(--mono); font-size:11px; color:var(--good-ink); font-weight:600; }
.apc-lift-item b{ font-family:var(--sans); font-weight:700; color:var(--ink2); font-size:9.5px; letter-spacing:.01em; margin-right:2px; }
.apc-lift-sep{ color:var(--ink4); }
.apc-lift-cap{ font-size:9px; color:var(--ink3); margin-top:5px; font-style:italic; }

/* Appendix — two-score methodology explainer (mirrors about.html's
   Foundation → shapes → Outcome block; teaching surface, fuller depth). */
.tsm{ max-width:5.6in; margin:2px auto 0; }
.tsm-sec{ }
.tsm-sec-h{ display:flex; align-items:baseline; gap:9px; margin:0 0 8px; }
.tsm-lbl{ font-family:var(--sans); font-weight:800; font-size:16px; letter-spacing:-.02em; color:var(--ink); }
.tsm-tag{ font-size:8px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink4); font-family:var(--mono); }
.tsm-row{ display:flex; gap:11px; align-items:flex-start; padding:6px 0; }
.tsm-ico{ width:26px; height:26px; flex:none; border-radius:6px; border:1px solid var(--line2); display:flex; align-items:center; justify-content:center; color:var(--ink2); background:var(--panel2,#f4f2ec); }
.tsm-ico svg{ width:14px; height:14px; display:block; }
.tsm-name{ font-family:var(--sans); font-weight:700; font-size:11.5px; color:var(--ink); letter-spacing:-.005em; }
.tsm-desc{ font-size:9.5px; color:var(--ink2); line-height:1.45; margin-top:1px; }
.tsm-arrow{ display:flex; align-items:center; justify-content:center; gap:9px; margin:11px 0; color:var(--ink4); }
.tsm-arrow::before, .tsm-arrow::after{ content:''; height:1px; width:54px; background:var(--line2); }
.tsm-arrow span{ font-size:8px; letter-spacing:.18em; text-transform:uppercase; font-family:var(--mono); }
.tsm-foot{ font-size:8.5px; line-height:1.5; color:var(--ink3); margin-top:14px; padding-top:9px; border-top:1px solid var(--line); }

.apf{ border:1px solid var(--line); border-radius:9px; margin-bottom:7px; padding:11px 15px; background:var(--card); }
.apf-core{ break-inside:avoid; }
.apf-head{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:7px; }
.apf-title{ font-family:var(--sans); font-weight:700; font-size:13px; letter-spacing:-.01em; color:var(--ink); flex:1 1 auto; }
.apf-grid{ display:grid; grid-template-columns:1fr 1.45in; gap:16px; }
.apf-main{ min-width:0; }
.apf-block{ margin-bottom:7px; }
.apf-block:last-child{ margin-bottom:0; }
.apf-lbl{ font-size:7px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); font-family:var(--mono); display:block; margin-bottom:2px; }
.apf-text{ font-size:10px; line-height:1.46; color:var(--ink2); }
.apf-side{ border-left:1px solid var(--line); padding-left:16px; }
.apf-lift-val{ font-family:var(--sans); font-weight:800; font-size:15px; letter-spacing:-.02em; color:var(--good-ink); line-height:1.1; }
.apf-lift-feeds{ font-family:var(--mono); font-size:8px; color:var(--ink3); margin-top:2px; line-height:1.3; }
.apf-lift-sec{ font-family:var(--mono); font-size:8px; color:var(--ink3); margin-top:4px; line-height:1.3; }
.apf-lift-sec-lbl{ font-family:var(--sans); font-size:7px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink4); }
.apf-effort{ display:flex; align-items:baseline; gap:6px; margin-top:8px; }
.apf-effort .apf-lbl{ margin-bottom:0; }
.apf-effort-v{ font-family:var(--sans); font-weight:700; font-size:10px; color:var(--ink2); }

/* "How to ship this" guide — authored steps (p/h4/ol/li/code/a) + blueprint. */
.apf-guide{ margin-top:9px; padding-top:9px; border-top:1px dashed var(--line2); }
.apf-guide-tag{ display:inline-block; font-size:7px; letter-spacing:.1em; text-transform:uppercase; font-family:var(--sans); font-weight:800;
  color:var(--ink2); background:var(--panel2,#f4f2ec); border:1px solid var(--line2); border-radius:3px; padding:2px 7px; margin-bottom:6px; }
.apf-guide-body{ font-size:9.5px; line-height:1.5; color:var(--ink2); }
.apf-guide-body h4{ font-family:var(--sans); font-weight:700; font-size:10px; color:var(--ink); margin:8px 0 3px; letter-spacing:-.005em; }
.apf-guide-body p{ margin:0 0 5px; }
.apf-guide-body ol, .apf-guide-body ul{ margin:0 0 5px; padding-left:16px; }
.apf-guide-body li{ margin-bottom:3px; }
.apf-guide-body a{ color:var(--ink); text-decoration:underline; text-underline-offset:2px; }
.apf-guide-body code{ font-family:var(--mono); font-size:8.5px; background:var(--panel2,#f4f2ec); border:1px solid var(--line2); border-radius:3px; padding:.5px 3px; color:var(--ink); }
.apf-code-lbl{ font-size:7px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); font-family:var(--mono); margin:7px 0 3px; }
.apf-code{ font-family:var(--mono); font-size:8px; line-height:1.5; color:var(--ink); background:var(--panel2,#f4f2ec);
  border:1px solid var(--line2); border-radius:6px; padding:9px 11px; margin:0; white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere; }
.apf-code code{ font-family:inherit; font-size:inherit; background:none; border:0; padding:0; }

.apf-method{ font-size:8px; line-height:1.5; color:var(--ink3); margin-top:10px; padding-top:8px; border-top:1px solid var(--line); break-inside:avoid; }
/* Page-break discipline: keep each action's core facts together and glue a
   horizon band to the first card under it (no orphaned band at a page foot);
   let the guide text + code blueprint flow across pages so tall cards fill
   the page instead of jumping whole and leaving a gap. Don't strand a guide
   label or code label at the bottom of a page. */
.apf-core{ break-inside:avoid; }
.hz{ break-after:avoid; }
.apf-guide-tag, .apf-code-lbl{ break-after:avoid; }

/* ============================================================
   APPENDIX
   ============================================================ */
.apx-grid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.apx-meta{ border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.apx-meta .am-row{ display:flex; justify-content:space-between; padding:8px 14px; border-bottom:1px solid var(--line); font-size:10px; }
.apx-meta .am-row:last-child{ border-bottom:none; }
.apx-meta .am-l{ color:var(--ink3); letter-spacing:.04em; text-transform:uppercase; font-size:8.5px; }
.apx-meta .am-v{ font-family:var(--sans); font-weight:600; }
.apx-q{ border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.apx-q .aq-row{ display:grid; grid-template-columns:1fr 56px 64px; gap:8px; padding:7px 14px;
  border-bottom:1px solid var(--line); font-size:9.5px; align-items:center; }
.apx-q .aq-row:last-child{ border-bottom:none; }
.apx-q .aq-row.head{ background:var(--panel2); font-size:8px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); }
.apx-q .aq-q{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.apx-q .aq-c{ text-align:center; font-family:var(--sans); font-weight:600; }
.method{ margin-top:18px; columns:2; column-gap:26px; }
.method .m-block{ break-inside:avoid; margin-bottom:13px; }
.method .m-h{ font-family:var(--sans); font-weight:700; font-size:10px; margin-bottom:4px; }
.method .m-p{ font-size:9px; line-height:1.55; color:var(--ink3); }

/* Methodology v1.0 appendix block (2026-06-15) — the two-score summary
   that closes the integrity contract. m-block-wide spans both columns
   so the formulas + don't-list have room to breathe. */
.method.method-v1{ columns:auto; column-gap:0; }
.method.method-v1 .m-block-wide{ break-inside:avoid; margin-bottom:14px; }
.method.method-v1 .m-block:not(.m-block-wide){ break-inside:avoid; margin-bottom:13px; }
.method.method-v1 .m-block:not(.m-block-wide):not(.m-calib){ display:inline-block; vertical-align:top; width:48%; margin-right:3%; }
.method.method-v1 .m-block:nth-of-type(odd):not(.m-block-wide):not(.m-calib){ margin-right:3%; }
.method.method-v1 .m-block:nth-of-type(even):not(.m-block-wide):not(.m-calib){ margin-right:0; }
.method.method-v1 .m-p-sm{ font-size:8.5px; line-height:1.5; color:var(--ink3); margin-top:5px; }

/* Formula boxes — monospace ladder with right-aligned "max" cap. */
.method .m-formula{
  display:grid; grid-template-columns:1fr auto; row-gap:3px; column-gap:14px;
  background:var(--paper2,#f1efe9); border:1px solid var(--hair,#e8e5dc);
  border-radius:8px; padding:9px 13px; margin-top:5px;
  font-family:var(--mono,monospace); font-size:9.5px; color:var(--ink2);
}
.method .m-formula b{ color:var(--ink); font-weight:700; }
.method .m-formula-max{ color:var(--ink4); text-align:right; }
.method .m-formula-total{ grid-column:1 / -1; border-top:1px solid var(--hair,#e8e5dc); padding-top:4px; margin-top:2px; color:var(--ink); }

/* "How we keep this honest" trust-signal list — positive
   commitments (green check) instead of negative prohibitions
   (red ✕). Same content, different valence: reads as a charter
   rather than a complaint. Replaces the old .m-dont styling. */
.method .m-commit{ list-style:none; padding:0; margin:5px 0 0; }
.method .m-commit li{
  position:relative; padding:3px 0 3px 14px; font-size:9px; line-height:1.5;
  color:var(--ink3); break-inside:avoid;
}
.method .m-commit li::before{
  content:"\2713"; position:absolute; left:0; top:3px;
  color:var(--good,#16a34a); font-weight:700; font-size:9.5px;
}

/* "How to read your score" interpretation table — same band system
   the worker uses (CRITICAL <2 / WEAK 2-4 / MODERATE 4-6.5 / STRONG 6.5+)
   so the band shown on the cover page matches what this table says. */
.method .m-bands{
  width:100%; border-collapse:collapse; margin-top:5px;
  font-family:var(--mono,monospace); font-size:9px; line-height:1.5;
}
.method .m-bands th{
  text-align:left; padding:5px 8px; background:var(--paper2,#f1efe9);
  border:1px solid var(--hair,#e8e5dc); color:var(--ink3);
  font-weight:700; font-size:8.5px; letter-spacing:0.04em; text-transform:uppercase;
}
.method .m-bands td{
  padding:5px 8px; border:1px solid var(--hair,#e8e5dc); vertical-align:top;
}
.method .m-bands-range{ font-weight:700; color:var(--ink); white-space:nowrap; }
.method .m-bands-name{ font-weight:700; white-space:nowrap; }
.method .m-bands-name.s-strong{ color:var(--good-deep,#15803d); }
.method .m-bands-name.s-moderate{ color:var(--warn-deep,#b45309); }
.method .m-bands-name.s-weak{ color:var(--bad-deep,#b91c1c); }
.method .m-bands-name.s-critical{ color:#7f1d1d; }

/* Calibration stamp pinned at the bottom of the methodology block. */
.method .m-calib{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin-top:14px; padding:9px 13px;
  background:var(--paper2,#f1efe9); border:1px solid var(--hair,#e8e5dc); border-radius:8px;
  break-inside:avoid;
}
.method .m-calib-stamp{
  display:inline-flex; align-items:center; gap:5px;
  background:var(--lime,#c8f135); color:#0a0a0a;
  padding:3px 9px; border-radius:5px;
  font-family:var(--mono,monospace); font-size:8.5px; font-weight:700;
  letter-spacing:0.1em; text-transform:uppercase;
}
.method .m-calib-text{ flex:1; font-size:8.5px; line-height:1.55; color:var(--ink3); }
.method .m-calib-text b{ color:var(--ink); font-weight:600; }
.engines-list{ margin-top:8px; font-size:9.5px; line-height:1.7; color:var(--ink2); }
.engines-list b{ font-family:var(--sans); font-weight:600; }

/* appendix tracked-questions list (inputs) */
.aq-list{ margin-top:9px; }
.aq-item{ display:grid; grid-template-columns:24px 1fr auto; gap:10px; align-items:baseline;
  padding:7px 0; border-bottom:1px solid var(--hair); }
.aq-item:last-child{ border-bottom:none; }
.aq-item .aq-code{ font-family:var(--sans); font-weight:800; font-size:11px; color:var(--ink3); }
.aq-item .aq-txt{ font-size:10px; line-height:1.4; color:var(--ink2); }
.aq-item .aq-int{ font-size:7.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink4); white-space:nowrap; }

/* ============================================================
   SNAPSHOT ADD-ONS — signal deltas, sentiment & accuracy flags
   ============================================================ */
.sig-delta{ font-size:8.5px; font-family:var(--mono); letter-spacing:.02em; margin-left:7px; white-space:nowrap; }
.sig-delta.up{ color:var(--good-ink); }
.sig-delta.dn{ color:var(--bad-ink); }
.sig-delta::before{ content:"▲ "; font-size:7px; }
.sig-delta.dn::before{ content:"▼ "; }

.snap-flags{ display:grid; grid-template-columns:1.4fr 1fr; gap:11px; margin-bottom:18px; }
/* Sentiment fills the row when Factual Accuracy is absent (removed 2026-06-22). */
.snap-flags.single{ grid-template-columns:1fr; }
.flag-card{ border:1px solid var(--line); border-radius:10px; padding:11px 14px; display:flex; flex-direction:column; gap:8px; }
.flag-card.alert{ border-color:var(--bad); background:var(--bad-soft); }
.fc-head{ display:flex; align-items:center; justify-content:space-between; }
.fc-lbl{ font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink3); }
.flag-card.alert .fc-lbl{ color:var(--bad-ink); }
.fc-n{ font-family:var(--sans); font-weight:800; font-size:13px; }
.sent-bar{ display:flex; height:10px; border-radius:3px; overflow:hidden; gap:1.5px; }
.sent-seg{ height:100%; }
.sent-seg.pos{ background:var(--good); } .sent-seg.mix{ background:var(--warn); } .sent-seg.neg{ background:var(--bad); }
.sent-key{ display:flex; gap:13px; font-size:8.5px; color:var(--ink3); }
.sent-key b{ font-family:var(--sans); color:var(--ink2); }
.sent-key .dot{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:4px; vertical-align:middle; }
.alert-big{ display:flex; align-items:baseline; gap:9px; }
.alert-big .ab-n{ font-family:var(--sans); font-weight:800; font-size:26px; color:var(--bad-ink); letter-spacing:-.02em; line-height:.9; }
.alert-big .ab-t{ font-size:9.5px; color:var(--bad-ink); line-height:1.35; }

/* ============================================================
   TRAJECTORY
   ============================================================ */
.traj-wrap{ display:grid; grid-template-columns:1.55fr 1fr; gap:20px; align-items:stretch; }
.traj-chart{ border:1px solid var(--line2); border-radius:10px; padding:16px 18px 12px; background:var(--panel); }
.traj-chart svg{ width:100%; height:auto; display:block; overflow:visible; }
.traj-legend{ display:flex; gap:16px; margin-top:10px; font-size:9px; color:var(--ink3); }
.traj-legend .tl{ display:flex; align-items:center; gap:6px; }
.traj-legend .sw{ width:16px; height:3px; border-radius:2px; }
.traj-legend .sw.you{ background:var(--lime-dim); } .traj-legend .sw.ld{ background:var(--ink3); }
.traj-mini{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
.tm-card{ border:1px solid var(--line); border-radius:10px; padding:11px 15px; display:flex; align-items:center; gap:15px; }
.tm-spark{ width:92px; flex:none; }
.tm-spark svg{ width:100%; height:36px; display:block; overflow:visible; }
.tm-meta{ flex:1; }
.tm-lbl{ font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink3); }
.tm-val{ font-family:var(--sans); font-weight:800; font-size:21px; letter-spacing:-.02em; margin-top:3px; }
.tm-val .tm-d{ font-size:9px; font-family:var(--mono); font-weight:400; margin-left:7px; color:var(--good-ink); }
.tm-val .tm-d.up{ color:var(--good-ink); }
.tm-val .tm-d.dn{ color:var(--bad-ink); }
.tm-from{ font-size:9px; color:var(--ink4); margin-top:2px; }
.wc{ border:1px solid var(--line2); border-radius:10px; overflow:hidden; }
.wc-head{ background:var(--panel2); padding:8px 14px; font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink4); }
.wc-row{ display:flex; align-items:center; gap:10px; padding:9px 14px; border-bottom:1px solid var(--line); }
.wc-row:last-child{ border-bottom:none; }
.wc-ar{ font-family:var(--sans); font-weight:800; font-size:12px; width:14px; text-align:center; }
.wc-ar.up{ color:var(--good-ink); } .wc-ar.dn{ color:var(--bad-ink); }
.wc-body{ flex:1; min-width:0; }
.wc-metric{ font-family:var(--sans); font-weight:700; font-size:11px; }
.wc-note{ font-size:9px; color:var(--ink3); }
.wc-delta{ font-size:9.5px; text-align:right; white-space:nowrap; }
.wc-delta .from{ color:var(--ink4); } .wc-delta .to{ font-family:var(--sans); font-weight:700; }

/* ============================================================
   SOURCES
   ============================================================ */
.src-mix{ display:flex; gap:7px; margin:2px 0 14px; }
.src-mix .smx{ flex:none; border:1px solid var(--line); border-radius:7px; padding:7px 11px; }
.src-mix .smx .smx-n{ font-family:var(--sans); font-weight:800; font-size:15px; letter-spacing:-.02em; }
.src-mix .smx .smx-l{ font-size:8px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink4); margin-top:2px; }
.src{ border:1px solid var(--line2); border-radius:10px; overflow:hidden; }
.src-row{ display:grid; grid-template-columns:1.6fr 0.78fr 1.45fr 46px 46px; gap:14px; align-items:center;
  padding:6px 16px; border-bottom:1px solid var(--line); }
.src-row:last-child{ border-bottom:none; }
.src-row.head{ background:var(--panel2); padding:8px 16px; font-size:8px; letter-spacing:.13em; text-transform:uppercase; color:var(--ink4); }
.src-host{ font-family:var(--sans); font-weight:700; font-size:11.5px; letter-spacing:-.005em; }
.src-bar-wrap{ display:flex; align-items:center; gap:9px; }
.src-track{ flex:1; height:7px; background:var(--panel2); border-radius:4px; overflow:hidden; }
.src-fill{ height:100%; background:var(--ink2); border-radius:4px; }
.src-tot{ font-family:var(--sans); font-weight:700; font-size:11px; min-width:22px; text-align:right; }
.src-num{ text-align:right; font-family:var(--sans); font-weight:800; font-size:12px; color:var(--ink2); }
.src-num.zero{ color:var(--bad-ink); }
.src-num.own{ color:var(--lime-ink); }
.src-num.ldr{ font-weight:700; color:var(--ink3); }
.stag{ font-size:7.5px; letter-spacing:.07em; text-transform:uppercase; font-family:var(--sans); font-weight:700;
  padding:3px 7px; border-radius:4px; justify-self:start; }
.stag.owned{ background:rgba(200,241,53,.3); color:var(--lime-ink); }
.stag.review{ background:var(--blue-soft); color:var(--blue); }
.stag.social{ background:var(--warn-soft); color:var(--warn-ink); }
.stag.news{ background:#ece7f4; color:#5b4a8a; }
.stag.competitor{ background:var(--bad-soft); color:var(--bad-ink); }

/* ============================================================
   HOW AI DESCRIBES YOU — sentiment + accuracy + verbatim
   ============================================================ */
.describe-top{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:16px; }
.dt-card{ border:1px solid var(--line2); border-radius:10px; padding:11px 16px; }
.dt-h{ font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink3); margin-bottom:9px; }
.acc-row{ display:flex; gap:18px; }
.acc-item{ display:flex; flex-direction:column; }
.acc-item .ai-n{ font-family:var(--sans); font-weight:800; font-size:24px; letter-spacing:-.02em; line-height:.9; }
.acc-item .ai-l{ font-size:8.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink4); margin-top:6px; }
.acc-item.ok .ai-n{ color:var(--good-ink); }
.acc-item.stale .ai-n{ color:var(--warn-ink); }
.acc-item.bad .ai-n{ color:var(--bad-ink); }

.mentions-grid{ display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.mention{ border:1px solid var(--line); border-radius:10px; padding:10px 14px; display:flex; flex-direction:column; gap:7px; background:var(--card); }
.mention.flagged{ border-color:var(--bad); }
.mention.absent{ border-style:dashed; }
.m-head{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.m-eng{ font-family:var(--sans); font-weight:700; font-size:10.5px; }
.m-q{ font-size:8.5px; color:var(--ink4); letter-spacing:.04em; }
.m-pos{ margin-left:auto; font-size:8px; color:var(--ink4); letter-spacing:.06em; text-transform:uppercase; }
.chip{ font-size:7.5px; letter-spacing:.06em; text-transform:uppercase; font-family:var(--sans); font-weight:700; padding:2.5px 6px; border-radius:4px; }
.chip.positive{ background:var(--good-soft); color:var(--good-ink); }
.chip.mixed{ background:var(--warn-soft); color:var(--warn-ink); }
.chip.negative{ background:var(--bad-soft); color:var(--bad-ink); }
.chip.ok{ background:var(--panel2); color:var(--ink3); }
.chip.stale{ background:var(--warn-soft); color:var(--warn-ink); }
.chip.inaccurate{ background:var(--bad); color:#fff; }
.m-quote{ font-size:10px; line-height:1.5; color:var(--ink2); font-style:italic; }
.m-quote b{ font-style:normal; font-family:var(--sans); font-weight:700; color:var(--ink); background:rgba(200,241,53,.4); padding:0 2px; border-radius:2px; }
.m-foot{ display:flex; align-items:center; gap:8px; font-size:8.5px; color:var(--ink4); }
.m-foot .m-src{ letter-spacing:.02em; }
.m-flag{ font-size:8.5px; color:var(--bad-ink); display:flex; gap:6px; align-items:flex-start; line-height:1.4; }
.m-flag.note{ color:var(--ink3); }
.m-flag::before{ content:"⚑"; flex:none; }
.m-flag.note::before{ content:"›"; }

/* ============================================================
   PRINT
   ============================================================ */
@page{ size:Letter portrait; margin:0; }
@media print{
  body{ background:#fff; }
  .screen .page{ margin:0; box-shadow:none; }
  .page{ break-after:page; }
  .page:last-child{ break-after:auto; }
  /* §01 Pillars: the AI Visibility hero card + component table + three
     diagnostic cards run taller than one Letter page, so the diagnostics
     spilled onto a 2nd PDF page (looking "missing"). Compact the section
     for PRINT ONLY so the hero + 3 cards fit one page. The online scroll
     view is unaffected (it renders screen media, not print). */
  .pillar-intro{ margin-bottom:9px !important; font-size:11.5px !important; line-height:1.5 !important; }
  .pillar-container{ gap:11px !important; }
  /* Hero (AI Visibility) — compacted harder; its component table duplicates
     the §00 Snapshot signals, so it can give up the most room. */
  .pillar-hero.score-card-v1{ padding:13px 20px !important; gap:10px !important; }
  .pillar-hero-name{ font-size:17px !important; margin-bottom:3px !important; }
  .pillar-hero-icon{ width:24px !important; height:24px !important; }
  .pillar-hero-icon svg{ width:15px !important; height:15px !important; }
  .pillar-hero-desc{ font-size:10.5px !important; margin-bottom:4px !important; line-height:1.4 !important; }
  .pillar-hero-score{ font-size:40px !important; }
  .pillar-hero-score-den{ font-size:11px !important; }
  .pillar-hero-finding{ padding-top:7px !important; font-size:10.5px !important; line-height:1.4 !important; }
  .score-comp-head{ padding:5px 13px !important; font-size:9px !important; }
  .score-comp-row{ padding:5px 13px !important; font-size:11px !important; }
  /* Diagnostic cards — keep them breathing (this is what looked cramped). */
  .pillar-diagnostics{ gap:11px !important; }
  .pillar-card{ padding:15px 16px !important; }
  .pillar-card-head{ margin-bottom:9px !important; }
  .pillar-card-icon{ width:26px !important; height:26px !important; }
  .pillar-card-score{ font-size:38px !important; }
  .pillar-card-score-row{ margin-bottom:7px !important; }
  .pillar-card-desc{ font-size:10.5px !important; margin-bottom:9px !important; line-height:1.45 !important; }
  .pillar-card-finding{ font-size:10.5px !important; line-height:1.45 !important; }
}

/* ════════════════════════════════════════════════════════════════════
   TYPE SYSTEM v2 — running prose → Manrope (2026-06-19)
   The report stays an editorial print system: Syne keeps the display
   headers + numerals, DM Mono keeps the eyebrow labels (now sharp via the
   font-synthesis:style guard on body). Only the running paragraphs people
   READ move to Manrope, matching the dashboard. Drives all three surfaces
   at once (online, public share, and the /render-pdf template, which links
   this stylesheet + gets its fonts from the @import above). Additive + last
   in the cascade; font-family only, the tight print layout is untouched.
   ════════════════════════════════════════════════════════════════════ */
.cover-lead,.measures,.universe,.interp p,.snap-verdict .sv-p,.a-diag,.method .m-p,
.cover-lead strong,.measures strong,.universe b,.interp p strong,.interp .pull,
.snap-verdict .sv-p strong,.a-diag b{
  font-family:var(--font-ui);
}

/* ─── AI Competitive Ranking exhibit (Competitive PDF + Owl Report) ─── */
.acr-q{ margin:6px 0 14px; padding:9px 13px; background:var(--panel); border:1px solid var(--line);
  border-left:3px solid var(--lime-dim); border-radius:8px; }
.acr-q-l{ font-family:var(--sans); font-size:8.5px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--ink3); margin-bottom:4px; }
.acr-q-t{ font-family:var(--font-ui); font-size:12px; line-height:1.45; color:var(--ink); }

/* Matrix — your brand first, competitors alphabetical; each cell an engine's rank */
.acrm-note{ font-size:10px; color:var(--ink3); margin-bottom:7px; }
.acrm{ width:100%; border-collapse:collapse; }
.acrm th,.acrm td{ text-align:center; padding:6px 3px; font-size:11px; }
.acrm thead th{ font-family:var(--sans); font-weight:700; font-size:9.5px; color:var(--ink3);
  border-bottom:1.5px solid var(--ink); padding-bottom:7px; }
.acrm thead th.acrm-name,.acrm td.acrm-name,.acrm th.acrm-name{ text-align:left; }
.acrm th.acrm-name{ font-family:var(--sans); font-weight:700; font-size:11.5px; color:var(--ink);
  padding-left:2px; white-space:nowrap; }
.acrm tbody tr{ border-bottom:1px solid var(--hair); }
.acrm tbody tr.you{ background:linear-gradient(90deg, rgba(200,241,53,.18), rgba(200,241,53,.04)); }
.acrm-cell{ display:inline-flex; align-items:center; justify-content:center; width:21px; height:21px;
  border-radius:5px; font-weight:600; font-size:11px; }
.acrm-cell.r1{ background:var(--lime); color:#0d0d0c; }
.acrm-cell.r23{ background:var(--good-soft); color:var(--good-ink); }
.acrm-cell.rx{ color:var(--ink3); }
.acrm-cell.none{ color:var(--ink4); }

.acr-foot{ margin-top:9px; font-size:9.5px; color:var(--ink3); line-height:1.5; }
.acr-disamb{ margin-top:12px; padding:10px 13px; background:var(--card); border:1px solid var(--line2);
  border-left:3px solid var(--lime-dim); border-radius:7px; font-family:var(--font-ui);
  font-size:10.5px; line-height:1.45; color:var(--ink2); }
.acr-disamb-h{ font-family:var(--sans); font-weight:700; font-size:11px; color:var(--ink);
  margin-bottom:3px; display:flex; align-items:center; gap:6px; }
.acr-disamb-h::before{ content:""; flex:none; width:5px; height:5px; border-radius:50%; background:var(--lime-dim); }
.acr-disamb p{ margin:0; }
.acr-disamb b{ color:var(--ink); font-weight:700; }

/* Brand-only per-engine table */
.acrp{ width:100%; border-collapse:collapse; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.acrp th,.acrp td{ text-align:left; padding:8px 10px; font-size:11px; vertical-align:top; line-height:1.42; }
.acrp thead th{ font-family:var(--sans); font-weight:700; font-size:8.5px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink3); background:var(--panel); border-bottom:1.5px solid var(--ink); }
.acrp tbody tr{ border-bottom:1px solid var(--hair); }
.acrp tbody tr:last-child{ border-bottom:none; }
.acrp .acrp-rank{ width:46px; text-align:center; }
.acrp .acrp-eng{ width:74px; white-space:nowrap; font-family:var(--sans); font-weight:700; font-size:11.5px; }
.acrp .acrp-reason{ width:42%; font-family:var(--font-ui); }
.acrp .acrp-best{ width:33%; font-family:var(--font-ui); color:var(--ink2); }
.acrp-rk{ display:inline-flex; align-items:center; justify-content:center; width:23px; height:23px;
  border-radius:6px; font-weight:700; font-size:12px; }
.acrp-rk.r1{ background:var(--lime); color:#0d0d0c; }
.acrp-rk.r23{ background:var(--good-soft); color:var(--good-ink); }
.acrp-rk.rx{ background:var(--panel2); color:var(--ink2); }
/* Never split a matrix/reason row across a page break — the reason cells are
   multi-line, so a mid-row break orphans text. The reasoning table gets its own
   page, but this guards the tail if it ever spills to a third. */
.acrm tbody tr,.acrp tbody tr{ break-inside:avoid; page-break-inside:avoid; }
