/* ════════════════════════════════════════════════════════════════════
   AEO Owl · css/app.css
   ────────────────────────────────────────────────────────────────────
   Single consolidated stylesheet for every signed-in dashboard page.
   Layered: tokens → base → components → page-specific.

   Built from (in order):
     css/overview.css   — tokens, base, all dashboard shell components
     css/actions.css    — Action Plan page (.ap-*, .play-*)
     css/engines.css    — Engine Performance (.tabs, .etable, .cov-*, .srctable, .smix)
     css/competitors.css — Competitors (.cmp-*, .lb-*, .rmx-*, .sov-*)
     css/mentions.css   — Mentions inbox (.mn-*, .mi-*, .mitem)
     css/trends.css     — Trends (.tr-*, .wl-*, .trm)

   NOT in this bundle (intentionally separate design systems):
     css/landing.css     — public marketing pages (different token names,
                            dark hero, --accent instead of --lime)
     css/owl-report.css  — Owl Report PDF document inside the iframe
                            (print-first, lighter palette, --card/--panel/--hair)
     css/print-report.css — @media print overrides across multiple pages
     css/app-refresh.css  — app.html Platform Preview form chrome only

   Loaded by: every dashboard page except the report iframe, instead of
   the previous "overview.css + page-specific.css" two-file pattern.
   ════════════════════════════════════════════════════════════════════ */

/* ════════════════════════════════════════════════════════════════════
   1. TOKENS + BASE + COMPONENTS (from overview.css)
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL OVERVIEW — slimmed dashboard ("Visibility Overview")
   Subset of dashboard.html's component CSS (verbatim values) +
   the new Insights summary cards. Ported 1:1 so wiring into the
   real dashboard.html is a structural swap, not a restyle.
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --ink:#0a0a0a;--ink2:#1a1a1a;--ink3:#666;--ink4:#999;--ink5:#bbb;
  --paper:#f7f6f2;--paper2:#efede8;--paper3:#e4e1d9;--paper4:#d6d2c7;
  --lime:#c8f135;--lime2:#b5da2a;--lime-dim:#a0c020;
  --good:#22c55e;--good-soft:#dcfce7;--good-deep:#166534;
  --warn:#f59e0b;--warn-soft:#fef3c7;--warn-deep:#854d0e;
  --bad:#ef4444;--bad-soft:#fee2e2;--bad-deep:#991b1b;
  --blue:#3b82f6;--purple:#8b5cf6;
  --border:rgba(0,0,0,0.08);
  --mono:'DM Mono',monospace;--sans:'Syne',sans-serif;
  /* ── Type system v2 (2026-06-19) · 3 roles, each used only at weights it
     actually ships, so the browser never synthesises (faux-bolds) a weight:
       --font-display  Syne     DISPLAY  page titles + big score numbers (>=20px)
       --font-ui       Manrope  PRODUCT  section/card headers, prose, verdicts
       --font-mono     DM Mono  DATA     labels, chips, metrics, small numbers
     Legacy aliases kept (--sans=display, --mono=data). --prose now resolves to
     the UI font (was Inter; Manrope supersedes it). Global faux-bold guard is
     font-synthesis:style on `body` — DM Mono only ships 300/400/500, so any
     heavier ask falls back to the real 500 face instead of a smeared fake. */
  --font-display:'Syne',sans-serif;
  --font-ui:'Manrope',system-ui,-apple-system,sans-serif;
  --font-mono:'DM Mono',ui-monospace,monospace;
  --prose:var(--font-ui);
  --radius:14px;
}

/* ════════════════════════════════════════════════════════════════════
   DESIGN SYSTEM v2 — opt-in tokens (added 2026-06-09)
   ────────────────────────────────────────────────────────────────────
   The existing token block above evolved organically and accumulated
   25+ distinct font-sizes and 11 distinct radii. These v2 tokens
   define the *system* — every new component should pull from this
   set, and the existing component CSS gets retro-fitted opportunistically.

   Type scale (7 values — was 25+):
     --text-xs   10px   labels, eyebrows, badges
     --text-sm   12px   meta, captions, table cells
     --text-base 13px   body
     --text-md   15px   card titles
     --text-lg   18px   subsection headers
     --text-xl   24px   page H1 in dashboard
     --text-2xl  34px   hero numbers, marketing H1

   Radius scale (4 values — was 11):
     --radius-sm   4px    badges, tiny chips
     --radius-md   8px    buttons, inputs, small cards
     --radius-lg   12px   cards, panels
     --radius-pill 999px  pills

   The legacy --radius:14px above is preserved for backwards-compat
   on the few large cards that use it. New work uses --radius-lg.

   Intentionally-dark CTAs:
     Use the .is-dark-cta (white text) or .is-dark-cta-lime (lime
     text) utility classes below. Do NOT write background:var(--ink)
     on new components — see [[feedback-dark-mode-cta-token-trap]]
     and the comment on those utility classes for why.

   Focus visibility:
     A global :focus-visible rule lower in this file paints a 2px
     lime outline on every keyboard-focused element. Skip with
     .no-focus-ring on elements that have their own treatment.
   ════════════════════════════════════════════════════════════════════ */
:root{
  /* Type scale */
  --text-xs:10px;
  --text-sm:12px;
  --text-base:13px;
  --text-md:15px;
  --text-lg:18px;
  --text-xl:24px;
  --text-2xl:34px;
  /* Radius scale */
  --radius-sm:4px;
  --radius-md:8px;
  --radius-lg:12px;
  --radius-pill:999px;
}

/* ─── Intentionally-dark CTA utility ──────────────────────────────
   The trap this solves: `background:var(--ink); color:#fff` looks
   intentionally-dark in light mode, but --ink flips to near-white
   in dark mode (see theme.js dark token overrides). The result is
   white text on near-white background — invisible.

   Two flavors. Both pin to literal hex so they DON'T flip:
     .is-dark-cta       dark surface, white text
     .is-dark-cta-lime  dark surface, lime text (the "AEO Owl accent")
   In dark mode the surface lifts one step (#2a2a2a) so the CTA still
   reads as a distinct element vs the page background.

   Migrate offenders by adding the class. Do NOT delete the legacy
   theme.js dark-CTA selector list yet — these utilities coexist with
   that list during the gradual migration. */
.is-dark-cta{
  background:#0a0a0a;color:#fff;border-color:#0a0a0a;
}
.is-dark-cta:hover{background:#000}
html[data-theme="dark"] .is-dark-cta{
  background:#2a2a2a;color:#fff;border-color:#2a2a2a;
}
html[data-theme="dark"] .is-dark-cta:hover{background:#3a3a3a}

.is-dark-cta-lime{
  background:#0a0a0a;color:var(--lime);border-color:#0a0a0a;
}
.is-dark-cta-lime:hover{background:#000;color:var(--lime)}
html[data-theme="dark"] .is-dark-cta-lime{
  background:#2a2a2a;color:var(--lime);border-color:#2a2a2a;
}
html[data-theme="dark"] .is-dark-cta-lime:hover{background:#3a3a3a;color:var(--lime)}

/* ─── Global keyboard-focus visibility ────────────────────────────
   :focus-visible only triggers for keyboard navigation, not mouse
   clicks (browsers handle the distinction). So this adds zero
   visual noise for mouse users while giving keyboard users a clear
   ring on every interactive element. Lime accent stands out on
   both light and dark surfaces — and lime doesn't flip in dark
   mode, so no theme-specific override needed.

   `outline-offset: 2px` keeps the ring outside the element so it
   doesn't clash with internal border-radius. `border-radius: inherit`
   makes the ring follow the element's shape (rounded buttons get
   a rounded focus ring instead of a rectangular one).

   Add .no-focus-ring on any element that already provides a clear
   focus indicator (e.g. inputs with a colored border on focus). */
:focus-visible{
  outline:2px solid var(--lime);
  outline-offset:2px;
  border-radius:inherit;
}
.no-focus-ring:focus-visible{outline:none}
body{font-family:var(--mono);background:var(--paper);color:var(--ink);font-size:13.5px;line-height:1.6;-webkit-font-smoothing:antialiased;font-synthesis:style;display:flex;align-items:stretch}
button{font-family:inherit}
a{color:inherit;text-decoration:none}
.dash{flex:1;min-width:0;padding:0 1.5rem 4rem;max-width:1320px}

/* ──────── SIDEBAR (verbatim) ──────── */
#dash-aside{display:flex;width:240px;flex-shrink:0;background:var(--surface,#fff);border-right:1px solid var(--border);flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;font-family:var(--mono)}
.aside-head{padding:1.25rem 1.25rem 1rem;border-bottom:1px solid var(--border)}
.brand-block{display:flex;align-items:center;gap:10px}
.brand-mark{width:32px;height:32px;border-radius:7px;background:var(--ink);color:var(--lime);display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:800;font-size:14px;overflow:hidden}
.brand-mark img{width:100%;height:100%;object-fit:cover}
.brand-name{font-family:var(--sans);font-size:14px;font-weight:700}
.brand-tag{font-size:10px;color:var(--ink3);letter-spacing:0.08em;text-transform:uppercase}
.aside-bs-wrap{position:relative}
.aside-bswitch{padding:0.875rem 1rem;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:9px;cursor:pointer;background:var(--paper);transition:background .12s}
.aside-bswitch:hover{background:var(--paper2)}
.aside-bdot{width:10px;height:10px;border-radius:50%;background:var(--blue);flex-shrink:0}
.aside-bname{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:-0.005em;flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.aside-bname small{font-family:var(--mono);font-size:10px;font-weight:400;color:var(--ink3)}
.aside-bcaret{color:var(--ink3);font-size:14px}
/* ── Brand-switcher anti-flash guard ───────────────────────────────────
   The picker label stays hidden until brand-switcher.js confirms the REAL
   active brand from the database and sets #brand-switcher.bsw-ready. This
   makes it structurally impossible for any static placeholder left in the
   markup (e.g. a Claude-Design sample brand like "Rain Instant Pay") to
   flash before the async brands fetch resolves. brand-switcher.js sets
   .bsw-ready on EVERY exit path (success / no-brands / error) so they can
   never get stuck hidden. The DOT is hidden too: its CSS default is
   background:var(--blue), which otherwise flashes blue before JS paints
   the real brand color. Caret stays visible so the picker keeps its shape;
   dot + name appear together once the real brand is known. Belt-and-
   suspenders with blanked markup — see feedback: prevent-prototype-flash. */
#brand-switcher:not(.bsw-ready) .aside-bname,
#brand-switcher:not(.bsw-ready) .aside-bdot{visibility:hidden}
.aside-nav{flex:1;padding:0.75rem 0.625rem;overflow-y:auto}
.aside-sect{margin-bottom:0.875rem}
.aside-sect-h{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--ink3);text-transform:uppercase;letter-spacing:0.12em;padding:0.5rem 0.5rem 0.375rem}
.aside-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:6px;font-family:var(--mono);font-size:12px;font-weight:500;color:var(--ink2);cursor:pointer;transition:all .12s;letter-spacing:-0.005em;margin-bottom:1px;border:none;background:transparent;width:100%;text-align:left}
.aside-item:hover{background:var(--paper2);color:var(--ink)}
.aside-item.active{background:var(--ink);color:#fff;font-weight:600}
.aside-item i{font-size:14px;flex-shrink:0;width:14px}
.aside-item .badge{margin-left:auto;font-family:var(--mono);font-size:9px;padding:2px 6px;border-radius:3px;background:var(--bad);color:#fff;font-weight:700;letter-spacing:0.04em}
.aside-item.active .badge{background:var(--lime);color:var(--ink)}
.aside-foot{padding:0.875rem 1rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;background:var(--paper)}
.user-avatar-sm{width:32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:800;font-size:13px;cursor:pointer;flex-shrink:0}
.aside-foot-body{flex:1;min-width:0}
.aside-foot-name{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:-0.005em;color:var(--ink)}
.aside-foot-meta{font-family:var(--mono);font-size:10px;color:var(--ink3);margin-top:1px}

/* ──────── HERO (verbatim) ──────── */
.crumbs{font-family:var(--mono);font-size:10.5px;color:var(--ink3);letter-spacing:0.08em;text-transform:uppercase;font-weight:700;padding:1.5rem 0 0.625rem;display:flex;align-items:center;gap:8px}
.crumbs .sep{color:var(--ink5)}
.crumbs a{color:var(--ink3)}
.hero{padding:0 0 1.5rem;display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:1.5rem}
.hero-left{display:flex;align-items:center;gap:1rem}
.hero-logo{width:54px;height:54px;border-radius:12px;background:var(--paper3);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:800;font-size:22px;letter-spacing:-0.005em;flex-shrink:0;transition:background .15s}
.hero-body h1{font-family:var(--sans);font-size:30px;font-weight:800;letter-spacing:-0.022em;line-height:1.05;margin-bottom:4px}
.hero-meta{font-family:var(--mono);font-size:12px;color:var(--ink3);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hero-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--ink4)}
.hero-meta a{color:var(--ink3);text-decoration:underline;text-decoration-color:var(--ink5);text-underline-offset:3px}
/* Was color:var(--ink2). Bumped to var(--ink) so the bolded values in
   the meta line (counts like "10 queries · 5 competitors · 9 engines",
   timestamps, etc.) read as the actual data and the surrounding ink3
   text reads as the connecting labels. Clearer hierarchy. */
.hero-meta strong{color:var(--ink);font-weight:600}
.hero-actions{display:flex;gap:8px;align-items:center}
.btn{padding:9px 14px;border-radius:7px;border:1px solid var(--border);background:var(--surface,#fff);font-family:var(--mono);font-size:11.5px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--ink2);transition:all .15s}
.btn:hover{border-color:var(--ink3);background:var(--paper2)}
.btn i{font-size:14px}
.btn.lime{background:var(--lime);color:var(--ink);border-color:var(--lime);font-weight:700}
.btn.lime:hover{background:var(--lime2)}

/* ──────── VERDICT (verbatim) ──────── */
.verdict{background:var(--ink);color:#fff;border-radius:var(--radius);padding:2rem 2.25rem;margin-bottom:1.5rem;position:relative;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;gap:2rem}
.verdict::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,0.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}
.v-inner{position:relative;z-index:1}
.v-tag{font-family:var(--mono);font-size:10px;letter-spacing:0.12em;color:var(--lime);text-transform:uppercase;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:10px}
.v-tag .v-dotpulse{width:7px;height:7px;border-radius:50%;background:var(--lime)}
.v-row{display:flex;align-items:flex-end;gap:18px;margin-bottom:14px}
.v-big{font-family:var(--sans);font-size:80px;font-weight:800;letter-spacing:-0.035em;line-height:0.9}
.v-meta{padding-bottom:10px;display:flex;flex-direction:column;gap:6px}
.v-delta{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:5px;background:rgba(34,197,94,0.15);color:#86efac;font-family:var(--mono);font-size:11.5px;font-weight:700;align-self:flex-start}
.v-label{font-family:var(--mono);font-size:11px;color:rgba(255,255,255,0.5);letter-spacing:0.04em;text-transform:uppercase}
.v-line{font-family:var(--prose);font-size:14px;color:rgba(255,255,255,0.82);line-height:1.6;text-wrap:pretty}
.v-line strong{color:#fff}
.v-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:1rem}
.v-pill{font-family:var(--mono);font-size:10.5px;font-weight:600;padding:5px 9px;border-radius:5px;background:rgba(255,255,255,0.07);color:rgba(255,255,255,0.82);letter-spacing:0.02em;display:inline-flex;align-items:center;gap:5px}
.v-pill i{font-size:11px}
.v-pill.good{color:#86efac;background:rgba(34,197,94,0.12)}
.v-pill.bad{color:#fca5a5;background:rgba(239,68,68,0.12)}
.v-pill.warn{color:#fcd34d;background:rgba(245,158,11,0.12)}

/* 4-pillar mini-row beneath the verdict pills — shows each pillar's
   score color-coded by band so a customer reads the diagnostic
   decomposition at a glance from the dashboard hero. Links to the
   Owl Report scorecard for the full story. */
.v-pillars{display:flex;flex-wrap:wrap;gap:7px;margin-top:0.875rem;padding-top:0.875rem;border-top:1px solid rgba(255,255,255,0.08)}
.v-pillars:empty{display:none}
/* Was color:rgba(255,255,255,0.72) — read as one tier weaker than the
   .v-pill row above (0.82). Bumped to match .v-pill weight; the chips
   still read as secondary via smaller font-size (10px vs pill's 10.5px)
   and the visual position below the pills. */
.v-pillar-mini{font-family:var(--mono);font-size:10px;font-weight:600;padding:5px 9px;border-radius:5px;background:rgba(255,255,255,0.06);color:rgba(255,255,255,0.82);letter-spacing:0.04em;text-transform:uppercase;display:inline-flex;align-items:center;gap:6px}
.v-pillar-mini i{font-size:11px;opacity:0.85}
.v-pillar-mini strong{font-family:var(--sans);font-size:13px;font-weight:800;letter-spacing:-0.01em;text-transform:none}
.v-pillar-mini.s-strong    { color:#86efac; background:rgba(34,197,94,0.13) }
.v-pillar-mini.s-developing{ color:#fcd34d; background:rgba(245,158,11,0.13) }
.v-pillar-mini.s-weak      { color:#fca5a5; background:rgba(239,68,68,0.13) }
.v-pillar-mini.s-critical  { color:#fca5a5; background:rgba(153,27,27,0.20) }
.v-pillar-mini.s-pending   { color:rgba(255,255,255,0.5); background:rgba(255,255,255,0.04) }
.v-pillar-mini-clickable { cursor: pointer; transition: filter .12s, background .12s; }
.v-pillar-mini-clickable:hover { filter: brightness(1.1); }
.v-pillar-mini-clickable:focus-visible { outline: 2px solid var(--lime); outline-offset: 2px; }
.v-pillar-mini .vpm-info-i { font-size:11px; opacity:0.55; margin-left:2px; }
.v-pillar-mini-clickable:hover .vpm-info-i { opacity:1; }
.v-breakdown{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:center}
.v-stat{background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06);border-radius:10px;padding:0.875rem 1rem}
.v-stat-label{font-family:var(--mono);font-size:9.5px;color:rgba(255,255,255,0.55);letter-spacing:0.08em;text-transform:uppercase;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:5px}
.v-stat-row{display:flex;align-items:baseline;gap:8px}
.v-stat-val{font-family:var(--sans);font-size:24px;font-weight:800;letter-spacing:-0.022em;color:#fff;line-height:1}
.v-stat-d{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px}
.v-stat-d.up{color:#86efac;background:rgba(34,197,94,0.15)}
.v-stat-d.dn{color:#fca5a5;background:rgba(239,68,68,0.15)}
.v-stat-d.flat{color:rgba(255,255,255,0.6);background:rgba(255,255,255,0.06)}
.v-stat-sub{font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,0.55);margin-top:4px}

/* ──────── BRIEFING (verbatim) ──────── */
.briefing{background:linear-gradient(135deg,#fff 0%,var(--surface-2,#fafaf7) 100%);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.75rem;margin-bottom:1.5rem;position:relative;overflow:hidden}
.briefing::before{content:"";position:absolute;top:0;left:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--lime) 0%,#86efac 50%,#a78bfa 100%)}
.bf-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:1rem;flex-wrap:wrap}
.bf-tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;background:var(--ink);color:var(--lime);padding:5px 10px;border-radius:5px}
.bf-tag .sparkle{display:inline-block;width:11px;height:11px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23c8f135'><path d='M12 2 L13.5 9 L22 12 L13.5 15 L12 22 L10.5 15 L2 12 L10.5 9 Z'/></svg>");background-size:contain;background-repeat:no-repeat}
.bf-meta{display:flex;align-items:center;gap:14px;font-family:var(--mono);font-size:10.5px;color:var(--ink3)}
.bf-meta button{background:none;border:1px solid var(--border);border-radius:5px;padding:4px 9px;font-family:var(--mono);font-size:10.5px;color:var(--ink2);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all .12s}
.bf-meta button:hover{border-color:var(--ink2);background:var(--surface,#fff)}
.bf-meta button i{font-size:11px}
.bf-headline{font-family:var(--sans);font-size:22px;font-weight:700;letter-spacing:-0.018em;line-height:1.25;color:var(--ink);margin-bottom:14px;text-wrap:pretty;max-width:880px}
.bf-points{display:flex;flex-direction:column;gap:10px;margin-bottom:1rem}
.bf-point{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--border)}
.bf-point:first-child{border-top:none;padding-top:0}
.bf-point-num{font-family:var(--mono);font-size:10px;font-weight:800;color:var(--ink3);letter-spacing:0.06em;flex-shrink:0;width:18px;padding-top:2px}
.bf-point-body{flex:1;font-family:var(--prose);font-size:13.5px;line-height:1.6;color:var(--ink2);text-wrap:pretty}
.bf-point-body strong{font-weight:700;color:var(--ink)}
.bf-next{background:var(--ink);color:#fff;border-radius:10px;padding:0.875rem 1.125rem;display:flex;align-items:center;gap:10px}
.bf-next-tag{font-family:var(--mono);font-size:9.5px;font-weight:800;color:var(--lime);letter-spacing:0.1em;text-transform:uppercase;background:rgba(200,241,53,0.1);padding:3px 8px;border-radius:4px;flex-shrink:0}
.bf-next-text{font-family:var(--prose);font-size:13px;line-height:1.5;color:rgba(255,255,255,0.92);flex:1;text-wrap:pretty}
.bf-next-text strong{color:#fff;font-weight:700}
.bf-next-btn{padding:7px 12px;border-radius:6px;background:var(--lime);color:var(--ink);font-family:var(--mono);font-size:11px;font-weight:700;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;flex-shrink:0;letter-spacing:-0.005em}
.bf-next-btn:hover{background:var(--lime2)}

/* ──────── SECTION FRAME (verbatim) ──────── */
.sec{margin-bottom:1.75rem}
.sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.875rem;gap:1rem;flex-wrap:wrap}
.sec-h-left{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.sec-num{font-family:var(--mono);font-size:10.5px;color:var(--ink4);letter-spacing:0.12em;font-weight:700}
.sec-title{font-family:var(--sans);font-size:20px;font-weight:800;letter-spacing:-0.014em}
.sec-note{font-family:var(--mono);font-size:11.5px;color:var(--ink3)}
.sec-link{font-family:var(--mono);font-size:11.5px;color:var(--ink3);cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.sec-link:hover{color:var(--ink)}

/* ──────── TOP ACTIONS teaser (verbatim subset) ──────── */
.actions-wrap{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.act-row{display:grid;grid-template-columns:auto 1fr 150px auto;gap:1.25rem;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border);transition:background .12s;cursor:pointer}
.act-row:last-child{border-bottom:none}
.act-row:hover{background:var(--paper)}
.act-pri{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:54px}
.act-pri-tag{font-family:var(--mono);font-size:9.5px;font-weight:800;padding:3px 7px;border-radius:4px;letter-spacing:0.06em}
.act-pri-tag.p0{background:var(--bad);color:#fff}
.act-pri-tag.p1{background:var(--warn);color:#fff}
.act-pri-tag.p2{background:var(--blue);color:#fff}
.act-body h3{font-family:var(--sans);font-size:15px;font-weight:700;letter-spacing:-0.008em;line-height:1.3;margin-bottom:4px}
.act-body p{font-size:12px;color:var(--ink3);line-height:1.5;text-wrap:pretty}
.act-body p strong{color:var(--ink);font-weight:600}
.act-finding{font-family:var(--mono);font-size:10.5px;color:var(--ink3);margin-top:6px;display:inline-flex;align-items:center;gap:6px;background:var(--paper2);padding:3px 8px;border-radius:4px}
.act-finding i{font-size:12px;color:var(--ink4)}
.act-lift{display:flex;flex-direction:column;gap:2px;font-family:var(--mono);font-size:10px;color:var(--ink3)}
.act-lift strong{color:var(--good-deep);font-weight:800;font-family:var(--sans);font-size:15px;letter-spacing:-0.008em}
.act-cta{padding:7px 11px;border-radius:6px;background:var(--paper2);border:1px solid transparent;font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;color:var(--ink2);display:inline-flex;align-items:center;gap:5px;transition:all .12s;white-space:nowrap}
.act-cta:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.actions-foot{padding:11px;text-align:center;border-top:1px solid var(--border);background:var(--paper)}
.actions-foot a{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--ink2);display:inline-flex;align-items:center;gap:6px}
.actions-foot a:hover{color:var(--ink)}

/* ──────── INSIGHTS SUMMARY CARDS (new — replaces sections 02–08) ──────── */
.ins-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.ins-card{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);padding:1.15rem 1.3rem;display:flex;flex-direction:column;gap:0.75rem;cursor:pointer;transition:all .14s;text-align:left}
.ins-card:hover{border-color:var(--ink4);transform:translateY(-1px)}
.ins-top{display:flex;align-items:center;justify-content:space-between}
.ins-label{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:14px;font-weight:800;letter-spacing:-0.01em}
.ins-label .ins-ico{width:26px;height:26px;border-radius:7px;background:var(--paper2);display:flex;align-items:center;justify-content:center;color:var(--ink2);font-size:15px}
.ins-go{font-family:var(--mono);font-size:11px;color:var(--ink3);display:inline-flex;align-items:center;gap:4px}
.ins-card:hover .ins-go{color:var(--ink)}
.ins-body{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}
.ins-stat{display:flex;align-items:baseline;gap:8px}
.ins-stat .ins-num{font-family:var(--sans);font-size:34px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.ins-stat .ins-num.s-low{color:var(--bad-deep)}
.ins-stat .ins-num.s-mid{color:#d97706}
.ins-stat .ins-num.s-hi{color:var(--good-deep)}
.ins-stat .ins-den{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink4);letter-spacing:-0.01em}
.ins-delta{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 7px;border-radius:4px}
.ins-delta.up{color:var(--good-deep);background:rgba(34,197,94,0.12)}
.ins-delta.dn{color:var(--bad-deep);background:rgba(239,68,68,0.12)}
.ins-sub{font-family:var(--mono);font-size:11px;color:var(--ink3);line-height:1.45;border-top:1px solid var(--border);padding-top:0.7rem}
.ins-sub strong{color:var(--ink2);font-weight:700}
.ins-sub .lead-bench{color:var(--ink3)}
/* mini sentiment bar */
.ins-sent{display:flex;height:8px;border-radius:3px;overflow:hidden;gap:1.5px;width:84px}
.ins-sent span{height:100%}
.ins-sent .pos{background:var(--good)} .ins-sent .mix{background:var(--warn)} .ins-sent .neg{background:var(--bad)}
/* mini sparkline */
.ins-spark{width:96px;height:34px}
.ins-spark svg{width:100%;height:100%;display:block;overflow:visible}
/* rank ribbon */
.ins-rank{display:flex;gap:3px}
.ins-rank b{width:20px;height:24px;border-radius:4px;background:var(--paper2);display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:10px;font-weight:800;color:var(--ink4)}
.ins-rank b.you{background:var(--lime);color:var(--ink)}
.ins-flag{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--bad-deep);background:var(--bad-soft);padding:2px 7px;border-radius:4px;display:inline-flex;align-items:center;gap:4px}

/* ──────── WHAT CHANGED (verbatim) ──────── */
.feed{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);padding:0.75rem 1.25rem;display:flex;flex-direction:column}
.feed-item{display:flex;gap:11px;align-items:flex-start;padding:0.625rem 0;border-bottom:1px solid var(--border)}
.feed-item:last-child{border-bottom:none}
.feed-ind{width:3px;align-self:stretch;border-radius:2px;flex-shrink:0;margin-top:2px;margin-bottom:2px}
.feed-item.good .feed-ind{background:var(--good)}
.feed-item.bad .feed-ind{background:var(--bad)}
.feed-item.warn .feed-ind{background:var(--warn)}
.feed-item.info .feed-ind{background:var(--blue)}
.feed-body{flex:1;min-width:0}
.feed-ts{font-family:var(--mono);font-size:9.5px;color:var(--ink4);letter-spacing:0.04em;margin-bottom:2px;text-transform:uppercase;font-weight:700}
.feed-msg{font-size:12px;color:var(--ink);line-height:1.45}
.feed-msg strong{font-weight:700}

/* ──────── NEXT AUDIT (verbatim) ──────── */
.audit-strip{display:flex;align-items:center;gap:16px;padding:1rem 1.25rem;background:var(--ink);color:#fff;border-radius:var(--radius);margin:1.5rem 0;flex-wrap:wrap}
.as-left{display:flex;align-items:center;gap:10px}
.as-glyph{width:32px;height:32px;border-radius:8px;background:rgba(200,241,53,0.15);color:var(--lime);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.as-tag{font-family:var(--mono);font-size:9.5px;color:var(--lime);letter-spacing:0.1em;text-transform:uppercase;font-weight:700;margin-bottom:2px}
.as-title{font-family:var(--sans);font-size:15px;font-weight:700;letter-spacing:-0.008em}
.as-title small{font-family:var(--mono);font-size:11px;color:rgba(255,255,255,0.55);font-weight:500;margin-left:6px}
.as-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.as-note{font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,0.55);margin-right:6px}
.as-btn-lime{padding:7px 11px;border-radius:7px;background:var(--lime);color:var(--ink);border:none;font-family:var(--mono);font-size:11px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.as-btn-ghost{padding:7px 11px;border-radius:7px;background:transparent;color:#fff;border:1px solid rgba(255,255,255,0.2);font-family:var(--mono);font-size:11px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:5px}

/* ──────── FOOTER (verbatim) ──────── */
.footer{padding:2rem 0 0;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;color:var(--ink3);margin-top:1rem}
.footer-left{display:flex;align-items:center;gap:10px}

@media(max-width:1100px){
  .verdict{grid-template-columns:1fr}
  .v-breakdown{grid-template-columns:repeat(4,1fr)}
  .ins-grid{grid-template-columns:1fr}
  .act-row{grid-template-columns:auto 1fr;gap:1rem}
  .act-row > :nth-child(n+3){grid-column:1/-1;padding-left:64px}
}

/* ════════════════════════════════════════════════════════════════════
   SIDEBAR BRAND-SWITCHER DROPDOWN (shared across overview/actions/etc)
   Mirrors dashboard.html inline styles; wired by js/brand-switcher.js.
   ════════════════════════════════════════════════════════════════════ */
.aside-bs-wrap{position:relative}
.brand-dropdown{position:absolute;top:100%;left:6px;right:6px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:9px;box-shadow:0 12px 32px rgba(0,0,0,0.14);z-index:50;padding:6px;max-height:420px;overflow-y:auto;margin-top:4px}
.brand-dropdown[hidden]{display:none!important}
.bd-item{display:grid;grid-template-columns:12px 1fr auto 14px;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;border:none;background:transparent;cursor:pointer;width:100%;text-align:left;transition:background .12s;font-family:inherit}
.bd-item:hover{background:var(--paper2)}
.bd-item.active{background:var(--paper)}
.bd-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.bd-body{min-width:0}
.bd-name{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink)}
.bd-meta{font-family:var(--mono);font-size:10.5px;color:var(--ink3);margin-top:1px}
.bd-stat{font-family:var(--mono);font-size:10px;color:var(--ink3)}
.bd-check{font-size:14px;color:transparent}
.bd-item.active .bd-check{color:var(--lime-dim,#a0c020)}
.bd-sep{height:1px;background:var(--border);margin:6px 4px}
.bd-action{grid-template-columns:14px 1fr}
.bd-icon{font-size:12px;color:var(--ink3)}
/* ════════════════════════════════════════════════════════════════════
   STAT NUMBER RENDERING FIX
   Syne at heavy weight renders some digit·period·digit combos with a
   contextual ligature that visually reads as a hyphen ("3.3" → "3-3").
   Disable OpenType ligatures and force tabular numerals so the decimal
   point stays a period and digits keep consistent width.
   ════════════════════════════════════════════════════════════════════ */
.es-val, .et-you-n, .et-ld-n, .v-stat-val, .v-big, .ol-from, .ol-to {
  font-variant-ligatures: none;
  font-feature-settings: "tnum" 1, "lnum" 1, "liga" 0, "clig" 0, "calt" 0, "dlig" 0, "hlig" 0;
}
/* ════════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC: actions.css
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL ACTIONS — "Action Plan"
   Diagnosis → prescription play cards. Loads AFTER overview.css
   (shared shell: tokens, sidebar, hero, sec, btn, footer).
   Built to project_playbook_depth_roadmap.md — every play cites
   its audit finding; RAG root-cause frame; competitor receipts;
   advisory only (NO completion tracking, per CLAUDE.md §8).
   ============================================================ */

/* ──────── view toggle + filters ──────── */
.ap-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}
.seg{display:flex;gap:3px;padding:3px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:8px}
.seg button{padding:7px 13px;border-radius:6px;border:none;background:transparent;font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--ink3);cursor:pointer;letter-spacing:-0.005em;display:inline-flex;align-items:center;gap:6px;transition:all .12s}
.seg button.on{background:var(--ink);color:#fff}
.seg button:not(.on):hover{color:var(--ink);background:var(--paper2)}
.ap-filters{display:flex;gap:3px;padding:3px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:8px}
.ap-filters button{padding:6px 11px;border-radius:6px;border:none;background:transparent;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--ink3);cursor:pointer;transition:all .12s}
.ap-filters button.on{background:var(--paper3);color:var(--ink)}

/* ──────── outlook strip ──────── */
.outlook{background:var(--ink);color:#fff;border-radius:var(--radius);padding:1.25rem 1.5rem;margin-bottom:1.5rem;position:relative;overflow:hidden}
.outlook::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,0.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}
.ol-inner{position:relative;z-index:1}
.ol-tag{font-family:var(--mono);font-size:10px;letter-spacing:0.12em;color:var(--lime);text-transform:uppercase;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.ol-hero{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-bottom:10px}
.ol-score{display:flex;align-items:baseline;gap:14px}
.ol-from{font-family:var(--sans);font-size:34px;font-weight:700;color:rgba(255,255,255,0.5);letter-spacing:-0.02em;line-height:1}
.ol-arrow{color:var(--lime);font-size:30px;font-weight:700;display:flex;align-items:center;align-self:center;line-height:1}
.ol-to{font-family:var(--sans);font-size:60px;font-weight:800;color:#fff;letter-spacing:-0.03em;line-height:0.9}
.ol-meta{display:flex;flex-direction:column;gap:7px;padding-left:22px;border-left:1px solid rgba(255,255,255,0.15)}
.ol-gain{font-family:var(--mono);font-size:12px;font-weight:700;color:#86efac;letter-spacing:0.01em}
.ol-scorelbl{font-family:var(--mono);font-size:11px;color:rgba(255,255,255,0.6);letter-spacing:0.04em;text-transform:uppercase;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ol-band{font-family:var(--mono);font-size:11px;font-weight:700;color:#0a0a0a;background:var(--lime);padding:3px 9px;border-radius:5px;text-transform:none;letter-spacing:0}
.ol-cap{font-family:var(--mono);font-size:12.5px;color:rgba(255,255,255,0.78);margin-bottom:16px;text-wrap:pretty}
.ol-bar{height:9px;background:rgba(255,255,255,0.1);border-radius:5px;position:relative;margin-bottom:8px}
.ol-bar-band{position:absolute;top:0;height:100%;background:linear-gradient(90deg,#c8f135,#86efac);opacity:0.8;border-radius:5px}
.ol-bar-dot{position:absolute;top:50%;width:13px;height:13px;background:#fff;border:3px solid var(--ink);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgba(255,255,255,0.4)}
.ol-ticks{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;color:rgba(255,255,255,0.4)}
.ol-foot{font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,0.5);font-style:italic;margin-top:10px}

/* ──────── diagnostic legend (the RAG frame, taught) ──────── */
.diag-legend{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}
.dl-card{border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem;background:var(--surface,#fff);display:flex;gap:12px;align-items:flex-start}
.dl-ico{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.dl-card.reach .dl-ico{background:rgba(59,130,246,0.12);color:var(--blue)}
.dl-card.know .dl-ico{background:rgba(139,92,246,0.12);color:var(--purple)}
.dl-body{min-width:0}
.dl-title{font-family:var(--sans);font-size:13.5px;font-weight:800;letter-spacing:-0.01em;display:flex;align-items:center;gap:8px;margin-bottom:3px}
.dl-kicker{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;padding:2px 6px;border-radius:3px}
.dl-card.reach .dl-kicker{background:rgba(59,130,246,0.12);color:var(--blue)}
.dl-card.know .dl-kicker{background:rgba(139,92,246,0.12);color:#6d28d9}
.dl-desc{font-family:var(--mono);font-size:11px;color:var(--ink3);line-height:1.5}
.dl-desc strong{color:var(--ink2);font-weight:600}

/* ──────── technical pre-flight (binary diagnoses, own group) ──────── */
.preflight{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:1.5rem}
.pf-head{padding:0.875rem 1.5rem;border-bottom:1px solid var(--border);background:var(--paper);display:flex;align-items:center;gap:10px}
.pf-head .pf-h-ico{width:26px;height:26px;border-radius:7px;background:var(--ink);color:var(--lime);display:flex;align-items:center;justify-content:center;font-size:14px}
.pf-head h3{font-family:var(--sans);font-size:14px;font-weight:800;letter-spacing:-0.01em}
.pf-head .pf-sub{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-left:auto}
.pf-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.pf-item{padding:1rem 1.5rem;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:7px}
.pf-item:last-child{border-right:none}
.pf-item-top{display:flex;align-items:center;gap:8px}
.pf-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.pf-item.ok .pf-dot{background:var(--good)} .pf-item.warn .pf-dot{background:var(--warn)} .pf-item.bad .pf-dot{background:var(--bad)}
.pf-name{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:-0.005em}
.pf-verdict{font-family:var(--mono);font-size:11.5px;font-weight:600}
.pf-item.ok .pf-verdict{color:var(--good-deep)} .pf-item.warn .pf-verdict{color:var(--warn-deep)} .pf-item.bad .pf-verdict{color:var(--bad-deep)}
.pf-detail{font-family:var(--mono);font-size:10.5px;color:var(--ink3);line-height:1.45}

/* ──────── play cards ──────── */
.ap-note{font-family:var(--mono);font-size:11px;color:var(--ink3);margin:-0.5rem 0 1rem;display:flex;align-items:center;gap:7px}
.ap-note i{font-size:14px;color:var(--ink4)}
.ap-note b{font-family:var(--sans);font-weight:700;color:var(--ink2)}
.plays{display:flex;flex-direction:column;gap:1rem}
/* ──────── horizon group dividers (tinted section banners) ──────── */
.hz-divider{display:flex;align-items:center;gap:14px;margin:2.75rem 0 0.75rem;padding:0.9rem 1.15rem;border-radius:12px;border:1px solid var(--border)}
.hz-divider:first-child{margin-top:0.5rem}
/* Neutral horizon dividers + badges (color cleanse 2026-06-22): the three
   horizons read by icon + label + caption, not by hue. One treatment for all;
   green is reserved for the lift numbers (the payoff). Tokens flip for dark. */
.hz-divider.imm,.hz-divider.ong,.hz-divider.lng{background:var(--paper3,#eceae3);border:1px solid var(--border)}
/* Set the horizon section bands apart with a clearly lighter gray slab —
   in dark mode var(--paper2/3) nearly matched the page bg, so lift it to a
   distinctly lighter gray with a brighter hairline. (Neutral by design — the
   color cleanse reserves hue/green for the lift numbers.) */
html[data-theme="dark"] .hz-divider.imm,
html[data-theme="dark"] .hz-divider.ong,
html[data-theme="dark"] .hz-divider.lng{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.14)}
.plays.by-impact .hz-divider{display:none}
.hz-badge{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;color:var(--paper);background:var(--ink)}
.hz-badge.immediate,.hz-badge.ongoing,.hz-badge.longer{background:var(--ink)}
.hz-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.hz-name{font-family:var(--sans);font-size:20px;font-weight:800;letter-spacing:-0.016em;line-height:1.1}
.hz-sub{font-family:var(--mono);font-size:11px;color:var(--ink3);letter-spacing:0.02em}
.hz-line{display:none}
.hz-count{margin-left:auto;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--ink2);background:var(--surface,#fff);border:1px solid var(--border);border-radius:20px;padding:5px 12px;white-space:nowrap;flex-shrink:0}
/* impact-mode ordering (flat, P0→P2) */
.plays.by-impact .play.p0{order:1}
.plays.by-impact .play.p1{order:2}
.plays.by-impact .play.p2{order:3}
/* ongoing cadence badge */
.play-cadence{font-family:var(--mono);font-size:10px;font-weight:700;padding:4px 9px;border-radius:5px;background:var(--paper2);color:var(--ink2);display:inline-flex;align-items:center;gap:5px;letter-spacing:0.02em}
.play-cadence i{font-size:12px}

.play{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.play-head{display:flex;align-items:center;gap:11px;padding:1rem 1.5rem;border-bottom:1px solid var(--border);flex-wrap:wrap}
.play-pri{font-family:var(--mono);font-size:10px;font-weight:800;padding:4px 8px;border-radius:4px;letter-spacing:0.06em;flex-shrink:0}
/* Neutral priority scale (charcoal→gray): order + contrast carry priority, not hue. */
.play-pri.p0{background:var(--ink);color:var(--paper)} .play-pri.p1{background:var(--ink3);color:var(--paper)} .play-pri.p2{background:var(--border);color:var(--ink2)}
.play-title{font-family:var(--sans);font-size:16px;font-weight:800;letter-spacing:-0.012em;flex:1;min-width:200px}
.play-type{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink3);border:1px solid var(--border);padding:3px 8px;border-radius:4px}
/* Diagnostic cause tags — outline metadata, no fill (color cleanse). */
.play-cause{font-family:var(--mono);font-size:10px;font-weight:700;padding:4px 9px;border-radius:5px;display:inline-flex;align-items:center;gap:5px;letter-spacing:0.01em;background:transparent;color:var(--ink3);border:1px solid var(--border)}
.play-cause.reach,.play-cause.know{background:transparent;color:var(--ink3);border:1px solid var(--border)}
.play-cause i{font-size:12px}

.play-body{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}
.pb-block{display:flex;flex-direction:column;gap:5px}
.pb-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4);display:flex;align-items:center;gap:7px}
.pb-label .pbl-ico{font-size:13px}
.pb-text{font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--ink2);text-wrap:pretty}
.pb-text strong{color:var(--ink);font-weight:700}
.pb-block.diagnosis{background:var(--paper);border:1px solid var(--border);border-left:3px solid var(--ink);border-radius:8px;padding:0.875rem 1.125rem}
.finding-no{font-family:var(--mono);font-size:10px;font-weight:800;color:var(--ink2);background:var(--paper2);padding:2px 7px;border-radius:4px;letter-spacing:0.04em}

/* competitor receipts */
.receipts{background:rgba(239,68,68,0.04);border:1px solid var(--bad-soft);border-radius:8px;padding:0.875rem 1.125rem;display:flex;flex-direction:column;gap:8px}
.receipts .pb-label{color:var(--bad-deep)}
.receipts-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;color:var(--ink2)}
.receipt-chip{font-family:var(--mono);font-size:10.5px;font-weight:600;background:var(--surface,#fff);border:1px solid var(--border);padding:3px 9px;border-radius:5px;display:inline-flex;align-items:center;gap:6px;color:var(--ink2)}
.receipt-chip b{color:var(--ink);font-weight:700}
.receipt-chip .rc-fav{width:14px;height:14px;border-radius:3px;background:var(--paper3);display:flex;align-items:center;justify-content:center;font-size:8px;color:var(--ink3)}

/* foot metrics — lift / effort / moves */
.play-foot{display:grid;grid-template-columns:auto auto 1fr;gap:1.5rem;align-items:center;padding:0.875rem 1.5rem;background:var(--paper);border-top:1px solid var(--border)}
.pf-metric{display:flex;flex-direction:column;gap:2px}
.pf-metric-label{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4)}
.pf-metric-val{font-family:var(--sans);font-size:15px;font-weight:800;letter-spacing:-0.01em}
.pf-metric-val.lift{color:var(--good-deep)}
.pf-moves{display:flex;flex-direction:column;gap:2px;justify-self:end;text-align:right;border-left:1px solid var(--border);padding-left:1.5rem}
.pf-moves-label{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4)}
.pf-moves-val{font-family:var(--mono);font-size:11.5px;color:var(--ink2)}
.pf-moves-val strong{font-family:var(--sans);color:var(--ink);font-weight:700}

/* Calibration v1.0 structured lift display (Group D, 2026-06-15).
   Replaces the legacy ".pf-metric.lift" single-string when a
   recommendation has primary_pillar + primary_impact_min/max. */
.pf-lift-structured{flex-direction:column;gap:3px;min-width:0}
.pf-lift-structured .pf-metric-val{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:14px}
.pf-lift-structured .pf-lift-pillar{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--ink3);text-transform:none;letter-spacing:0.02em}
.pf-lift-feeds{font-family:var(--mono);font-size:9.5px;color:var(--ink3);letter-spacing:0.04em;text-transform:uppercase}
.pf-lift-sec{font-family:var(--mono);font-size:11px;color:var(--ink2);display:inline-flex;align-items:center;gap:5px}
.pf-lift-sec i{font-size:11px;color:var(--ink4)}
.pf-lift-sec small{font-family:var(--mono);font-size:9.5px;color:var(--ink3)}
.pf-clamped{display:inline-block;padding:1px 5px;border-radius:3px;background:rgba(125,125,125,0.16);color:var(--ink3);font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:0.06em;margin-left:4px}

/* Calibration v1.1 — category modifier badge. Subtle, always visible
   when shown (we hide it at neutral 1.0). High variant = lime (this
   tactic is a strong fit for the brand's category); low variant =
   muted slate (partial fit, lift was scaled down). */
.pf-cat-mod{display:inline-block;padding:2px 7px;border-radius:4px;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;cursor:default;align-self:flex-start}
/* Neutral category-fit badge (green reserved for lift); the label text carries fit direction. */
.pf-cat-mod-high,.pf-cat-mod-low{background:rgba(125,125,125,0.16);color:var(--ink3)}

@media(max-width:1100px){
  .diag-legend{grid-template-columns:1fr}
  .pf-grid{grid-template-columns:1fr}
  .pf-item{border-right:none;border-bottom:1px solid var(--border)}
  .play-foot{grid-template-columns:1fr 1fr;gap:1rem}
  .pf-moves{grid-column:1/-1;justify-self:start;text-align:left;border-left:none;padding-left:0;border-top:1px solid var(--border);padding-top:0.75rem}
}

/* ════════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC: engines.css
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL ENGINES — "Engine Performance" insights page
   Three in-page tabs: Performance · Coverage · Sources.
   Loads AFTER overview.css (shared shell). Competitor lane runs
   through every tab (you vs leader), matching the Owl Report.
   Scales to 9 engines × 10 questions × 6 brands.
   ============================================================ */

/* ──────── tab bar ──────── */
.tabs{display:flex;gap:3px;padding:3px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:9px;margin-bottom:1.5rem;width:fit-content}
.tabs button{padding:9px 16px;border-radius:7px;border:none;background:transparent;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink3);cursor:pointer;letter-spacing:-0.005em;display:inline-flex;align-items:center;gap:7px;transition:all .12s}
.tabs button.on{background:var(--ink);color:#fff}
.tabs button:not(.on):hover{color:var(--ink);background:var(--paper2)}
.tabs button .tb-n{font-family:var(--mono);font-size:10px;font-weight:700;opacity:0.6}
.tab-panel{display:none}
.tab-panel.on{display:block}

/* ──────── stat header (shared by tabs) ──────── */
.eng-stats{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}
.eng-stat{flex:1;min-width:150px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1rem 1.2rem}
.eng-stat .es-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.eng-stat .es-row{display:flex;align-items:baseline;gap:8px}
.eng-stat .es-val{font-family:var(--sans);font-size:30px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.eng-stat .es-val.s-low{color:var(--bad-deep)} .eng-stat .es-val.s-mid{color:#d97706} .eng-stat .es-val.s-hi{color:var(--good-deep)}
.eng-stat .es-den{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink4)}
.eng-stat .es-delta{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px}
.eng-stat .es-delta.up{color:var(--good-deep);background:rgba(34,197,94,0.12)}
.eng-stat .es-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink3);margin-top:6px}

/* ──────── PERFORMANCE table (you vs leader bars) ──────── */
.etable{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.etrow{display:grid;grid-template-columns:1.5fr 2.2fr 52px 52px 100px;gap:1.1rem;align-items:center;padding:0.875rem 1.5rem;border-bottom:1px solid var(--border)}
.etrow:last-child{border-bottom:none}
.etrow.head{background:var(--paper);padding:0.7rem 1.5rem;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4)}
.etrow.head .e-r{text-align:right}
.et-eng{display:flex;align-items:center;gap:10px;font-family:var(--sans);font-size:13.5px;font-weight:700;letter-spacing:-0.008em}
.et-eng .et-logo{width:24px;height:24px;border-radius:6px;background:var(--paper2);display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--ink3);flex-shrink:0}
.et-bars{position:relative;height:22px}
.et-track{position:absolute;top:50%;left:0;width:100%;height:8px;background:var(--paper2);border-radius:5px;transform:translateY(-50%)}
.et-ld{position:absolute;top:50%;left:0;height:8px;border-radius:5px;transform:translateY(-50%);background:repeating-linear-gradient(90deg,var(--ink4) 0 5px,transparent 5px 9px);opacity:0.6}
.et-you{position:absolute;top:50%;left:0;height:8px;border-radius:5px;transform:translateY(-50%);background:var(--lime2)}
.et-you.zero{background:var(--bad);width:3px!important;opacity:0.5}
.et-you-n{text-align:right;font-family:var(--sans);font-size:16px;font-weight:800;letter-spacing:-0.01em;color:var(--ink)}
.et-you-n.zero{color:var(--bad-deep)}
.et-ld-n{text-align:right;font-family:var(--sans);font-size:14px;font-weight:700;color:var(--ink4)}
.et-score{text-align:right;font-family:var(--mono);font-size:11px;color:var(--ink3)}
.et-score .ys{font-family:var(--sans);font-size:16px;font-weight:800;letter-spacing:-0.01em;color:var(--ink)}
.et-score .ys.zero{color:var(--bad-deep)}
.et-band{text-align:right}
.eband{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.04em;padding:3px 8px;border-radius:4px;display:inline-block}
.eband.STRONG{background:var(--good-soft);color:var(--good-deep)}
.eband.MODERATE{background:rgba(59,130,246,0.12);color:#1e40af}
.eband.WEAK{background:var(--warn-soft);color:var(--warn-deep)}
.eband.MISSING{background:var(--paper2);color:var(--ink4)}
.etable-legend{display:flex;align-items:center;gap:18px;padding:0.75rem 1.5rem;background:var(--paper);border-top:1px solid var(--border);font-family:var(--mono);font-size:10px;color:var(--ink3);flex-wrap:wrap}
.elk{display:flex;align-items:center;gap:7px}
.elk .sw{width:18px;height:8px;border-radius:4px}
.elk .sw.you{background:var(--lime2)}
.elk .sw.ld{background:repeating-linear-gradient(90deg,var(--ink4) 0 5px,transparent 5px 9px);opacity:0.7}

/* ──────── COVERAGE grid (engines × questions) ──────── */
.cov-wrap{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;overflow-x:auto;width:fit-content;max-width:100%}
.cov-cap{margin-bottom:1rem;max-width:620px}
.cov-cap-t{font-family:var(--sans);font-size:15px;font-weight:800;letter-spacing:-0.012em;margin-bottom:4px}
.cov-cap-s{font-family:var(--mono);font-size:11px;color:var(--ink3);line-height:1.5}
.cov-cap-s b{color:var(--ink2);font-weight:600}
.cov-grid{border-collapse:separate;border-spacing:0;width:auto}
.cov-grid th,.cov-grid td{text-align:center;padding:0}
.cov-grid thead th{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--ink3);padding:0 0 10px;letter-spacing:0.02em}
.cov-grid thead th.eng-h{text-align:left;width:130px}
.cov-grid thead th.sum-h{color:var(--ink);font-weight:800}
.cov-grid tbody th{text-align:left;font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink2);letter-spacing:-0.005em;padding-right:12px;white-space:nowrap}
.cov-cell{min-width:40px;height:34px;text-align:center;white-space:nowrap}
.cov-cell .d{width:8px;height:8px;border-radius:50%;border:1px solid var(--ink5);background:transparent;display:inline-block;margin:0 2px;vertical-align:middle;box-sizing:content-box}
.cov-cell .d.on.s3{background:#22c55e;border-color:#22c55e;box-shadow:0 0 0 1px rgba(34,197,94,0.22)}
.cov-cell .d.on.s2{background:#fbbf24;border-color:#fbbf24;box-shadow:0 0 0 1px rgba(245,158,11,0.22)}
.cov-cell .d.on.s1{background:#ef4444;border-color:#ef4444;box-shadow:0 0 0 1px rgba(239,68,68,0.26)}
.cov-legend .dots{display:inline-flex;gap:3px;align-items:center;margin-right:6px}
.cov-legend .dots .d{width:8px;height:8px;border-radius:50%;border:1px solid var(--ink5);background:transparent;display:inline-block;box-sizing:content-box}
.cov-legend .dots .d.on.s3{background:#22c55e;border-color:#22c55e}
.cov-legend .dots .d.on.s2{background:#fbbf24;border-color:#fbbf24}
.cov-legend .dots .d.on.s1{background:#ef4444;border-color:#ef4444}
.sum-gap{padding-left:28px!important}
.sum-gap2{padding-left:16px!important}
.cov-sum-you{font-family:var(--sans);font-size:13px;font-weight:800;color:var(--ink);text-align:center}
.cov-sum-ld{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink4);text-align:center}
.cov-legend{display:flex;align-items:center;gap:16px;margin-top:1rem;flex-wrap:wrap;font-family:var(--mono);font-size:10px;color:var(--ink3);max-width:620px}
.cov-legend .clk{display:flex;align-items:center;gap:6px}
.cov-legend .clk .cd{width:16px;height:16px;border-radius:5px}
.qkey{margin-top:1.25rem;border-top:1px solid var(--border);padding-top:1rem;columns:2;column-gap:2rem;max-width:620px}
.qkey .qk{break-inside:avoid;display:flex;gap:9px;align-items:baseline;padding:4px 0;font-family:var(--mono);font-size:11px;color:var(--ink2);line-height:1.45}
.qkey .qk b{font-family:var(--sans);font-weight:800;color:var(--ink);flex-shrink:0;min-width:26px}
.qkey .qk .qk-int{margin-left:auto;font-size:9px;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink4);white-space:nowrap}

/* ──────── SOURCES table ──────── */
.smix{display:flex;gap:0.625rem;margin-bottom:1.25rem;flex-wrap:wrap}
.smix-card{flex:1;min-width:96px;border:1px solid var(--border);border-radius:10px;padding:0.75rem 1rem;background:var(--surface,#fff)}
.smix-n{font-family:var(--sans);font-size:22px;font-weight:800;letter-spacing:-0.02em;line-height:1}
.smix-l{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);margin-top:5px}
.srctable{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.srow{display:grid;grid-template-columns:1.7fr 0.9fr 1.5fr 52px 52px 64px;gap:1rem;align-items:center;padding:0.8rem 1.5rem;border-bottom:1px solid var(--border)}
.srow:last-child{border-bottom:none}
.srow.head{background:var(--paper);padding:0.7rem 1.5rem;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4)}
.srow.head .s-r{text-align:right}
.s-host{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:-0.008em;display:flex;align-items:center;gap:9px}
.s-host .s-fav{width:22px;height:22px;border-radius:5px;background:var(--paper2);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--ink3);flex-shrink:0}
.stag{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.05em;text-transform:uppercase;padding:3px 8px;border-radius:4px;justify-self:start}
.stag.you{background:rgba(200,241,53,0.4);color:#5c6e10}
.stag.review{background:rgba(59,130,246,0.12);color:#1e40af}
.stag.social{background:var(--warn-soft);color:var(--warn-deep)}
.stag.news{background:#ece7f4;color:#5b4a8a}
.stag.competitor{background:var(--bad-soft);color:var(--bad-deep)}
/* Dark-mode pin: the dark-olive #5c6e10 text on a semi-transparent lime
   chip becomes unreadable against a dark page (chip dims to a muted
   olive). Brighten the text so "YOU" stays legible on dark theme. */
html[data-theme="dark"] .stag.you{color:#c8f135}
.s-bar{display:flex;align-items:center;gap:10px}
.s-track{flex:1;height:8px;background:var(--paper2);border-radius:5px;overflow:hidden}
.s-fill{height:100%;background:var(--ink2);border-radius:5px}
.s-tot{font-family:var(--sans);font-size:13px;font-weight:800;min-width:24px;text-align:right;letter-spacing:-0.01em}
.s-num{text-align:right;font-family:var(--sans);font-size:13px;font-weight:800;letter-spacing:-0.01em;color:var(--ink2)}
.s-num.zero{color:var(--bad-deep)} .s-num.own{color:var(--lime-dim)} .s-num.ldr{color:var(--ink4);font-weight:700}

/* interpretation callout (shared) */
.eng-interp{background:linear-gradient(135deg,#fff,var(--surface-2,#fafaf7));border:1px solid var(--border);border-left:3px solid var(--lime);border-radius:12px;padding:1.1rem 1.4rem;margin-top:1.25rem}
.eng-interp .ei-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.eng-interp p{font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--ink2);text-wrap:pretty}
.eng-interp p strong{color:var(--ink);font-weight:700}

@media(max-width:1100px){
  .etrow{grid-template-columns:1.3fr 1.7fr 70px 80px;gap:0.75rem;padding:0.875rem 1rem}
  .srow{grid-template-columns:1.4fr 0.8fr 1.2fr 44px 44px 56px;gap:0.625rem;padding:0.8rem 1rem}
  .qkey{columns:1}
}

/* ════════ ANSWERS tab — pick a question, see every engine's reply ════════ */
.ans-picker{display:flex;align-items:center;gap:10px;margin-bottom:1.25rem;flex-wrap:wrap}
.ans-prev,.ans-next{width:38px;height:38px;border-radius:9px;border:1px solid var(--border);background:var(--surface,#fff);color:var(--ink2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;transition:all .12s}
.ans-prev:hover,.ans-next:hover{border-color:var(--ink3);background:var(--paper2)}
.ans-select-wrap{flex:1;min-width:240px;position:relative}
.ans-select-wrap .as-ico{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--ink4);font-size:15px;pointer-events:none}
.ans-select-wrap .as-car{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:var(--ink3);font-size:15px;pointer-events:none}
.ans-select{width:100%;appearance:none;-webkit-appearance:none;font-family:var(--mono);font-size:12.5px;font-weight:500;color:var(--ink);background:var(--surface,#fff);border:1px solid var(--border);border-radius:9px;padding:11px 38px 11px 36px;cursor:pointer;letter-spacing:-0.005em}
.ans-select:focus{outline:none;border-color:var(--ink3)}
.ans-qhead{background:var(--ink);color:#fff;border-radius:12px;padding:1.1rem 1.4rem;margin-bottom:1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.ans-qhead .aq-code{font-family:var(--sans);font-size:13px;font-weight:800;color:var(--ink);background:var(--lime);padding:4px 9px;border-radius:5px;flex-shrink:0}
.ans-qhead .aq-txt{font-family:var(--sans);font-size:16px;font-weight:700;letter-spacing:-0.01em;flex:1;min-width:200px}
.ans-qhead .aq-int{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:rgba(255,255,255,0.55);border:1px solid rgba(255,255,255,0.2);padding:3px 8px;border-radius:4px}
.ans-summary{font-family:var(--mono);font-size:12px;color:var(--ink3);margin-bottom:1rem}
.ans-summary b{font-family:var(--sans);font-weight:700;color:var(--ink)}
.ans-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.acard{border:1px solid var(--border);border-radius:12px;background:var(--surface,#fff);overflow:hidden;display:flex;flex-direction:column}
.acard.absent{border-style:dashed;background:transparent}
.ac-head{display:flex;align-items:center;gap:9px;padding:0.8rem 1.1rem;border-bottom:1px solid var(--border)}
.acard.absent .ac-head{border-bottom-color:transparent;padding-bottom:0.8rem}
.ac-logo{width:24px;height:24px;border-radius:6px;background:var(--paper2);display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--ink3);flex-shrink:0}
.ac-eng{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:-0.008em;flex:1}
.ac-badge{font-family:var(--mono);font-size:10px;font-weight:700;padding:3px 8px;border-radius:4px;letter-spacing:0.02em;white-space:nowrap}
.ac-badge.cited{background:var(--good-soft);color:var(--good-deep)}
.ac-badge.absent{background:var(--paper2);color:var(--ink4)}
.ac-body{padding:0.9rem 1.1rem;display:flex;flex-direction:column;gap:0.7rem}
.acard.absent .ac-body{padding-top:0.4rem}
.ac-brands{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.ac-brands .bc-lbl{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink4);margin-right:2px}
.brand-chip{font-family:var(--mono);font-size:10.5px;font-weight:600;padding:3px 8px;border-radius:5px;background:var(--paper2);color:var(--ink3);display:inline-flex;align-items:center;gap:5px}
.brand-chip .bc-rank{font-family:var(--sans);font-weight:800;color:var(--ink4);font-size:9px}
.brand-chip.you{background:var(--lime);color:var(--ink)}
.brand-chip.you .bc-rank{color:var(--lime-dim)}
.ac-snippet{font-family:var(--mono);font-size:11.5px;line-height:1.55;color:var(--ink2);font-style:italic;border-left:2px solid var(--lime);padding-left:11px}
.ac-snippet b{font-style:normal;font-family:var(--sans);font-weight:700;color:var(--ink);background:rgba(200,241,53,0.4);padding:0 3px;border-radius:2px}
.ac-meta{display:flex;gap:6px;flex-wrap:wrap}
.mchip{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;padding:2.5px 7px;border-radius:4px}
.mchip.positive{background:var(--good-soft);color:var(--good-deep)}
.mchip.mixed{background:var(--warn-soft);color:var(--warn-deep)}
.mchip.negative{background:var(--bad-soft);color:var(--bad-deep)}
.mchip.ok{background:var(--paper2);color:var(--ink3)}
.mchip.stale{background:var(--warn-soft);color:var(--warn-deep)}
.mchip.inaccurate{background:var(--bad);color:#fff}
.ac-sources{font-family:var(--mono);font-size:10px;color:var(--ink4);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ac-sources .src-pill{background:var(--paper);border:1px solid var(--border);border-radius:4px;padding:2px 7px;color:var(--ink3)}
.ac-expand{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--ink2);background:none;border:none;border-top:1px solid var(--border);padding:0.7rem 1.1rem;cursor:pointer;display:flex;align-items:center;gap:6px;text-align:left;transition:background .12s}
.ac-expand:hover{background:var(--paper)}
.ac-full{display:none;padding:0 1.1rem 1rem;font-family:var(--mono);font-size:11px;line-height:1.65;color:var(--ink2);text-wrap:pretty}
.ac-full.open{display:block}
.ac-full b{font-family:var(--sans);font-weight:700;color:var(--ink);background:rgba(200,241,53,0.4);padding:0 3px;border-radius:2px}
.ac-full .full-tag{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);display:block;margin-bottom:6px}

/* ──────── response drawer (from coverage cell click) ──────── */
.cov-dot.clickable{cursor:pointer;transition:transform .1s}
.cov-dot.clickable:hover{transform:scale(1.18);box-shadow:0 0 0 2px var(--ink)}
.rd-overlay{position:fixed;inset:0;background:rgba(10,10,10,0.4);z-index:90;opacity:0;pointer-events:none;transition:opacity .2s}
.rd-overlay.open{opacity:1;pointer-events:auto}
.resp-drawer{position:fixed;top:0;right:0;height:100vh;width:440px;max-width:92vw;background:var(--surface,#fff);z-index:91;box-shadow:-12px 0 40px rgba(0,0,0,0.18);transform:translateX(100%);transition:transform .24s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.resp-drawer.open{transform:none}
.rd-head{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;gap:1rem}
.rd-head-body{flex:1;min-width:0}
.rd-eng{font-family:var(--sans);font-size:17px;font-weight:800;letter-spacing:-0.012em;display:flex;align-items:center;gap:9px}
.rd-q{font-family:var(--mono);font-size:11.5px;color:var(--ink3);margin-top:5px;line-height:1.45}
.rd-close{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:var(--surface,#fff);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--ink2);flex-shrink:0}
.rd-close:hover{background:var(--paper2)}
.rd-body{flex:1;overflow-y:auto;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1.1rem}
.rd-status{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.rd-block-l{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4);margin-bottom:8px}
.rd-verbatim{font-family:var(--mono);font-size:12px;line-height:1.7;color:var(--ink);background:var(--paper);border:1px solid var(--border);border-radius:10px;padding:1rem 1.15rem;text-wrap:pretty}
.rd-verbatim b{font-family:var(--sans);font-weight:700;background:rgba(200,241,53,0.45);padding:0 3px;border-radius:2px}
.rd-runs{font-family:var(--mono);font-size:10px;color:var(--ink4);display:flex;align-items:center;gap:7px}
.rd-run-pill{border:1px solid var(--border);border-radius:4px;padding:2px 8px;cursor:pointer;color:var(--ink3)}
.rd-run-pill.on{background:var(--ink);color:#fff;border-color:var(--ink)}

@media(max-width:1100px){ .ans-grid{grid-template-columns:1fr} }

/* ════════════════════════════════════════════════════════════════════
   STAT NUMBER RENDERING FIX
   Syne at heavy weight renders some digit·period·digit combos with a
   contextual ligature that visually reads as a hyphen ("3.3" → "3-3").
   Disable OpenType ligatures and force tabular numerals so the decimal
   point stays a period and digits keep consistent width.
   ════════════════════════════════════════════════════════════════════ */
.es-val, .et-you-n, .et-ld-n, .v-stat-val, .v-big, .ol-from, .ol-to {
  font-variant-ligatures: none;
  font-feature-settings: "tnum" 1, "lnum" 1, "liga" 0, "clig" 0, "calt" 0, "dlig" 0, "hlig" 0;
}
/* ============================================================
   THEME-STABLE OVERRIDES — fixes dark-mode contrast bugs
   ------------------------------------------------------------
   Several elements in this page used var(--ink) for backgrounds
   and #fff for text. theme.js flips --ink to near-white in dark
   mode, which made those elements light-on-light (invisible).
   These overrides pin them to literal colors so they read
   correctly in both themes — same pattern we used for the
   Owl Report frame's Download PDF button.
   ============================================================ */

/* Active tab — was var(--ink) bg + #fff text. Lime works in both themes. */
.tabs button.on{background:var(--lime) !important;color:#0a0a0a !important;font-weight:700}

/* Coverage container — was width: fit-content (left a gap on the right
   in wide layouts). Expand to fill the available width. */
.cov-wrap{width:100% !important;max-width:100% !important}

/* Interpretation panel — hardcoded #fff gradient + var(--ink2) text means
   text became near-white on near-white in dark mode. Use surface tokens. */
.eng-interp{background:var(--surface,#fff) !important;background-image:none !important;border-left:3px solid var(--lime) !important}
.eng-interp p{color:var(--ink2) !important}
.eng-interp p strong{color:var(--ink) !important}

/* Answers Q-banner — was var(--ink) bg + white text + lime Q-pill with
   var(--ink) text. Pin all three so the banner stays high-contrast in
   either theme: solid lime band with dark text. */
.ans-qhead{background:var(--lime) !important;color:#0a0a0a !important}
.ans-qhead .aq-code{background:#0a0a0a !important;color:var(--lime) !important}
.ans-qhead .aq-txt{color:#0a0a0a !important}
.ans-qhead .aq-int{color:rgba(0,0,0,0.55) !important;border-color:rgba(0,0,0,0.25) !important}

/* Answers summary line under the banner */
.ans-summary{color:var(--ink2) !important}
.ans-summary b{color:var(--ink) !important}
/* ════════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC: competitors.css
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL COMPETITORS — "Competitive Intelligence" on new shell
   Loads AFTER overview.css. You vs up to 5 competitors:
   leaderboard + per-question rank matrix. Scales to 6 brands
   × 10 questions. Mention-share is the comparative signal
   (we don't score competitors as brands).
   ============================================================ */

/* ──────── summary stat cards ──────── */
.cmp-stats{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}
.cmp-stat{flex:1;min-width:150px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1rem 1.2rem}
.cmp-stat .cs-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.cmp-stat .cs-row{display:flex;align-items:baseline;gap:8px}
.cmp-stat .cs-val{font-family:var(--sans);font-size:30px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.cmp-stat .cs-val.warn{color:var(--bad-deep)}
.cmp-stat .cs-den{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink4)}
.cmp-stat .cs-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink3);margin-top:6px}
.cmp-stat .cs-sub strong{color:var(--ink2);font-weight:700}

.cmp-sec{margin-bottom:1.75rem}
.cmp-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:0.875rem}
.cmp-sec-h{display:flex;align-items:baseline;gap:12px}
.cmp-sec-title{font-family:var(--sans);font-size:18px;font-weight:800;letter-spacing:-0.014em}
.cmp-sec-note{font-family:var(--mono);font-size:11px;color:var(--ink3)}

/* ──────── leaderboard ──────── */
.lb{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.lb-row{display:grid;grid-template-columns:34px 1.9fr 1.6fr 72px 64px;gap:1.1rem;align-items:center;padding:0.85rem 1.4rem;border-bottom:1px solid var(--border)}
.lb-row:last-child{border-bottom:none}
.lb-row.head{background:var(--paper);padding:0.7rem 1.4rem;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4)}
.lb-row.head .r-end{text-align:right}
.lb-row.you{background:rgba(200,241,53,0.1)}
.lb-rank{font-family:var(--sans);font-size:16px;font-weight:800;color:var(--ink4);text-align:center}
.lb-rank.first{color:var(--good-deep)}
.lb-row.you .lb-rank{color:var(--lime-dim)}
.lb-brand{display:flex;flex-direction:column;gap:1px;min-width:0}
.lb-brand b{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:-0.008em;display:flex;align-items:center;gap:7px}
.lb-brand .dom{font-family:var(--mono);font-size:9.5px;color:var(--ink3)}
.you-tag{font-family:var(--sans);font-weight:800;font-size:8px;letter-spacing:0.06em;background:var(--lime);color:var(--ink);padding:2px 5px;border-radius:3px}
.lb-sov{display:flex;align-items:center;gap:10px}
.lb-track{flex:1;height:8px;background:var(--paper2);border-radius:5px;overflow:hidden}
.lb-fill{height:100%;background:var(--ink2);border-radius:5px}
.lb-row.you .lb-fill{background:var(--lime2)}
.lb-row.first .lb-fill{background:var(--good)}
.lb-pct{font-family:var(--sans);font-size:13px;font-weight:800;min-width:42px;text-align:right;letter-spacing:-0.01em}
.lb-pos{font-family:var(--sans);font-size:13px;font-weight:700;text-align:right;color:var(--ink2)}
.lb-won{font-family:var(--sans);font-size:13px;font-weight:700;text-align:right}
.lb-won .w-hi{color:var(--good-deep)}
.lb-won .w-lo{color:var(--ink4)}

/* ──────── rank matrix ──────── */
.rmx-wrap{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;overflow-x:auto}
.rmx{border-collapse:separate;border-spacing:0;width:100%;min-width:680px}
.rmx th,.rmx td{text-align:center;padding:0}
.rmx thead th{font-family:var(--sans);font-size:11px;font-weight:700;color:var(--ink3);padding:0 6px 11px;letter-spacing:-0.005em;vertical-align:bottom}
.rmx thead th.q-h{text-align:left;width:300px;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4)}
.rmx thead th.you-col{color:var(--lime-dim);font-weight:800}
.rmx tbody th{text-align:left;padding:5px 12px 5px 0;font-weight:400}
.rmx .q-cell{display:flex;align-items:baseline;gap:9px}
.rmx .q-code{font-family:var(--sans);font-size:12px;font-weight:800;color:var(--ink3);flex-shrink:0}
.rmx .q-txt{font-family:var(--mono);font-size:10.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}
.rmx-cell{padding:3px}
.rmx-rank{width:34px;height:30px;border-radius:7px;margin:0 auto;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:12px;font-weight:800}
.rmx-rank.r1{background:var(--good);color:#fff}
.rmx-rank.r2{background:rgba(34,197,94,0.45);color:var(--good-deep)}
.rmx-rank.r3{background:rgba(34,197,94,0.2);color:var(--good-deep)}
.rmx-rank.r4{background:var(--paper2);color:var(--ink3)}
.rmx-rank.r5{background:var(--paper2);color:var(--ink4)}
.rmx-rank.r6{background:var(--paper2);color:var(--ink5)}
.rmx-rank.none{background:transparent;color:var(--ink5);font-weight:400;border:1px dashed var(--line2,#d4d0c4)}
.rmx td.you-col .rmx-rank{box-shadow:0 0 0 2px var(--lime-dim)}
.rmx thead th.you-col,.rmx tbody td.you-col{background:rgba(200,241,53,0.07)}
.rmx-legend{display:flex;align-items:center;gap:16px;margin-top:1rem;flex-wrap:wrap;font-family:var(--mono);font-size:10px;color:var(--ink3)}
.rmx-legend .rk{display:flex;align-items:center;gap:6px}
.rmx-legend .rk .sw{width:18px;height:16px;border-radius:5px}

/* ──────── interpretation ──────── */
.cmp-interp{background:linear-gradient(135deg,#fff,var(--surface-2,#fafaf7));border:1px solid var(--border);border-left:3px solid var(--lime);border-radius:12px;padding:1.1rem 1.4rem;margin-top:1.25rem}
.cmp-interp .ci-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.cmp-interp p{font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--ink2);text-wrap:pretty}
.cmp-interp p strong{color:var(--ink);font-weight:700}
.cmp-interp a{color:var(--ink);text-decoration:underline}

@media(max-width:1100px){
  .lb-row{grid-template-columns:30px 1.6fr 1.3fr 58px 52px;gap:0.7rem;padding:0.8rem 1rem}
  .rmx thead th.q-h{width:auto}
}
/* ════════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC: mentions.css
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL MENTIONS — "AI Mentions" inbox on the new shell
   Loads AFTER overview.css. Mention-centric (one row per
   mention), filterable by brand/sentiment/engine — the full
   feed the Owl Report curates to ~4. Competitors benchmarked
   inline. Scales with the mentions array.
   ============================================================ */

/* ──────── summary cards ──────── */
.mn-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}
.mn-card{background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1.05rem 1.2rem;display:flex;flex-direction:column;gap:0.6rem}
.mn-card.alert{border-color:var(--bad);background:var(--bad-soft)}
.mn-card-top{display:flex;align-items:center;justify-content:space-between}
.mn-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4)}
.mn-card.alert .mn-label{color:var(--bad-deep)}
.mn-big{font-family:var(--sans);font-size:30px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.mn-big .mn-den{font-size:15px;font-weight:700;color:var(--ink4)}
.mn-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink3);line-height:1.4}
.mn-sub strong{color:var(--ink2);font-weight:700}
/* sentiment bar */
.mn-sent{display:flex;height:9px;border-radius:3px;overflow:hidden;gap:1.5px}
.mn-sent span{height:100%}
.mn-sent .pos{background:var(--good)} .mn-sent .mix{background:var(--warn)} .mn-sent .neg{background:var(--bad)}
.mn-sent-key{display:flex;gap:12px;font-family:var(--mono);font-size:10px;color:var(--ink3)}
.mn-sent-key b{font-family:var(--sans);font-weight:700;color:var(--ink2)}
.mn-sent-key .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:middle}
/* accuracy mini */
.mn-acc{display:flex;gap:14px}
.mn-acc-item{display:flex;flex-direction:column;gap:2px}
.mn-acc-n{font-family:var(--sans);font-size:19px;font-weight:800;letter-spacing:-0.02em;line-height:1}
.mn-acc-l{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:var(--ink4)}
.mn-acc-item.ok .mn-acc-n{color:var(--good-deep)}
.mn-acc-item.stale .mn-acc-n{color:var(--warn-deep)}
.mn-acc-item.bad .mn-acc-n{color:var(--bad-deep)}

/* ──────── controls ──────── */
.mn-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}
.mn-segs{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.seg{display:flex;gap:3px;padding:3px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:8px}
.seg button{padding:7px 12px;border-radius:6px;border:none;background:transparent;font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--ink3);cursor:pointer;letter-spacing:-0.005em;display:inline-flex;align-items:center;gap:6px;transition:all .12s}
.seg button.on{background:var(--ink);color:#fff}
.seg button:not(.on):hover{color:var(--ink);background:var(--paper2)}
.seg button .seg-ct{font-family:var(--mono);font-size:10px;font-weight:700;opacity:0.6}
.seg button.on .seg-ct{opacity:0.85}
.seg.sent button.on[data-s="positive"]{background:var(--good);color:#fff}
.seg.sent button.on[data-s="mixed"]{background:var(--warn);color:#fff}
.seg.sent button.on[data-s="negative"]{background:var(--bad);color:#fff}
.mn-select{appearance:none;-webkit-appearance:none;font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--ink2);background:var(--surface,#fff);border:1px solid var(--border);border-radius:8px;padding:8px 30px 8px 12px;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 9px center;background-size:13px}
.mn-select:focus{outline:none;border-color:var(--ink3)}

/* ──────── feed ──────── */
.mn-feed{display:flex;flex-direction:column;gap:0.7rem}
.mn-count{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-bottom:0.75rem}
.mn-count b{font-family:var(--sans);font-weight:700;color:var(--ink)}
.mitem{background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:border-color .12s}
.mitem:hover{border-color:var(--ink4)}
.mitem.flagged{border-left:3px solid var(--bad)}
.mi-main{display:grid;grid-template-columns:34px 1fr auto;gap:13px;padding:0.95rem 1.2rem;cursor:pointer;align-items:start}
.mi-logo{width:34px;height:34px;border-radius:8px;background:var(--paper2);display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--ink3);flex-shrink:0}
.mi-body{min-width:0}
.mi-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.mi-brand{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;padding:3px 7px;border-radius:4px}
.mi-brand.you{background:var(--lime);color:var(--ink)}
.mi-brand.comp{background:var(--paper2);color:var(--ink2)}
.mi-eng{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--ink2)}
.mi-q{font-family:var(--mono);font-size:10.5px;color:var(--ink4);letter-spacing:0.02em}
.mi-pos{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--ink3);background:var(--paper);border:1px solid var(--border);border-radius:4px;padding:2px 6px}
.mi-question{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-bottom:6px;line-height:1.4}
.mi-snippet{font-family:var(--mono);font-size:12px;line-height:1.55;color:var(--ink2);text-wrap:pretty}
/* Brand highlighting inside snippets — your brand reads as a lime chip,
   competitors as an amber chip. Same color story as the Engine
   Performance Answers/tooltip surfaces (.ans-hl-you / .ans-hl-comp) so
   the two-color you-vs-them read is consistent across the dashboard. */
.mi-snippet mark{background:rgba(200,241,53,0.5);color:#0a0a0a;font-weight:700;border-radius:2px;padding:0 3px;font-family:var(--sans)}
.mi-snippet .comp-hl{background:rgba(245,158,11,0.22);color:#92590a;font-weight:700;border-radius:2px;padding:0 3px;font-family:var(--sans)}
/* Dark theme: pin colors so chips stay readable on the dark snippet
   background (the lime-on-dark-ink and amber-on-dark contrasts that
   the Answers tab already uses for the same job). */
html[data-theme="dark"] .mi-snippet mark{background:rgba(200,241,53,0.22);color:#c8f135}
html[data-theme="dark"] .mi-snippet .comp-hl{background:rgba(245,158,11,0.18);color:#fbbf24}
.mi-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.mchip{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;padding:3px 7px;border-radius:4px;white-space:nowrap}
.mchip.positive{background:var(--good-soft);color:var(--good-deep)}
.mchip.mixed{background:var(--warn-soft);color:var(--warn-deep)}
.mchip.negative{background:var(--bad-soft);color:var(--bad-deep)}
.mchip.ok{background:var(--paper2);color:var(--ink3)}
.mchip.stale{background:var(--warn-soft);color:var(--warn-deep)}
.mchip.inaccurate{background:var(--bad);color:#fff}
.mi-src{font-family:var(--mono);font-size:9.5px;color:var(--ink4)}
.mi-expand-row{display:flex;align-items:center;gap:6px;padding:0;margin-top:8px}
.mi-expand{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--ink3);background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:0}
.mi-expand:hover{color:var(--ink)}
.mi-full{display:none;padding:0 1.2rem 1.1rem 4.1rem}
.mi-full.open{display:block}
.mi-full-inner{background:var(--paper);border:1px solid var(--border);border-radius:9px;padding:0.9rem 1.1rem;font-family:var(--mono);font-size:11.5px;line-height:1.65;color:var(--ink2);text-wrap:pretty}
.mi-full-inner .full-tag{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);display:block;margin-bottom:7px}
.mi-full-inner mark{background:rgba(200,241,53,0.5);color:var(--ink);font-weight:600;border-radius:2px;padding:0 2px}
.mi-flag{font-family:var(--mono);font-size:10.5px;color:var(--bad-deep);margin-top:9px;display:flex;gap:6px;align-items:flex-start;line-height:1.45}
.mi-flag::before{content:"⚑";flex-shrink:0}
.mi-flag.note{color:var(--ink3)}
.mi-flag.note::before{content:"›"}

.mn-empty{padding:3rem 2rem;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--ink3)}

@media(max-width:1100px){
  .mn-summary{grid-template-columns:1fr 1fr}
  .mi-main{grid-template-columns:34px 1fr}
  .mi-right{grid-column:2;flex-direction:row;align-items:center}
  .mi-full{padding-left:1.2rem}
}
/* ════════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC: trends.css
   ════════════════════════════════════════════════════════════════════ */
/* ============================================================
   OWL TRENDS — "Trend Analysis" on the new shell
   Loads AFTER overview.css. Gated in nav by >=2 audits.
   Score-over-time vs leader · metric small-multiples ·
   what-changed diff · win/loss. Scales with the audits array.
   ============================================================ */

/* ──────── summary cards ──────── */
.tr-stats{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}
.tr-stat{flex:1;min-width:160px;background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1rem 1.2rem}
.tr-stat .ts-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.tr-stat .ts-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tr-stat .ts-from{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink4);letter-spacing:-0.01em}
.tr-stat .ts-arrow{color:var(--ink4);font-size:13px}
.tr-stat .ts-to{font-family:var(--sans);font-size:28px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.tr-stat .ts-delta{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 7px;border-radius:4px}
.tr-stat .ts-delta.up{color:var(--good-deep);background:rgba(34,197,94,0.12)}
.tr-stat .ts-delta.dn{color:var(--bad-deep);background:rgba(239,68,68,0.12)}
.tr-stat .ts-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink3);margin-top:6px}

.tr-sec{margin-bottom:1.75rem}
.tr-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:0.875rem}
.tr-sec-h{display:flex;align-items:baseline;gap:12px}
.tr-sec-title{font-family:var(--sans);font-size:18px;font-weight:800;letter-spacing:-0.014em}
.tr-sec-note{font-family:var(--mono);font-size:11px;color:var(--ink3)}

/* ──────── main chart ──────── */
.tr-chart{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.75rem 1.25rem}
.tr-chart svg{width:100%;height:auto;display:block;overflow:visible}
.tr-legend{display:flex;gap:18px;margin-top:1rem;font-family:var(--mono);font-size:11px;color:var(--ink3)}
.tr-legend .tl{display:flex;align-items:center;gap:7px}
.tr-legend .sw{width:18px;height:3px;border-radius:2px}
.tr-legend .sw.you{background:var(--lime2)} .tr-legend .sw.ld{background:var(--ink4)}
.tr-legend .sw.readiness{background:repeating-linear-gradient(90deg,#1f5f5e 0 7px,transparent 7px 11px)}

/* ──────── metric small-multiples ──────── */
.tr-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.trm{background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1.05rem 1.2rem;display:flex;flex-direction:column;gap:0.6rem}
.trm-top{display:flex;align-items:baseline;justify-content:space-between}
.trm-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink4)}
.trm-delta{font-family:var(--mono);font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:4px}
.trm-delta.up{color:var(--good-deep);background:rgba(34,197,94,0.12)}
.trm-delta.dn{color:var(--bad-deep);background:rgba(239,68,68,0.12)}
.trm-val{font-family:var(--sans);font-size:26px;font-weight:800;letter-spacing:-0.025em;line-height:0.9}
.trm-spark{height:38px}
.trm-spark svg{width:100%;height:100%;display:block;overflow:visible}
.trm-sub{font-family:var(--mono);font-size:10px;color:var(--ink4)}

/* ──────── what changed ──────── */
.tr-changed{background:var(--surface,#fff);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.tc-row{display:grid;grid-template-columns:18px 1fr auto;gap:13px;align-items:center;padding:0.95rem 1.4rem;border-bottom:1px solid var(--border)}
.tc-row:last-child{border-bottom:none}
.tc-arrow{font-family:var(--sans);font-weight:800;font-size:14px;text-align:center}
.tc-arrow.up{color:var(--good-deep)} .tc-arrow.dn{color:var(--bad-deep)}
.tc-body{min-width:0}
.tc-metric{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:-0.008em}
.tc-note{font-family:var(--mono);font-size:11px;color:var(--ink3)}
.tc-delta{font-family:var(--mono);font-size:11.5px;text-align:right;white-space:nowrap}
.tc-delta .from{color:var(--ink4)} .tc-delta .to{font-family:var(--sans);font-weight:700;color:var(--ink)}

/* ──────── win / loss ──────── */
.tr-wl{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.wl-card{background:var(--surface,#fff);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.3rem}
.wl-head{display:flex;align-items:center;gap:9px;margin-bottom:0.9rem;font-family:var(--sans);font-size:14px;font-weight:800;letter-spacing:-0.01em}
.wl-head .wl-ico{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:15px}
.wl-head.gain .wl-ico{background:var(--good-soft);color:var(--good-deep)}
.wl-head.watch .wl-ico{background:var(--warn-soft);color:var(--warn-deep)}
.wl-list{display:flex;flex-direction:column;gap:0.6rem}
.wl-item{display:flex;gap:9px;align-items:flex-start;font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--ink2)}
.wl-item i{font-size:14px;flex-shrink:0;margin-top:1px}
.wl-item.g i{color:var(--good)} .wl-item.w i{color:var(--warn)}
.wl-item strong{font-family:var(--sans);font-weight:700;color:var(--ink)}

.tr-interp{background:linear-gradient(135deg,#fff,var(--surface-2,#fafaf7));border:1px solid var(--border);border-left:3px solid var(--lime);border-radius:12px;padding:1.1rem 1.4rem;margin-top:1.25rem}
.tr-interp .ti-label{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink4);margin-bottom:7px}
.tr-interp p{font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--ink2);text-wrap:pretty}
.tr-interp p strong{color:var(--ink);font-weight:700}

@media(max-width:1100px){
  .tr-metrics{grid-template-columns:1fr 1fr}
  .tr-wl{grid-template-columns:1fr}
}

/* ════════════════════════════════════════════════════════════════════
   TYPE SYSTEM v2 — global role overrides (2026-06-19)
   Graduates the page-scoped proof (Overview + Actions, signed off) to every
   page that loads app.css. Additive + last in the cascade, so they re-point
   ONLY font-family at each selector's own specificity; sizes/colours/weights
   are untouched. Faux-bold is handled globally by font-synthesis:style on
   body, so no weight caps are needed here.
     • UI tier  → Manrope : section/card headers, engine/host names, table
                            headers, running prose, status verdicts, inline
                            emphasis inside prose.
     • DATA tier → DM Mono : small inline numbers (big score callouts >=20px
                            stay Syne via their original var(--sans) rules).
     • Untouched (stay Syne): page H1 (.hero-body h1), big score numbers,
                            brand marks/names (sidebar logo, brand switcher).
   ════════════════════════════════════════════════════════════════════ */
.sec-title,.cmp-sec-title,.tr-sec-title,.hz-name,.pf-head h3,.pf-name,
.play-title,.act-body h3,.dl-title,.as-title,.ins-label,.cov-cap-t,
.cov-grid tbody th,.et-eng,.rd-eng,.ac-eng,.mi-eng,.s-host,
.ans-qhead .aq-txt,.rmx thead th,.wl-head,.tc-metric,.lb-brand b,
.pb-text,.act-body p,.dl-desc,.ol-cap,.pf-verdict,
.ap-note b,.ans-summary b,.ac-snippet b,.ac-full b,.rd-verbatim b,
.mn-sent-key b,.mn-count b,.wl-item strong,.mi-snippet mark,
.mi-snippet .comp-hl{
  font-family:var(--font-ui);
}

.v-pillar-mini strong,.ins-den,.ins-rank b,.act-lift strong,
.pf-metric-val,.pf-moves-val strong,.eng-stat .es-den,
.et-you-n,.et-ld-n,.et-score .ys,.cov-sum-you,.cov-sum-ld,
.s-tot,.s-num,.brand-chip .bc-rank,.lb-rank,.lb-pct,.lb-pos,.lb-won,
.rmx-rank,.mn-acc-n,.tr-stat .ts-from,.cmp-stat .cs-den,
.you-tag,.tc-delta .to{
  font-family:var(--font-mono);
}