/* ============================================================
   Adfactors GEO — AI Reputation Report
   Elevated, board-ready presentation. Vanilla HTML/CSS.
   Built on the saffron identity · Newsreader / Hanken / Plex Mono.
   ============================================================ */


.geo-rep{

  /* surfaces & ink — warm neutral */
  --bg:#f4f1ea; --bg-2:#efeae1; --surface:#fffefb; --inset:#f4f0e8;
  --line:#e7e0d4; --line-2:#d8d0c1; --hair:#efe9de;
  --ink:#2a2825; --muted:#6b645b; --faint:#9a9389; --ghost:#c4bdb1;

  /* brand — saffron */
  --acc:#e28f27; --acc-2:#ec9f3e; --acc-deep:#bf7218; --acc-wash:#fbf0db; --acc-ink:#8a5210;

  /* score bands */
  --excellent:#1faf5e; --good:#6fae34; --fair:#df9e1d; --needs:#e07a2a; --poor:#e2476a;
  --excellent-w:#e3f6ec; --good-w:#eef6df; --fair-w:#fbf1d8; --needs-w:#fbeede; --poor-w:#fbe5eb;

  /* engines */
  --openai:#5b7553; --openai-w:#edf1ea; --openai-ink:#3e5538;
  --gemini:#b06a3a; --gemini-w:#f5ebe2; --gemini-ink:#834824;
  --perplexity:#7a6aa8; --perplexity-w:#eeecf4; --perplexity-ink:#564580;

  --font-d:"Newsreader",Georgia,serif;
  --font-u:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-m:"IBM Plex Mono",ui-monospace,Menlo,monospace;

  --r:16px; --r-sm:11px; --r-pill:999px;
  --sh-sm:0 1px 2px rgba(42,38,30,.05);
  --sh:0 2px 4px -2px rgba(42,38,30,.06), 0 8px 28px -20px rgba(42,38,30,.22);
  --sh-lg:0 10px 40px -22px rgba(42,38,30,.30);
  --maxw:1340px;
  font-size:15px; line-height:1.55;
}

.geo-rep .tnum{font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1}


/* ---------- layout ---------- */

.geo-rep .page{max-width:var(--maxw); margin:0 auto; padding:0 40px 100px}

.geo-rep .section{margin-top:64px; scroll-margin-top:80px}

.geo-rep .rule{height:1px; background:var(--line); border:0; margin:0}


/* ---------- sticky mini-bar ---------- */

.geo-rep .topbar{
  position:sticky; top:0; z-index:40; background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid transparent; transition:border-color .2s, box-shadow .2s;
}

.geo-rep .topbar.stuck{border-color:var(--line); box-shadow:var(--sh-sm)}

.geo-rep .topbar-in{max-width:var(--maxw); margin:0 auto; padding:11px 40px; display:flex; align-items:center; gap:14px}

.geo-rep .topbar .tb-mark{height:26px; width:26px; border-radius:7px; flex:none}

.geo-rep .topbar .tb-client{font-family:var(--font-d); font-size:17px; font-weight:600; letter-spacing:-.01em; white-space:nowrap}

.geo-rep .topbar .tb-sep{color:var(--ghost)}

.geo-rep .topbar .tb-meta{font-family:var(--font-m); font-size:11.5px; color:var(--muted)}

.geo-rep .topbar .tb-spacer{flex:1}

.geo-rep .tb-srs{display:inline-flex; align-items:baseline; gap:5px; font-family:var(--font-m); font-size:12px; color:var(--muted); white-space:nowrap}

.geo-rep .topbar .tb-meta{white-space:nowrap}

.geo-rep .tb-srs b{font-size:15px; color:var(--ink)}


/* ---------- masthead ---------- */

.geo-rep .masthead{padding-top:38px}

.geo-rep .mast-brand{display:flex; align-items:center; gap:11px; margin-bottom:28px}

.geo-rep .mast-brand img{height:30px; display:block}

.geo-rep .mast-brand .mb-div{width:1px; height:22px; background:var(--line-2)}

.geo-rep .mast-brand .mb-prod{font-family:var(--font-m); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}

.geo-rep .mast-top{display:flex; align-items:flex-start; justify-content:space-between; gap:32px; flex-wrap:wrap}

.geo-rep .mast-eyebrow{font-family:var(--font-m); font-size:11.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--acc-ink); margin-bottom:12px}

.geo-rep .mast-title{font-family:var(--font-d); font-weight:500; font-size:54px; line-height:1.0; letter-spacing:-.02em}

.geo-rep .mast-title .client{font-style:italic; font-weight:600}

.geo-rep .mast-meta{display:flex; align-items:center; flex-wrap:wrap; gap:9px; margin-top:22px}

.geo-rep .mast-actions{display:flex; gap:10px; flex-shrink:0; padding-top:6px}


/* engine chip */

.geo-rep .echip{display:inline-flex; align-items:center; gap:7px; padding:6px 13px 6px 11px; border-radius:var(--r-pill);
  font-weight:700; font-size:12.5px; background:var(--cw); color:var(--ci); border:1px solid color-mix(in srgb,var(--c) 22%,transparent); white-space:nowrap}

.geo-rep .echip .dot{width:8px; height:8px; border-radius:50%; background:var(--c); flex:none}

.geo-rep .echip .mdl{font-family:var(--font-m); font-size:10.5px; opacity:.7; font-weight:500; padding-left:7px; margin-left:1px; border-left:1px solid color-mix(in srgb,var(--c) 22%,transparent)}

.geo-rep .echip.sm{padding:4px 10px 4px 9px; font-size:11.5px}

.geo-rep .meta-pill{display:inline-flex; align-items:center; gap:6px; padding:6px 13px; border-radius:var(--r-pill); font-size:12.5px; font-weight:600;
  background:var(--surface); border:1px solid var(--line); color:var(--muted); white-space:nowrap}

.geo-rep .meta-pill.mono{font-family:var(--font-m); font-size:12px}

.geo-rep .mock-pill{background:var(--acc-wash); border-color:#f0dcb0; color:var(--acc-ink); font-weight:700}

.geo-rep .mock-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--acc)}

.geo-rep .conf-tag{font-family:var(--font-m); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint);
  border:1px solid var(--line); border-radius:var(--r-pill); padding:5px 11px}


/* buttons */

.geo-rep .btn{display:inline-flex; align-items:center; gap:8px; padding:11px 17px; border-radius:11px; font-family:var(--font-u);
  font-weight:700; font-size:13.5px; cursor:pointer; border:1px solid var(--line-2); background:var(--surface); color:var(--ink);
  box-shadow:var(--sh-sm); transition:transform .12s, box-shadow .12s, border-color .12s}

.geo-rep .btn:hover{transform:translateY(-1px); box-shadow:var(--sh)}

.geo-rep .btn svg{width:16px;height:16px}

.geo-rep .btn.primary{background:linear-gradient(180deg,var(--acc-2),var(--acc)); border-color:var(--acc-deep); color:#fff; box-shadow:0 2px 8px -2px rgba(191,114,24,.5)}

.geo-rep .btn.primary:hover{box-shadow:0 6px 18px -6px rgba(191,114,24,.6)}


/* back link */

.geo-rep .backlink{display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:13.5px; color:var(--muted); margin-bottom:22px; cursor:pointer}

.geo-rep .backlink:hover{color:var(--ink)}

.geo-rep .backlink svg{width:15px;height:15px}


/* ---------- card ---------- */

.geo-rep .card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh)}


/* ---------- section header ---------- */

.geo-rep .sec-head{display:flex; align-items:baseline; gap:16px; margin-bottom:24px}

.geo-rep .sec-num{flex:none; width:38px; height:38px; border-radius:11px; background:var(--acc-wash); color:var(--acc-ink);
  display:grid; place-items:center; font-family:var(--font-m); font-weight:600; font-size:18px; transform:translateY(2px)}

.geo-rep .sec-title{font-family:var(--font-d); font-weight:500; font-size:27px; line-height:1.1; letter-spacing:-.015em}

.geo-rep .sec-sub{font-size:14px; color:var(--muted); margin-top:5px}

.geo-rep .sec-head .grow{flex:1}

.geo-rep .sec-aside{font-family:var(--font-m); font-size:11.5px; color:var(--faint); align-self:flex-end}


/* ============================================================
   EXECUTIVE SUMMARY HERO
   ============================================================ */

.geo-rep .hero{display:grid; grid-template-columns:300px 1fr; gap:8px; padding:14px; align-items:stretch; margin-top:30px}

.geo-rep .hero-gauge{display:flex; flex-direction:column; align-items:center; justify-content:center; padding:34px 20px; background:var(--inset); border-radius:12px}

.geo-rep .gauge{position:relative; width:220px; height:220px}

.geo-rep .gauge svg, .geo-rep .mini-gauge svg{width:100%; height:100%; display:block}

.geo-rep .g-track, .geo-rep .mg-track{stroke:var(--inset)}

.geo-rep .g-val{stroke:var(--good)}

.geo-rep .gauge[data-band="excellent"] .g-val{stroke:var(--excellent)}

.geo-rep .gauge[data-band="fair"] .g-val{stroke:var(--fair)}

.geo-rep .gauge[data-band="needs"] .g-val{stroke:var(--needs)}

.geo-rep .gauge[data-band="poor"] .g-val{stroke:var(--poor)}

.geo-rep .mg-val{stroke:var(--c)}

.geo-rep .gauge .center{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; transform:translateY(14px)}

.geo-rep .gauge .g-num{font-family:var(--font-d); font-weight:600; font-size:64px; line-height:1; letter-spacing:-.03em}

.geo-rep .gauge .g-den{font-family:var(--font-m); font-size:12px; color:var(--faint); letter-spacing:.06em; margin-top:8px}

.geo-rep .gauge .g-band{margin-top:11px; padding:5px 16px; border-radius:var(--r-pill); font-weight:800; font-size:13px; letter-spacing:.01em}

.geo-rep .hero-body{padding:30px 34px; display:flex; flex-direction:column; justify-content:center}

.geo-rep .hero-eyebrow{display:flex; align-items:center; gap:8px; font-family:var(--font-m); font-size:11.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--acc-ink); margin-bottom:18px}

.geo-rep .hero-eyebrow svg{width:15px;height:15px;color:var(--acc)}

.geo-rep .hero-verdict{font-family:var(--font-d); font-weight:500; font-size:33px; line-height:1.22; letter-spacing:-.01em; text-wrap:pretty}

.geo-rep .hero-verdict .em{font-style:italic; color:var(--acc-ink)}

.geo-rep .hero-foot{display:flex; align-items:center; gap:18px; margin-top:26px; padding-top:20px; border-top:1px solid var(--hair); font-family:var(--font-m); font-size:12.5px; color:var(--muted)}

.geo-rep .hero-foot .hf-i{display:inline-flex; align-items:center; gap:7px}

.geo-rep .hero-foot b{color:var(--ink); font-weight:600}

.geo-rep .hero-foot .hf-sep{width:4px;height:4px;border-radius:50%;background:var(--ghost)}


/* ============================================================
   HEADLINE NUMBERS
   ============================================================ */

.geo-rep .headline-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px}

.geo-rep .stat{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:22px 22px 20px; box-shadow:var(--sh-sm); position:relative; overflow:hidden}

.geo-rep .stat::before{content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--bar,var(--acc))}

.geo-rep .stat-label{font-family:var(--font-m); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); font-weight:600; display:flex; align-items:center; gap:6px}

.geo-rep .stat-num{font-family:var(--font-d); font-weight:600; font-size:46px; line-height:1; letter-spacing:-.02em; margin-top:14px}

.geo-rep .stat-num small{font-size:24px; color:var(--muted); font-weight:500}

.geo-rep .stat-sub{font-size:12.5px; color:var(--muted); margin-top:8px}

.geo-rep .stat-sub b{color:var(--ink); font-weight:700}

.geo-rep .info-i{width:13px;height:13px;color:var(--ghost)}


/* sentiment bar */

.geo-rep .sent{margin-top:16px}

.geo-rep .sent-track{display:flex; height:9px; border-radius:var(--r-pill); overflow:hidden; background:var(--inset); gap:2px}

.geo-rep .sent-track span{display:block; height:100%}

.geo-rep .sent-track .pos{background:var(--excellent)}

.geo-rep .sent-track .neu{background:var(--line-2)}

.geo-rep .sent-track .neg{background:var(--poor)}

.geo-rep .sent-legend{display:flex; gap:14px; margin-top:11px; font-size:12px; font-weight:700; font-variant-numeric:tabular-nums}

.geo-rep .sent-legend .pos{color:var(--excellent)}

.geo-rep .sent-legend .neu{color:var(--muted)}

.geo-rep .sent-legend .neg{color:var(--poor)}

.geo-rep .sent-legend i{font-style:normal; color:var(--faint); font-weight:600; margin-left:5px}


/* ============================================================
   PER-LLM COMPARISON
   ============================================================ */

.geo-rep .llm-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px}

.geo-rep .llm-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--sh-sm); overflow:hidden}

.geo-rep .llm-card .llm-top{height:4px; background:var(--c)}

.geo-rep .llm-in{padding:20px 22px 22px}

.geo-rep .llm-head{display:flex; justify-content:center; margin-bottom:6px}

.geo-rep .mini-gauge{position:relative; width:128px; height:128px; margin:6px auto 4px}

.geo-rep .mini-gauge .center{position:absolute; inset:0; display:grid; place-items:center}

.geo-rep .mini-gauge .mg-num{font-family:var(--font-d); font-weight:600; font-size:40px; letter-spacing:-.02em; transform:translateY(-4px)}

.geo-rep .llm-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin:14px 0 16px; text-align:center}

.geo-rep .llm-stats .v{font-weight:800; font-size:18px; letter-spacing:-.01em}

.geo-rep .llm-stats .l{font-family:var(--font-m); font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--faint); margin-top:3px}

.geo-rep .llm-card .sent{margin-top:0}


/* ============================================================
   COMPETITOR SHARE OF VOICE
   ============================================================ */

.geo-rep .sov-list{display:flex; flex-direction:column; gap:15px}

.geo-rep .sov-row{display:grid; grid-template-columns:170px 1fr 118px; align-items:center; gap:18px}

.geo-rep .sov-name{font-weight:700; font-size:15px; text-align:right}

.geo-rep .sov-track{height:22px; border-radius:7px; background:var(--inset); overflow:hidden; display:flex}

.geo-rep .sov-fill{height:100%; background:linear-gradient(90deg,var(--acc),var(--acc-2)); border-radius:7px 0 0 7px}

.geo-rep .sov-vals{font-family:var(--font-m); font-size:13px; font-variant-numeric:tabular-nums}

.geo-rep .sov-vals .me{font-weight:700; color:var(--acc-ink); font-size:15px}

.geo-rep .sov-vals .vs{color:var(--faint); margin:0 6px; font-size:11px}

.geo-rep .sov-vals .them{color:var(--muted)}

.geo-rep .sov-legend{display:flex; align-items:center; gap:20px; margin-top:20px; padding-top:18px; border-top:1px solid var(--hair); font-size:12.5px; color:var(--muted)}

.geo-rep .sov-legend .sl{display:inline-flex; align-items:center; gap:8px}

.geo-rep .sov-legend .sw{width:13px;height:13px;border-radius:4px}

.geo-rep .sov-legend .total{margin-left:auto; font-family:var(--font-m); font-size:11.5px; color:var(--faint)}


/* ============================================================
   STRONGEST vs WEAKEST
   ============================================================ */

.geo-rep .sw-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px}

.geo-rep .sw-card{border-radius:14px; padding:26px 28px; border:1px solid}

.geo-rep .sw-card.strong{background:var(--excellent-w); border-color:#bfe8cd}

.geo-rep .sw-card.weak{background:var(--fair-w); border-color:#f0dba6}

.geo-rep .sw-tag{display:inline-flex; align-items:center; gap:8px; font-family:var(--font-m); font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; font-weight:700}

.geo-rep .sw-card.strong .sw-tag{color:var(--excellent)}

.geo-rep .sw-card.weak .sw-tag{color:var(--needs)}

.geo-rep .sw-tag svg{width:15px;height:15px}

.geo-rep .sw-name{font-family:var(--font-d); font-weight:500; font-size:30px; letter-spacing:-.01em; margin:16px 0 14px}

.geo-rep .sw-score{display:flex; align-items:baseline; gap:8px}

.geo-rep .sw-score .n{font-family:var(--font-d); font-weight:600; font-size:50px; line-height:1; letter-spacing:-.02em}

.geo-rep .sw-card.strong .sw-score .n{color:var(--good)}

.geo-rep .sw-card.weak .sw-score .n{color:var(--fair)}

.geo-rep .sw-score .u{font-family:var(--font-m); font-size:13px; color:var(--muted); letter-spacing:.04em}

.geo-rep .sw-note{font-size:13.5px; color:var(--muted); margin-top:14px; line-height:1.5}


/* ============================================================
   MESSAGE / RISK CARDS
   ============================================================ */

.geo-rep .msg-list{display:flex; flex-direction:column; gap:14px}

.geo-rep .msg{background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--sh-sm); padding:18px 22px 18px 24px; position:relative}

.geo-rep .msg::before{content:""; position:absolute; left:0; top:14px; bottom:14px; width:3px; border-radius:3px; background:var(--good)}

.geo-rep .msg.risk::before{background:var(--poor)}

.geo-rep .msg-top{display:flex; align-items:flex-start; gap:14px}

.geo-rep .msg-quote{flex:none; font-family:var(--font-d); font-size:26px; line-height:1; color:var(--ghost); transform:translateY(2px)}

.geo-rep .msg.risk .msg-quote{color:#e8a3b4}

.geo-rep .msg-claim{flex:1; font-size:16.5px; font-weight:500; line-height:1.4; color:var(--ink); padding-top:1px}

.geo-rep .msg-count{flex:none; font-family:var(--font-m); font-size:13px; font-weight:600; color:var(--muted); background:var(--inset); border:1px solid var(--line); padding:4px 11px; border-radius:var(--r-pill)}

.geo-rep .msg.risk .msg-count{color:var(--poor); background:var(--poor-w); border-color:#f2cdd6}

.geo-rep .msg-meta{display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:14px; padding-left:40px}

.geo-rep .src-sep{display:inline-flex; align-items:center; color:var(--ghost); margin:0 2px}

.geo-rep .src-sep svg{width:14px;height:14px}

.geo-rep .src{font-family:var(--font-m); font-size:11.5px; color:var(--muted); background:var(--inset); border:1px solid var(--line); border-radius:7px; padding:3px 9px; white-space:nowrap}

.geo-rep .ev-toggle{display:inline-flex; align-items:center; gap:7px; margin-top:13px; margin-left:40px; background:none; border:0; cursor:pointer;
  font-family:var(--font-u); font-weight:700; font-size:12.5px; color:var(--acc-ink)}

.geo-rep .ev-toggle:hover{color:var(--acc-deep)}

.geo-rep .ev-toggle svg{width:13px;height:13px; transition:transform .2s}

.geo-rep .ev-toggle[aria-expanded="true"] svg{transform:rotate(90deg)}

.geo-rep .ev-panel{display:none; margin:14px 0 0 40px}

.geo-rep .ev-panel.open{display:block}

.geo-rep .ev{background:var(--inset); border:1px solid var(--line); border-radius:12px; padding:15px 17px}

.geo-rep .ev-head{display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:11px}

.geo-rep .ev-badge{font-family:var(--font-m); font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:3px 9px; border-radius:var(--r-pill)}

.geo-rep .ev-pos{background:var(--excellent-w); color:var(--excellent)}

.geo-rep .ev-neu{background:var(--surface); color:var(--muted); border:1px solid var(--line)}

.geo-rep .ev-neg{background:var(--poor-w); color:var(--poor)}

.geo-rep .ev-rung{font-family:var(--font-m); font-size:10.5px; color:var(--faint)}

.geo-rep .ev-excerpt{font-family:var(--font-d); font-style:italic; font-size:16px; line-height:1.55; color:var(--ink); margin:0}

.geo-rep .ev-foot{display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:13px}


/* reassuring empty state (risks) */

.geo-rep .empty{display:flex; align-items:center; gap:18px; background:var(--excellent-w); border:1px solid #bfe8cd; border-radius:14px; padding:24px 26px}

.geo-rep .empty-ico{flex:none; width:48px; height:48px; border-radius:13px; background:#fff; color:var(--excellent); display:grid; place-items:center; box-shadow:var(--sh-sm)}

.geo-rep .empty-ico svg{width:24px;height:24px}

.geo-rep .empty-t{font-weight:700; font-size:16px; color:var(--excellent)}

.geo-rep .empty-p{font-size:13.5px; color:var(--muted); margin-top:3px}


/* ============================================================
   TOP SOURCES
   ============================================================ */

.geo-rep .src-list{display:flex; flex-direction:column; gap:14px}

.geo-rep .src-row{display:grid; grid-template-columns:24px 230px 1fr 54px; align-items:center; gap:16px}

.geo-rep .src-rank{font-family:var(--font-m); font-size:13px; color:var(--faint); text-align:right}

.geo-rep .src-dom{font-weight:700; font-size:14.5px}

.geo-rep .src-bar{height:12px; border-radius:var(--r-pill); background:var(--inset); overflow:hidden}

.geo-rep .src-barfill{height:100%; background:linear-gradient(90deg,var(--acc-2),var(--acc)); border-radius:var(--r-pill)}

.geo-rep .src-count{font-family:var(--font-m); font-size:14px; font-weight:600; color:var(--ink); text-align:right; font-variant-numeric:tabular-nums}


/* ============================================================
   PROMINENCE
   ============================================================ */

.geo-rep .prom-bar{display:flex; height:30px; border-radius:9px; overflow:hidden; background:var(--inset); gap:2px}

.geo-rep .prom-bar span{display:block; height:100%}

.geo-rep .prom-bar .lead{background:var(--excellent)}

.geo-rep .prom-bar .list{background:var(--acc)}

.geo-rep .prom-bar .bury{background:var(--line-2)}

.geo-rep .prom-legend{display:flex; gap:30px; margin-top:18px; flex-wrap:wrap}

.geo-rep .prom-li{display:flex; align-items:center; gap:9px}

.geo-rep .prom-li .sw{width:13px;height:13px;border-radius:4px}

.geo-rep .prom-li .pl-k{font-weight:700; font-size:15px; font-variant-numeric:tabular-nums}

.geo-rep .prom-li .pl-l{font-size:13px; color:var(--muted)}

.geo-rep .prom-li .pl-p{font-family:var(--font-m); font-size:12px; color:var(--faint)}


/* ============================================================
   GAPS
   ============================================================ */

.geo-rep .gap-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:16px; align-items:start}
.geo-rep .gap-empties{display:flex; flex-direction:column; gap:12px}
.geo-rep .gap-grid + .gap-empties{margin-top:16px}
.geo-rep .gap-empty .gap-colhead{border-bottom:0; padding-bottom:0; margin-bottom:0}
.geo-rep .gap-emptynote{font-size:13px; color:var(--faint); padding:10px 0 4px; line-height:1.5}

.geo-rep .gap-col{background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--sh-sm); padding:20px 20px 8px}

.geo-rep .gap-colhead{display:flex; align-items:center; gap:10px; padding-bottom:14px; border-bottom:1px solid var(--line); margin-bottom:4px}

.geo-rep .gap-ico{flex:none; width:26px; height:26px; border-radius:8px; display:grid; place-items:center}

.geo-rep .gap-ico svg{width:15px;height:15px}

.geo-rep .gap-ico.absent{background:var(--poor-w); color:var(--poor)}

.geo-rep .gap-ico.above{background:var(--needs-w); color:var(--needs)}

.geo-rep .gap-ico.missing{background:var(--acc-wash); color:var(--acc-ink)}

.geo-rep .gap-coltitle{font-weight:700; font-size:13.5px; line-height:1.25; flex:1}

.geo-rep .gap-colcount{flex:none; font-family:var(--font-m); font-size:12px; color:var(--muted); background:var(--inset); width:24px; height:24px; border-radius:7px; display:grid; place-items:center}

.geo-rep .gap-item{padding:15px 0; border-bottom:1px dashed var(--line)}

.geo-rep .gap-item:last-child{border-bottom:0}

.geo-rep .gap-q{font-size:14px; font-weight:500; line-height:1.4; color:var(--ink)}

.geo-rep .gap-vs{font-size:12.5px; color:var(--muted); margin-top:9px}

.geo-rep .gap-vs b{color:var(--ink); font-weight:700}

.geo-rep .gap-vs .none{color:var(--poor); font-weight:700}

.geo-rep .chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; align-items:center}

.geo-rep .tag-sector{font-family:var(--font-m); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; color:var(--faint); background:var(--inset); border:1px solid var(--line); border-radius:var(--r-pill); padding:3px 9px}

.geo-rep .comp-tag{font-size:12px; font-weight:600; color:var(--muted); background:var(--inset); border:1px solid var(--line); border-radius:var(--r-pill); padding:3px 11px; white-space:nowrap}

.geo-rep .tag-sector{white-space:nowrap}


/* ============================================================
   PER-STAKEHOLDER
   ============================================================ */

.geo-rep .sh-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px}

.geo-rep .sh-card{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--sh-sm); padding:24px 26px}
.geo-rep .sh-card-nc{background:var(--inset); border-style:dashed}
.geo-rep .sh-card-nc .sh-summary{color:var(--muted)}
.geo-rep .exec-negnote{display:flex; gap:10px; align-items:flex-start; margin-top:16px; padding:14px 18px; background:var(--poor-w); border:1px solid #f1d4dc; border-radius:12px}
.geo-rep .exec-negnote svg{flex:none; margin-top:2px; color:#b3415f}
.geo-rep .exec-negnote p{margin:0; font-family:var(--font-d); font-size:15px; line-height:1.55; color:var(--ink)}

/* ---------- Section 07 — Coverage / Every question asked ---------- */
.geo-rep .cv-aud{margin-top:30px}
.geo-rep .cv-aud:first-child{margin-top:4px}
.geo-rep .cv-audhead{display:flex;align-items:baseline;gap:12px;padding-bottom:9px;border-bottom:2px solid var(--line-2)}
.geo-rep .cv-audname{font-family:var(--font-d);font-size:19px;font-weight:600;color:var(--ink)}
.geo-rep .cv-wt{font-family:var(--font-m);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.geo-rep .cv-grow{flex:1}
.geo-rep .cv-count{font-family:var(--font-m);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.geo-rep .cv-colhead,.geo-rep .cv-row{display:grid;grid-template-columns:minmax(0,1fr) 104px minmax(0,1.15fr) 62px;gap:14px;align-items:center}
.geo-rep .cv-colhead{padding:11px 0 7px;font-family:var(--font-m);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.geo-rep .cv-colhead span:last-child{text-align:right}
.geo-rep .cv-row{padding:11px 0;border-top:1px solid var(--hair)}
.geo-rep .cv-q{font-family:var(--font-d);font-size:14.5px;color:var(--ink);line-height:1.4}
.geo-rep .cv-hd{display:inline-block;margin-left:8px;font-family:var(--font-m);font-size:9px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--acc-ink);background:var(--acc-wash);border-radius:5px;padding:1px 6px;vertical-align:1px}
.geo-rep .cv-rung{font-family:var(--font-m);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.geo-rep .cv-comps{display:flex;flex-wrap:wrap;gap:5px}
.geo-rep .cv-chip{font-family:var(--font-m);font-size:11px;color:var(--muted);background:var(--inset);border:1px solid var(--line);border-radius:6px;padding:2px 7px;white-space:nowrap}
.geo-rep .cv-none{color:var(--ghost)}
.geo-rep .cv-vis{font-family:var(--font-m);font-weight:700;font-size:14px;text-align:right}
.geo-rep .cv-v-full{color:var(--excellent)}
.geo-rep .cv-v-mid{color:var(--good)}
.geo-rep .cv-v-low{color:var(--needs)}
@media (max-width:820px){.geo-rep .cv-colhead,.geo-rep .cv-row{grid-template-columns:1fr auto;gap:10px}.geo-rep .cv-colhead span:nth-child(2),.geo-rep .cv-colhead span:nth-child(3),.geo-rep .cv-rung,.geo-rep .cv-comps{display:none}}

/* ---------- Section 04 — Observations & Recommendations (gap beside rec) ---------- */
.geo-rep .or-lab{font-family:var(--font-m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc-ink);margin:34px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--line-2)}
.geo-rep .or-lab-s{color:#1f8a4c}.geo-rep .or-lab-open{color:var(--muted)}.geo-rep .or-lab-oos{color:#b06a2a}.geo-rep .or-lab-dn{color:#b3415f}
.geo-rep .or-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;align-items:start}
.geo-rep .or-gaps{display:flex;flex-direction:column;gap:12px;min-width:0}
.geo-rep .og-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.geo-rep .og-card{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--needs);border-radius:12px;padding:17px 19px;box-shadow:var(--sh-sm);min-width:0}
.geo-rep .og-card.og-s{border-left-color:var(--excellent)}
.geo-rep .og-top{display:flex;gap:8px;align-items:center;margin-bottom:9px;flex-wrap:wrap}
.geo-rep .og-tier{font-family:var(--font-m);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;padding:2px 9px;border-radius:999px}
.geo-rep .og-h{background:var(--poor-w);color:#b3415f}.geo-rep .og-m{background:var(--needs-w);color:#b06a2a}.geo-rep .og-l{background:var(--inset);color:var(--muted)}
.geo-rep .og-sh{background:var(--excellent-w);color:#1f8a4c}.geo-rep .og-sm{background:var(--good-w);color:#5a8a2a}.geo-rep .og-sl{background:var(--inset);color:var(--muted)}
.geo-rep .og-dem{font-family:var(--font-m);font-size:9px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:var(--acc-ink);background:var(--acc-wash);border-radius:999px;padding:2px 9px}
.geo-rep .og-title{font-family:var(--font-d);font-size:17px;font-weight:600;color:var(--ink);line-height:1.3;margin-bottom:8px}
.geo-rep .og-q{font-family:var(--font-m);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);line-height:1.5;margin-bottom:11px}
.geo-rep .og-qmeta{color:var(--faint)}
.geo-rep .og-ans{margin:0 0 11px;padding:12px 15px;border-radius:9px;font-family:var(--font-d);font-style:italic;font-size:14.5px;line-height:1.5;color:var(--ink)}
.geo-rep .og-w .og-ans{background:var(--poor-w)}
.geo-rep .og-s .og-ans{background:var(--excellent-w)}
.geo-rep .og-ans cite{display:block;margin-top:7px;font-style:normal;font-family:var(--font-m);font-size:11px;color:var(--muted)}
.geo-rep .og-engines{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.geo-rep .og-ek{font-family:var(--font-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-right:2px}
.geo-rep .og-echip{font-family:var(--font-m);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 9px}
.geo-rep .og-peers{margin-top:10px;font-family:var(--font-d);font-size:13px;color:var(--muted)}
.geo-rep .og-pk{font-family:var(--font-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-right:7px}
.geo-rep .or-card{background:var(--inset);border:1px solid var(--line);border-radius:12px;padding:17px 19px;height:100%}
.geo-rep .or-card.or-protect{background:var(--excellent-w);border-color:#cfe8d6}
.geo-rep .or-top{display:flex;align-items:center;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.geo-rep .or-prio{font-family:var(--font-m);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;padding:2px 9px;border-radius:999px}
.geo-rep .or-h{background:var(--poor-w);color:#b3415f}.geo-rep .or-m{background:var(--needs-w);color:#b06a2a}.geo-rep .or-l{background:var(--surface);color:var(--muted)}
.geo-rep .or-lever{font-family:var(--font-m);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--acc-ink)}
.geo-rep .or-closes{font-family:var(--font-m);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
.geo-rep .or-title{font-family:var(--font-d);font-size:17px;font-weight:600;color:var(--ink);line-height:1.3;margin-bottom:7px}
.geo-rep .or-action{font-family:var(--font-d);font-size:14.5px;line-height:1.55;color:var(--muted);margin-bottom:8px}
.geo-rep .or-target,.geo-rep .or-watch{font-size:12.5px;color:var(--muted);margin-top:7px}
.geo-rep .or-tk,.geo-rep .or-wk{font-family:var(--font-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-right:7px}
.geo-rep .or-target{font-family:var(--font-m);color:var(--acc-ink)}
.geo-rep .or-need{margin-top:9px;font-size:12.5px;color:var(--ink);background:var(--surface);border:1px dashed var(--line-2);border-radius:8px;padding:8px 11px}
.geo-rep .or-oos{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--hair);font-family:var(--font-d);font-size:14px;color:var(--muted)}
.geo-rep .or-oos-n{font-family:var(--font-m);font-size:11px;color:var(--faint);white-space:nowrap}
.geo-rep .or-donot{margin:0;padding-left:20px;color:var(--muted);font-size:14px}.geo-rep .or-donot li{margin:5px 0}
@media (max-width:820px){.geo-rep .or-pair,.geo-rep .og-grid{grid-template-columns:1fr}}

.geo-rep .sh-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px}

.geo-rep .sh-head>div:first-child{flex:1 1 auto; min-width:0}

.geo-rep .sh-name{font-family:var(--font-d); font-weight:500; font-size:23px; line-height:1.12; letter-spacing:-.01em}

.geo-rep .sh-meta{font-family:var(--font-m); font-size:11.5px; color:var(--faint); margin-top:7px}

.geo-rep .sh-srs{flex:none; display:inline-flex; align-items:baseline; gap:5px; padding:8px 14px; border-radius:12px; font-weight:800}

.geo-rep .sh-srs .n{font-family:var(--font-d); font-weight:600; font-size:28px; letter-spacing:-.02em}

.geo-rep .sh-srs .u{font-family:var(--font-m); font-size:11px; letter-spacing:.04em}

.geo-rep .sh-summary{font-size:14px; color:var(--muted); line-height:1.5; margin-top:16px; max-width:46ch}

.geo-rep .sh-comp{display:grid; grid-template-columns:1fr 1fr; gap:8px 26px; margin:20px 0; padding:18px 0; border-top:1px solid var(--hair); border-bottom:1px solid var(--hair)}

.geo-rep .cbar-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px}

.geo-rep .cbar-l{font-size:12.5px; font-weight:600; color:var(--ink); white-space:nowrap}

.geo-rep .cbar-v{font-weight:800; font-size:13.5px; font-variant-numeric:tabular-nums}

.geo-rep .cbar-track{height:6px; border-radius:var(--r-pill); background:var(--inset); overflow:hidden}

.geo-rep .cbar-fill{height:100%; border-radius:var(--r-pill)}

.geo-rep .sh-rates{display:flex; align-items:flex-start; gap:24px}

.geo-rep .rate-l{font-family:var(--font-m); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); font-weight:600; display:block; margin-bottom:6px}

.geo-rep .rate-v{font-weight:800; font-size:19px; font-variant-numeric:tabular-nums}

.geo-rep .rate.sentcol{flex:1; min-width:0}

.geo-rep .sh-sec-l{display:flex; align-items:center; gap:7px; font-family:var(--font-m); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); font-weight:700; margin:20px 0 12px}

.geo-rep .sh-sec-l svg{width:14px;height:14px; color:var(--good)}

.geo-rep .sh-card .msg{box-shadow:none; background:var(--inset)}


/* ============================================================
   COLLAPSIBLES (appendix, cost, glossary)
   ============================================================ */

.geo-rep .collapse{background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--sh-sm); overflow:hidden}

.geo-rep .collapse + .collapse{margin-top:14px}

.geo-rep .collapse-btn{width:100%; display:flex; align-items:center; gap:13px; padding:19px 22px; background:none; border:0; cursor:pointer; font-family:var(--font-u); text-align:left}

.geo-rep .collapse-btn .cb-ico{flex:none; width:18px; height:18px; color:var(--acc-ink)}

.geo-rep .collapse-btn .cb-title{font-weight:700; font-size:15px; color:var(--ink)}

.geo-rep .collapse-btn .cb-count{font-family:var(--font-m); font-size:13px; color:var(--faint)}

.geo-rep .collapse-btn .cb-grow{flex:1}

.geo-rep .collapse-btn .cb-chev{flex:none; width:18px; height:18px; color:var(--muted); transition:transform .2s}

.geo-rep .collapse-btn[aria-expanded="true"] .cb-chev{transform:rotate(90deg)}

.geo-rep .collapse-body{display:none; padding:0 22px 22px}

.geo-rep .collapse-body.open{display:block}

.geo-rep .collapse.tinted{background:var(--acc-wash); border-color:#f0dcb0}


/* appendix prompt list */

.geo-rep .prompt-group{margin-top:18px}

.geo-rep .prompt-group:first-child{margin-top:6px}

.geo-rep .pg-head{display:flex; align-items:baseline; gap:10px; margin-bottom:10px}

.geo-rep .pg-name{font-weight:700; font-size:13.5px}

.geo-rep .pg-n{font-family:var(--font-m); font-size:11.5px; color:var(--faint)}

.geo-rep .prompt-row{display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:14px; padding:9px 0; border-bottom:1px solid var(--hair)}

.geo-rep .prompt-row:last-child{border-bottom:0}

.geo-rep .pr-text{font-size:13.5px; color:var(--ink)}

.geo-rep .pr-rung{font-family:var(--font-m); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); border:1px solid var(--line); border-radius:var(--r-pill); padding:2px 8px}

.geo-rep .pr-rate{font-family:var(--font-m); font-size:12.5px; font-weight:600; color:var(--muted); width:48px; text-align:right; font-variant-numeric:tabular-nums}


/* cost */

.geo-rep .cost-stats{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:8px}

.geo-rep .cost-stat{background:var(--surface); border:1px solid var(--line); border-radius:11px; padding:15px 16px}

.geo-rep .cost-k{font-family:var(--font-d); font-weight:600; font-size:26px; letter-spacing:-.01em}

.geo-rep .cost-l{font-size:11.5px; color:var(--muted); margin-top:5px; font-weight:600}

.geo-rep .cost-table{width:100%; border-collapse:collapse; margin-top:18px; font-size:13.5px}
.geo-rep .cost-table th{font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); font-weight:500; text-align:left; padding:0 14px 9px; border-bottom:1px solid var(--line-2)}
.geo-rep .cost-table td{padding:9px 14px; border-bottom:1px solid var(--hair)}
.geo-rep .cost-table .ct-n{text-align:right; white-space:nowrap}
.geo-rep .cost-table .ct-m{font-family:var(--font-d); color:var(--ink)}
.geo-rep .cost-table tbody tr:hover{background:var(--inset)}
.geo-rep .cost-table tfoot td{border-bottom:none; border-top:2px solid var(--line-2); font-weight:700; color:var(--ink); padding-top:11px}
.geo-rep .cost-note{display:flex; gap:9px; align-items:flex-start; font-family:var(--font-m); font-size:11px; color:var(--faint); line-height:1.5; margin-top:14px; padding-top:14px; border-top:1px solid var(--hair)}

.geo-rep .cost-note svg{flex:none; width:14px; height:14px; margin-top:1px}


/* glossary */

.geo-rep .gloss{display:grid; grid-template-columns:1fr 1fr; gap:14px 36px; margin-top:6px}

.geo-rep .gl-term{font-weight:700; font-size:13.5px; color:var(--ink)}

.geo-rep .gl-term .abbr{font-family:var(--font-m); font-size:11px; color:var(--acc-ink); margin-left:7px}

.geo-rep .gl-def{font-size:13px; color:var(--muted); line-height:1.5; margin-top:3px}


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

.geo-rep .report-foot{margin-top:72px; padding-top:30px; border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap}

.geo-rep .report-foot img{height:34px; display:block; opacity:.9}

.geo-rep .foot-text{font-family:var(--font-m); font-size:11px; color:var(--faint); line-height:1.6; text-align:right}


/* engine identity helpers */

.geo-rep .e-openai{--c:var(--openai); --cw:var(--openai-w); --ci:var(--openai-ink)}

.geo-rep .e-gemini{--c:var(--gemini); --cw:var(--gemini-w); --ci:var(--gemini-ink)}

.geo-rep .e-perplexity{--c:var(--perplexity); --cw:var(--perplexity-w); --ci:var(--perplexity-ink)}


/* score band helper classes (text + wash) */

.geo-rep .band-excellent{color:var(--excellent)}

.geo-rep .band-good{color:var(--good)}

.geo-rep .band-fair{color:var(--fair)}

.geo-rep .band-needs{color:var(--needs)}

.geo-rep .band-poor{color:var(--poor)}

.geo-rep .bandw-excellent{background:var(--excellent-w); color:var(--excellent)}

.geo-rep .bandw-good{background:var(--good-w); color:#5a9329}

.geo-rep .bandw-fair{background:var(--fair-w); color:var(--acc-ink)}

.geo-rep .bandw-needs{background:var(--needs-w); color:var(--needs)}

.geo-rep .bandw-poor{background:var(--poor-w); color:var(--poor)}


/* ---------- responsive ---------- */

@media(max-width:1080px){
  .geo-rep .page{padding:0 24px 80px}
  .geo-rep .topbar-in{padding:11px 24px}
  .geo-rep .headline-grid{grid-template-columns:repeat(2,1fr)}
  .geo-rep .llm-grid{grid-template-columns:1fr}
  .geo-rep .gap-grid{grid-template-columns:1fr}
  .geo-rep .sh-grid{grid-template-columns:1fr}
  .geo-rep .sw-grid{grid-template-columns:1fr}
  .geo-rep .hero{grid-template-columns:1fr}
  .geo-rep .mast-title{font-size:42px}
  

}

@media(max-width:640px){
  .geo-rep .page{padding:0 18px 60px}
  .geo-rep .topbar-in{padding:10px 18px}
  .geo-rep .headline-grid{grid-template-columns:1fr}
  .geo-rep .cost-stats{grid-template-columns:repeat(2,1fr)}
  .geo-rep .gloss{grid-template-columns:1fr}
  .geo-rep .sov-row{grid-template-columns:110px 1fr; }
  .geo-rep .sov-vals{grid-column:2; text-align:right}
  .geo-rep .src-row{grid-template-columns:20px 1fr 48px}
  .geo-rep .src-bar{display:none}
  .geo-rep .mast-title{font-size:34px}
  .geo-rep .hero-verdict{font-size:25px}
  .geo-rep .mast-actions{width:100%}
  .geo-rep .sh-comp{grid-template-columns:1fr}
  

}


/* extra engine identities (not in the sample run; added for full coverage) */
.geo-rep{--anthropic:#4a6d8c;--anthropic-w:#eaeef3;--anthropic-ink:#2f4a63;
  --grok:#3f4651;--grok-w:#ecedf0;--grok-ink:#2a2f38;
  --aimode:#2f8f86;--aimode-w:#e7f2f0;--aimode-ink:#1f5f59;}
.geo-rep .e-anthropic{--c:var(--anthropic);--cw:var(--anthropic-w);--ci:var(--anthropic-ink)}
.geo-rep .e-grok{--c:var(--grok);--cw:var(--grok-w);--ci:var(--grok-ink)}
.geo-rep .e-google_ai_mode{--c:var(--aimode);--cw:var(--aimode-w);--ci:var(--aimode-ink)}

/* single-stakeholder / no-data notes (edge states the prototype left to-do) */
.geo-rep .rep-note{display:flex;align-items:flex-start;gap:12px;background:var(--inset);border:1px solid var(--line);border-radius:14px;padding:20px 24px;font-size:14px;color:var(--muted);line-height:1.5}
.geo-rep .rep-note svg{flex:none;width:18px;height:18px;color:var(--faint);margin-top:1px}
.geo-rep .rep-note b{color:var(--ink);font-weight:700}
.geo-rep .warn{display:flex;gap:12px;align-items:flex-start;background:var(--fair-w);border:1px solid #f0dba6;border-radius:14px;padding:18px 22px;margin-top:20px}
.geo-rep .warn svg{flex:none;color:var(--needs)}
.geo-rep .warn b{color:var(--acc-ink)}
.geo-rep .warn ul{margin:6px 0 0;padding-left:18px;color:var(--muted);font-size:13px}

/* negative-messages label inside a stakeholder card */
.geo-rep .sh-sec-l.neg, .geo-rep .sh-sec-l.neg svg{color:var(--poor)}


/* ============================================================
   v2 INSIGHT LAYER — scoped under .geo-rep (design handoff #5)
   ============================================================ */
/* ============================================================
   Adfactors GEO — AI Reputation Report · v2 INSIGHT LAYER
   Extends report.css. New tokens + components for:
   movement · ranked findings · open-question visibility ·
   demand-vs-visibility map · head-to-head · narrative themes ·
   source mix · recommendations · acts + navigation.
   ============================================================ */
.geo-rep {
  /* DEMAND signal — a steel-blue distinct from saffron + every engine hue.
     Used wherever a value is grounded in monthly search volume. */
  --demand:#2f6f87; --demand-2:#3a86a1; --demand-wash:#e7f1f4;
  --demand-ink:#1d5066; --demand-line:#cbe0e7;

  /* extra engine identities (report.css defines openai/gemini/perplexity) */
  --grok:#5d5d68; --grok-w:#ececed; --grok-ink:#42424b;
  --google:#5878a8; --google-w:#e9eef5; --google-ink:#3c587f;
  --claude:#4f7d8c; --claude-w:#e8f0f1; --claude-ink:#37606d;
}
.geo-rep .e-grok {--c:var(--grok); --cw:var(--grok-w); --ci:var(--grok-ink)}
.geo-rep .e-google {--c:var(--google); --cw:var(--google-w); --ci:var(--google-ink)}
.geo-rep .e-claude {--c:var(--claude); --cw:var(--claude-w); --ci:var(--claude-ink)}
/* ============================================================
   REUSABLE PATTERNS
   ============================================================ */
/* — demand-weighted dual value — raw paired with its weighted twin */
.geo-rep .dual {display:inline-flex; align-items:flex-end; gap:14px}
.geo-rep .dual .d-one {display:flex; flex-direction:column; gap:2px}
.geo-rep .dual .d-v {font-family:var(--font-d); font-weight:600; font-size:32px; line-height:.95; letter-spacing:-.02em; font-variant-numeric:tabular-nums}
.geo-rep .dual .d-v small {font-size:17px; color:var(--muted); font-weight:500}
.geo-rep .dual .d-l {font-family:var(--font-m); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); font-weight:600}
.geo-rep .dual .d-arrow {align-self:center; color:var(--ghost); margin-bottom:14px}
.geo-rep .dual .d-arrow svg {width:16px; height:16px; display:block}
.geo-rep .dual .weighted .d-v {color:var(--demand-ink)}
.geo-rep .dual .weighted .d-l {color:var(--demand)}
.geo-rep .dual .weighted {position:relative; padding-left:13px}
.geo-rep .dual .weighted::before {content:""; position:absolute; left:0; top:3px; bottom:14px; width:3px; border-radius:3px; background:var(--demand)}
/* — demand magnitude chip — "33,100/mo" — */
.geo-rep .dchip {display:inline-flex; align-items:center; gap:6px; padding:4px 10px 4px 8px; border-radius:var(--r-pill);
  background:var(--demand-wash); border:1px solid var(--demand-line); color:var(--demand-ink);
  font-family:var(--font-m); font-size:11.5px; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap}
.geo-rep .dchip svg {width:12px; height:12px; opacity:.8}
.geo-rep .dchip b {font-weight:700}
.geo-rep .dchip.lg {font-size:13px; padding:6px 13px 6px 10px}
.geo-rep .dchip.ghost {background:transparent; color:var(--faint); border-color:var(--line); border-style:dashed}
/* — demand-grounded badge — */
.geo-rep .dbadge {display:inline-flex; align-items:center; gap:6px; font-family:var(--font-m); font-size:10px; letter-spacing:.1em;
  text-transform:uppercase; font-weight:700; color:var(--demand); background:var(--demand-wash);
  border:1px solid var(--demand-line); border-radius:var(--r-pill); padding:4px 11px}
.geo-rep .dbadge .dot {width:6px; height:6px; border-radius:50%; background:var(--demand)}
/* — severity indicator — maps 0..1 to band scale (inverted: high sev = bad) — */
.geo-rep .sev {display:inline-flex; align-items:center; gap:9px}
.geo-rep .sev-pip {flex:none; width:40px; height:40px; border-radius:11px; display:grid; place-items:center;
  font-family:var(--font-m); font-weight:600; font-size:13px; font-variant-numeric:tabular-nums}
.geo-rep .sev-meta {display:flex; flex-direction:column; gap:1px}
.geo-rep .sev-lab {font-family:var(--font-m); font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:700}
.geo-rep .sev-cap {font-size:11px; color:var(--faint)}
.geo-rep .sev-high   .sev-pip {background:var(--poor-w); color:var(--poor)}
.geo-rep .sev-high .sev-lab {color:var(--poor)}
.geo-rep .sev-elevated .sev-pip {background:var(--needs-w); color:var(--needs)}
.geo-rep .sev-elevated .sev-lab {color:var(--needs)}
.geo-rep .sev-moderate .sev-pip {background:var(--fair-w); color:var(--acc-ink)}
.geo-rep .sev-moderate .sev-lab {color:var(--acc-ink)}
.geo-rep .sev-low    .sev-pip {background:var(--good-w); color:#5a9329}
.geo-rep .sev-low .sev-lab {color:#5a9329}
/* — owner chip — Content / Earned PR / Analyst-AR — */
.geo-rep .owner {display:inline-flex; align-items:center; gap:7px; padding:5px 12px 5px 9px; border-radius:var(--r-pill);
  font-weight:700; font-size:12px; white-space:nowrap; border:1px solid}
.geo-rep .owner .dot {width:7px; height:7px; border-radius:50%}
.geo-rep .owner.content {background:var(--claude-w); color:var(--claude-ink); border-color:#cfe0e2}
.geo-rep .owner.content .dot {background:var(--claude)}
.geo-rep .owner.earned {background:var(--acc-wash); color:var(--acc-ink); border-color:#f0dcb0}
.geo-rep .owner.earned .dot {background:var(--acc)}
.geo-rep .owner.ar {background:var(--perplexity-w); color:var(--perplexity-ink); border-color:#d9d3ea}
.geo-rep .owner.ar .dot {background:var(--perplexity)}
/* — engine-failure / data caveat — clean, non-alarming — */
.geo-rep .caveat {display:flex; gap:13px; align-items:flex-start; background:var(--inset); border:1px solid var(--line);
  border-radius:13px; padding:15px 18px}
.geo-rep .caveat .cv-ico {flex:none; width:30px; height:30px; border-radius:9px; background:var(--surface); border:1px solid var(--line);
  color:var(--muted); display:grid; place-items:center}
.geo-rep .caveat .cv-ico svg {width:16px; height:16px}
.geo-rep .caveat .cv-t {font-weight:700; font-size:13.5px; color:var(--ink)}
.geo-rep .caveat .cv-p {font-size:12.5px; color:var(--muted); margin-top:3px; line-height:1.5}
.geo-rep .caveat .cv-p b {color:var(--ink)}
/* ============================================================
   ACT STRUCTURE + NAVIGATION
   ============================================================ */
.geo-rep .act {margin-top:84px; scroll-margin-top:78px}
.geo-rep .act:first-of-type {margin-top:46px}
.geo-rep .act-divider {display:flex; align-items:flex-end; gap:22px; padding-bottom:18px; border-bottom:2px solid var(--ink); margin-bottom:8px}
.geo-rep .act-num {font-family:var(--font-m); font-size:12px; letter-spacing:.22em; text-transform:uppercase; color:var(--acc-ink); font-weight:600; white-space:nowrap; padding-bottom:9px}
.geo-rep .act-tt {flex:1}
.geo-rep .act-title {font-family:var(--font-d); font-weight:500; font-size:38px; line-height:1; letter-spacing:-.02em}
.geo-rep .act-sub {font-size:14px; color:var(--muted); margin-top:9px; max-width:64ch}
.geo-rep .act-meta {font-family:var(--font-m); font-size:11px; color:var(--faint); text-align:right; line-height:1.6; padding-bottom:4px; white-space:nowrap}
/* the section inside an act sits closer to its divider */
.geo-rep .act .section:first-of-type {margin-top:40px}
/* — sticky left dot-rail with flyout labels — */
.geo-rep .navrail {position:fixed; left:max(16px, calc(50vw - 700px)); top:50%; transform:translateY(-50%); z-index:38;
  display:flex; flex-direction:column; gap:2px; padding:8px 6px;}
.geo-rep .navrail .nr-act {font-family:var(--font-m); font-size:8.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ghost); font-weight:700; margin:11px 0 4px 6px}
.geo-rep .navrail .nr-act:first-child {margin-top:0}
.geo-rep .nr-dot {display:flex; align-items:center; gap:10px; cursor:pointer; padding:3px 6px; border-radius:8px; position:relative}
.geo-rep .nr-dot .pip {flex:none; width:8px; height:8px; border-radius:50%; background:var(--line-2); transition:background .2s, transform .2s; box-shadow:0 0 0 0 var(--acc-wash)}
.geo-rep .nr-dot .nr-label {font-size:12px; font-weight:600; color:var(--muted); white-space:nowrap; opacity:0; transform:translateX(-4px);
  transition:opacity .16s, transform .16s; pointer-events:none}
.geo-rep .nr-dot:hover .nr-label {opacity:1; transform:translateX(0)}
.geo-rep .nr-dot:hover .pip {background:var(--acc)}
.geo-rep .nr-dot.active .pip {background:var(--acc); transform:scale(1.35); box-shadow:0 0 0 4px var(--acc-wash)}
.geo-rep .nr-dot.active .nr-label {opacity:1; transform:translateX(0); color:var(--ink)}
@media(max-width:1480px) {
  .geo-rep .navrail {display:none}
}
/* top scroll-progress line inside the existing topbar */
.geo-rep .tb-progress {position:absolute; left:0; bottom:-1px; height:2px; width:0; background:linear-gradient(90deg,var(--acc-2),var(--acc-deep))}
/* ============================================================
   MOVEMENT  (cover/masthead hero stat)
   ============================================================ */
.geo-rep .move {display:flex; flex-direction:column; justify-content:center; gap:14px; padding:26px 26px; background:var(--inset); border-radius:12px}
.geo-rep .move-k {font-family:var(--font-m); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); font-weight:600}
.geo-rep .move-big {display:flex; align-items:baseline; gap:9px}
.geo-rep .move-delta {font-family:var(--font-d); font-weight:600; font-size:46px; line-height:.9; letter-spacing:-.02em; display:inline-flex; align-items:center; gap:6px}
.geo-rep .move-delta.up {color:var(--excellent)}
.geo-rep .move-delta.down {color:var(--poor)}
.geo-rep .move-delta svg {width:26px; height:26px}
.geo-rep .move-unit {font-family:var(--font-m); font-size:12px; color:var(--muted)}
.geo-rep .move-spark {display:flex; align-items:center; gap:12px}
.geo-rep .move-spark svg {display:block}
.geo-rep .move-from {font-family:var(--font-m); font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums}
.geo-rep .move-from b {color:var(--ink); font-weight:600}
.geo-rep .move-cap {font-size:11.5px; color:var(--faint)}
/* small inline movement chip (reusable) */
.geo-rep .move-chip {display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:var(--r-pill);
  font-family:var(--font-m); font-size:12px; font-weight:600; font-variant-numeric:tabular-nums}
.geo-rep .move-chip.up {background:var(--excellent-w); color:var(--excellent)}
.geo-rep .move-chip.down {background:var(--poor-w); color:var(--poor)}
.geo-rep .move-chip svg {width:13px; height:13px}
/* ============================================================
   EXECUTIVE SUMMARY BAND  (the skim layer)
   ============================================================ */
.geo-rep .execband {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh);
  display:grid; grid-template-columns:0.9fr 1.25fr 1fr; margin-top:18px; overflow:hidden}
.geo-rep .eb-cell {padding:22px 24px; border-right:1px solid var(--hair)}
.geo-rep .eb-cell:last-child {border-right:0}
.geo-rep .eb-k {display:flex; align-items:center; gap:8px; font-family:var(--font-m); font-size:10.5px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--faint); font-weight:700; margin-bottom:15px}
.geo-rep .eb-k svg {width:14px; height:14px; color:var(--acc)}
.geo-rep .eb-move {display:flex; align-items:baseline; gap:8px}
.geo-rep .eb-move .n {font-family:var(--font-d); font-weight:600; font-size:40px; line-height:.9; letter-spacing:-.02em; color:var(--excellent)}
.geo-rep .eb-move .u {font-family:var(--font-m); font-size:11.5px; color:var(--muted)}
.geo-rep .eb-line {font-size:13px; color:var(--muted); margin-top:12px; line-height:1.5}
.geo-rep .eb-line b {color:var(--ink); font-weight:600}
.geo-rep .eb-find {display:flex; gap:11px; align-items:flex-start; padding:9px 0; cursor:pointer}
.geo-rep .eb-find + .eb-find {border-top:1px dashed var(--line)}
.geo-rep .eb-find .sev-tick {flex:none; width:7px; height:7px; border-radius:50%; margin-top:6px}
.geo-rep .eb-find.f-high .sev-tick {background:var(--poor)}
.geo-rep .eb-find.f-elevated .sev-tick {background:var(--needs)}
.geo-rep .eb-find .ef-t {font-size:13.5px; font-weight:600; line-height:1.35; color:var(--ink)}
.geo-rep .eb-find .ef-m {font-family:var(--font-m); font-size:11px; color:var(--faint); margin-top:2px}
.geo-rep .eb-find:hover .ef-t {color:var(--acc-ink)}
.geo-rep .eb-action {display:flex; flex-direction:column; gap:11px}
.geo-rep .eb-action .ea-t {font-family:var(--font-d); font-size:18px; font-weight:500; line-height:1.25; letter-spacing:-.01em}
.geo-rep .eb-action .ea-row {display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.geo-rep .eb-jump {display:inline-flex; align-items:center; gap:6px; font-weight:700; font-size:12.5px; color:var(--acc-ink); cursor:pointer; margin-top:2px}
.geo-rep .eb-jump svg {width:13px; height:13px; transition:transform .15s}
.geo-rep .eb-jump:hover svg {transform:translateX(2px)}
/* ============================================================
   RANKED FINDINGS  (Act I hero opening)
   ============================================================ */
.geo-rep .findings {display:flex; flex-direction:column; gap:16px}
.geo-rep .finding {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm);
  display:grid; grid-template-columns:56px 1fr auto; gap:22px; align-items:start; padding:24px 26px; position:relative; overflow:hidden}
.geo-rep .finding::before {content:""; position:absolute; left:0; top:0; bottom:0; width:4px}
.geo-rep .finding.lead {padding:30px 30px}
.geo-rep .finding.f-high::before {background:var(--poor)}
.geo-rep .finding.f-elevated::before {background:var(--needs)}
.geo-rep .finding.f-moderate::before {background:var(--fair)}
.geo-rep .find-rank {font-family:var(--font-d); font-weight:600; font-size:34px; line-height:1; color:var(--ghost); letter-spacing:-.02em; text-align:center; padding-top:2px}
.geo-rep .find-body {min-width:0}
.geo-rep .find-sev {display:flex; align-items:center; gap:9px; margin-bottom:11px}
.geo-rep .find-sevbar {width:96px; height:7px; border-radius:var(--r-pill); background:var(--inset); overflow:hidden}
.geo-rep .find-sevbar i {display:block; height:100%; border-radius:var(--r-pill)}
.geo-rep .finding.f-high .find-sevbar i {background:var(--poor)}
.geo-rep .finding.f-elevated .find-sevbar i {background:var(--needs)}
.geo-rep .finding.f-moderate .find-sevbar i {background:var(--fair)}
.geo-rep .find-sevlab {font-family:var(--font-m); font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:700}
.geo-rep .finding.f-high .find-sevlab {color:var(--poor)}
.geo-rep .finding.f-elevated .find-sevlab {color:var(--needs)}
.geo-rep .finding.f-moderate .find-sevlab {color:var(--acc-ink)}
.geo-rep .find-sevval {font-family:var(--font-m); font-size:11px; color:var(--faint); font-variant-numeric:tabular-nums}
.geo-rep .find-title {font-family:var(--font-d); font-weight:500; font-size:24px; line-height:1.15; letter-spacing:-.01em}
.geo-rep .finding.lead .find-title {font-size:29px}
.geo-rep .find-detail {font-size:14.5px; color:var(--muted); line-height:1.5; margin-top:8px; max-width:64ch; text-wrap:pretty}
.geo-rep .find-detail b {color:var(--ink); font-weight:600}
.geo-rep .find-side {display:flex; flex-direction:column; align-items:flex-end; gap:12px; text-align:right}
.geo-rep .find-metric {display:inline-flex; align-items:center; gap:7px; padding:7px 13px; border-radius:11px; background:var(--inset);
  border:1px solid var(--line); font-family:var(--font-m); font-size:12.5px; font-weight:600; color:var(--ink); white-space:nowrap}
.geo-rep .find-jump {display:inline-flex; align-items:center; gap:6px; font-weight:700; font-size:12.5px; color:var(--acc-ink); cursor:pointer; white-space:nowrap}
.geo-rep .find-jump svg {width:14px; height:14px; transition:transform .15s}
.geo-rep .find-jump:hover svg {transform:translateX(2px)}
/* ============================================================
   OPEN-QUESTION VISIBILITY
   ============================================================ */
.geo-rep .openvis-top {display:grid; grid-template-columns:1.4fr 1fr; gap:16px; align-items:stretch}
.geo-rep .ov-headline {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm); padding:24px 26px}
.geo-rep .ov-h-k {font-family:var(--font-m); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); font-weight:700}
.geo-rep .ov-trio {display:flex; align-items:flex-end; gap:30px; margin-top:18px; flex-wrap:wrap}
.geo-rep .ov-one {display:flex; flex-direction:column; gap:5px}
.geo-rep .ov-one .v {font-family:var(--font-d); font-weight:600; font-size:42px; line-height:.9; letter-spacing:-.02em; font-variant-numeric:tabular-nums}
.geo-rep .ov-one .v small {font-size:20px; color:var(--muted); font-weight:500}
.geo-rep .ov-one .l {font-size:12px; color:var(--muted)}
.geo-rep .ov-one.weighted .v {color:var(--demand-ink)}
.geo-rep .ov-one.weighted {padding-left:15px; border-left:3px solid var(--demand)}
.geo-rep .ov-one.lead-rate .v {color:var(--acc-ink)}
.geo-rep .ov-note {font-size:12.5px; color:var(--muted); line-height:1.5; margin-top:18px; padding-top:15px; border-top:1px solid var(--hair)}
.geo-rep .ov-note b {color:var(--ink)}
/* engine read */
.geo-rep .ov-engine {background:var(--demand-wash); border:1px solid var(--demand-line); border-radius:var(--r); padding:22px 24px; display:flex; flex-direction:column}
.geo-rep .ov-eg-k {display:flex; align-items:center; gap:8px; font-family:var(--font-m); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--demand); font-weight:700}
.geo-rep .ov-eg-rows {display:flex; flex-direction:column; gap:13px; margin:18px 0}
.geo-rep .ov-eg-row {display:grid; grid-template-columns:96px 1fr 46px; align-items:center; gap:12px}
.geo-rep .ov-eg-row .rl {font-size:12px; color:var(--demand-ink); font-weight:600}
.geo-rep .ov-eg-track {height:8px; border-radius:var(--r-pill); background:#fff; overflow:hidden; border:1px solid var(--demand-line)}
.geo-rep .ov-eg-fill {height:100%; background:var(--demand); border-radius:var(--r-pill)}
.geo-rep .ov-eg-row .rv {font-family:var(--font-m); font-size:12.5px; font-weight:600; color:var(--demand-ink); text-align:right; font-variant-numeric:tabular-nums}
.geo-rep .ov-eg-read {font-size:12.5px; color:var(--demand-ink); line-height:1.5; margin-top:auto; padding-top:14px; border-top:1px solid var(--demand-line)}
.geo-rep .ov-eg-read b {font-weight:700}
/* per-rung bars */
.geo-rep .rungs {display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:16px}
.geo-rep .rung {background:var(--surface); border:1px solid var(--line); border-radius:13px; box-shadow:var(--sh-sm); padding:16px 17px}
.geo-rep .rung-h {display:flex; align-items:baseline; justify-content:space-between; gap:8px}
.geo-rep .rung-name {font-weight:700; font-size:13px}
.geo-rep .rung-n {font-family:var(--font-m); font-size:11px; color:var(--faint)}
.geo-rep .rung-v {font-family:var(--font-d); font-weight:600; font-size:30px; letter-spacing:-.02em; margin:10px 0 9px; font-variant-numeric:tabular-nums}
.geo-rep .rung-v small {font-size:15px; color:var(--muted)}
.geo-rep .rung-track {height:6px; border-radius:var(--r-pill); background:var(--inset); overflow:hidden}
.geo-rep .rung-fill {height:100%; border-radius:var(--r-pill)}
.geo-rep .rung-lead {font-family:var(--font-m); font-size:10.5px; color:var(--faint); margin-top:9px}
.geo-rep .rung-lead b {color:var(--muted); font-weight:600}
/* heatmap (stakeholder × rung) */
.geo-rep .heatwrap {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm); padding:22px 24px; margin-top:16px}
.geo-rep .heat-head {display:flex; align-items:baseline; justify-content:space-between; gap:14px; margin-bottom:16px; flex-wrap:wrap}
.geo-rep .heat-title {font-weight:700; font-size:14.5px}
.geo-rep .heat-scale {display:flex; align-items:center; gap:9px; font-family:var(--font-m); font-size:10.5px; color:var(--faint)}
.geo-rep .heat-ramp {width:120px; height:9px; border-radius:var(--r-pill); background:linear-gradient(90deg,var(--inset),var(--excellent))}
.geo-rep .heatmap {display:grid; grid-template-columns:1.6fr repeat(4,1fr) 1fr; gap:5px; align-items:stretch}
.geo-rep .heat-cell {display:flex; flex-direction:column; justify-content:center; gap:2px; padding:11px 12px; border-radius:9px; min-height:50px}
.geo-rep .heat-col-h {font-family:var(--font-m); font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--faint); font-weight:700;
  display:flex; align-items:flex-end; padding:0 12px 7px; min-height:0}
.geo-rep .heat-row-h {font-weight:600; font-size:12.5px; color:var(--ink); display:flex; align-items:center}
.geo-rep .heat-v {background:color-mix(in srgb, var(--excellent) calc(var(--v,0)*1%), var(--surface)); border:1px solid color-mix(in srgb, var(--excellent) calc(var(--v,0)*1%), var(--line))}
.geo-rep .heat-v .hv {font-family:var(--font-m); font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; color:#1a4a2c}
.geo-rep .heat-v.low .hv {color:var(--ink)}
.geo-rep .heat-v .hn {font-family:var(--font-m); font-size:9px; color:#3a6b48; opacity:.75}
.geo-rep .heat-v.low .hn {color:var(--faint)}
.geo-rep .heat-cell.na {background:repeating-linear-gradient(135deg,var(--inset),var(--inset) 5px,var(--surface) 5px,var(--surface) 10px); border:1px solid var(--line)}
.geo-rep .heat-cell.na .hv {color:var(--ghost); font-family:var(--font-m); font-size:12px}
.geo-rep .heat-cell.summary {background:var(--acc-wash); border:1px solid #f0dcb0}
.geo-rep .heat-cell.summary .hv {color:var(--acc-ink)}
.geo-rep .heat-cell.summary .hn {color:var(--acc-ink); opacity:.7}
/* ============================================================
   DEMAND-vs-VISIBILITY MAP  (flagship scatter)
   ============================================================ */
.geo-rep .demandmap {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh); padding:26px 28px}
.geo-rep .dm-head {display:flex; align-items:flex-start; justify-content:space-between; gap:18px; flex-wrap:wrap; margin-bottom:6px}
.geo-rep .dm-legend {display:flex; align-items:center; gap:16px; flex-wrap:wrap; font-size:12px; color:var(--muted)}
.geo-rep .dm-legend .li {display:inline-flex; align-items:center; gap:7px}
.geo-rep .dm-legend .ld {width:11px; height:11px; border-radius:50%}
.geo-rep .dm-plot {position:relative; width:100%}
.geo-rep .dm-plot svg {width:100%; height:auto; display:block; overflow:visible}
.geo-rep .dm-quad-lab {font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; fill:var(--faint); font-weight:600}
.geo-rep .dm-axis-lab {font-family:var(--font-m); font-size:11px; fill:var(--muted)}
.geo-rep .dm-tick {font-family:var(--font-m); font-size:10px; fill:var(--faint); font-variant-numeric:tabular-nums}
.geo-rep .dm-pt {cursor:default; transition:r .15s}
.geo-rep .dm-pt-label {font-family:var(--font-u); font-size:11px; fill:var(--ink); font-weight:600}
.geo-rep .dm-tooltip {position:absolute; pointer-events:none; opacity:0; transform:translate(-50%,-100%); transition:opacity .12s;
  background:var(--ink); color:#fff; border-radius:9px; padding:9px 12px; font-size:11.5px; max-width:230px; z-index:5; box-shadow:var(--sh-lg)}
.geo-rep .dm-tooltip .tt-q {font-weight:600; line-height:1.35}
.geo-rep .dm-tooltip .tt-m {font-family:var(--font-m); font-size:10.5px; opacity:.85; margin-top:4px}
/* winning state — empty priority worklist */
.geo-rep .winning {display:flex; gap:18px; align-items:center; background:var(--excellent-w); border:1px solid #bfe8cd; border-radius:14px; padding:22px 26px; margin-top:18px}
.geo-rep .winning .w-ico {flex:none; width:50px; height:50px; border-radius:14px; background:#fff; color:var(--excellent); display:grid; place-items:center; box-shadow:var(--sh-sm)}
.geo-rep .winning .w-ico svg {width:26px; height:26px}
.geo-rep .winning .w-t {font-weight:800; font-size:16.5px; color:var(--excellent)}
.geo-rep .winning .w-p {font-size:13.5px; color:var(--muted); margin-top:3px; line-height:1.5; max-width:70ch}
.geo-rep .winning .w-p b {color:var(--ink)}
.geo-rep .winning .w-stat {flex:none; text-align:center; padding-left:22px; border-left:1px solid #bfe8cd; margin-left:6px}
.geo-rep .winning .w-stat .n {font-family:var(--font-d); font-weight:600; font-size:34px; color:var(--excellent); line-height:1}
.geo-rep .winning .w-stat .l {font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-top:4px}
/* ============================================================
   HEAD-TO-HEAD
   ============================================================ */
.geo-rep .h2h-grid {display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start}
.geo-rep .h2h-card {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm); padding:22px 24px}
.geo-rep .h2h-k {font-family:var(--font-m); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); font-weight:700; margin-bottom:4px}
.geo-rep .h2h-sub {font-size:12.5px; color:var(--muted); margin-bottom:16px}
.geo-rep .pres-row {display:grid; grid-template-columns:128px 1fr 38px; align-items:center; gap:13px; margin-bottom:11px}
.geo-rep .pres-name {font-weight:600; font-size:13px; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.geo-rep .pres-row.client .pres-name {font-weight:800; color:var(--acc-ink)}
.geo-rep .pres-track {height:18px; border-radius:6px; background:var(--inset); overflow:hidden}
.geo-rep .pres-fill {height:100%; background:var(--line-2); border-radius:6px}
.geo-rep .pres-row.client .pres-fill {background:linear-gradient(90deg,var(--acc-2),var(--acc))}
.geo-rep .pres-v {font-family:var(--font-m); font-size:12.5px; font-weight:600; color:var(--muted); text-align:right; font-variant-numeric:tabular-nums}
.geo-rep .pres-row.client .pres-v {color:var(--acc-ink)}
.geo-rep .h2h-foot {font-size:11.5px; color:var(--faint); margin-top:14px; padding-top:13px; border-top:1px solid var(--hair); font-family:var(--font-m)}
/* questions you lose table */
.geo-rep .lose {margin-top:16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm); overflow:hidden}
.geo-rep .lose-head {display:flex; align-items:center; gap:11px; padding:16px 22px; border-bottom:1px solid var(--line); background:var(--poor-w)}
.geo-rep .lose-head .lh-ico {flex:none; width:26px; height:26px; border-radius:8px; background:#fff; color:var(--poor); display:grid; place-items:center}
.geo-rep .lose-head .lh-ico svg {width:15px; height:15px}
.geo-rep .lose-head .lh-t {font-weight:700; font-size:14px; color:var(--ink)}
.geo-rep .lose-head .lh-vol {margin-left:auto; display:flex; align-items:center; gap:8px}
.geo-rep .lose-head .lh-vol .lab {font-size:11.5px; color:var(--muted)}
.geo-rep .lose-table {width:100%; border-collapse:collapse}
.geo-rep .lose-table th {font-family:var(--font-m); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); font-weight:700;
  text-align:left; padding:11px 22px; border-bottom:1px solid var(--line)}
.geo-rep .lose-table th.num {text-align:right}
.geo-rep .lose-table td {padding:15px 22px; border-bottom:1px solid var(--hair); vertical-align:top}
.geo-rep .lose-table tr:last-child td {border-bottom:0}
.geo-rep .lose-q {font-size:14px; font-weight:500; line-height:1.4; color:var(--ink); max-width:34ch}
.geo-rep .lose-rivals {display:flex; flex-wrap:wrap; gap:5px; margin-top:8px}
.geo-rep .lose-vol {font-family:var(--font-m); font-size:13.5px; font-weight:700; color:var(--demand-ink); text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums}
.geo-rep .lose-vol .no {color:var(--ghost); font-weight:500; font-size:11.5px}
.geo-rep .lose-eng {text-align:right}
/* ============================================================
   NARRATIVE THEMES
   ============================================================ */
.geo-rep .themes {display:flex; flex-direction:column; gap:12px}
.geo-rep .theme {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm);
  display:grid; grid-template-columns:118px 1fr; gap:0; overflow:hidden}
.geo-rep .theme-consensus {background:var(--inset); border-right:1px solid var(--line); padding:18px 16px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; text-align:center}
.geo-rep .tc-n {font-family:var(--font-d); font-weight:600; font-size:38px; line-height:.85; letter-spacing:-.02em}
.geo-rep .tc-n small {font-size:16px; color:var(--faint); font-weight:500}
.geo-rep .tc-l {font-family:var(--font-m); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); font-weight:700}
.geo-rep .tc-dots {display:flex; gap:3px}
.geo-rep .tc-dots .ed {width:8px; height:8px; border-radius:50%; background:var(--c, var(--line-2))}
.geo-rep .tc-dots .ed.off {background:var(--line-2); opacity:.4}
.geo-rep .theme-body {padding:18px 22px; min-width:0}
.geo-rep .theme-top {display:flex; align-items:flex-start; gap:12px}
.geo-rep .theme-claim {flex:1; font-family:var(--font-d); font-size:18px; font-weight:500; line-height:1.35; color:var(--ink); letter-spacing:-.005em}
.geo-rep .theme-pol {flex:none; font-family:var(--font-m); font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:3px 10px; border-radius:var(--r-pill)}
.geo-rep .theme-pol.pos {background:var(--excellent-w); color:var(--excellent)}
.geo-rep .theme-pol.neu {background:var(--inset); color:var(--muted); border:1px solid var(--line)}
.geo-rep .theme-pol.neg {background:var(--poor-w); color:var(--poor)}
.geo-rep .theme-meta {display:flex; align-items:center; flex-wrap:wrap; gap:7px; margin-top:13px}
.geo-rep .theme.structneg {border-color:#f0c2cf; box-shadow:0 0 0 1px #f7d9e0 inset}
.geo-rep .theme.structneg .theme-consensus {background:var(--poor-w); border-right-color:#f0c2cf}
.geo-rep .theme.structneg .tc-n {color:var(--poor)}
.geo-rep .struct-flag {display:inline-flex; align-items:center; gap:6px; font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; color:var(--poor); background:var(--poor-w); border:1px solid #f0c2cf; border-radius:var(--r-pill); padding:3px 10px}
.geo-rep .struct-flag svg {width:12px; height:12px}
.geo-rep .consensus-locked {color:var(--excellent)}
/* ============================================================
   SOURCE MIX
   ============================================================ */
.geo-rep .srcmix-grid {display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start}
.geo-rep .mix-card {background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-sm); padding:24px 26px}
.geo-rep .mix-bar {display:flex; height:46px; border-radius:11px; overflow:hidden; background:var(--inset); margin:6px 0 18px}
.geo-rep .mix-seg {display:flex; align-items:center; justify-content:center; color:#fff; font-weight:700; font-size:13px; min-width:2px}
.geo-rep .mix-seg.owned {background:repeating-linear-gradient(135deg,var(--poor),var(--poor) 7px,#c93d61 7px,#c93d61 14px)}
.geo-rep .mix-seg.social {background:var(--perplexity)}
.geo-rep .mix-seg.earned {background:var(--acc)}
.geo-rep .mix-leg {display:flex; flex-direction:column; gap:11px}
.geo-rep .mix-li {display:grid; grid-template-columns:14px 1fr auto auto; align-items:center; gap:11px}
.geo-rep .mix-li .sw {width:13px; height:13px; border-radius:4px}
.geo-rep .mix-li .sw.owned {background:var(--poor)}
.geo-rep .mix-li .sw.social {background:var(--perplexity)}
.geo-rep .mix-li .sw.earned {background:var(--acc)}
.geo-rep .mix-li .ml {font-weight:600; font-size:13.5px}
.geo-rep .mix-li .ml small {display:block; font-weight:400; font-size:11.5px; color:var(--faint); margin-top:1px}
.geo-rep .mix-li .mp {font-family:var(--font-m); font-weight:700; font-size:15px; font-variant-numeric:tabular-nums}
.geo-rep .mix-li .mc {font-family:var(--font-m); font-size:11.5px; color:var(--faint); text-align:right; width:54px}
.geo-rep .mix-li.zero .ml {color:var(--poor)}
.geo-rep .mix-li.zero .mp {color:var(--poor)}
.geo-rep .owned-callout {display:flex; gap:12px; align-items:flex-start; background:var(--poor-w); border:1px solid #f0c2cf; border-radius:12px; padding:15px 17px; margin-top:18px}
.geo-rep .owned-callout .oc-ico {flex:none; width:30px; height:30px; border-radius:9px; background:#fff; color:var(--poor); display:grid; place-items:center}
.geo-rep .owned-callout .oc-ico svg {width:16px; height:16px}
.geo-rep .owned-callout .oc-t {font-weight:700; font-size:13.5px; color:var(--poor)}
.geo-rep .owned-callout .oc-p {font-size:12.5px; color:var(--muted); margin-top:3px; line-height:1.5}
.geo-rep .owned-callout .oc-p b {color:var(--ink)}
/* target pages list */
.geo-rep .targets {display:flex; flex-direction:column; gap:0}
.geo-rep .target {display:flex; align-items:center; gap:12px; padding:11px 0; border-bottom:1px solid var(--hair)}
.geo-rep .target:last-child {border-bottom:0}
.geo-rep .target .t-rank {font-family:var(--font-m); font-size:11px; color:var(--ghost); width:20px}
.geo-rep .target .t-dom {font-weight:600; font-size:13.5px; flex:1}
.geo-rep .target .t-class {font-family:var(--font-m); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; padding:2px 9px; border-radius:var(--r-pill)}
.geo-rep .t-class.earned {background:var(--acc-wash); color:var(--acc-ink)}
.geo-rep .t-class.social {background:var(--perplexity-w); color:var(--perplexity-ink)}
.geo-rep .t-class.owned {background:var(--poor-w); color:var(--poor)}
/* top sources + citation coverage */
.geo-rep .cite-cov {display:flex; flex-wrap:wrap; gap:8px; margin-top:6px}
.geo-rep .cite-eng {display:inline-flex; align-items:center; gap:7px; padding:6px 12px; border-radius:var(--r-pill); font-size:12px; font-weight:600; border:1px solid var(--line)}
.geo-rep .cite-eng.on {background:var(--surface); color:var(--ink)}
.geo-rep .cite-eng.off {background:var(--inset); color:var(--faint)}
.geo-rep .cite-eng.off .x {color:var(--ghost)}
.geo-rep .cite-eng .ck {display:inline-flex}
.geo-rep .cite-eng svg {width:13px; height:13px}
/* ============================================================
   RECOMMENDATIONS / ACTION PLAN
   ============================================================ */
.geo-rep .plan {display:flex; flex-direction:column; gap:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh); overflow:hidden}
.geo-rep .plan-row {display:grid; grid-template-columns:auto 1fr; gap:22px; padding:26px 28px; border-bottom:1px solid var(--line)}
.geo-rep .plan-row:last-child {border-bottom:0}
.geo-rep .plan-idx {font-family:var(--font-d); font-weight:600; font-size:30px; color:var(--ghost); line-height:1; letter-spacing:-.02em}
.geo-rep .plan-main {min-width:0}
.geo-rep .plan-toprow {display:flex; align-items:center; gap:11px; flex-wrap:wrap; margin-bottom:10px}
.geo-rep .plan-title {font-family:var(--font-d); font-weight:500; font-size:22px; line-height:1.15; letter-spacing:-.01em; flex:1; min-width:200px}
.geo-rep .plan-action {font-size:13.5px; color:var(--muted); line-height:1.55; max-width:74ch; text-wrap:pretty}
.geo-rep .plan-action b {color:var(--ink); font-weight:600}
.geo-rep .plan-foot {display:grid; grid-template-columns:repeat(3,auto) 1fr; gap:14px 26px; align-items:center; margin-top:16px; padding-top:15px; border-top:1px solid var(--hair)}
.geo-rep .pf-cell .pf-k {font-family:var(--font-m); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); font-weight:700; margin-bottom:6px}
.geo-rep .pf-cell .pf-v {font-size:12.5px; font-weight:600; color:var(--ink)}
.geo-rep .pf-targets {display:flex; flex-wrap:wrap; gap:5px}
.geo-rep .pf-domain {font-family:var(--font-m); font-size:11px; color:var(--muted); background:var(--inset); border:1px solid var(--line); border-radius:6px; padding:2px 8px}
.geo-rep .pf-remeasure {display:inline-flex; align-items:center; gap:6px; font-family:var(--font-m); font-size:11px; color:var(--demand-ink); background:var(--demand-wash); border:1px solid var(--demand-line); border-radius:var(--r-pill); padding:4px 11px; justify-self:end}
.geo-rep .pf-remeasure svg {width:12px; height:12px}
/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:1080px) {
  .geo-rep .execband {grid-template-columns:1fr}
  .geo-rep .eb-cell {border-right:0; border-bottom:1px solid var(--hair)}
  .geo-rep .openvis-top {grid-template-columns:1fr}
  .geo-rep .rungs {grid-template-columns:repeat(2,1fr)}
  .geo-rep .h2h-grid {grid-template-columns:1fr}
  .geo-rep .srcmix-grid {grid-template-columns:1fr}
  .geo-rep .finding {grid-template-columns:40px 1fr; }
  .geo-rep .find-side {grid-column:1 / -1; flex-direction:row; align-items:center; justify-content:flex-start; text-align:left; margin-top:6px}
  .geo-rep .act-title {font-size:30px}
}
@media(max-width:640px) {
  .geo-rep .rungs {grid-template-columns:1fr}
  .geo-rep .heatmap {grid-template-columns:1fr; }
  .geo-rep .heat-col-h {display:none}
  .geo-rep .plan-foot {grid-template-columns:1fr}
  .geo-rep .theme {grid-template-columns:1fr}
  .geo-rep .theme-consensus {flex-direction:row; border-right:0; border-bottom:1px solid var(--line)}
}

/* v2 topbar chrome bits not already defined */
.geo-rep .topbar .tb-mark{width:26px;height:26px;border-radius:7px;flex:none}
.geo-rep .topbar .tb-sep{color:var(--ghost)}
.geo-rep .topbar .tb-spacer{flex:1}
.geo-rep .topbar{position:sticky;top:64px;z-index:30;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s}
.geo-rep .topbar-in{display:flex;align-items:center;gap:11px;max-width:var(--maxw,1180px);margin:0 auto;padding:11px 24px}

/* ============================================================
   v3 web report sections — Observations · Topic spread · Citations · Recommendations
   (web-native cards, PDF-aligned content). Scoped under .geo-rep.
   ============================================================ */

/* ---------- Section 04: Observations ---------- */
.geo-rep .wo-lead{margin:0 0 22px}
.geo-rep .wo-narr{font-family:var(--font-d);font-size:18px;line-height:1.5;color:var(--ink);margin:0 0 16px}
.geo-rep .wo-heads{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.geo-rep .wo-head{border:1px solid var(--line);border-left-width:3px;border-radius:var(--r-sm);padding:13px 16px;font-size:13.5px;line-height:1.45;color:var(--ink);background:var(--surface);box-shadow:var(--sh-sm)}
.geo-rep .wo-head-w{border-left-color:var(--poor);background:var(--poor-w)}
.geo-rep .wo-head-s{border-left-color:var(--excellent);background:var(--excellent-w)}
.geo-rep .wo-hk{display:block;font-family:var(--font-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.geo-rep .wo-lab{font-family:var(--font-m);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--acc-ink);margin:30px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.geo-rep .wo-lab-s{color:#2f6b43}
.geo-rep .wo-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.geo-rep .wo-card{border:1px solid var(--line);border-radius:var(--r-sm);padding:17px 19px;background:var(--surface);box-shadow:var(--sh-sm);transition:box-shadow .18s,transform .18s}
.geo-rep .wo-card:hover{box-shadow:var(--sh);transform:translateY(-1px)}
.geo-rep .wo-w{border-left:3px solid var(--needs)}
.geo-rep .wo-s{border-left:3px solid var(--excellent)}
.geo-rep .wo-top{display:flex;align-items:center;gap:8px;margin-bottom:9px;flex-wrap:wrap}
.geo-rep .wo-tier{font-family:var(--font-m);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:5px;white-space:nowrap}
.geo-rep .wo-h{background:var(--poor-w);color:var(--poor)}
.geo-rep .wo-m{background:var(--fair-w);color:#9a7b3e}
.geo-rep .wo-l{background:var(--inset);color:var(--muted)}
.geo-rep .wo-sh{background:var(--excellent-w);color:#2f6b43}
.geo-rep .wo-sm{background:var(--good-w);color:#4a7a2e}
.geo-rep .wo-sl{background:var(--inset);color:var(--muted)}
.geo-rep .wo-cat{font-family:var(--font-u);font-weight:700;font-size:11.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink)}
.geo-rep .wo-meta{font-family:var(--font-m);font-size:10.5px;color:var(--faint)}
.geo-rep .wo-title{font-family:var(--font-d);font-size:17px;line-height:1.3;color:var(--ink);margin-bottom:7px}
.geo-rep .wo-exp{font-size:13.5px;line-height:1.5;color:var(--muted);margin-bottom:11px}
.geo-rep .wo-ev{font-family:var(--font-d);font-style:italic;font-size:14px;line-height:1.45;color:var(--ink);border-left:2px solid var(--acc-wash);padding:2px 0 2px 12px;margin:0}
.geo-rep .wo-ev cite{display:block;font-style:normal;font-family:var(--font-m);font-size:10.5px;color:var(--faint);margin-top:5px}
.geo-rep .wo-peers{margin-top:11px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.geo-rep .wo-pk{font-family:var(--font-m);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.geo-rep .wo-peer{display:inline-block;font-family:var(--font-m);font-size:10.5px;color:var(--ink);background:var(--inset);border-radius:var(--r-pill);padding:2px 9px}
.geo-rep .wo-caveat{margin-top:10px;font-size:11.5px;color:var(--acc-ink);font-style:italic}
.geo-rep .wo-engines{margin-top:26px}
.geo-rep .wo-er{font-size:13.5px;line-height:1.5;color:var(--ink);margin:0 0 7px}

/* ---------- Section 05: Topic spread ---------- */
.geo-rep .wt-colhead,.geo-rep .wt-row{display:grid;grid-template-columns:1.5fr 1.2fr 1.3fr 1.4fr;gap:18px;align-items:center}
.geo-rep .wt-colhead{font-family:var(--font-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);padding:0 16px 10px;border-bottom:1px solid var(--line)}
.geo-rep .wt-table{border:1px solid var(--line);border-top:0;border-radius:0 0 var(--r-sm) var(--r-sm);overflow:hidden;background:var(--surface)}
.geo-rep .wt-row{padding:13px 16px;border-top:1px solid var(--hair);position:relative}
.geo-rep .wt-row:first-child{border-top:0}
.geo-rep .wt-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--excellent)}
.geo-rep .wt-row.trail::before{background:var(--fair)}
.geo-rep .wt-name{font-family:var(--font-d);font-size:15px;color:var(--ink);margin-bottom:4px}
.geo-rep .wt-members{font-family:var(--font-m);font-size:10.5px;color:var(--faint);margin-bottom:5px;line-height:1.35}
.geo-rep .wt-meta{font-family:var(--font-m);font-size:11px;color:var(--muted);display:flex;align-items:center;gap:7px}
.geo-rep .wt-dem{font-size:9px;letter-spacing:.05em;text-transform:uppercase;padding:2px 6px;border-radius:4px}
.geo-rep .wt-h{background:var(--acc-wash);color:var(--acc-ink)} .geo-rep .wt-m{background:var(--inset);color:var(--muted)} .geo-rep .wt-l{background:var(--bg-2);color:var(--faint)}
.geo-rep .wt-share{display:flex;align-items:center;gap:9px}
.geo-rep .wt-sbar{flex:1;height:8px;border-radius:4px;background:#e4d8bf;overflow:hidden}
.geo-rep .wt-sbar i{display:block;height:100%;background:var(--acc);border-radius:4px}
.geo-rep .wt-pc{font-family:var(--font-u);font-weight:700;font-size:13px}
.geo-rep .wt-pc.lead{color:#2f6b43} .geo-rep .wt-pc.trail{color:var(--needs)}
.geo-rep .wt-uncontested{font-size:11.5px;color:var(--muted);font-style:italic}
.geo-rep .wt-rivals{display:flex;flex-wrap:wrap;gap:5px}
.geo-rep .wt-rchip{font-family:var(--font-m);font-size:10.5px;color:var(--ink);background:var(--inset);border-radius:var(--r-pill);padding:2px 8px;display:inline-flex;gap:5px}
.geo-rep .wt-rchip b{color:var(--muted)}
.geo-rep .wt-none{font-size:11px;color:var(--faint);font-style:italic}
.geo-rep .wt-key{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--muted)}
.geo-rep .wt-key .k{display:inline-flex;align-items:center;gap:6px}
.geo-rep .wt-key .k::before{content:"";width:9px;height:9px;border-radius:2px}
.geo-rep .wt-key .pos::before{background:var(--excellent)} .geo-rep .wt-key .neu::before{background:var(--ghost)} .geo-rep .wt-key .neg::before{background:var(--poor)}

/* ---------- Section 06: Citations ---------- */
.geo-rep .wc-mixcard{border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;background:var(--surface);box-shadow:var(--sh-sm);margin-bottom:22px}
.geo-rep .wc-k{font-family:var(--font-m);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.geo-rep .wc-mixbar{display:flex;height:22px;border-radius:5px;overflow:hidden;margin-bottom:12px}
.geo-rep .wc-mixbar i{display:flex;align-items:center;justify-content:center;height:100%;min-width:0;color:#fff;font-family:var(--font-m);font-style:italic;font-weight:600;font-size:11px;letter-spacing:.01em}

/* ---------- Section 02 — How to read + Definitions (front matter) ---------- */
.geo-rep .wh-intro{font-family:var(--font-d);font-size:19px;line-height:1.5;color:var(--ink);margin:0 0 22px}
.geo-rep .wh-intro b{font-weight:600}
.geo-rep .wh-cards,.geo-rep .wh-drivers{display:grid;gap:16px}
.geo-rep .wh-cards{grid-template-columns:1fr 1fr}
.geo-rep .wh-drivers{grid-template-columns:repeat(4,1fr)}
.geo-rep .wh-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:20px 22px;box-shadow:var(--sh-sm)}
.geo-rep .wh-card .wh-k{font-family:var(--font-m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc-ink);margin-bottom:10px}
.geo-rep .wh-card p{font-family:var(--font-d);font-size:15px;line-height:1.55;color:var(--muted);margin:0}
.geo-rep .wh-card p b{font-weight:600;color:var(--ink)}
.geo-rep .wh-hd{font-family:var(--font-m);font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:var(--acc-wash);color:var(--acc-ink);border-radius:5px;padding:2px 7px;white-space:nowrap}
.geo-rep .wh-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.geo-rep .wh-note{font-family:var(--font-d);font-style:italic;color:var(--faint);font-size:14px;line-height:1.5;margin:0}
.geo-rep .wh-divider{display:flex;align-items:center;gap:14px;margin:34px 0 16px}
.geo-rep .wh-divider span{font-family:var(--font-m);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--acc-ink);white-space:nowrap}
.geo-rep .wh-divider::after{content:"";flex:1;height:1px;background:var(--line-2)}
.geo-rep .wh-lead{font-family:var(--font-d);font-size:16px;line-height:1.55;color:var(--muted);margin:0 0 18px}
.geo-rep .wh-lead b{font-weight:600;color:var(--ink)}
.geo-rep .wh-defs{display:grid;grid-template-columns:1fr 1fr;gap:0 48px}
.geo-rep .wh-def{padding:16px 0;border-top:1px solid var(--hair)}
.geo-rep .wh-dt{font-family:var(--font-d);font-size:18px;font-weight:600;color:var(--ink);display:flex;align-items:baseline;gap:9px}
.geo-rep .wh-abbr{font-family:var(--font-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-ink);background:var(--acc-wash);border-radius:5px;padding:2px 7px}
.geo-rep .wh-dd{font-size:14px;color:var(--muted);margin-top:7px;line-height:1.55}
@media (max-width:820px){.geo-rep .wh-cards,.geo-rep .wh-drivers,.geo-rep .wh-defs{grid-template-columns:1fr}}
.geo-rep .wc-mixkey{display:flex;gap:22px;flex-wrap:wrap;font-size:12.5px;color:var(--ink)}
.geo-rep .wc-mixkey span{display:inline-flex;align-items:center;gap:7px}
.geo-rep .wc-mixkey i{width:11px;height:11px;border-radius:3px}
.geo-rep .wc-note{font-size:13px;line-height:1.55;color:var(--muted);margin:13px 0 0;max-width:80ch}
.geo-rep .wc-tlabel{font-family:var(--font-m);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-bottom:10px}
.geo-rep .wc-table{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface)}
.geo-rep .wc-table th{font-family:var(--font-m);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:500;text-align:left;padding:9px 12px;border-bottom:1px solid var(--line)}
.geo-rep .wc-table td{padding:8px 12px;border-top:1px solid var(--hair);font-size:13px;color:var(--ink)}
.geo-rep .wc-rk{font-family:var(--font-m);color:var(--faint);width:34px}
.geo-rep .wc-src{font-family:var(--font-m);font-size:12.5px}
.geo-rep .wc-type{font-family:var(--font-m);font-size:9px;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:4px}
.geo-rep .wc-sub{font-family:var(--font-m);font-size:8.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--acc-ink);background:var(--acc-wash);border-radius:4px;padding:1px 5px;margin-left:5px;vertical-align:1px}
.geo-rep .wc-own{background:#eadfcb;color:#8c6a3a} .geo-rep .wc-soc{background:var(--inset);color:#7a7363} .geo-rep .wc-ear{background:var(--bg-2);color:var(--faint)}
.geo-rep .wc-thb,.geo-rep .wc-brand{text-align:center;width:64px}
.geo-rep .wc-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ghost)}
.geo-rep .wc-dot.on{background:var(--excellent)}
.geo-rep .wc-cites{font-family:var(--font-u);font-weight:700;text-align:right;width:64px}
.geo-rep .wc-legend{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:12px;color:var(--muted)}

/* ---------- Section 07: Recommendations ---------- */
.geo-rep .wr-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.geo-rep .wr-card{border:1px solid var(--line);border-radius:var(--r-sm);padding:17px 19px;background:var(--surface);box-shadow:var(--sh-sm);transition:box-shadow .18s,transform .18s}
.geo-rep .wr-card:hover{box-shadow:var(--sh);transform:translateY(-1px)}
.geo-rep .wr-close{border-left:3px solid var(--acc)}
.geo-rep .wr-protect{border-left:3px solid var(--excellent)}
.geo-rep .wr-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.geo-rep .wr-prio{font-family:var(--font-m);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:5px;white-space:nowrap}
.geo-rep .wr-h{background:var(--poor-w);color:var(--poor)} .geo-rep .wr-m{background:var(--fair-w);color:#9a7b3e} .geo-rep .wr-l{background:var(--inset);color:var(--muted)}
.geo-rep .wr-lever{font-family:var(--font-u);font-weight:700;font-size:11.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--acc-ink)}
.geo-rep .wr-pc{font-family:var(--font-m);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.geo-rep .wr-route{font-family:var(--font-m);font-size:9.5px;text-transform:uppercase;padding:2px 7px;border-radius:4px;background:var(--acc-wash);color:var(--acc-ink)}
.geo-rep .wr-closes{font-family:var(--font-m);font-size:10.5px;color:var(--faint);white-space:nowrap}
.geo-rep .wr-title{font-family:var(--font-d);font-size:17px;line-height:1.3;color:var(--ink);margin-bottom:8px}
.geo-rep .wr-action{font-size:13.5px;line-height:1.5;color:var(--ink);margin-bottom:10px}
.geo-rep .wr-target{font-family:var(--font-m);font-size:12px;color:var(--muted);margin-bottom:9px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.geo-rep .wr-tk,.geo-rep .wr-wk{font-family:var(--font-m);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.geo-rep .wr-rationale{font-family:var(--font-d);font-style:italic;font-size:13px;line-height:1.45;color:var(--muted);margin-bottom:9px}
.geo-rep .wr-need{font-size:12px;color:var(--acc-ink);margin-bottom:7px}
.geo-rep .wr-watch{font-size:12px;color:var(--muted);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.geo-rep .wr-lab{font-family:var(--font-m);font-size:11px;letter-spacing:.16em;text-transform:uppercase;margin:28px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.geo-rep .wr-lab-oos{color:var(--needs)} .geo-rep .wr-lab-dn{color:var(--poor)}
.geo-rep .wr-oos{display:flex;align-items:baseline;gap:14px;font-size:13.5px;line-height:1.5;color:var(--ink);padding:11px 2px;border-bottom:1px solid var(--hair)}
.geo-rep .wr-oos-n{font-family:var(--font-m);font-size:10.5px;color:var(--faint);white-space:nowrap}
.geo-rep .wr-donot{margin:0;padding-left:22px}
.geo-rep .wr-donot li{font-size:13.5px;line-height:1.55;color:var(--ink);margin-bottom:6px}

/* responsive: stack the 2-col grids on narrow screens */
/* ---------- By audience — stakeholder table (web twin of the PDF "Four audiences, one brand") ---------- */
.geo-rep .x-stable{border:1px solid var(--line); border-radius:12px; background:var(--surface); overflow-x:auto}
.geo-rep .x-stable table{border-collapse:collapse; width:100%; min-width:680px; table-layout:fixed}
.geo-rep .x-stable th, .geo-rep .x-stable td{padding:12px 13px; vertical-align:top; font-size:13.5px; text-align:left}
.geo-rep .x-stable thead th{font-family:var(--font-m); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); font-weight:500; border-bottom:1px solid var(--line)}
.geo-rep .x-stable th:nth-child(1){width:15%}.geo-rep .x-stable th:nth-child(2){width:7%}.geo-rep .x-stable th:nth-child(3){width:8%}.geo-rep .x-stable th:nth-child(4){width:8%}
.geo-rep .x-stable th:nth-child(5){width:13%}.geo-rep .x-stable th:nth-child(6){width:13%}.geo-rep .x-stable th:nth-child(7){width:24%}.geo-rep .x-stable th:nth-child(8){width:12%}
.geo-rep .x-stable tbody tr{border-top:1px solid var(--hair)}
.geo-rep .x-aud{font-family:var(--font-d); font-weight:600; font-size:15px; line-height:1.25}
.geo-rep .x-wt{font-family:var(--font-m); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); margin-top:3px}
.geo-rep .x-st-ovs{font-weight:800; font-size:26px; line-height:1}
.geo-rep .x-st-m{font-weight:700; font-size:16px}
.geo-rep .x-mc{font-family:var(--font-m); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); margin-top:2px}
.geo-rep .x-smini{display:block; width:64px; height:7px; border-radius:3px; overflow:hidden}
.geo-rep .x-smini svg{display:block; width:100%; height:100%}
.geo-rep .x-snum{font-family:var(--font-m); font-size:11px; color:var(--muted); margin-top:6px}
.geo-rep .x-chip{display:inline-block; font-family:var(--font-m); font-size:11px; color:var(--muted); border:1px solid var(--line); border-radius:10px; padding:2px 8px; margin:0 4px 4px 0}
.geo-rep .x-chip-none{font-family:var(--font-m); font-size:12px; color:var(--faint)}
.geo-rep .x-gap{font-size:13px; line-height:1.5; color:var(--muted)}
.geo-rep .x-gap-dot{display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:7px; vertical-align:middle}
.geo-rep .x-gap-h{background:var(--poor)} .geo-rep .x-gap-m{background:var(--fair)}
.geo-rep .x-tag{display:inline-block; font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; font-weight:600; padding:3px 9px; border-radius:5px; white-space:nowrap}
.geo-rep .x-tag-s{background:var(--excellent-w); color:#2f6b43}
.geo-rep .x-tag-t{background:var(--fair-w); color:#9a7b3e}
.geo-rep .x-tag-w{background:var(--poor-w); color:var(--poor)}
.geo-rep .x-row-nc td{opacity:.66}
.geo-rep .x-row-nc .x-gap{font-style:italic; color:var(--muted)}
.geo-rep .x-footnote{font-family:var(--font-d); font-size:13px; line-height:1.5; color:var(--muted); margin-top:14px}
.geo-rep .x-footnote b{color:var(--ink); font-weight:600}

@media (max-width:760px){
  .geo-rep .wo-grid,.geo-rep .wr-grid,.geo-rep .wo-heads{grid-template-columns:1fr}
  .geo-rep .wt-colhead{display:none}
  .geo-rep .wt-row{grid-template-columns:1fr;gap:8px}
}
