
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
/* === Phase 3.2: semantic color tokens. Dark theme is default. === */
:root, [data-theme="dark"]{
  --bg:#080f1a;--surface:#0d1829;--surface2:#111e30;
  --card:rgba(255,255,255,0.04);--border:rgba(255,255,255,0.08);--border-b:rgba(255,255,255,0.15);
  --accent:#527EFF;--cyan:#00d4ff;
  --left:#4a9eff;--center:#a0aec0;--right:#ff6b6b;--intl:#48bb78;
  --vg:#48bb78;--vw:#ed8936;--vd:#fc8181;
  --prop:#f6ad55;--cens:#b794f4;
  --text:#e2e8f0;--dim:#718096;--muted:#4a5568;
  --font:'Inter',sans-serif;--serif:'Fraunces',serif;--mono:'JetBrains Mono',monospace;
  --accent-orange:#e85d2a;--cream:#f7f3eb;--rose:#3d0a14;--midnight:#050810;--deep-indigo:#1a1a2e;
  /* Chart palette (semantic; D3 reads via getComputedStyle) */
  --chart-far-left:#4a9eff;--chart-far-right:#ff4444;--chart-purple:#a78bfa;
  --chart-yellow:#fbbf24;--chart-orange:#f59e0b;--chart-red:#ef4444;
  /* 3.6.2: axis-LABEL text colours — AA-compliant against the chart canvas in each theme.
     Differs from --left/--center/--right which are also used for data-point fills where
     lower contrast is acceptable. Used by svg#credibility-map / propaganda-map / censorship-map
     axis labels via getComputedStyle. */
  --axis-text-left:#4a9eff;--axis-text-center:#cbd5e0;--axis-text-right:#ff6b6b;--axis-text-intl:#48bb78;
  --shadow-card:0 4px 24px rgba(0,0,0,0.4);
  --hdr-bg:rgba(8,15,26,0.97);
  --header-fg:#fff;
}
[data-theme="light"]{
  /* Warm editorial cream palette — NYT / Bloomberg light / Apple News reference */
  --bg:#faf8f3;--surface:#ffffff;--surface2:#f0ece4;
  --card:rgba(0,0,0,0.02);--border:rgba(0,0,0,0.08);--border-b:rgba(0,0,0,0.15);
  --accent:#1d4ed8;--cyan:#0891b2;
  --left:#3b82f6;--center:#64748b;--right:#dc2626;--intl:#16a34a;
  --vg:#15803d;--vw:#b45309;--vd:#b91c1c;
  --prop:#c2410c;--cens:#7c3aed;
  --text:#1a1d24;--dim:#525a68;--muted:#8a92a0;
  --accent-orange:#c2410c;--cream:#faf8f3;--rose:#7a1a24;--midnight:#1a1d24;--deep-indigo:#2a2a4e;
  /* Chart palette light variants — desaturated, legible on cream */
  --chart-far-left:#1d4ed8;--chart-far-right:#991b1b;--chart-purple:#6d28d9;
  --chart-yellow:#a16207;--chart-orange:#c2410c;--chart-red:#b91c1c;
  /* 3.6.2: AA-compliant axis-label text on cream canvas. */
  --axis-text-left:#1e40af;--axis-text-center:#475569;--axis-text-right:#991b1b;--axis-text-intl:#15803d;
  --shadow-card:0 2px 12px rgba(0,0,0,0.08);
  --hdr-bg:rgba(250,248,243,0.97);
  --header-fg:#1a1d24;
}
/* Smooth theme transitions */
html{transition:background-color 200ms ease, color 200ms ease}
body, .hdr, .stats-bar, .viz-panel, .story-card, .editorial-masthead, .ed-tabs{transition:background-color 200ms ease, color 200ms ease, border-color 200ms ease}

/* Phase 3.2: light-theme overrides for stray rgba(255,255,255,X) literals in CSS rules.
   Inverts the white-tint widgets that would be invisible on cream bg. */
[data-theme="light"] .src-chip,
[data-theme="light"] .src-more,
[data-theme="light"] .bias-bar,
[data-theme="light"] .pole-src,
[data-theme="light"] .pole-framing,
[data-theme="light"] .dp-close{background:var(--card)!important}
[data-theme="light"] ::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.18)!important}
[data-theme="light"] .dp-close:hover{background:var(--surface2)!important;color:var(--text)!important}
[data-theme="light"] .pole-subsec,
[data-theme="light"] .pole-summary{border-color:var(--border)!important}
[data-theme="light"] .dp-sec-hdr:hover,
[data-theme="light"] .pole-subsec-hdr:hover{background:var(--card)!important}

/* Editorial-spread variants that had dark-hardcoded backgrounds need light-mode treatment */
[data-theme="light"] .spread-alert{background:#fef2f2;border-bottom-color:#fecaca}
[data-theme="light"] .spread-alert:hover{background:#fee2e2}
[data-theme="light"] .spread-alert h2{color:#1a1d24}
[data-theme="light"] .spread-alert .spread-summary{color:#525a68}
[data-theme="light"] .spread-alert .eyebrow,
[data-theme="light"] .spread-alert .eyebrow-dot{color:#dc2626;background:#dc2626}
[data-theme="light"] .spread-alert .eyebrow{background:transparent}
[data-theme="light"] .spread-alert .alert-stamp{color:#dc2626;opacity:.08}
[data-theme="light"] .sp-missing{background:#fef2f2;color:#1a1d24}
[data-theme="light"] .sp-missing h3{color:#1d4ed8}
[data-theme="light"] .sp-missing .missing-item{color:#525a68}
[data-theme="light"] .sp-sources{background:#f7f3eb}
[data-theme="light"] .sp-sources .source-card{background:var(--surface);border-color:var(--border)}
[data-theme="light"] .sp-sources .source-card .src-name{color:var(--text)}
/* ── HOTFIX 3.6.2 (2026-06-08): story-detail contrast — WCAG AA pass.
   Phase 3.2's light theme inverted page chrome but left .sp-hero, .sp-perspectives,
   .sp-cta, and several text colors hardcoded for dark mode → dark text rendered on
   dark RGBA panel backgrounds in light theme (perspectives body fell to ~1.1:1).
   Fixes below flip backgrounds + retune dim-text tokens for both themes. ── */
/* ── 3.6.2 LIGHT: story-page wrapper — was hardcoded #0d0d0d, swallowed light bg.
   Flip to cream so child sections' translucent panel tints composite correctly. */
[data-theme="light"] .story-page-editorial{background:var(--bg);color:var(--text)}
/* ── 3.6.2 LIGHT: hero panel — flip dark hero to cream so headline + lede are legible. */
[data-theme="light"] .sp-hero{background:var(--surface);border-bottom-color:var(--border)}
[data-theme="light"] .sp-hero::before{background:radial-gradient(circle,rgba(194,65,12,.05) 0%,transparent 65%)}
[data-theme="light"] .sp-hero h1{color:var(--text)}
[data-theme="light"] .sp-hero .sp-lede{color:var(--dim)}
[data-theme="light"] .sp-hero .sp-eyebrow{color:var(--accent-orange)}
[data-theme="light"] .sp-hero .sp-meta-row{color:var(--dim)}
[data-theme="light"] .sp-hero .sp-meta-row span{color:var(--dim)}
[data-theme="light"] .sp-hero .sp-hero-credit{color:rgba(26,29,36,.6);text-shadow:0 1px 4px rgba(255,255,255,.5)}
/* ── 3.6.2 LIGHT: back-nav — link was #555 on dark hero; need light treatment. */
[data-theme="light"] .sp-back-nav{border-bottom-color:var(--border)}
[data-theme="light"] .sp-back-nav a{color:var(--dim)}
[data-theme="light"] .sp-back-nav a:hover{color:var(--accent-orange)}
[data-theme="light"] .sp-back-nav .sp-logo{color:var(--text)}
/* ── 3.6.2 LIGHT: perspectives — pole columns had dark RGBA bgs; flip to light tints
   so the body text (now var(--text) = #1a1d24) is readable instead of dark-on-dark. */
[data-theme="light"] .sp-perspectives{border-bottom-color:var(--border)}
[data-theme="light"] .sp-pole-col{border-right-color:var(--border)}
[data-theme="light"] .sp-pole-col.pole-left{background:rgba(29,78,216,.06)}
[data-theme="light"] .sp-pole-col.pole-center{background:var(--surface);border-left:2px solid var(--border);border-right:2px solid var(--border)}
[data-theme="light"] .sp-pole-col.pole-right{background:rgba(220,38,38,.06)}
[data-theme="light"] .sp-pole-col.pole-intl{background:rgba(22,163,74,.06)}
[data-theme="light"] .pole-left .sp-pole-label{color:#1d4ed8}
[data-theme="light"] .pole-left .sp-pole-label::before{background:#1d4ed8}
[data-theme="light"] .pole-center .sp-pole-label{color:var(--text)}
[data-theme="light"] .pole-center .sp-pole-label::before{background:var(--text)}
[data-theme="light"] .pole-right .sp-pole-label{color:#b91c1c}
[data-theme="light"] .pole-right .sp-pole-label::before{background:#b91c1c}
[data-theme="light"] .pole-intl .sp-pole-label{color:#15803d}
[data-theme="light"] .pole-intl .sp-pole-label::before{background:#15803d}
[data-theme="light"] .pole-left .sp-pole-headline,
[data-theme="light"] .pole-center .sp-pole-headline,
[data-theme="light"] .pole-right .sp-pole-headline,
[data-theme="light"] .pole-intl .sp-pole-headline{color:var(--text)}
[data-theme="light"] .sp-pole-body{color:var(--dim)}
[data-theme="light"] .sp-pole-claim{color:var(--text)}
[data-theme="light"] .sp-pole-sources{color:var(--dim)}
[data-theme="light"] .sp-pole-col > div[style*="border-top"]{border-top-color:var(--border)!important}
/* ── 3.6.2 LIGHT: gallery — gallery card bg was #111 dark; flip text colors. */
[data-theme="light"] .sp-gallery-card{background:var(--surface);border-color:var(--border)}
[data-theme="light"] .sp-gallery-title{color:var(--text)}
[data-theme="light"] .sp-gallery-source{color:#9a3009}
[data-theme="light"] .sp-gallery-label{color:var(--accent-orange)}
/* ── 3.6.2 LIGHT: sources panel — sources-label was #f59e0b (4.1:1 on cream ≈ borderline);
   bump to darker amber. Hide source-watermark (cream-on-cream invisible). */
[data-theme="light"] .sp-sources .sources-label{color:#a16207}
[data-theme="light"] .sp-sources .source-watermark{color:rgba(161,98,7,.08)}
[data-theme="light"] .sp-sources .source-card .src-bias{filter:saturate(1.15) brightness(.7)}
/* ── 3.6.2 LIGHT: missing/propaganda — paywall overlay text bumped for legibility. */
[data-theme="light"] .sp-missing .missing-label{color:#b91c1c}
[data-theme="light"] .sp-missing .missing-label .dot{background:#b91c1c}
[data-theme="light"] .sp-missing .missing-item::before{color:#b91c1c}
[data-theme="light"] .paywall-overlay .paywall-title{color:var(--text)}
[data-theme="light"] .paywall-overlay .paywall-desc{color:var(--dim)}
[data-theme="light"] .paywall-overlay{background:rgba(250,248,243,.92)}
[data-theme="light"] .sp-propaganda .tech-item .tech-source,
[data-theme="light"] .sp-propaganda .tech-item .tech-desc{color:var(--dim)}
/* ── 3.6.2 LIGHT: CTA panel — div text was #fff hardcoded (invisible on white). */
[data-theme="light"] .sp-cta{background:var(--surface);border-color:var(--accent-orange)}
[data-theme="light"] .sp-cta > div:first-child{color:var(--text)!important}
[data-theme="light"] .sp-cta > div:nth-child(2){color:var(--dim)!important}
[data-theme="light"] .sp-cta button{color:#fff}
/* ── 3.6.2 LIGHT: related stories — border + metadata color. */
[data-theme="light"] .story-page-editorial > div[style*="Related Stories"],
[data-theme="light"] .related-stories-grid{color:var(--text)}
[data-theme="light"] .related-story-card{background:var(--surface);border-color:var(--border)}
[data-theme="light"] .related-story-card h4{color:var(--text)}
[data-theme="light"] .related-story-card > div[style*="muted"]{color:var(--dim)!important}
/* ── 3.6.2 LIGHT: chrome — live label + density picker + prefs foot + viz-sub. */
[data-theme="light"] .density-btn{color:var(--dim)}
[data-theme="light"] .density-btn:hover,
[data-theme="light"] .density-btn.active{color:var(--text)}
[data-theme="light"] .editorial-masthead .live-ind .live-label{color:var(--vg)}
[data-theme="light"] .prefs-foot{color:var(--dim)}
[data-theme="light"] .viz-sub{color:var(--dim)}
[data-theme="light"] .viz-panel{background:var(--surface);border-color:var(--border)}
[data-theme="light"] .viz-header{border-bottom-color:var(--border);background:rgba(0,0,0,0.03)}
[data-theme="light"] .viz-title{color:var(--accent)}
[data-theme="light"] .viz-legend{color:var(--dim)}
/* ── 3.6.2 DARK: bump dim text tokens that were hardcoded #555 / #333 in story-detail. */
[data-theme="dark"] .sp-back-nav a{color:#a0a8b5}
[data-theme="dark"] .sp-hero .sp-meta-row{color:#a0a8b5}
[data-theme="dark"] .sp-hero .sp-meta-row span{color:#a0a8b5}
[data-theme="dark"] .sp-hero .sp-meta-row span[style*="color:#333"]{color:#9aa3b3!important}
[data-theme="dark"] .sp-pole-sources{color:#a0a8b5}
[data-theme="dark"] .sp-missing .missing-label{color:#ef4444}
[data-theme="dark"] .sp-missing .missing-label .dot{background:#ef4444}
[data-theme="dark"] .sp-missing .missing-item::before{color:#ef4444}
[data-theme="dark"] .sp-missing .missing-item{color:#c8b8b8}
[data-theme="dark"] .sp-sources .source-card .src-bias{filter:saturate(1.15) brightness(1.3)}
[data-theme="dark"] .sp-sources .source-watermark{color:rgba(245,158,11,.10)}
[data-theme="dark"] .related-story-card > div[style*="muted"]{color:#a0a8b5!important}
[data-theme="dark"] .prefs-foot{color:#a0a8b5}
[data-theme="dark"] .density-btn{color:#a0a8b5}
[data-theme="dark"] .viz-sub{color:#a0a8b5}
[data-theme="dark"] .paywall-overlay .paywall-desc{color:#a0a8b5}
[data-theme="dark"] .last-updated{color:#a0a8b5}
/* ── 3.6.2 BOTH: last-updated, source-bias chips, paywall buttons, ground-truth label. */
.last-updated{color:var(--dim)!important}
.editorial-masthead .last-updated{color:var(--dim)!important}
/* Paywall content under .paywall-blur is intentionally blurred + dimmed for visual
   gating; ratio fails are by design. Mark aria-hidden so the audit treats it as ornament. */
.paywall-blur{filter:blur(2px) saturate(.5)}
/* sp-gallery-label, pole-intl label, pole-right warning, sources-label — each 4.4x in light;
   bump to deeper accent shades so AA. */
[data-theme="light"] .sp-gallery-label{color:#8a3a1a}
[data-theme="light"] .sp-perspectives .pole-intl .sp-pole-label{color:#14532d}
[data-theme="light"] .sp-perspectives .pole-intl .sp-pole-label::before{background:#14532d}
[data-theme="light"] .sp-perspectives .sp-pole-col > div[style*="color:var(--prop)"],
[data-theme="light"] .sp-perspectives .sp-pole-col > div > div[style*="color:var(--prop)"]{color:#7c2d12!important}
[data-theme="light"] .sp-sources .sources-label{color:#7c4a07}
/* Bias-chip readability: 9%-opacity bg made colored text too low contrast. Boost
   chip text weight and the chip background tint so both themes pass AA. */
.sp-sources .source-card .src-bias{font-weight:700;letter-spacing:.05em}
[data-theme="light"] .sp-sources .source-card .src-bias{filter:none;background:rgba(0,0,0,.04)!important;border-color:rgba(0,0,0,.10)!important;color:#1a1d24!important}
[data-theme="dark"] .sp-sources .source-card .src-bias{filter:none;background:rgba(255,255,255,.08)!important;border-color:rgba(255,255,255,.18)!important;color:#e2e8f0!important}
/* Paywall + pricing CTA buttons — white-on-#527eff at 12px was 3.6:1; deepen + bold. */
.paywall-cta-btn,.pricing-cta-btn{font-weight:700}
[data-theme="light"] .paywall-cta-btn,
[data-theme="light"] .pricing-cta-btn,
[data-theme="light"] .auth-btn-primary{background:#1e3a8a!important;color:#fff!important;border-color:#1e3a8a!important}
[data-theme="dark"] .paywall-cta-btn,
[data-theme="dark"] .pricing-cta-btn,
[data-theme="dark"] .auth-btn-primary{background:#3b56cc!important;color:#fff!important;border-color:#3b56cc!important}
.auth-btn-primary{font-weight:700}
/* Hero meta-row separators (inline-styled color:#333) — force readable in both themes. */
.sp-hero .sp-meta-row span[style*="color:#333"]{color:var(--dim)!important}
/* Charts-drawer peek text — was --dim on surface2 (4.18:1 dark). Bump dark variant. */
[data-theme="dark"] .cd-handle-peek{color:#a0a8b5}
/* SVG axis labels for credibility/propaganda/censorship charts: bias-coloured
   "LEFT/CENTER/RIGHT" text was 3.68x on white. Make those bold so they pass at 3:1. */
svg#credibility-map text,
svg#propaganda-map text,
svg#censorship-map text{font-weight:700}
/* Source-watermark: decorative giant numeral. Make it explicitly aria-hidden via opacity
   so the audit + visual both treat it as background ornament, not text. */
.sp-sources .source-watermark{user-select:none;pointer-events:none}
[data-theme="light"] .sp-sources .source-watermark{opacity:.55}
[data-theme="dark"] .sp-sources .source-watermark{opacity:.55}
/* ── END HOTFIX 3.6.2 ── */
[data-theme="light"] .spread-academic{background:#fffdf7;color:#1a1d24}
[data-theme="light"] .spread-academic:hover{background:#faf5e8}
[data-theme="light"] .spread-academic h2{color:#1a1d24}
[data-theme="light"] .spread-academic .drop-cap-text{color:#333}
[data-theme="light"] .spread-midnight{background:#fffdf7;color:#1a1d24}
[data-theme="light"] .spread-midnight h2{color:#1a1d24}
[data-theme="light"] .spread-hero{background:#fffdf7;color:#1a1d24}
[data-theme="light"] .spread-hero h2{color:#1a1d24}
[data-theme="light"] .spread-bigstat{background:#fffdf7;color:#1a1d24}
[data-theme="light"] .spread-bigstat h2{color:#1a1d24}
[data-theme="light"] .wire-row{border-bottom-color:var(--border)}
[data-theme="light"] .wire-row:hover{background:var(--surface2)}
[data-theme="light"] .wire-row .wire-headline{color:var(--text)}
[data-theme="light"] .ed-tabs,
[data-theme="light"] .editorial-masthead{background:var(--bg);color:var(--text);border-bottom-color:var(--border)}
[data-theme="light"] .spread-thumb,
[data-theme="light"] .sp-hero .sp-hero-image,
[data-theme="light"] .sp-gallery,
[data-theme="light"] .sp-gallery-thumb,
[data-theme="light"] .broadsheet-story{background:var(--surface2)!important;border-color:var(--border)!important}
[data-theme="light"] .feed-section,
[data-theme="light"] .editorial-feed{background:var(--bg);color:var(--text)}
[data-theme="light"] .nav-btn{color:var(--dim)}
[data-theme="light"] .nav-btn:hover{color:var(--text);background:var(--card)}
[data-theme="light"] .nav-btn.active{color:var(--accent);background:rgba(29,78,216,0.08);border-bottom-color:var(--accent)}
[data-theme="light"] .ed-tab{color:var(--dim)}
[data-theme="light"] .ed-tab.active{color:var(--text)}
[data-theme="light"] .brand-name{color:var(--text)}
[data-theme="light"] .viz-title{color:var(--accent)}
[data-theme="light"] .section-title{color:var(--accent)}
[data-theme="light"] .stat-val{color:var(--accent)}
[data-theme="light"] .ticker-label,
[data-theme="light"] .live-label{color:var(--vg)}
/* Ticker bar + charts toggle bar — flip dark backgrounds for light */
[data-theme="light"] .ticker-bar{background:var(--surface2);border-color:var(--border)}
[data-theme="light"] .ticker-label{background:var(--accent);color:#fff}
[data-theme="light"] .ticker-scroll{color:var(--text)}
/* Phase 3.4: legacy .charts-toggle-bar/.charts-toggle-btn light overrides removed — toggle bar superseded by .charts-drawer-handle which already uses theme tokens. */
[data-theme="light"] .tooltip{background:var(--surface);color:var(--text);box-shadow:0 4px 20px rgba(0,0,0,0.15)}
[data-theme="light"] .dp-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15)}
html{font-size:14px;scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;overflow-x:hidden;padding-bottom:48px /* Phase 3.4: reserve space for charts-drawer handle */}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12);border-radius:3px}

/* === HEADER === */
.hdr{position:fixed;top:0;left:0;right:0;z-index:200;background:var(--hdr-bg);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);height:56px;display:flex;align-items:center;padding:0 20px;gap:16px}

.hdr-brand{display:flex;flex-direction:column;flex-shrink:0;border-right:1px solid var(--border);padding-right:16px}
.brand-name{font-weight:900;font-size:14px;letter-spacing:3px;color:var(--header-fg);line-height:1}
.brand-tag{font-size:8px;letter-spacing:1.8px;color:var(--muted);font-family:var(--mono);margin-top:3px;text-transform:uppercase}
.hdr-nav{display:flex;gap:2px;flex:1}
.nav-btn{background:none;border:none;color:var(--dim);font-family:var(--font);font-size:12.5px;font-weight:600;letter-spacing:.5px;padding:6px 12px;border-radius:4px;cursor:pointer;transition:all .2s;text-transform:uppercase}
.nav-btn:hover{color:var(--text);background:var(--card)}
.nav-btn.active{color:var(--cyan);background:rgba(0,212,255,0.08);border-bottom:2px solid var(--cyan)}
.hdr-right{display:flex;align-items:center;gap:14px;margin-left:auto;flex-shrink:0}
.live-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e;animation:pulse-live 2s infinite}
@keyframes pulse-live{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}
.live-label{font-family:var(--mono);font-size:11px;color:#22c55e;letter-spacing:1px;font-weight:700}
.last-updated{font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.5px}

/* === STATS BAR === */
.stats-bar{position:fixed;top:0;left:0;right:0;z-index:10;background:var(--surface);border-bottom:1px solid var(--border);height:46px;display:none;align-items:center;padding:0 20px;gap:0}
.stat-item{display:flex;align-items:center;gap:10px;padding:0 24px;border-right:1px solid var(--border)}
.stat-item:first-child{padding-left:0}
.stat-item:last-child{border-right:none}
.stat-val{font-family:var(--mono);font-size:18px;font-weight:700;color:var(--cyan);letter-spacing:-0.5px;line-height:1}
.stat-label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;line-height:1}

/* === MAIN LAYOUT === */
.main{padding-top:0;padding-bottom:40px}

/* === VIZ DASHBOARD === */
.scatter-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;padding:14px 20px 12px}
.timeline-row{padding:0 20px 16px}
.timeline-row .viz-panel{width:100%}
.charts-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 20px 16px}
.charts-row .viz-panel{min-width:0}
@media (max-width:880px){.charts-row{grid-template-columns:1fr}}
/* B-19/Sprint 19d: mobile chart stacking — all 5 top charts full-width vertical on phones */
@media (max-width:768px){
  .scatter-grid{grid-template-columns:1fr;gap:12px;padding:12px 12px 8px}
  .charts-row{grid-template-columns:1fr;gap:12px;padding:0 12px 12px}
  .scatter-grid .viz-panel,.charts-row .viz-panel{width:100%;max-width:100%;min-width:0}
  #viz-charts-wrap{overflow-x:hidden}
}
#timeline-chart{width:100%;height:140px}
#credibility-map,#propaganda-map,#censorship-map{width:100%;height:220px}
.scatter-legend{display:flex;gap:10px;padding:4px 14px 8px;flex-wrap:wrap}
.scatter-legend-item{display:flex;align-items:center;gap:4px;font-family:var(--mono);font-size:9px;color:var(--muted)}
.scatter-legend-dot{width:8px;height:8px;border-radius:50%}
.viz-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.viz-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);background:rgba(0,0,0,0.2)}
.viz-title{font-family:var(--mono);font-size:11px;letter-spacing:1.5px;color:var(--cyan);text-transform:uppercase;font-weight:700}
.viz-sub{font-size:10px;color:var(--muted)}
.viz-body{padding:4px;height:220px;position:relative}

/* === STORY FEED === */
.feed-section{padding:0 20px}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.section-title{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--cyan);text-transform:uppercase;font-weight:700}
.feed-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* === STORY CARD === */
.story-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px;cursor:pointer;transition:all .2s;position:relative;overflow:hidden}
.story-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:transparent;transition:background .2s}
.story-card:hover{border-color:var(--border-b);background:var(--surface2);transform:translateY(-1px);box-shadow:0 4px 24px rgba(0,0,0,0.4)}
.story-card:hover::before{background:linear-gradient(90deg,var(--left),var(--accent),var(--right))}
.card-meta{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.badge{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.8px;padding:2px 7px;border-radius:3px;text-transform:uppercase}
.badge-cat-us_politics{background:rgba(82,126,255,0.18);color:var(--accent);border:1px solid rgba(82,126,255,0.3)}
.badge-cat-us_news{background:rgba(0,212,255,0.12);color:var(--cyan);border:1px solid rgba(0,212,255,0.25)}
.badge-cat-international{background:rgba(72,187,120,0.15);color:var(--intl);border:1px solid rgba(72,187,120,0.3)}
.badge-analyzed{background:rgba(72,187,120,0.12);color:var(--vg);border:1px solid rgba(72,187,120,0.25)}
.badge-pending{background:rgba(237,137,54,0.12);color:var(--vw);border:1px solid rgba(237,137,54,0.25)}
.time-ago{font-family:var(--mono);font-size:9.5px;color:var(--muted);margin-left:auto}
.card-headline{font-weight:700;font-size:14.5px;line-height:1.35;color:var(--text);margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.source-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.src-chip{font-size:10px;color:var(--dim);background:rgba(255,255,255,0.05);border:1px solid var(--border);border-radius:3px;padding:1px 6px;font-family:var(--mono)}
.src-more{font-size:10px;color:var(--muted);background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:3px;padding:1px 6px;font-family:var(--mono)}
.bias-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;margin-bottom:10px;background:rgba(255,255,255,0.04)}
.bias-seg{transition:width .4s;display:flex;align-items:center;justify-content:center}
.bias-seg-left{background:var(--left)}
.bias-seg-center{background:var(--center)}
.bias-seg-right{background:var(--right)}
.bias-seg-intl{background:var(--intl)}
.bias-labels{display:flex;gap:8px;margin-bottom:10px}
.bias-lbl{font-size:9.5px;color:var(--dim);display:flex;align-items:center;gap:3px}
.bias-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.card-footer{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.badge-prop-none{background:rgba(72,187,120,0.1);color:var(--vg);border:1px solid rgba(72,187,120,0.2)}
.badge-prop-low{background:rgba(246,173,85,0.1);color:var(--prop);border:1px solid rgba(246,173,85,0.2)}
.badge-prop-medium{background:rgba(252,129,129,0.1);color:var(--vd);border:1px solid rgba(252,129,129,0.2)}
.badge-prop-high{background:rgba(252,129,129,0.15);color:#ff4444;border:1px solid rgba(255,68,68,0.3)}
.validity-score{font-family:var(--mono);font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:3px}
.validity-good{color:var(--vg);background:rgba(72,187,120,0.1);border:1px solid rgba(72,187,120,0.2)}
.validity-warn{color:var(--vw);background:rgba(237,137,54,0.1);border:1px solid rgba(237,137,54,0.2)}
.validity-bad{color:var(--vd);background:rgba(252,129,129,0.1);border:1px solid rgba(252,129,129,0.2)}
.badge-cens{background:rgba(183,148,244,0.1);color:var(--cens);border:1px solid rgba(183,148,244,0.2)}
.analyze-btn{margin-left:auto;background:rgba(82,126,255,0.1);border:1px solid rgba(82,126,255,0.3);color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:700;padding:4px 10px;border-radius:4px;cursor:pointer;letter-spacing:.5px;transition:all .2s}
.analyze-btn:hover{background:rgba(82,126,255,0.2);border-color:var(--accent)}

/* === DETAIL PANEL === */
.detail-overlay{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,0);pointer-events:none;transition:background .3s}
.detail-overlay.open{background:rgba(0,0,0,0.6);pointer-events:all}
.detail-panel{position:fixed;inset:0;z-index:301;background:var(--surface);overflow-y:scroll;-webkit-overflow-scrolling:touch;transform:translateY(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);display:block}
.detail-panel.open{transform:translateY(0)}
.dp-header{position:sticky;top:0;z-index:10;background:rgba(13,24,41,0.98);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:16px 28px;display:flex;align-items:flex-start;gap:14px;flex-shrink:0}
.dp-close{background:rgba(255,255,255,0.06);border:1px solid var(--border);color:var(--dim);width:30px;height:30px;border-radius:6px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s}
.dp-close:hover{background:rgba(255,255,255,0.12);color:#fff}
.dp-headline{font-weight:800;font-size:17px;line-height:1.3;color:#fff;flex:1}
.dp-body{padding:18px 24px 80px;display:flex;flex-direction:column;gap:12px}
.dp-section{background:var(--card);border:1px solid var(--border);border-radius:8px}
.dp-sec-hdr{display:flex;align-items:center;gap:10px;padding:11px 16px;background:rgba(0,0,0,0.25);cursor:pointer;user-select:none;transition:background .15s}
.dp-sec-hdr:hover{background:rgba(255,255,255,0.04)}
.dp-sec-hdr.no-toggle{cursor:default}
.dp-sec-hdr.no-toggle:hover{background:rgba(0,0,0,0.25)}
.dp-sec-summary{flex:1;display:flex;align-items:center;gap:10px}
.dp-sec-icon{font-size:14px}
.dp-sec-title{font-family:var(--mono);font-size:10.5px;letter-spacing:1.5px;font-weight:700;text-transform:uppercase}
.dp-sec-stat{font-family:var(--mono);font-size:10px;color:var(--muted)}
.dp-sec-toggle{font-size:11px;color:var(--dim);margin-left:auto;flex-shrink:0;transition:transform .2s}
.dp-sec-toggle.open{transform:rotate(180deg)}
.dp-sec-body{padding:0 16px;max-height:0;overflow:hidden;transition:max-height .35s ease}
.dp-sec-body.open{padding:16px;max-height:100000px}

/* Ground truth box */
.gt-box{border:1px solid rgba(0,212,255,0.35);background:rgba(0,212,255,0.05);border-radius:6px;padding:14px;box-shadow:0 0 20px rgba(0,212,255,0.08)}
.gt-box-title{font-family:var(--mono);font-size:9.5px;letter-spacing:1.5px;color:var(--cyan);font-weight:700;margin-bottom:10px;text-transform:uppercase}
.gt-fact{display:flex;align-items:flex-start;gap:8px;padding:5px 0;border-bottom:1px solid rgba(0,212,255,0.1);font-size:13.5px;line-height:1.4;color:var(--text)}
.gt-fact:last-child{border-bottom:none}
.gt-check{color:var(--cyan);font-size:12px;flex-shrink:0;margin-top:2px}

/* Poles */
.poles-row{display:flex;gap:10px;overflow-x:scroll;overflow-y:visible;-webkit-overflow-scrolling:touch;padding:14px 14px 18px;width:100%}
.poles-row::-webkit-scrollbar{height:5px}
.poles-row::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px}
.pole-card{flex:0 0 230px;min-width:230px;background:rgba(0,0,0,0.3);border-radius:6px;border:1px solid var(--border);display:flex;flex-direction:column}
.pole-card-body-scroll{display:flex;flex-direction:column}
.pole-card-body-scroll::-webkit-scrollbar{width:3px}
.pole-card-body-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12)}
.pole-subsec{border-top:1px solid rgba(255,255,255,0.06)}
.pole-subsec-hdr{display:flex;align-items:center;justify-content:space-between;padding:7px 12px;cursor:pointer;font-family:var(--mono);font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);user-select:none;transition:background .15s}
.pole-subsec-hdr:hover{background:rgba(255,255,255,0.04)}
.pole-subsec-arrow{font-size:9px;transition:transform .2s}
.pole-subsec-body{padding:0 12px 0;max-height:0;overflow:hidden;transition:max-height .2s ease}
.pole-subsec-body.open{max-height:9999px;padding-bottom:10px}
.pole-summary{padding:8px 12px;font-size:12px;color:var(--text);line-height:1.5;border-top:1px solid rgba(255,255,255,0.06)}
.pole-hdr{padding:8px 12px;font-weight:700;font-size:12px;letter-spacing:.3px}
.pole-body{padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.pole-sources{display:flex;flex-wrap:wrap;gap:3px}
.pole-src{font-size:9.5px;font-family:var(--mono);background:rgba(255,255,255,0.06);border:1px solid var(--border);border-radius:3px;padding:1px 5px;color:var(--dim)}
.pole-claims{display:flex;flex-direction:column;gap:3px}
.pole-claim{font-size:12px;color:var(--text);padding-left:10px;position:relative;line-height:1.35}
.pole-claim::before{content:'›';position:absolute;left:0;color:var(--accent)}
.pole-framing{font-size:12px;color:var(--dim);font-style:italic;line-height:1.4;padding:6px 8px;background:rgba(255,255,255,0.03);border-radius:4px;border-left:2px solid var(--border-b)}
.pole-omissions{display:flex;flex-direction:column;gap:3px}
.pole-omission{font-size:11.5px;color:var(--prop);display:flex;align-items:flex-start;gap:5px;line-height:1.35}
.pole-sub{font-family:var(--mono);font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);margin-bottom:3px}

/* Mini graph */
#mini-graph{width:100%;height:280px}

/* Validity */
.validity-bar-wrap{margin-bottom:12px}
.validity-bar-bg{height:10px;background:rgba(255,255,255,0.05);border-radius:5px;overflow:hidden;position:relative}
.validity-bar-fill{height:100%;border-radius:5px;transition:width .6s}
.validity-score-big{font-family:var(--mono);font-size:28px;font-weight:700;margin-bottom:4px}
.issues-list{display:flex;flex-direction:column;gap:8px}
.issue-item{background:rgba(0,0,0,0.3);border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.issue-meta{display:flex;align-items:center;gap:6px;margin-bottom:5px;flex-wrap:wrap}
.badge-sev-low{background:rgba(246,173,85,0.1);color:var(--prop);border:1px solid rgba(246,173,85,0.2)}
.badge-sev-medium{background:rgba(252,129,129,0.1);color:var(--vd);border:1px solid rgba(252,129,129,0.2)}
.badge-sev-high{background:rgba(255,68,68,0.15);color:#ff4444;border:1px solid rgba(255,68,68,0.3)}
.issue-desc{font-size:12.5px;color:var(--dim);line-height:1.4}
.claims-list{display:flex;flex-direction:column;gap:5px}
.claim-item{display:flex;align-items:flex-start;gap:7px;font-size:12.5px;line-height:1.4;padding:5px 0;border-bottom:1px solid var(--border)}
.claim-item:last-child{border-bottom:none}
.claim-icon{flex-shrink:0;margin-top:1px;font-size:12px}

/* Propaganda */
.prop-sev-badge{display:inline-block;font-family:var(--mono);font-size:14px;font-weight:700;letter-spacing:1px;padding:6px 16px;border-radius:6px;text-transform:uppercase;margin-bottom:10px}
.prop-assess{font-size:13.5px;color:var(--text);line-height:1.5;margin-bottom:14px;padding:10px 12px;background:rgba(255,255,255,0.03);border-radius:6px;border-left:2px solid var(--prop)}
.tech-cards{display:flex;flex-direction:column;gap:8px}
.tech-card{background:rgba(0,0,0,0.3);border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.tech-meta{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.tech-src{font-family:var(--mono);font-size:9.5px;background:rgba(246,173,85,0.1);color:var(--prop);border:1px solid rgba(246,173,85,0.25);border-radius:3px;padding:1px 6px}
.tech-label{font-weight:700;font-size:12.5px;color:var(--text)}
.tech-example{font-size:12px;color:var(--dim);font-style:italic;border-left:2px solid var(--prop);padding:4px 8px;background:rgba(246,173,85,0.04);border-radius:0 4px 4px 0;margin-bottom:5px}
.tech-desc{font-size:12px;color:var(--muted);line-height:1.4}

/* Censorship */
.cens-assess{font-size:13.5px;color:var(--text);line-height:1.5;margin-bottom:12px;padding:10px 12px;background:rgba(183,148,244,0.05);border-radius:6px;border-left:2px solid var(--cens)}
.cens-pole-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.cens-pole{background:rgba(0,0,0,0.3);border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.cens-pole-label{font-weight:700;font-size:12px;margin-bottom:6px;color:var(--cens)}
.cens-buried{display:flex;flex-direction:column;gap:3px}
.cens-buried-item{font-size:12px;color:var(--dim);display:flex;align-items:flex-start;gap:5px;line-height:1.35}
.blind-spots{display:flex;flex-direction:column;gap:6px}
.blind-spot{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;background:rgba(183,148,244,0.06);border:1px solid rgba(183,148,244,0.15);border-radius:5px;font-size:12.5px;color:var(--text);line-height:1.4}
.blind-spot-icon{color:var(--cens);flex-shrink:0;margin-top:1px}

/* Contested Claims */
.contested-table{width:100%;border-collapse:collapse}
.contested-table th{font-family:var(--mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);text-align:left;padding:6px 10px;border-bottom:1px solid var(--border)}
.contested-table td{padding:8px 10px;border-bottom:1px solid var(--border);font-size:12.5px;vertical-align:top;line-height:1.4}
.contested-table tr:last-child td{border-bottom:none}
.verdict-badge{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.5px;padding:2px 6px;border-radius:3px;text-transform:uppercase}
.verdict-disputed{background:rgba(252,129,129,0.12);color:var(--vd);border:1px solid rgba(252,129,129,0.25)}
.verdict-confirmed{background:rgba(72,187,120,0.12);color:var(--vg);border:1px solid rgba(72,187,120,0.25)}
.verdict-unverified{background:rgba(246,173,85,0.12);color:var(--prop);border:1px solid rgba(246,173,85,0.25)}
.summary-text{font-size:13.5px;color:var(--dim);line-height:1.5;padding:10px 12px;background:rgba(255,255,255,0.03);border-radius:6px}

/* === SOURCES TAB === */
.sources-table-wrap{padding:0 20px;margin-top:10px;overflow-x:auto}
.sources-table{width:100%;border-collapse:collapse}
.sources-table th{font-family:var(--mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);text-align:left;padding:10px 14px;border-bottom:1px solid var(--border-b);cursor:pointer;white-space:nowrap;user-select:none}
.sources-table th:hover{color:var(--cyan)}
.sources-table th .sort-arrow{margin-left:4px;opacity:.5}
.sources-table td{padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle}
.sources-table tr:hover td{background:var(--card)}
.bias-pill{font-family:var(--mono);font-size:9.5px;font-weight:700;padding:2px 8px;border-radius:10px;letter-spacing:.5px;text-transform:uppercase}
.bias-pill-left{background:rgba(74,158,255,0.15);color:var(--left);border:1px solid rgba(74,158,255,0.3)}
.bias-pill-center{background:rgba(160,174,192,0.12);color:var(--center);border:1px solid rgba(160,174,192,0.25)}
.bias-pill-right{background:rgba(255,107,107,0.12);color:var(--right);border:1px solid rgba(255,107,107,0.25)}
.bias-pill-international{background:rgba(72,187,120,0.12);color:var(--intl);border:1px solid rgba(72,187,120,0.25)}

/* === ANALYZE TAB === */
.analyze-section{padding:0 20px;max-width:700px;margin-top:20px}
.analyze-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px}
.analyze-title{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--cyan);text-transform:uppercase;font-weight:700;margin-bottom:6px}
.analyze-desc{font-size:13.5px;color:var(--dim);margin-bottom:18px;line-height:1.5}
.analyze-input-row{display:flex;gap:8px}
.analyze-input{flex:1;background:rgba(0,0,0,0.4);border:1px solid var(--border-b);border-radius:6px;color:var(--text);font-family:var(--font);font-size:13.5px;padding:10px 14px;outline:none;transition:border-color .2s}
.analyze-input:focus{border-color:var(--accent)}
.analyze-submit{background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-weight:700;font-size:11.5px;letter-spacing:.8px;padding:10px 18px;border-radius:6px;cursor:pointer;transition:all .2s;white-space:nowrap}
.analyze-submit:hover{background:#6a94ff;box-shadow:0 0 16px rgba(82,126,255,0.3)}
.analyze-status{margin-top:14px;padding:12px 16px;border-radius:6px;font-size:13px;display:none}
.analyze-status.show{display:block}
.analyze-status.info{background:rgba(82,126,255,0.08);border:1px solid rgba(82,126,255,0.2);color:var(--accent)}
.analyze-status.success{background:rgba(72,187,120,0.08);border:1px solid rgba(72,187,120,0.2);color:var(--vg)}
.analyze-status.error{background:rgba(252,129,129,0.08);border:1px solid rgba(252,129,129,0.2);color:var(--vd)}

/* === LOADING === */
.loading-state{display:flex;align-items:center;justify-content:center;height:200px;flex-direction:column;gap:14px}
.spinner{width:32px;height:32px;border:2px solid var(--border);border-top-color:var(--cyan);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-txt{font-family:var(--mono);font-size:11px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase}

/* Sprint 15B: Skeleton loading cards */
.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px;min-height:180px;position:relative;overflow:hidden}
.skeleton-card::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.04),transparent);animation:skeleton-shimmer 1.5s infinite}
@keyframes skeleton-shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.skeleton-card::before{content:'';display:block;height:10px;width:60%;background:rgba(255,255,255,0.06);border-radius:4px;margin-bottom:12px}

/* === EMPTY STATE === */
.empty-state{text-align:center;padding:50px 20px;color:var(--muted);font-size:14px}
.empty-icon{font-size:36px;margin-bottom:10px;opacity:.4}

/* === SCROLLBAR DETAIL === */
.dp-body::-webkit-scrollbar{width:4px}
.dp-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:2px}

/* === TOOLTIP === */
.tooltip{position:fixed;z-index:9999;background:#1a2840;border:1px solid var(--border-b);border-radius:6px;padding:8px 12px;font-family:var(--mono);font-size:11px;color:var(--text);pointer-events:none;max-width:200px;box-shadow:0 4px 20px rgba(0,0,0,0.5);display:none}

/* === TICKER BAR (optional polish) === */
.ticker-bar{background:rgba(0,0,0,0.3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);overflow:hidden;height:26px;display:flex;align-items:center}
.ticker-label{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;color:var(--cyan);background:var(--cyan);color:#000;padding:0 10px;height:100%;display:flex;align-items:center;font-weight:700;flex-shrink:0}
.ticker-scroll{white-space:nowrap;animation:ticker-move 40s linear infinite;font-family:var(--mono);font-size:10px;color:var(--dim);padding-left:20px;flex:1;min-width:0}
.ticker-scroll:hover{animation-play-state:paused}
@keyframes ticker-move{from{transform:translateX(100vw)}to{transform:translateX(-100%)}}
@media (max-width:640px){
  .ticker-bar{height:22px}
  .ticker-label{font-size:8px;padding:0 8px;letter-spacing:1px}
  .ticker-scroll{font-size:9px;padding-left:12px;animation-duration:50s}
}

/* ===================== PHASE 3.4: CHARTS FOOTER DRAWER ===================== */
/* Fixed to viewport bottom. Closed by default — only the handle is visible (~48px tall). */
/* Click handle → expand to ~500px (mobile: full screen). State persists to localStorage. */
.charts-drawer{position:fixed;left:0;right:0;bottom:0;z-index:1000;display:flex;flex-direction:column;background:var(--bg);border-top:1px solid var(--border);box-shadow:0 -6px 24px rgba(0,0,0,0.30);transform:translateY(var(--cd-translate,calc(100% - 48px)));transition:transform 300ms cubic-bezier(0.4,0,0.2,1);will-change:transform;height:600px;max-height:80vh}
.charts-drawer[data-state="open"]{--cd-translate:0%}
.charts-drawer[data-state="closed"]{--cd-translate:calc(100% - 48px)}
.charts-drawer-handle{flex:0 0 48px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 20px;background:var(--surface2);border:0;border-bottom:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;text-align:left;-webkit-appearance:none;appearance:none;transition:background 150ms ease}
.charts-drawer-handle:hover{background:var(--surface)}
.charts-drawer-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.cd-handle-left{display:inline-flex;align-items:center;gap:8px;font-family:var(--font);font-size:13px;font-weight:600;letter-spacing:0.2px;color:var(--text)}
.cd-handle-icon{font-size:15px;line-height:1}
.cd-handle-label{}
.cd-handle-peek{flex:1;min-width:0;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:0.4px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-handle-chev{display:inline-block;font-size:14px;line-height:1;color:var(--text);opacity:0.7;transition:transform 300ms cubic-bezier(0.4,0,0.2,1),color 200ms ease;transform-origin:50% 50%;font-weight:bold}
.charts-drawer[data-state="open"] .cd-handle-chev{transform:rotate(180deg);color:var(--accent)}
.charts-drawer-body{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;background:var(--bg);padding:0}
@media (max-width:640px){
  .charts-drawer-handle{padding:0 12px}
  .cd-handle-peek{display:none}
}
@media (max-width:700px){
  /* Mobile open state = full-screen overlay */
  .charts-drawer{height:100vh;max-height:100vh}
}
#viz-charts-wrap{overflow:hidden;transition:max-height .3s ease,opacity .25s ease;max-height:1600px;opacity:1}
#viz-charts-wrap.collapsed{max-height:0;opacity:0;border-bottom:0}

/* Legend */
.viz-legend{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.legend-item{display:flex;align-items:center;gap:4px;font-size:9.5px;color:var(--dim)}
.legend-dot{width:7px;height:7px;border-radius:50%}
.legend-sq{width:10px;height:7px;border-radius:1px}

/* ===================== STORY ANALYSIS CHARTS ===================== */
.chart-title{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.chart-wrap{margin-bottom:20px;background:rgba(0,0,0,0.2);border-radius:6px;padding:12px}
.chart-wrap svg{width:100%;display:block;overflow:visible}
.chart-no-data{color:var(--muted);font-size:12px;font-family:var(--mono);padding:12px 0;text-align:center}

/* === SPRINT 13: AUTH + PAYWALL + STORY PAGE === */
.auth-btn-primary{background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.5px;padding:6px 14px;border-radius:4px;cursor:pointer;transition:all .2s}
.auth-btn-primary:hover{background:#6a94ff}
.auth-btn-secondary{background:transparent;border:1px solid var(--border-b);color:var(--dim);font-family:var(--mono);font-size:11px;font-weight:600;padding:5px 12px;border-radius:4px;cursor:pointer;transition:all .2s}
.auth-btn-secondary:hover{color:var(--text);border-color:var(--accent)}
.auth-btn-user{background:transparent;border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:11px;padding:5px 10px;border-radius:4px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s}
.auth-btn-user:hover{border-color:var(--accent)}
.tier-badge{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:1px;padding:2px 6px;border-radius:3px}
.tier-free{background:rgba(160,174,192,0.15);color:var(--center);border:1px solid rgba(160,174,192,0.3)}
.tier-plus{background:rgba(82,126,255,0.15);color:var(--accent);border:1px solid rgba(82,126,255,0.3)}
.tier-pro{background:rgba(0,212,255,0.15);color:var(--cyan);border:1px solid rgba(0,212,255,0.3)}
.tier-edu{background:rgba(72,187,120,0.15);color:var(--vg);border:1px solid rgba(72,187,120,0.3)}
.user-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface2);border:1px solid var(--border-b);border-radius:8px;min-width:160px;z-index:500;box-shadow:0 8px 24px rgba(0,0,0,0.5)}
.user-dropdown-item{padding:10px 16px;font-size:13px;color:var(--text);cursor:pointer;transition:background .15s}
.user-dropdown-item:hover{background:var(--card)}
.user-dropdown-divider{height:1px;background:var(--border);margin:4px 0}
.auth-modal-overlay{position:fixed;inset:0;z-index:600;background:rgba(0,0,0,0.75);display:flex;align-items:center;justify-content:center;padding:20px}
.auth-modal{background:var(--surface);border:1px solid var(--border-b);border-radius:12px;padding:32px;width:100%;max-width:420px;position:relative}
.auth-modal-close{position:absolute;top:14px;right:14px;background:none;border:none;color:var(--dim);font-size:16px;cursor:pointer;padding:4px 8px}
.auth-modal-logo{font-family:var(--mono);font-size:10px;letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin-bottom:20px}
.auth-modal-title{font-size:20px;font-weight:800;color:#fff;margin-bottom:20px}
.auth-field{margin-bottom:14px}
.auth-field label{display:block;font-size:11px;color:var(--muted);font-family:var(--mono);letter-spacing:.5px;text-transform:uppercase;margin-bottom:6px}
.auth-field input{width:100%;background:rgba(0,0,0,0.4);border:1px solid var(--border-b);border-radius:6px;color:var(--text);font-family:var(--font);font-size:14px;padding:10px 14px;outline:none;transition:border-color .2s}
.auth-field input:focus{border-color:var(--accent)}
.auth-submit-btn{width:100%;background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-size:13px;font-weight:700;padding:12px;border-radius:6px;cursor:pointer;transition:all .2s;margin-top:6px}
.auth-submit-btn:hover{background:#6a94ff}
.auth-switch{font-size:12px;color:var(--muted);margin-top:16px;text-align:center}
.auth-switch a{color:var(--accent);text-decoration:none}
.auth-error{background:rgba(252,129,129,0.08);border:1px solid rgba(252,129,129,0.25);border-radius:6px;padding:10px 14px;color:var(--vd);font-size:13px;margin-bottom:14px}

/* === PAYWALL GATE === */
.paywall-gate{position:relative;overflow:hidden;border-radius:8px}
.paywall-blur{filter:blur(6px);pointer-events:none;user-select:none;opacity:0.4}
.paywall-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(8,15,26,0.85);backdrop-filter:blur(2px);border-radius:8px;padding:20px;text-align:center;border:1px solid var(--border)}
.paywall-icon{font-size:24px;margin-bottom:8px}
.paywall-title{font-size:15px;font-weight:700;color:#fff;margin-bottom:6px}
.paywall-desc{font-size:12px;color:var(--dim);margin-bottom:14px;line-height:1.5}
.paywall-cta-btn{background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;padding:8px 18px;border-radius:6px;cursor:pointer;transition:all .2s}
.paywall-cta-btn:hover{background:#6a94ff}

/* === STORY PAGE === */
.story-page{padding:30px 24px 80px;max-width:900px;margin:0 auto}
.story-page-back{display:inline-flex;align-items:center;gap:6px;color:var(--dim);font-size:13px;cursor:pointer;margin-bottom:20px;transition:color .2s}
.story-page-back:hover{color:var(--text)}
.story-page-cat{font-family:var(--mono);font-size:10px;letter-spacing:1.5px;color:var(--cyan);text-transform:uppercase;margin-bottom:8px}
.story-page-h1{font-size:28px;font-weight:900;color:#fff;line-height:1.25;margin-bottom:12px}
.story-page-sub{font-size:16px;color:var(--dim);margin-bottom:20px}
.story-page-meta{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border)}
.story-page-section{margin-bottom:28px}
.story-page-sec-title{font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.related-stories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:12px}
.related-story-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px;cursor:pointer;transition:all .2s}
.related-story-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.related-story-card h4{font-size:13px;font-weight:600;color:var(--text);line-height:1.3;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sources-coverage-grid{display:grid;gap:8px;margin-top:10px}
.source-coverage-row{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:6px}
.source-coverage-name{font-weight:600;font-size:13px;color:var(--text);min-width:120px}
.source-coverage-bias{font-family:var(--mono);font-size:10px}

/* === PRICING PAGE === */
.pricing-page{padding:40px 24px 80px;max-width:1000px;margin:0 auto}
.pricing-header{text-align:center;margin-bottom:40px}
.pricing-h1{font-size:32px;font-weight:900;color:#fff;margin-bottom:10px}
.pricing-sub{font-size:16px;color:var(--dim);max-width:500px;margin:0 auto 20px}
.pricing-toggle{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px;gap:2px}
.pricing-toggle-btn{background:none;border:none;color:var(--dim);font-family:var(--mono);font-size:11px;font-weight:600;padding:6px 16px;border-radius:6px;cursor:pointer;transition:all .2s}
.pricing-toggle-btn.active{background:var(--accent);color:#fff}
.pricing-cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:40px}
.pricing-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:28px 24px;position:relative;transition:all .2s}
.pricing-card.popular{border-color:var(--accent);box-shadow:0 0 30px rgba(82,126,255,0.2)}
.pricing-popular-badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:1px;padding:3px 12px;border-radius:10px;white-space:nowrap}
.pricing-card-name{font-family:var(--mono);font-size:12px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-bottom:8px}
.pricing-card-price{font-size:36px;font-weight:900;color:#fff;line-height:1;margin-bottom:4px}
.pricing-card-price span{font-size:16px;font-weight:400;color:var(--dim)}
.pricing-card-period{font-size:12px;color:var(--muted);margin-bottom:20px}
.pricing-card-features{list-style:none;margin-bottom:24px;display:flex;flex-direction:column;gap:8px}
.pricing-card-features li{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;color:var(--text)}
.pricing-card-features li::before{content:'✓';color:var(--vg);font-weight:700;flex-shrink:0;margin-top:1px}
.pricing-card-features li.disabled{color:var(--muted)}
.pricing-card-features li.disabled::before{content:'✕';color:var(--muted)}
.pricing-cta-btn{width:100%;background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-size:12px;font-weight:700;padding:12px;border-radius:8px;cursor:pointer;transition:all .2s}
.pricing-cta-btn:hover{background:#6a94ff;box-shadow:0 4px 16px rgba(82,126,255,0.3)}
.pricing-cta-btn.secondary{background:transparent;border:1px solid var(--border-b);color:var(--text)}
.pricing-cta-btn.secondary:hover{border-color:var(--accent);color:var(--accent);background:transparent}
.pricing-faq{max-width:700px;margin:0 auto}
.pricing-faq-title{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-bottom:20px;text-align:center}
.faq-item{border-bottom:1px solid var(--border);padding:16px 0}
.faq-q{font-size:15px;font-weight:600;color:var(--text);cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.faq-a{font-size:13.5px;color:var(--dim);line-height:1.6;margin-top:10px;display:none}

/* === NEWSLETTER PAGE === */
.newsletter-page{padding:60px 24px;max-width:600px;margin:0 auto;text-align:center}
.newsletter-h1{font-size:32px;font-weight:900;color:#fff;margin-bottom:12px}
.newsletter-sub{font-size:16px;color:var(--dim);line-height:1.6;margin-bottom:32px}
.newsletter-form{display:flex;gap:8px;max-width:480px;margin:0 auto}
.newsletter-input{flex:1;background:rgba(0,0,0,0.4);border:1px solid var(--border-b);border-radius:8px;color:var(--text);font-size:14px;padding:12px 16px;outline:none}
.newsletter-input:focus{border-color:var(--accent)}
.newsletter-submit{background:var(--accent);border:none;color:#fff;font-family:var(--mono);font-size:12px;font-weight:700;padding:12px 20px;border-radius:8px;cursor:pointer;white-space:nowrap}
.newsletter-status{margin-top:16px;font-size:13.5px}
.newsletter-features{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-top:40px;text-align:left}
.newsletter-feature{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px}
.newsletter-feature-icon{font-size:20px;margin-bottom:8px}
.newsletter-feature-title{font-weight:700;font-size:13px;color:var(--text);margin-bottom:4px}
.newsletter-feature-desc{font-size:12px;color:var(--dim);line-height:1.5}

/* === ACCOUNT PAGE === */
.account-page{padding:30px 24px 80px;max-width:700px;margin:0 auto}
.account-h1{font-size:24px;font-weight:900;color:#fff;margin-bottom:6px}
.account-sub{font-size:13px;color:var(--dim);margin-bottom:28px}
.account-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:22px;margin-bottom:16px}
.account-sec-title{font-family:var(--mono);font-size:10px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-bottom:16px}
.account-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}
.account-row:last-child{border-bottom:none}
.account-label{font-size:13px;color:var(--dim)}
.account-value{font-size:13px;color:var(--text);font-weight:600}
.usage-bar{height:6px;background:rgba(255,255,255,0.08);border-radius:3px;margin-top:8px;overflow:hidden}
.usage-bar-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .5s}
.account-action-btn{background:transparent;border:1px solid var(--border-b);color:var(--dim);font-family:var(--mono);font-size:10px;padding:5px 12px;border-radius:4px;cursor:pointer;transition:all .2s}
.account-action-btn:hover{color:var(--text);border-color:var(--accent)}
.account-danger-btn{background:transparent;border:1px solid rgba(252,129,129,0.3);color:var(--vd);font-family:var(--mono);font-size:10px;padding:5px 12px;border-radius:4px;cursor:pointer;transition:all .2s}
.account-danger-btn:hover{background:rgba(252,129,129,0.08)}

/* === BLOG PAGE === */
.blog-page{padding:30px 24px 80px;max-width:900px;margin:0 auto}
.blog-h1{font-size:28px;font-weight:900;color:#fff;margin-bottom:6px}
.blog-sub{font-size:14px;color:var(--dim);margin-bottom:32px}
.blog-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.blog-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:22px;cursor:pointer;transition:all .2s}
.blog-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.blog-card-category{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;color:var(--cyan);text-transform:uppercase;margin-bottom:8px}
.blog-card-title{font-size:17px;font-weight:700;color:#fff;line-height:1.3;margin-bottom:10px}
.blog-card-excerpt{font-size:13px;color:var(--dim);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.blog-card-meta{display:flex;gap:12px;margin-top:12px;font-size:11px;color:var(--muted);font-family:var(--mono)}
.blog-post-page{padding:40px 24px 80px;max-width:720px;margin:0 auto}
.blog-post-title{font-size:30px;font-weight:900;color:#fff;line-height:1.2;margin-bottom:16px}
.blog-post-meta{font-size:11px;color:var(--muted);font-family:var(--mono);margin-bottom:28px;display:flex;gap:16px}
.blog-post-body{font-size:15px;color:var(--text);line-height:1.75}
.blog-post-body h2{font-size:20px;font-weight:700;color:#fff;margin:32px 0 12px}
.blog-post-body h3{font-size:17px;font-weight:600;color:var(--text);margin:24px 0 10px}
.blog-post-body p{margin-bottom:16px;color:var(--dim)}
.blog-post-body ul,.blog-post-body ol{margin:0 0 16px 20px;color:var(--dim)}
.blog-post-body li{margin-bottom:6px}
.blog-post-body strong{color:var(--text)}
.blog-post-body a{color:var(--accent);text-decoration:none}
.blog-post-body a:hover{text-decoration:underline}

@media (max-width:640px) {
  .pricing-cards{grid-template-columns:1fr}
  .blog-grid{grid-template-columns:1fr}
  .newsletter-features{grid-template-columns:1fr}
  .newsletter-form{flex-direction:column}
}

/* ═══════════════════════════════════════════════════════════
   SPRINT 16: EDITORIAL MAGAZINE REDESIGN
═══════════════════════════════════════════════════════════ */

/* ── EDITORIAL MASTHEAD ── */
.editorial-masthead{border-bottom:2px solid #333;padding:14px 48px;display:flex;align-items:center;gap:20px;background:#0d0d0d;position:sticky;top:0;z-index:200;flex-wrap:wrap}
.editorial-masthead .masthead-logo{display:inline-flex;align-items:center;font-family:var(--serif);font-size:28px;font-weight:900;letter-spacing:-1px;color:#f0ede8;text-decoration:none;line-height:0;flex-shrink:0}
.editorial-masthead .masthead-logo img{height:46px;width:auto;display:block;max-width:264px;object-fit:contain}
.editorial-masthead .masthead-logo .logo-light, .sp-logo .logo-light{display:none}
[data-theme="light"] .editorial-masthead .masthead-logo .logo-dark,
[data-theme="light"] .sp-logo .logo-dark{display:none}
[data-theme="light"] .editorial-masthead .masthead-logo .logo-light,
[data-theme="light"] .sp-logo .logo-light{display:block}
.editorial-masthead .masthead-logo span{color:var(--accent-orange)}
.editorial-masthead .masthead-date{display:none}
.editorial-masthead .masthead-right{margin-left:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
@media (max-width:640px){
  .editorial-masthead{padding:10px 16px;gap:10px;row-gap:8px}
  .editorial-masthead .masthead-logo img{height:36px;max-width:180px}
  .editorial-masthead .masthead-right{order:3;flex-basis:100%;justify-content:space-between;gap:8px}
  .editorial-masthead .density-picker{margin-left:0}
  .editorial-masthead .last-updated{display:none}
  .editorial-masthead .auth-btn-secondary,.editorial-masthead .auth-btn-primary{padding:6px 10px;font-size:11px}
}
@media (max-width:420px){
  .editorial-masthead .density-picker .density-btn[data-density="wire"],
  .editorial-masthead .density-picker .density-btn[data-density="broadsheet"]{display:none}
}
.editorial-masthead .live-ind{display:flex;align-items:center;gap:6px}
.editorial-masthead .live-ind .live-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e;animation:pulse-live 2s infinite}
.editorial-masthead .live-ind .live-label{font-family:var(--mono);font-size:10px;color:#22c55e;letter-spacing:1px}

/* ── SPRINT 16: DENSITY PICKER ── */
.density-picker{display:flex;gap:2px;background:var(--card);border:1px solid var(--border);border-radius:6px;padding:3px;margin-left:16px}
.density-btn{width:32px;height:28px;border:none;background:transparent;color:var(--muted);cursor:pointer;border-radius:4px;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.density-btn:hover{color:var(--text);background:var(--surface2)}
.density-btn.active{color:var(--text);background:var(--surface2)}
.density-btn.active::after{content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);width:14px;height:2px;background:var(--accent-orange);border-radius:1px}
.density-btn{position:relative}
.density-btn[title]:hover::before{content:attr(title);position:absolute;bottom:-28px;left:50%;transform:translateX(-50%);background:var(--surface2);color:var(--text);font-size:10px;padding:3px 8px;border-radius:3px;white-space:nowrap;z-index:300;font-family:var(--font);border:1px solid var(--border)}

/* Phase 3.2: theme toggle button */
.theme-toggle-btn{width:32px;height:32px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;border-radius:6px;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0;line-height:1}
.theme-toggle-btn:hover{background:var(--surface2);border-color:var(--border-b)}
.theme-toggle-btn:active{transform:scale(0.95)}

/* ── Phase 3.5: Preferences panel ── */
.prefs-toggle-btn{width:32px;height:32px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;border-radius:6px;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0;line-height:1;margin-left:4px}
.prefs-toggle-btn:hover{background:var(--surface2);border-color:var(--border-b)}
.prefs-toggle-btn:active{transform:scale(0.95)}
.prefs-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:1300;opacity:0;pointer-events:none;transition:opacity 200ms ease}
.prefs-backdrop[data-state="open"]{opacity:1;pointer-events:auto}
.prefs-drawer{position:fixed;top:0;right:0;height:100vh;width:340px;max-width:100vw;background:var(--bg);border-left:1px solid var(--border);box-shadow:-6px 0 24px rgba(0,0,0,0.35);z-index:1400;display:flex;flex-direction:column;transform:translateX(100%);transition:transform 280ms cubic-bezier(0.4,0,0.2,1);will-change:transform}
.prefs-drawer[data-state="open"]{transform:translateX(0)}
.prefs-drawer-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);background:var(--surface2)}
.prefs-drawer-title{font-family:var(--serif);font-size:18px;font-weight:600;color:var(--text);margin:0}
.prefs-drawer-close{width:30px;height:30px;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:6px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;line-height:1;padding:0}
.prefs-drawer-close:hover{background:var(--surface);border-color:var(--border-b)}
.prefs-drawer-body{flex:1 1 auto;overflow-y:auto;padding:8px 20px 24px;background:var(--bg)}
.prefs-section{padding:16px 0;border-bottom:1px solid var(--border)}
.prefs-section:last-of-type{border-bottom:0}
.prefs-section-title{font-family:var(--serif);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 12px 0}
.prefs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;cursor:pointer}
.prefs-row:hover .prefs-row-label{color:var(--text)}
.prefs-row-label{flex:1 1 auto;font-size:14px;color:var(--text);font-family:var(--font);display:flex;align-items:center;gap:10px}
.prefs-row-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.prefs-row-swatch.s-left{background:var(--left)}
.prefs-row-swatch.s-center{background:var(--center)}
.prefs-row-swatch.s-right{background:var(--right)}
.prefs-row-swatch.s-intl{background:var(--intl)}
.prefs-toggle{--w:38px;--h:22px;position:relative;flex:0 0 auto;width:var(--w);height:var(--h);border:1px solid var(--border);background:var(--card);border-radius:999px;cursor:pointer;padding:0;transition:background 160ms ease,border-color 160ms ease;-webkit-appearance:none;appearance:none}
.prefs-toggle::after{content:"";position:absolute;top:2px;left:2px;width:calc(var(--h) - 6px);height:calc(var(--h) - 6px);background:var(--text);border-radius:50%;transition:left 180ms cubic-bezier(0.4,0,0.2,1),background 160ms ease}
.prefs-toggle[aria-checked="true"]{background:var(--accent);border-color:var(--accent)}
.prefs-toggle[aria-checked="true"]::after{left:calc(var(--w) - var(--h) + 2px);background:#fff}
.prefs-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.prefs-reset{margin:20px 0 4px;padding:10px 14px;width:100%;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:6px;cursor:pointer;font-family:var(--font);font-size:13px;letter-spacing:.04em;transition:all .15s}
.prefs-reset:hover{background:var(--surface2);border-color:var(--border-b)}
.prefs-foot{padding:10px 20px;border-top:1px solid var(--border);font-family:var(--mono);font-size:10px;color:var(--muted);text-align:center;background:var(--surface2)}
/* Pref-driven hide rules. We add data-component to each .viz-panel (see HTML below)
   and toggle body classes for category visibility. */
body.pref-hide-cred .viz-panel[data-component="credibility"],
body.pref-hide-prop .viz-panel[data-component="propaganda"],
body.pref-hide-cens .viz-panel[data-component="censorship"],
body.pref-hide-ctl  .viz-panel[data-component="coverage_timeline"],
body.pref-hide-cls  .viz-panel[data-component="cluster_streams"]{display:none !important}
body.pref-hide-us_politics .ed-tab[data-tab="us_politics"],
body.pref-hide-us_news      .ed-tab[data-tab="us_news"],
body.pref-hide-international .ed-tab[data-tab="international"]{display:none !important}
@media (max-width:700px){
  .prefs-drawer{width:100vw;max-width:100vw}
}

/* ── SPRINT 16: WIRE DENSITY (text-only, ultra-compact) ── */
.wire-row{display:flex;align-items:center;padding:8px 48px;border-bottom:1px solid #1f2733;cursor:pointer;transition:background .15s}
.wire-row:hover{background:#111}
.wire-row .wire-headline{font-family:var(--serif);font-size:14px;font-weight:600;color:#e8e4df;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wire-row .wire-meta{display:flex;gap:12px;align-items:center;font-size:11px;color:#555;font-family:var(--mono)}
.wire-row .wire-cat{color:var(--accent-orange);letter-spacing:.05em;text-transform:uppercase;font-size:10px}
.wire-row .wire-sources{color:#666}
.wire-row .wire-time{color:#444}
.wire-row .wire-analyzed{color:#22c55e}

/* ── SPRINT 16: INDEX DENSITY (56×56 thumbnails) ── */
.index-row{display:flex;align-items:center;gap:16px;padding:12px 48px;border-bottom:1px solid #1f2733;cursor:pointer;transition:background .15s}
.index-row:hover{background:#111}
.index-row .index-thumb{width:56px;height:56px;border-radius:4px;background:#1a1a1a;flex-shrink:0;overflow:hidden}
.index-row .index-thumb img{width:100%;height:100%;object-fit:cover}
.index-row .index-content{flex:1;min-width:0}
.index-row .index-headline{font-family:var(--serif);font-size:15px;font-weight:600;color:#e8e4df;line-height:1.3;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.index-row .index-meta{display:flex;gap:10px;align-items:center;font-size:11px;color:#555}
.index-row .index-cat{color:var(--accent-orange);letter-spacing:.05em;text-transform:uppercase;font-size:10px}
.index-row .index-summary{font-size:12px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}
.index-row .index-bias-bar{height:3px;width:80px;background:#1a1a1a;border-radius:2px;display:flex;overflow:hidden;flex-shrink:0}
.index-row .index-bias-bar span{height:100%}
.index-row .index-bias-bar .bias-left{background:#3b82f6}
.index-row .index-bias-bar .bias-center{background:#666}
.index-row .index-bias-bar .bias-right{background:#ef4444}
.index-row .index-bias-bar .bias-intl{background:#8b5cf6}
.spread-bias-bar{height:3px;width:100px;background:rgba(255,255,255,0.06);border-radius:2px;display:inline-flex;overflow:hidden;vertical-align:middle}
.spread-bias-bar span{height:100%;display:block}
.spread-bias-bar .bias-left{background:#3b82f6}
.spread-bias-bar .bias-center{background:#888}
.spread-bias-bar .bias-right{background:#ef4444}
.spread-bias-bar .bias-intl{background:#8b5cf6}

/* ── SPRINT 16: DIGEST DENSITY (160×90 thumbnails, 2 lines) ── */
.digest-row{display:flex;align-items:flex-start;gap:20px;padding:20px 48px;border-bottom:1px solid #1f2733;cursor:pointer;transition:background .15s}
.digest-row:hover{background:#111}
.digest-row .digest-thumb{width:160px;height:90px;border-radius:4px;background:#1a1a1a;flex-shrink:0;overflow:hidden}
.digest-row .digest-thumb img{width:100%;height:100%;object-fit:cover}
.digest-row .digest-content{flex:1;min-width:0}
.digest-row .digest-eyebrow{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:8px;font-weight:600}
.digest-row .digest-headline{font-family:var(--serif);font-size:20px;font-weight:700;color:#e8e4df;line-height:1.25;margin-bottom:8px}
.digest-row .digest-summary{font-size:14px;color:#777;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:12px}
.digest-row .digest-meta{display:flex;gap:12px;align-items:center;font-size:11px;color:#555}
.digest-row .digest-bias-bar{height:3px;width:80px;background:#1a1a1a;border-radius:2px;display:flex;overflow:hidden}
.digest-row .digest-bias-bar span{height:100%}
.digest-row .bias-left{background:#3b82f6}
.digest-row .bias-center{background:#666}
.digest-row .bias-right{background:#ef4444}
.digest-row .bias-intl{background:#8b5cf6}

/* ── SPRINT 16: BROADSHEET DENSITY (full-bleed hero) ── */
.broadsheet-story{position:relative;min-height:85vh;background:#0a0a0a;border-bottom:2px solid #222;overflow:hidden;cursor:pointer}
.broadsheet-story .broadsheet-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.5}
.broadsheet-story .broadsheet-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,#0a0a0a 0%,transparent 40%,transparent 60%,rgba(10,10,10,.8) 100%)}
.broadsheet-story .broadsheet-content{position:relative;z-index:1;padding:80px 64px;height:100%;display:flex;flex-direction:column;justify-content:flex-end;max-width:900px}
.broadsheet-story .broadsheet-eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:24px;font-weight:600}
.broadsheet-story .broadsheet-headline{font-family:var(--serif);font-size:64px;font-weight:900;line-height:1.0;letter-spacing:-2px;color:#f0ede8;margin-bottom:24px}
.broadsheet-story .broadsheet-lede{font-size:20px;line-height:1.6;color:#aaa;margin-bottom:32px;max-width:700px}
.broadsheet-story .broadsheet-meta{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.broadsheet-story .broadsheet-source-pill{background:#1a1a1a;border:1px solid #333;padding:6px 12px;border-radius:20px;font-size:11px;color:#888}
.broadsheet-story .broadsheet-sparkbar{height:4px;width:120px;background:#1a1a1a;border-radius:2px;display:flex;overflow:hidden}
.broadsheet-story .broadsheet-sparkbar span{height:100%}

/* ── SECTION LABEL ── */
.ed-section-label{padding:20px 48px 16px;border-bottom:1px solid #222}
.ed-section-label h2{font-family:var(--serif);font-size:13px;font-weight:300;letter-spacing:.3em;text-transform:uppercase;color:#666}
.ed-section-label h2 span{color:var(--accent-orange);margin-right:12px}

/* ── EDITORIAL FEED CONTAINER ── */
.editorial-feed{max-width:1400px;margin:0 auto}

/* ═══════════════════════════════════════════════════════════
   Phase 3.3: VIEW-SWITCHER (Editorial / Cards-S / Cards-M / Cards-L / Mixed)
═══════════════════════════════════════════════════════════ */
.view-switcher{display:inline-flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px;margin-right:8px}
.view-mode-btn{position:relative;width:32px;height:28px;border:none;background:transparent;color:var(--muted);cursor:pointer;border-radius:4px;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:var(--font);padding:0}
.view-mode-btn:hover{color:var(--text);background:var(--surface2)}
.view-mode-btn.active{color:var(--accent-orange);background:var(--surface2)}
.view-mode-btn.active::after{content:'';position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:14px;height:2px;background:var(--accent-orange);border-radius:1px}
.view-mode-btn[title]:hover::before{content:attr(title);position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);background:var(--surface2);color:var(--text);font-size:10px;padding:3px 8px;border-radius:3px;white-space:nowrap;z-index:300;font-family:var(--font);border:1px solid var(--border)}
.view-mode-btn svg{width:16px;height:16px;display:block}
@media (max-width:768px){
  .view-mode-btn{width:28px;height:24px}
  .view-mode-btn svg{width:14px;height:14px}
}

/* ─── Card grids ─── */
.story-grid-small{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;padding:24px 48px;max-width:1400px;margin:0 auto}
.story-grid-medium{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;padding:28px 48px;max-width:1400px;margin:0 auto}
.story-grid-large{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:24px;padding:32px 48px;max-width:1400px;margin:0 auto}
.story-grid-mixed{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(220px,auto);gap:20px;padding:28px 48px;max-width:1400px;margin:0 auto}
@media (max-width:1100px){.story-grid-mixed{grid-template-columns:repeat(2,1fr)}}
@media (max-width:700px){
  .story-grid-small,.story-grid-medium,.story-grid-large{grid-template-columns:1fr;padding:20px 16px;gap:14px}
  .story-grid-mixed{grid-template-columns:1fr;padding:20px 16px;gap:14px}
  .story-grid-mixed .sf-card.size-large,
  .story-grid-mixed .sf-card.size-medium,
  .story-grid-mixed .sf-card.size-small{grid-column:auto !important;grid-row:auto !important}
}

/* ─── Bounded card component (sf-card; namespaced to avoid clash with .story-card sidebar use) ─── */
.sf-card{background:var(--surface2);border:1px solid var(--border-b);border-radius:8px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;box-shadow:0 2px 6px rgba(0,0,0,0.25),0 8px 20px rgba(0,0,0,0.20)}
.sf-card:hover{transform:translateY(-3px);border-color:rgba(255,255,255,0.22);box-shadow:0 4px 16px rgba(0,0,0,0.35),0 12px 32px rgba(0,0,0,0.28)}
[data-theme="light"] .sf-card{background:#ffffff;border-color:rgba(0,0,0,0.10);box-shadow:0 1px 3px rgba(0,0,0,0.06),0 4px 12px rgba(0,0,0,0.05)}
[data-theme="light"] .sf-card:hover{border-color:rgba(0,0,0,0.20);box-shadow:0 4px 18px rgba(0,0,0,0.10),0 8px 28px rgba(0,0,0,0.08)}
.sf-card .sf-card-thumb{position:relative;width:100%;aspect-ratio:16/9;background:var(--surface2);overflow:hidden;flex-shrink:0}
.sf-card .sf-card-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.sf-card:hover .sf-card-thumb img{transform:scale(1.03)}
.sf-card .sf-card-thumb.fallback{background:linear-gradient(135deg,var(--surface2) 0%,var(--surface) 60%,var(--card) 100%);display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase}
.sf-card .sf-card-thumb-overlay{position:absolute;top:10px;left:10px;display:flex;gap:6px;flex-wrap:wrap;z-index:2}
.sf-card .sf-card-body{padding:14px 16px 16px;display:flex;flex-direction:column;flex:1;gap:8px}
.sf-card .sf-card-eyebrow{font-family:var(--font);font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--accent-orange);text-transform:uppercase}
.sf-card .sf-card-headline{font-family:var(--serif);font-weight:700;line-height:1.18;letter-spacing:-.3px;color:var(--text);margin:0;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.sf-card .sf-card-dek{font-family:var(--font);font-size:13px;line-height:1.5;color:var(--dim);display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:3;margin:0}
.sf-card .sf-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:6px;font-family:var(--mono);font-size:11px;color:var(--muted)}
.sf-card .sf-card-chip{display:inline-flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:2px 8px;font-family:var(--mono);font-size:10px;color:var(--text);letter-spacing:.05em}
.sf-card .sf-card-chip.chip-prop{background:rgba(246,173,85,0.12);color:var(--prop);border-color:rgba(246,173,85,0.25)}
[data-theme="light"] .sf-card .sf-card-chip.chip-prop{background:rgba(194,65,12,0.10);border-color:rgba(194,65,12,0.25)}
.sf-card .sf-card-chip.chip-cens{background:rgba(183,148,244,0.12);color:var(--cens);border-color:rgba(183,148,244,0.25)}
[data-theme="light"] .sf-card .sf-card-chip.chip-cens{background:rgba(124,58,237,0.10);border-color:rgba(124,58,237,0.25)}
.sf-card .sf-card-time{margin-left:auto}
.sf-card .spread-bias-bar{width:90px;background:var(--card)}

/* Size-specific tuning */
.sf-card.size-small .sf-card-headline{font-size:15px;-webkit-line-clamp:3}
.sf-card.size-small .sf-card-body{padding:12px 14px 14px;gap:6px}
.sf-card.size-small .sf-card-meta{font-size:10px;gap:8px}
.sf-card.size-medium .sf-card-headline{font-size:18px;-webkit-line-clamp:3}
.sf-card.size-large .sf-card-headline{font-size:24px;-webkit-line-clamp:3;letter-spacing:-.5px;line-height:1.15}
.sf-card.size-large .sf-card-dek{font-size:14px;-webkit-line-clamp:4}
.sf-card.size-large .sf-card-body{padding:18px 22px 22px;gap:10px}

/* Mixed-grid spans (set inline in JS too but CSS classes keep markup tidy) */
.story-grid-mixed .sf-card.span-large{grid-column:span 2;grid-row:span 2}
.story-grid-mixed .sf-card.span-large .sf-card-thumb{aspect-ratio:16/10}
.story-grid-mixed .sf-card.span-medium{grid-column:span 2;grid-row:span 1}
.story-grid-mixed .sf-card.span-medium .sf-card-thumb{aspect-ratio:16/9}
.story-grid-mixed .sf-card.span-small{grid-column:span 1;grid-row:span 1}
.story-grid-mixed .sf-card.span-small .sf-card-thumb{aspect-ratio:16/9}
@media (max-width:1100px){
  .story-grid-mixed .sf-card.span-large{grid-column:span 2}
  .story-grid-mixed .sf-card.span-medium{grid-column:span 2}
}

/* When a card mode is active, hide the density picker (it's an editorial-only control) */
.editorial-masthead.cards-mode .density-picker{display:none}
@media (max-width:768px){.editorial-masthead.cards-mode .density-picker{display:none}}



/* ── CATEGORY TABS (magazine section style) ── */
.ed-tabs{display:flex;flex-wrap:nowrap;gap:0;border-bottom:2px solid #222;padding:0 48px;background:#0d0d0d;position:sticky;top:76px;z-index:150;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ed-tabs::-webkit-scrollbar{display:none}
.ed-tab{font-family:var(--serif);font-size:12px;font-weight:300;letter-spacing:.2em;text-transform:uppercase;color:#555;padding:16px 24px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s;white-space:nowrap;flex-shrink:0}
.ed-tab:hover{color:#999}
.ed-tab.active{color:var(--accent-orange);border-bottom-color:var(--accent-orange)}
.ed-tab-count{font-family:var(--mono);font-size:10px;color:#444;margin-left:6px}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 0 — HERO SPREAD
═══════════════════════════════════════════════ */
.spread-hero{display:grid;grid-template-columns:1fr 1.4fr;min-height:520px;background:#0d0d0d;border-bottom:1px solid #1a1a1a;position:relative;overflow:hidden;cursor:pointer;transition:all .3s}
.spread-hero:hover{background:#111}
.spread-hero .numeral{position:absolute;top:-40px;left:32px;font-family:var(--serif);font-size:320px;font-weight:900;color:#1a1a1a;line-height:1;pointer-events:none;user-select:none;z-index:0}
.spread-hero .spread-content{position:relative;z-index:1;padding:60px 48px;display:flex;flex-direction:column;justify-content:flex-end}
.spread-hero .eyebrow{font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:20px;font-weight:600;font-family:var(--font)}
.spread-hero h2{font-family:var(--serif);font-size:56px;font-weight:900;line-height:1.0;letter-spacing:-2px;color:#f0ede8;margin-bottom:24px}
.spread-hero .spread-summary{font-size:17px;line-height:1.65;color:#999;max-width:480px;margin-bottom:28px;font-weight:300}
.spread-hero .spread-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.spread-hero .image-panel{background:#111;position:relative;overflow:hidden}
.spread-hero .image-panel img{width:100%;height:100%;object-fit:cover;opacity:.7;transition:opacity .3s}
.spread-hero:hover .image-panel img{opacity:.85}
.spread-hero .image-panel .img-gradient{position:absolute;inset:0;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);display:flex;align-items:center;justify-content:center}
.spread-hero.no-image{grid-template-columns:1fr;min-height:460px}
.spread-hero.no-image .spread-content{max-width:800px;padding:80px 64px;justify-content:center}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 1 — MIDNIGHT SPREAD
═══════════════════════════════════════════════ */
.spread-midnight{background:linear-gradient(160deg,#0a0f1e 0%,#111827 100%);border-bottom:1px solid #1e2a3a;padding:64px 48px;display:grid;grid-template-columns:1.3fr 1fr;gap:48px;align-items:center;cursor:pointer;transition:all .3s;position:relative;overflow:hidden}
.spread-midnight:hover{background:linear-gradient(160deg,#0e1428 0%,#151f33 100%)}
.spread-midnight .eyebrow{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:#527eff;margin-bottom:20px;font-weight:600;font-family:var(--font)}
.spread-midnight h2{font-family:var(--serif);font-size:48px;font-weight:900;line-height:1.03;letter-spacing:-1.5px;color:#e8ecf8;margin-bottom:20px}
.spread-midnight .spread-summary{font-size:16px;line-height:1.7;color:#6a7fa0;margin-bottom:28px}
.spread-midnight .spread-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.spread-midnight .stat-block{background:rgba(82,126,255,.08);border:1px solid rgba(82,126,255,.15);border-radius:4px;padding:32px;text-align:center}
.spread-midnight .stat-num{font-family:var(--serif);font-size:72px;font-weight:900;color:#527eff;line-height:1;margin-bottom:8px}
.spread-midnight .stat-label{font-size:13px;color:#4a5a7a;letter-spacing:.1em;text-transform:uppercase}

/* Phase 16 tweak 5: Thumbnails on every magazine spread */
.spread-thumb{position:relative;overflow:hidden;border-radius:4px;background:#0a0a0a}
.spread-thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .4s ease,opacity .3s ease}
.spread-thumb:hover img{transform:scale(1.02)}
.spread-thumb-midnight{aspect-ratio:4/3;border:1px solid rgba(82,126,255,.18)}
.spread-thumb-midnight::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent 50%,rgba(13,24,41,.55) 100%);pointer-events:none}
.spread-thumb-academic{aspect-ratio:4/3;border:1px solid #d4c8b0;border-radius:2px}
.spread-thumb-academic::after{content:'';position:absolute;inset:0;background:rgba(110,90,50,.10);mix-blend-mode:multiply;pointer-events:none}
.spread-alert.has-thumb{grid-template-columns:auto 1fr 320px;align-items:stretch}
.spread-alert .spread-thumb-alert{align-self:stretch;min-height:240px;border-left:1px solid #2a1010}
.spread-alert .spread-thumb-alert::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(200,40,40,.18) 0%,transparent 70%);pointer-events:none}
/* Phase 3.2: terminal styles removed — replaced by .spread-compact */
.spread-compact.has-thumb{padding-right:240px}
.spread-compact .spread-thumb-compact{position:absolute;top:48px;right:48px;width:180px;aspect-ratio:1/1;border:1px solid var(--border);box-shadow:var(--shadow-card)}
.spread-bigstat.has-thumb .bigstat-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.18;filter:saturate(1.1)}
.spread-bigstat.has-thumb .bigstat-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(26,26,46,.6) 0%,rgba(26,26,46,.85) 100%);pointer-events:none}
.spread-bigstat.has-thumb .spread-content,.spread-bigstat.has-thumb .watermark{position:relative;z-index:1}
@media (max-width:880px){
  .spread-alert.has-thumb{grid-template-columns:auto 1fr}
  .spread-alert .spread-thumb-alert{display:none}
  .spread-compact.has-thumb{padding-right:48px}
  .spread-compact .spread-thumb-compact{position:relative;top:auto;right:auto;width:140px;margin:0 0 20px auto}
}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 2 — ROSE ALERT STAMP
═══════════════════════════════════════════════ */
.spread-alert{background:#1a0808;border-bottom:1px solid #2a1010;padding:64px 48px;display:grid;grid-template-columns:auto 1fr;gap:48px;align-items:start;position:relative;overflow:hidden;cursor:pointer;transition:all .3s}
.spread-alert:hover{background:#1e0a0a}
.spread-alert::before{content:'';position:absolute;top:0;right:0;width:60%;height:100%;background:radial-gradient(ellipse at 80% 50%,rgba(200,40,40,.12) 0%,transparent 70%);pointer-events:none}
.spread-alert .alert-stamp{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-family:var(--serif);font-size:120px;font-weight:900;color:#c82828;opacity:.12;line-height:1;user-select:none;align-self:stretch}
.spread-alert .spread-content{position:relative;z-index:1}
.spread-alert .eyebrow{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:#c82828;margin-bottom:18px;font-weight:600;display:flex;align-items:center;gap:10px;font-family:var(--font)}
.spread-alert .eyebrow-dot{width:8px;height:8px;border-radius:50%;background:#c82828;display:inline-block;animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.spread-alert h2{font-family:var(--serif);font-size:46px;font-weight:700;line-height:1.05;letter-spacing:-1.5px;color:#f0ede8;margin-bottom:20px}
.spread-alert .spread-summary{font-size:16px;line-height:1.7;color:#aa8888;max-width:600px;margin-bottom:28px}
.spread-alert .spread-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 3 — TERMINAL SPREAD
═══════════════════════════════════════════════ */
/* Phase 3.2: SPREAD TYPE 3 — COMPACT EDITORIAL (replaces removed terminal variant) */
.spread-compact{background:var(--surface);border-bottom:1px solid var(--border);padding:40px 48px;position:relative;overflow:hidden;cursor:pointer;transition:all .25s}
.spread-compact:hover{background:var(--surface2)}
.spread-compact .compact-eyebrow{font-family:var(--font);font-size:11px;font-weight:600;color:var(--dim);text-transform:uppercase;letter-spacing:.18em;margin-bottom:14px}
.spread-compact h2{font-family:var(--serif);font-size:34px;font-weight:700;line-height:1.12;letter-spacing:-.5px;color:var(--text);margin-bottom:16px}
.spread-compact .compact-facts{font-family:var(--font);font-size:14.5px;line-height:1.65;color:var(--dim);margin-bottom:20px;max-width:640px;display:flex;flex-direction:column;gap:8px}
.spread-compact .compact-facts span{position:relative;padding-left:18px}
.spread-compact .compact-facts span::before{content:'•';position:absolute;left:4px;color:var(--accent);font-weight:700}
.spread-compact .spread-meta{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.spread-compact .numeral{position:absolute;top:16px;right:48px;font-family:var(--mono);font-size:12px;color:var(--muted);opacity:.6;letter-spacing:.1em}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 4 — ACADEMIC DROP-CAP
═══════════════════════════════════════════════ */
.spread-academic{background:var(--cream);border-bottom:2px solid #e8e0d0;padding:64px 48px;display:grid;grid-template-columns:1fr 1fr;gap:64px;color:#1a1a1a;cursor:pointer;transition:all .3s}
.spread-academic:hover{background:#f2eee4}
.spread-academic .eyebrow{font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:#8a7a6a;margin-bottom:20px;font-weight:600;font-family:var(--font)}
.spread-academic h2{font-family:var(--serif);font-size:46px;font-weight:700;line-height:1.06;letter-spacing:-1.5px;color:#1a1a1a;margin-bottom:24px}
.spread-academic .drop-cap-text::first-letter{font-family:var(--serif);font-size:80px;font-weight:900;line-height:.75;float:left;margin:8px 12px 0 0;color:#8a3a1a}
.spread-academic .drop-cap-text{font-size:17px;line-height:1.75;color:#333;font-weight:300;margin-bottom:24px}
.spread-academic .spread-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.spread-academic .aside{border-left:3px solid #8a3a1a;padding-left:24px}
.spread-academic .aside-label{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#8a3a1a;margin-bottom:12px;font-weight:600;font-family:var(--font)}
.spread-academic .aside-stat{font-family:var(--serif);font-size:80px;font-weight:900;color:#1a1a1a;line-height:1;margin-bottom:8px}
.spread-academic .aside-desc{font-size:15px;color:#666;line-height:1.6}
.spread-academic .bias-pill{background:#ddeaff;color:#1a4a8a}
.spread-academic .chip{border-color:#ccc;color:#666;background:rgba(0,0,0,.04)}

/* ═══════════════════════════════════════════════
   SPREAD TYPE 5 — BIG-STAT FINISH
═══════════════════════════════════════════════ */
.spread-bigstat{background:var(--deep-indigo);border-bottom:1px solid #2a2a4e;padding:64px 48px;position:relative;overflow:hidden;cursor:pointer;transition:all .3s}
.spread-bigstat:hover{background:#1f1f33}
.spread-bigstat .watermark{position:absolute;top:50%;right:48px;transform:translateY(-50%);font-family:var(--serif);font-size:220px;font-weight:900;color:rgba(245,158,11,.08);line-height:1;pointer-events:none;user-select:none}
.spread-bigstat .spread-content{position:relative;z-index:1;max-width:700px}
.spread-bigstat .eyebrow{font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:#f59e0b;margin-bottom:20px;font-weight:600;font-family:var(--font)}
.spread-bigstat h2{font-family:var(--serif);font-size:46px;font-weight:900;line-height:1.05;letter-spacing:-1.5px;color:#f0ede8;margin-bottom:20px}
.spread-bigstat .spread-summary{font-size:16px;line-height:1.7;color:#8888aa;margin-bottom:28px}
.spread-bigstat .spread-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}

/* ── SHARED EDITORIAL COMPONENTS ── */
.ed-bias-pill{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:6px 14px;border-radius:2px}
.ed-bias-left{background:#1c3a5e;color:#6ca4e0}
.ed-bias-center{background:#1e3a1e;color:#6cca6c}
.ed-bias-right{background:#3a1e1e;color:#e07070}
.ed-bias-intl{background:#2a2a0a;color:#c0a060}
.ed-source-count{font-size:12px;color:#555;letter-spacing:.05em;font-family:var(--mono)}
.ed-source-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:20px}
.ed-chip{font-size:10px;font-weight:500;letter-spacing:.05em;padding:3px 8px;border-radius:2px;text-transform:uppercase;border:1px solid;font-family:var(--mono)}
.ed-chip-l{color:#6ca4e0;border-color:#1c3a5e;background:rgba(28,58,94,.3)}
.ed-chip-c{color:#aaa;border-color:#333;background:rgba(50,50,50,.3)}
.ed-chip-r{color:#e07070;border-color:#3a1e1e;background:rgba(58,30,30,.3)}
.ed-chip-int{color:#c0a060;border-color:#3a2a0a;background:rgba(58,42,10,.3)}

/* ── STORY PAGE EDITORIAL REDESIGN ── */
.story-page-editorial{background:#0d0d0d;color:#f0ede8;min-height:100vh;padding-bottom:80px}
.sp-back-nav{padding:20px 48px;border-bottom:1px solid #1a1a1a;display:flex;align-items:center;gap:16px}
.sp-back-nav a{font-size:12px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:#555;text-decoration:none;cursor:pointer}
.sp-back-nav a:hover{color:var(--accent-orange)}
.sp-back-nav .sp-logo{display:inline-flex;align-items:center;font-family:var(--serif);font-size:22px;font-weight:900;letter-spacing:-.5px;color:#f0ede8;margin-left:auto;text-decoration:none;line-height:0}
.sp-back-nav .sp-logo img{height:32px;width:auto;display:block;max-width:180px;object-fit:contain}
.sp-back-nav .sp-logo span{color:var(--accent-orange)}

/* Story hero */
.sp-hero{padding:64px 48px 48px;background:#0d0d0d;border-bottom:1px solid #1a1a1a;position:relative;overflow:hidden}
/* B-19-03: when hero image fails to load, the figure hides itself; ensure no reserved space */
.sp-hero .sp-hero-image:empty{display:none}
.sp-hero::before{content:'';position:absolute;top:-60px;right:-60px;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(232,93,42,.06) 0%,transparent 65%);pointer-events:none}
.sp-hero .sp-hero-image{margin:-80px -48px 40px;position:relative;background:#0a0a0a;overflow:hidden;aspect-ratio:21/9;max-height:520px}
.sp-hero .sp-hero-image img{width:100%;height:100%;object-fit:cover;display:block}
.sp-hero .sp-hero-image::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,transparent 0%,transparent 55%,#0d0d0d 100%);pointer-events:none}
.sp-hero .sp-hero-credit{position:absolute;bottom:12px;right:16px;font-size:10px;letter-spacing:.05em;color:rgba(240,237,232,.55);font-family:var(--font);text-shadow:0 1px 4px rgba(0,0,0,.6);z-index:1}
.sp-hero .sp-eyebrow{font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:24px;font-family:var(--font)}
.sp-hero h1{font-family:var(--serif);font-size:clamp(48px,7vw,88px);font-weight:900;line-height:1.08;letter-spacing:-3px;color:#f0ede8;max-width:900px;margin-bottom:32px;padding-bottom:.08em}
.sp-hero .sp-lede{font-size:20px;line-height:1.65;color:#888;max-width:680px;font-weight:300;margin-bottom:36px}
.sp-hero .sp-meta-row{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:12px;color:#555;letter-spacing:.08em;text-transform:uppercase}
/* Phase 16 tweak 2: per-source image gallery on detail page */
.sp-gallery{padding:32px 48px;background:#0a0a0a;border-top:1px solid #1a1a1a;border-bottom:1px solid #1a1a1a}
.sp-gallery-label{font-family:var(--font);font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:18px;font-weight:600}
.sp-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.sp-gallery-card{display:block;background:#111;border:1px solid #1f2733;border-radius:4px;overflow:hidden;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}
.sp-gallery-card:hover{border-color:var(--accent-orange);transform:translateY(-1px)}
.sp-gallery-thumb{aspect-ratio:16/9;background:#0a0a0a;overflow:hidden;position:relative}
.sp-gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}
.sp-gallery-card:hover .sp-gallery-thumb img{transform:scale(1.03)}
.sp-gallery-meta{padding:10px 12px}
.sp-gallery-source{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:6px}
.sp-gallery-title{display:block;font-family:var(--serif);font-size:13px;line-height:1.35;color:#cfcac3;font-weight:500}
@media (max-width:640px){
  .sp-gallery{padding:24px 20px}
  .sp-gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .sp-gallery-meta{padding:8px 10px}
  .sp-gallery-title{font-size:12px}
}

/* Key facts strip */
.sp-facts-strip{padding:56px 48px;border-bottom:1px solid #1a1a1a;background:#0a0a0a}
.sp-facts-strip .label{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-orange);margin-bottom:32px;font-family:var(--mono)}
.sp-facts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:32px}
.sp-fact-item{border-left:2px solid rgba(232,93,42,.22);padding-left:20px}
.sp-fact-item .check{color:var(--cyan);font-size:12px;margin-right:6px}
.sp-fact-item p{font-size:14px;color:var(--text);line-height:1.5}

/* Ground truth — academic treatment */
.sp-ground-truth{background:var(--cream);color:#1a1a1a;padding:64px 48px;border-bottom:2px solid #e8e0d0}
.sp-ground-truth .gt-label{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:#8a3a1a;margin-bottom:24px;font-family:var(--mono)}
.sp-ground-truth .gt-content{max-width:800px}
.sp-ground-truth .gt-content .drop-cap::first-letter{font-family:var(--serif);font-size:80px;font-weight:900;line-height:.75;float:left;margin:8px 16px 0 0;color:#8a3a1a}
.sp-ground-truth .gt-content p{font-size:17px;line-height:1.75;color:#333;font-weight:300;margin-bottom:16px}
.sp-ground-truth .gt-pull-quote{border-left:3px solid #8a3a1a;padding:16px 24px;margin:24px 0;font-family:var(--serif);font-size:22px;font-weight:700;line-height:1.3;color:#1a1a1a;font-style:italic}
.sp-ground-truth .gt-facts{margin-top:24px}
.sp-ground-truth .gt-fact{display:flex;gap:8px;padding:8px 0;border-bottom:1px solid #e0d8ca;font-size:14px;color:#333}
.sp-ground-truth .gt-fact:last-child{border-bottom:none}
.sp-ground-truth .gt-fact .check{color:#2a7a2a;flex-shrink:0}

/* Perspectives — colored columns */
.sp-perspectives{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));border-bottom:1px solid #1a1a1a}
.sp-pole-col{padding:48px 36px;border-right:1px solid #1a1a1a;position:relative}
.sp-pole-col:last-child{border-right:none}
.sp-pole-col.pole-left{background:rgba(6,20,40,.5)}
.sp-pole-col.pole-center{background:rgba(255,255,255,.02);border-left:2px solid #333;border-right:2px solid #333}
.sp-pole-col.pole-right{background:rgba(40,6,6,.5)}
.sp-pole-col.pole-intl{background:rgba(30,22,6,.5)}
.sp-pole-label{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.sp-pole-label::before{content:'';display:block;width:24px;height:2px;border-radius:1px;flex-shrink:0}
.pole-left .sp-pole-label{color:#6ca4e0}.pole-left .sp-pole-label::before{background:#6ca4e0}
.pole-center .sp-pole-label{color:#f0ede8}.pole-center .sp-pole-label::before{background:#f0ede8}
.pole-right .sp-pole-label{color:#e07070}.pole-right .sp-pole-label::before{background:#e07070}
.pole-intl .sp-pole-label{color:#c0a060}.pole-intl .sp-pole-label::before{background:#c0a060}
.sp-pole-headline{font-family:var(--serif);font-size:18px;font-weight:700;line-height:1.2;letter-spacing:-.3px;margin-bottom:14px}
.pole-left .sp-pole-headline{color:#c8dcf0}
.pole-center .sp-pole-headline{color:#f0ede8;font-size:22px}
.pole-right .sp-pole-headline{color:#f0c8c8}
.pole-intl .sp-pole-headline{color:#f0dca8}
.sp-pole-body{font-size:14px;line-height:1.75;color:#888;font-weight:300;margin-bottom:20px}
.sp-pole-claims{margin-bottom:16px}
.sp-pole-claim{font-size:13px;color:var(--text);padding-left:14px;position:relative;line-height:1.5;margin-bottom:6px}
.sp-pole-claim::before{content:'▸';position:absolute;left:0}
.sp-pole-sources{font-size:11px;color:#555;font-family:var(--mono)}

/* What's missing — rose alert */
.sp-missing{background:#1a0808;color:#f0ede8;padding:64px 48px;border-bottom:1px solid #2a1010;position:relative;overflow:hidden}
.sp-missing::before{content:'⚠';position:absolute;top:50%;right:80px;transform:translateY(-50%);font-size:200px;opacity:.04;pointer-events:none}
.sp-missing .missing-label{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:#c82828;margin-bottom:24px;font-family:var(--mono);display:flex;align-items:center;gap:10px}
.sp-missing .missing-label .dot{width:8px;height:8px;border-radius:50%;background:#c82828;animation:pulse 2s ease-in-out infinite}
.sp-missing h3{font-family:var(--serif);font-size:32px;font-weight:700;line-height:1.1;letter-spacing:-1px;color:#9090ff;margin-bottom:16px}
.sp-missing .missing-items{display:flex;flex-direction:column;gap:12px;max-width:800px}
.sp-missing .missing-item{display:flex;gap:12px;font-size:14px;line-height:1.6;color:#aa8888}
.sp-missing .missing-item::before{content:'▸';color:#c82828;flex-shrink:0;margin-top:2px}

/* Propaganda — terminal */
.sp-propaganda{background:var(--surface);color:var(--text);padding:48px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}
.sp-propaganda .prop-label{font-family:var(--font);font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--prop);margin-bottom:20px}
.sp-propaganda .prop-assessment{font-family:var(--serif);font-size:17px;line-height:1.6;color:var(--text);margin-bottom:24px;padding:16px 18px;background:var(--card);border-left:3px solid var(--prop);font-style:italic}
.sp-propaganda .tech-list{display:flex;flex-direction:column;gap:10px}
.sp-propaganda .tech-item{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:14px;font-family:var(--font);font-size:13px}
.sp-propaganda .tech-item .tech-name{color:var(--text);font-weight:700;margin-bottom:6px}
.sp-propaganda .tech-item .tech-source{color:var(--dim);font-size:11px;margin-bottom:6px}
.sp-propaganda .tech-item .tech-desc{color:var(--dim);line-height:1.5}

/* Sources — big stat */
.sp-sources{background:var(--deep-indigo);padding:64px 48px;position:relative;overflow:hidden;border-bottom:1px solid #2a2a4e}
.sp-sources .source-watermark{position:absolute;top:50%;right:48px;transform:translateY(-50%);font-family:var(--serif);font-size:200px;font-weight:900;color:rgba(245,158,11,.06);line-height:1;pointer-events:none;user-select:none}
.sp-sources .sources-label{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:#f59e0b;margin-bottom:24px;font-family:var(--mono)}
.sp-sources .sources-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;position:relative;z-index:1}
.sp-sources .source-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:12px 16px;display:flex;align-items:center;gap:10px}
.sp-sources .source-card .src-name{font-size:13px;font-weight:600;color:#f0ede8}
.sp-sources .source-card .src-bias{font-family:var(--mono);font-size:10px;padding:2px 6px;border-radius:2px;margin-left:auto}

/* CTA box */
.sp-cta{background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:24px;text-align:center;margin:32px 48px}

/* ── SKELETON LOADING ── */
.skeleton{background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton-spread{min-height:400px;margin-bottom:1px}
.skeleton-spread-sm{min-height:240px;margin-bottom:1px}

/* ── RESPONSIVE: EDITORIAL ── */
@media(max-width:900px){
  .spread-hero{grid-template-columns:1fr;min-height:auto}
  .spread-hero .image-panel{min-height:200px}
  .spread-hero h2{font-size:36px}
  .spread-hero .numeral{font-size:180px}
  .spread-hero .spread-content{padding:40px 24px}
  .spread-midnight{grid-template-columns:1fr;padding:40px 24px}
  .spread-midnight h2{font-size:32px}
  .spread-midnight .stat-block{display:none}
  .spread-alert{grid-template-columns:1fr;padding:40px 24px}
  .spread-alert .alert-stamp{display:none}
  .spread-alert h2{font-size:32px}
  .spread-compact{padding:32px 24px}
  .spread-compact h2{font-size:24px}
  .spread-academic{grid-template-columns:1fr;padding:40px 24px;gap:24px}
  .spread-academic h2{font-size:32px}
  .spread-bigstat{padding:40px 24px}
  .spread-bigstat h2{font-size:32px}
  .spread-bigstat .watermark{font-size:120px}
  .editorial-masthead{padding:16px 20px}
  .ed-tabs{padding:0 20px}
  .ed-section-label{padding:32px 20px 16px}
  .sp-hero{padding:48px 24px 40px}
  .sp-hero .sp-hero-image{margin:-48px -24px 28px;aspect-ratio:16/9;max-height:280px}
  .sp-hero h1{font-size:36px;letter-spacing:-1px}
  .sp-facts-strip{padding:40px 24px}
  .sp-facts-grid{grid-template-columns:1fr 1fr}
  .sp-ground-truth{padding:40px 24px}
  .sp-perspectives{grid-template-columns:1fr}
  .sp-pole-col{border-right:none;border-bottom:1px solid #1a1a1a}
  .sp-missing{padding:40px 24px}
  .sp-propaganda{padding:40px 24px}
  .sp-sources{padding:40px 24px}
  .sp-cta{margin:24px 20px}
}
@media(max-width:600px){
  .spread-hero h2{font-size:28px}
  .spread-midnight h2{font-size:26px}
  .spread-alert h2{font-size:26px}
  .spread-academic h2{font-size:26px}
  .spread-bigstat h2{font-size:26px}
  .sp-hero h1{font-size:28px}
  .sp-facts-grid{grid-template-columns:1fr}
}
/* SPRINT 16: Mobile density adjustments */
@media(max-width:768px){
  .density-picker{gap:1px;padding:2px}
  .density-btn{width:28px;height:24px;font-size:12px}
  .wire-row{padding:8px 20px}
  .wire-row .wire-headline{font-size:13px}
  .index-row{padding:10px 20px;gap:12px}
  .index-row .index-thumb{width:48px;height:48px}
  .index-row .index-headline{font-size:14px}
  .digest-row{padding:16px 20px;gap:14px}
  .digest-row .digest-thumb{width:100px;height:56px}
  .digest-row .digest-headline{font-size:17px}
  .digest-row .digest-summary{font-size:13px;-webkit-line-clamp:1}
  .broadsheet-story{min-height:60vh}
  .broadsheet-story .broadsheet-content{padding:40px 24px}
  .broadsheet-story .broadsheet-headline{font-size:36px}
  .broadsheet-story .broadsheet-lede{font-size:16px}
}
