/*
Theme Name: Intel Focus
Theme URI: https://intelfocus.org
Author: Intel Focus
Description: Custom dark forensic-style theme for Intel Focus, built on real Neo Sans Pro type and a reports-first homepage.
Version: 2.9
Text Domain: intelfocus
*/

/* ---------- NEO SANS PRO (self-hosted, real font files) ---------- */
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProLight.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProLightIt.woff2') format('woff2');
  font-weight: 300; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProRegular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProItalic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProMedium.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProMedIt.woff2') format('woff2');
  font-weight: 500; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProBold.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProBoldIt.woff2') format('woff2');
  font-weight: 700; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProBlack.woff2') format('woff2');
  font-weight: 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProBlackIt.woff2') format('woff2');
  font-weight: 800; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProUltra.woff2') format('woff2');
  font-weight: 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('fonts/NeoSansProUltIt.woff2') format('woff2');
  font-weight: 900; font-style: italic; font-display: swap;
}

/* ---------- BRAND PALETTE ----------
   #5271ff  primary brand blue
   #222222  charcoal (dark base / light-mode text)
   #aa2726  brand red (secondary accent — used for podcast tag)
   #ffffff  white (light-mode base / dark-mode text)
------------------------------------ */
:root {
  --bg: #222222;
  --bg-elevated: #2b2b2b;
  --bg-card: #262626;
  --border: rgba(255, 255, 255, 0.12);
  --border-strong: rgba(255, 255, 255, 0.24);
  --text: #ffffff;
  --text-dim: rgba(255, 255, 255, 0.66);
  --text-faint: rgba(255, 255, 255, 0.40);
  --accent: #5271ff;
  --accent-dark: #2755bf;
  --accent-soft: rgba(82, 113, 255, 0.14);
  --accent-glow: rgba(82, 113, 255, 0.38);
  --tag-report: #5271ff;
  --tag-podcast: #aa2726;
  --shadow: 0 20px 60px rgba(0,0,0,0.5);
  --radius: 14px;
  --maxw: 1240px;
  color-scheme: dark;
}

html[data-theme="light"] {
  --bg: #ffffff;
  --bg-elevated: #f3f4f7;
  --bg-card: #ffffff;
  --border: rgba(34, 34, 34, 0.10);
  --border-strong: rgba(34, 34, 34, 0.20);
  --text: #222222;
  --text-dim: rgba(34, 34, 34, 0.66);
  --text-faint: rgba(34, 34, 34, 0.42);
  --accent: #5271ff;
  --accent-dark: #2755bf;
  --accent-soft: rgba(82, 113, 255, 0.08);
  --accent-glow: rgba(82, 113, 255, 0.20);
  --tag-report: #5271ff;
  --tag-podcast: #aa2726;
  --shadow: 0 16px 40px rgba(20,20,20,0.08);
  color-scheme: light;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
/* Do NOT put overflow-x on <html>. Setting it here makes the computed
   overflow-y of BOTH html and body resolve to "auto", which turns body
   into a scroll container — and that silently breaks every
   `position: sticky` on the site (the pinned intelligence-cycle
   sequence and the article table-of-contents), because sticky then
   resolves against body instead of the viewport and never sticks.
   Horizontal bleed is instead clipped at its source on .hero--tight,
   and body's own overflow-x below propagates to the viewport, which
   clips without creating a scroll container. */
html { scroll-behavior: smooth; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: 'Neo Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  transition: background .35s ease, color .35s ease;
  overflow-x: hidden;
}

body, p, li { font-family: 'Neo Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
h1, h2, h3, h4, .display, .btn, .tag, .eyebrow, .footer-cta {
  font-family: 'Neo Sans Pro', -apple-system, BlinkMacSystemFont, sans-serif;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
::selection { background: var(--accent-glow); color: var(--text); }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; }

::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 6px; }

/* ---------- SITE-WIDE SCROLL-REACTIVE NETWORK BACKGROUND ---------- */
.network-bg {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  opacity: 0.5;
  transition: opacity .3s ease;
}
html[data-theme="light"] .network-bg { opacity: 0.16; }

#page-content {
  position: relative;
  z-index: 1;
}

/* ---------- NAV ---------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  padding: 14px 0;
  transition: padding .3s ease, background .3s ease, backdrop-filter .3s ease, border-color .3s ease;
}
.nav.scrolled {
  padding: 9px 0;
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--border);
}
.nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.nav-logo { display: flex; align-items: center; }
.nav-logo img {
  height: clamp(58px, 7.4vw, 84px);
  width: auto;
  max-width: 320px;
  filter: invert(1);
  transition: filter .3s ease, height .3s ease;
}
html[data-theme="light"] .nav-logo img { filter: none; }
.nav.scrolled .nav-logo img { height: clamp(44px, 5.4vw, 62px); }

.nav-links { display: flex; align-items: center; gap: 4px; list-style: none; }
.nav-links a { font-size: 13.5px; font-weight: 600; color: var(--text-dim); padding: 9px 16px; border-radius: 100px; transition: color .2s, background .2s; }
.nav-links a:hover { color: var(--text); background: var(--accent-soft); }
.nav-links a.active { color: var(--text); }
.nav-right { display: flex; align-items: center; gap: 10px; }

.theme-toggle {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  transition: border-color .2s, transform .15s;
}
.theme-toggle:hover { border-color: var(--accent); transform: scale(1.05); }
.theme-toggle svg { width: 17px; height: 17px; stroke: var(--text); }
.theme-toggle .sun { display: none; }
html[data-theme="light"] .theme-toggle .moon { display: none; }
html[data-theme="light"] .theme-toggle .sun { display: block; }

.nav-search {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  transition: border-color .2s;
}
.nav-search:hover { border-color: var(--accent); }
.nav-search svg { width: 16px; height: 16px; stroke: var(--text); }

/* ---------- MOBILE NAV (hamburger + slide-in drawer) ---------- */
.nav-burger {
  display: none;
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: var(--bg-elevated);
  align-items: center; justify-content: center; cursor: pointer;
  flex-direction: column; gap: 4px;
  transition: border-color .2s;
  flex-shrink: 0;
}
.nav-burger:hover { border-color: var(--accent); }
.nav-burger span { display: block; width: 16px; height: 2px; background: var(--text); border-radius: 2px; transition: transform .25s ease, opacity .2s ease; }
body.nav-open .nav-burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
body.nav-open .nav-burger span:nth-child(2) { opacity: 0; }
body.nav-open .nav-burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.mobile-nav-backdrop {
  position: fixed; inset: 0; background: rgba(0,0,0,0.55);
  z-index: 1100; opacity: 0; pointer-events: none; transition: opacity .3s ease;
}
body.nav-open .mobile-nav-backdrop { opacity: 1; pointer-events: auto; }
body.nav-open { overflow: hidden; }

.mobile-nav {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(320px, 84vw);
  background: var(--bg); border-left: 1px solid var(--border-strong);
  z-index: 1200; padding: 104px 30px 40px;
  transform: translateX(100%); transition: transform .35s ease;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
}
body.nav-open .mobile-nav { transform: translateX(0); }
.mobile-nav-links { list-style: none; display: flex; flex-direction: column; gap: 2px; }
.mobile-nav-links a {
  display: block; font-size: 19px; font-weight: 700; padding: 15px 2px;
  color: var(--text); border-bottom: 1px solid var(--border);
}
.mobile-nav-divider { height: 1px; background: var(--border); margin: 20px 0; }
.mobile-nav-extra { display: block; font-size: 14px; font-weight: 600; color: var(--text-dim); padding: 6px 2px; }

.hero { position: relative; padding: 168px 0 90px; overflow: hidden; border-bottom: 1px solid var(--border); }
.hero-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 50px; align-items: center; position: relative; z-index: 2; }

.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 11.5px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 22px; font-family: 'Neo Sans Pro', sans-serif;
}
.eyebrow::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 12px var(--accent-glow); animation: pulse 2.2s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }

.hero h1 { font-size: clamp(36px, 4.6vw, 58px); font-weight: 900; line-height: 1.04; letter-spacing: -0.02em; margin-bottom: 22px; }
.hero h1 .accent-text { color: var(--accent); }
.hero-dek { font-size: 17px; line-height: 1.65; color: var(--text-dim); max-width: 640px; margin-bottom: 34px; }
.hero-cta-row { display: flex; gap: 14px; flex-wrap: wrap; }

.btn {
  display: inline-flex; align-items: center; gap: 9px; padding: 14px 26px; border-radius: 100px;
  font-size: 14px; font-weight: 700; border: 1px solid transparent; cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
.btn-primary { background: linear-gradient(135deg, var(--accent), var(--accent-dark)); color: #fff; box-shadow: 0 8px 24px var(--accent-glow); }
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 12px 32px var(--accent-glow); }
.btn-ghost { background: var(--bg-elevated); color: var(--text); border-color: var(--border-strong); }
.btn-ghost:hover { border-color: var(--accent); background: var(--accent-soft); }
.btn svg { width: 15px; height: 15px; }

.hero-stats { display: flex; gap: 34px; margin-top: 46px; flex-wrap: wrap; }
.hero-stat-num { font-size: 26px; font-weight: 800; line-height: 1; }
.hero-stat-label { font-size: 11.5px; color: var(--text-faint); margin-top: 6px; font-family: 'Neo Sans Pro', sans-serif; }

/* Frameless node-globe — no border, no background, no box-shadow.
   Only the canvas's own pixels are visible, so it blends straight into
   the page instead of reading as a boxed card. */
.hero-globe { position: relative; aspect-ratio: 1/1; overflow: hidden; pointer-events: none; }
.hero-globe-canvas { position: absolute; inset: 0; width: 100%; height: 100%; }

.section { padding: 96px 0; }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 44px; flex-wrap: wrap; gap: 18px; }
.section-title { font-size: clamp(26px, 3vw, 34px); font-weight: 800; letter-spacing: -0.015em; }
.section-link { font-size: 13.5px; font-weight: 700; color: var(--accent); display: flex; align-items: center; gap: 6px; font-family: 'Neo Sans Pro', sans-serif; }
.section-link svg { width: 13px; height: 13px; transition: transform .2s; }
.section-link:hover svg { transform: translateX(3px); }

.reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in { opacity: 1; transform: translateY(0); }
.reports-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }

/* ---------- CATEGORY ARCHIVE PAGINATION ---------- */
/* Note: WP wraps pagination links in its own .nav-links div, reusing that
   class name — !important guards below prevent the main site nav's
   .nav-links a rule (different context) from bleeding into these pills. */
.archive-pagination { display: flex; justify-content: center; margin-top: 52px; }
.archive-pagination .nav-links { display: flex !important; gap: 8px !important; list-style: none; }
.archive-pagination .page-numbers {
  display: inline-flex !important; align-items: center; justify-content: center;
  min-width: 40px; height: 40px; padding: 0 14px !important; border-radius: 100px;
  border: 1px solid var(--border-strong); color: var(--text-dim) !important;
  font-size: 13.5px; font-weight: 600; font-family: 'Neo Sans Pro', sans-serif;
  transition: border-color .2s, background .2s, color .2s;
}
.archive-pagination .page-numbers:hover { border-color: var(--accent); background: var(--accent-soft); color: var(--text) !important; }
.archive-pagination .page-numbers.current { background: var(--accent); border-color: var(--accent); color: #fff !important; }
.archive-pagination .page-numbers.dots { border: none; }

.card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; }
.card:hover { transform: translateY(-5px); box-shadow: 0 16px 40px var(--accent-glow); border-color: var(--border-strong); }
.card-img { aspect-ratio: 16/10; background: linear-gradient(135deg, var(--accent-soft), var(--bg-elevated)); position: relative; overflow: hidden; }
.card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.card:hover .card-img img { transform: scale(1.06); }

.tag { position: absolute; top: 13px; left: 13px; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; padding: 5px 10px; border-radius: 100px; backdrop-filter: blur(8px); }
.tag-report { background: rgba(82,113,255,0.22); color: #cdd8ff; border: 1px solid rgba(82,113,255,0.45); }
.tag-podcast { background: rgba(170,39,38,0.22); color: #f4c2c1; border: 1px solid rgba(170,39,38,0.45); }

.card-body { padding: 22px 22px 24px; }
.card-meta { display: flex; gap: 10px; align-items: center; font-size: 11px; color: var(--text-faint); margin-bottom: 11px; font-family: 'Neo Sans Pro', sans-serif; letter-spacing: 0.02em; }
.card-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: var(--text-faint); }
.card-title { font-size: 17px; font-weight: 700; line-height: 1.35; margin-bottom: 9px; letter-spacing: -0.01em; }
.card-dek { font-size: 13.5px; line-height: 1.55; color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }

.podcast-feature { display: grid; grid-template-columns: 0.9fr 1.1fr; background: var(--bg-card); border: 1px solid var(--border); border-radius: 20px; overflow: hidden; box-shadow: var(--shadow); }
.podcast-art { position: relative; aspect-ratio: 1/1; background: linear-gradient(135deg, var(--accent-soft), var(--bg-elevated)); display: flex; align-items: center; justify-content: center; }
.podcast-art img { width: 100%; height: 100%; object-fit: cover; }
.podcast-play { position: absolute; width: 64px; height: 64px; border-radius: 50%; background: rgba(255,255,255,0.92); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 8px 24px rgba(0,0,0,0.35); transition: transform .2s; }
.podcast-play:hover { transform: scale(1.08); }
.podcast-play svg { width: 22px; height: 22px; fill: #222222; margin-left: 3px; }

.podcast-body { padding: 38px; display: flex; flex-direction: column; justify-content: center; }
.podcast-eyebrow { font-size: 11px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--tag-podcast); margin-bottom: 14px; font-family: 'Neo Sans Pro', sans-serif; }
.podcast-title { font-size: 25px; font-weight: 800; line-height: 1.25; margin-bottom: 14px; letter-spacing: -0.015em; }
.podcast-dek { font-size: 14.5px; line-height: 1.6; color: var(--text-dim); margin-bottom: 22px; font-family: 'Neo Sans Pro', sans-serif; }
.podcast-meta { display: flex; gap: 16px; font-size: 12.5px; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }

.about-band { padding: 100px 0; }
.about-grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 60px; align-items: center; }
.about-quote { font-size: clamp(22px, 2.6vw, 30px); font-weight: 700; line-height: 1.4; letter-spacing: -0.01em; }
.about-quote .accent-text { color: var(--accent); }
.about-copy { font-size: 14.5px; line-height: 1.75; color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }
.about-copy p + p { margin-top: 16px; }
.about-tags { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 24px; }
.about-pill { font-size: 12px; font-weight: 600; padding: 8px 16px; border-radius: 100px; border: 1px solid var(--border-strong); color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }

footer { background: var(--bg-elevated); border-top: 1px solid var(--border); padding: 70px 0 30px; }
.footer-cta { font-size: clamp(28px, 3.4vw, 42px); font-weight: 900; letter-spacing: -0.02em; margin-bottom: 36px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 44px; border-bottom: 1px solid var(--border); }
.footer-col-title { font-size: 11.5px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 18px; font-family: 'Neo Sans Pro', sans-serif; }
.footer-links { list-style: none; display: flex; flex-direction: column; gap: 11px; }
.footer-links a { font-size: 13.5px; color: var(--text-dim); transition: color .2s; font-family: 'Neo Sans Pro', sans-serif; }
.footer-links a:hover { color: var(--accent); }
.footer-desc { font-size: 13.5px; color: var(--text-dim); line-height: 1.65; max-width: 320px; font-family: 'Neo Sans Pro', sans-serif; }
.footer-social { display: flex; gap: 10px; margin-top: 20px; }
.footer-social a { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border-strong); display: flex; align-items: center; justify-content: center; transition: border-color .2s, background .2s; }
.footer-social a:hover { border-color: var(--accent); background: var(--accent-soft); }
.footer-social svg { width: 15px; height: 15px; stroke: var(--text-dim); }

/* ---------- NEWSLETTER SIGN-UP ---------- */
.newsletter-form { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.newsletter-row { display: flex; gap: 8px; }
.newsletter-input {
  flex: 1; min-width: 0;
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 100px;
  padding: 11px 18px;
  font-size: 13.5px;
  color: var(--text);
  font-family: 'Neo Sans Pro', sans-serif;
  outline: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.newsletter-input::placeholder { color: var(--text-faint); }
.newsletter-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.newsletter-btn {
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--accent), var(--accent-dark));
  color: #fff;
  border: none;
  border-radius: 100px;
  padding: 11px 22px;
  font-size: 13px;
  font-weight: 700;
  font-family: 'Neo Sans Pro', sans-serif;
  cursor: pointer;
  box-shadow: 0 6px 18px var(--accent-glow);
  transition: transform .2s ease, box-shadow .2s ease;
  white-space: nowrap;
}
.newsletter-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 24px var(--accent-glow); }
.newsletter-note { font-size: 11px; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.newsletter-success { font-size: 13px; color: var(--accent); font-weight: 600; display: none; }
.newsletter-success.show { display: block; }

.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding-top: 26px; flex-wrap: wrap; gap: 12px; }
.footer-legal { font-size: 11.5px; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.footer-legal-links { display: flex; gap: 18px; }
.footer-legal-links a { font-size: 11.5px; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.footer-legal-links a:hover { color: var(--accent); }

@media (max-width: 980px) {
  .nav-links { display: none; }
  .nav-burger { display: flex; }
  .hero-grid { grid-template-columns: 1fr; }
  .hero-globe { order: -1; aspect-ratio: 16/10; }
  .reports-grid { grid-template-columns: repeat(2, 1fr); }
  .podcast-feature { grid-template-columns: 1fr; }
  .podcast-art { aspect-ratio: 16/9; }
  .about-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .theme-toggle, .nav-search, .nav-burger { width: 40px; height: 40px; }
}
@media (min-width: 981px) {
  .mobile-nav, .mobile-nav-backdrop { display: none; }
}
@media (max-width: 600px) {
  .wrap { padding: 0 20px; }
  /* Every homepage section (quiz, podcast, spotlight, etc.) inherits
     96px top+bottom from .section — fine on desktop, but compounding
     across 5+ stacked sections it's what makes the mobile homepage
     feel like mostly empty scrolling. Tighten the rhythm instead. */
  .section { padding: 56px 0; }
  .reports-grid { grid-template-columns: 1fr; }
  .hero { padding: 118px 0 60px; }
  .hero-stats { gap: 24px; margin-top: 32px; }
  .hero-dek { margin-bottom: 24px; }
  .hero-cta-row { flex-direction: column; align-items: stretch; }
  .hero-cta-row .btn { justify-content: center; }
  .footer-grid { grid-template-columns: 1fr; gap: 30px; }
  .podcast-body { padding: 26px; }
  .nav-logo img { height: clamp(46px, 11vw, 60px); }
}
@media (max-width: 420px) {
  .newsletter-row { flex-direction: column; }
  .newsletter-btn { width: 100%; justify-content: center; }
}

/* =====================================================================
   CASE FILE — single post reading experience
===================================================================== */
.reading-progress {
  position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 2000;
  background: transparent; pointer-events: none;
}
.reading-progress span {
  display: block; height: 100%; width: 0%;
  background: linear-gradient(90deg, var(--accent), var(--tag-podcast));
  transition: width .1s linear;
}

.case-header { padding: 150px 0 34px; border-bottom: 1px solid var(--border); }
.case-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.case-stamp {
  font-size: 10.5px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  padding: 6px 12px; border-radius: 100px;
}
.case-no { font-size: 11.5px; color: var(--text-faint); font-family: 'Neo Sans Pro', monospace, sans-serif; letter-spacing: 0.05em; }
.case-title { font-size: clamp(30px, 4.4vw, 50px); font-weight: 900; line-height: 1.08; letter-spacing: -0.02em; max-width: 900px; margin-bottom: 20px; }
.case-meta { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.case-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: var(--text-faint); }

.case-evidence-photo { padding: 40px 0 0; }
.evidence-frame {
  position: relative; border-radius: 16px; overflow: hidden; border: 1px solid var(--border-strong);
  box-shadow: var(--shadow); max-height: 520px;
}
.evidence-frame img { width: 100%; height: 100%; object-fit: cover; display: block; max-height: 520px; }
.evidence-corner {
  position: absolute; width: 22px; height: 22px; border-color: var(--accent); opacity: .85; pointer-events: none;
}
.evidence-corner.tl { top: 12px; left: 12px; border-top: 2px solid; border-left: 2px solid; }
.evidence-corner.tr { top: 12px; right: 12px; border-top: 2px solid; border-right: 2px solid; }
.evidence-corner.bl { bottom: 12px; left: 12px; border-bottom: 2px solid; border-left: 2px solid; }
.evidence-corner.br { bottom: 12px; right: 12px; border-bottom: 2px solid; border-right: 2px solid; }

/* =====================================================================
   EPISODE HEADER — Podcasts. Glossy, glassy, red. Deliberately the
   opposite mood to the case-file report header: warm, loud, playful.
===================================================================== */
.ep-header {
  position: relative; padding: 148px 0 64px; overflow: hidden;
  background:
    radial-gradient(900px 500px at 15% 0%, rgba(170, 39, 38, 0.35), transparent 60%),
    radial-gradient(700px 460px at 100% 20%, rgba(170, 39, 38, 0.18), transparent 55%),
    var(--bg);
  border-bottom: 1px solid var(--border);
}
.ep-header-bg {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: radial-gradient(700px 460px at 20% 20%, black, transparent 75%);
}
.ep-header-inner {
  position: relative; z-index: 1; display: grid;
  grid-template-columns: 240px 1fr; gap: 56px; align-items: center;
}

.ep-art { display: flex; flex-direction: column; align-items: center; gap: 22px; }
.ep-art-disc {
  position: relative; width: 210px; height: 210px; border-radius: 50%;
  background: linear-gradient(155deg, rgba(255,255,255,0.14), rgba(255,255,255,0.02) 40%), var(--bg-card);
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 24px 60px rgba(170, 39, 38, 0.35), inset 0 0 0 1px rgba(255,255,255,0.05);
  display: flex; align-items: center; justify-content: center;
  backdrop-filter: blur(14px);
}
.ep-art-ring {
  position: absolute; border-radius: 50%; border: 1px solid rgba(255,255,255,0.08); pointer-events: none;
}
.ep-art-ring.r1 { inset: 14px; }
.ep-art-ring.r2 { inset: 32px; border-color: rgba(255,255,255,0.06); }
.ep-art-ring.r3 { inset: 50px; border-color: var(--tag-podcast); opacity: .55; }
.ep-art-photo {
  position: relative; width: 128px; height: 128px; border-radius: 50%; overflow: hidden;
  border: 2px solid rgba(255,255,255,0.18); box-shadow: 0 10px 26px rgba(0,0,0,0.4);
}
.ep-art-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ep-art-placeholder {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(155deg, var(--tag-podcast), #6d1a19); color: rgba(255,255,255,0.85);
}
.ep-art-placeholder svg { width: 44px; height: 44px; }
.ep-art-glare {
  position: absolute; top: -10%; left: -10%; width: 60%; height: 60%; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.35), transparent 70%);
  transform: rotate(-25deg); pointer-events: none; mix-blend-mode: overlay;
}

.ep-wave { display: flex; align-items: flex-end; gap: 3px; height: 26px; }
.ep-wave span {
  display: block; width: 3px; border-radius: 2px; background: var(--tag-podcast);
  animation: ep-bar 1.1s ease-in-out infinite;
}
.ep-wave span:nth-child(1) { height: 40%; animation-delay: 0s; }
.ep-wave span:nth-child(2) { height: 80%; animation-delay: .1s; }
.ep-wave span:nth-child(3) { height: 55%; animation-delay: .2s; }
.ep-wave span:nth-child(4) { height: 100%; animation-delay: .3s; }
.ep-wave span:nth-child(5) { height: 65%; animation-delay: .4s; }
.ep-wave span:nth-child(6) { height: 85%; animation-delay: .5s; }
.ep-wave span:nth-child(7) { height: 45%; animation-delay: .6s; }
@keyframes ep-bar {
  0%, 100% { transform: scaleY(0.5); opacity: .65; }
  50% { transform: scaleY(1); opacity: 1; }
}

.ep-meta-col { min-width: 0; }
.ep-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.ep-stamp {
  font-size: 10.5px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  padding: 6px 12px; border-radius: 100px; color: #fff;
  background: linear-gradient(135deg, var(--tag-podcast), #d3372f);
  box-shadow: 0 6px 18px rgba(170, 39, 38, 0.4);
}
.ep-title { font-size: clamp(30px, 4.4vw, 52px); font-weight: 900; line-height: 1.06; letter-spacing: -0.02em; max-width: 820px; margin-bottom: 20px; }
.ep-cta-row { display: flex; gap: 10px; margin-top: 26px; flex-wrap: wrap; }
.ep-btn {
  background: rgba(170, 39, 38, 0.12); border: 1px solid rgba(170, 39, 38, 0.4); color: var(--text);
  backdrop-filter: blur(10px);
}
.ep-btn:hover { background: rgba(170, 39, 38, 0.22); border-color: var(--tag-podcast); color: var(--text); }

/* Podcast body copy — same rhythm as .case-content, warmer accents */
.ep-content blockquote { border-left-color: var(--tag-podcast); }
.ep-content blockquote::before { color: var(--tag-podcast); }
.ep-content h2, .ep-content h3 { color: var(--text); }
.ep-content h4 { color: var(--tag-podcast); border-bottom-color: var(--border); }
.ep-content a { color: var(--tag-podcast); text-decoration-color: rgba(170, 39, 38, 0.3); }
.ep-related .section-title { color: var(--text); }
.ep-related .card:hover { box-shadow: 0 16px 40px rgba(170, 39, 38, 0.25); border-color: rgba(170, 39, 38, 0.4); }

@media (max-width: 780px) {
  .ep-header { padding: 122px 0 48px; }
  .ep-header-inner { grid-template-columns: 1fr; gap: 30px; text-align: center; }
  .ep-art { align-items: center; }
  .ep-eyebrow, .case-meta, .ep-cta-row { justify-content: center; }
}

/* padding-top/bottom only — this element also carries .wrap, and a
   shorthand "padding" here would silently zero out .wrap's left/right
   gutter (invisible on desktop where the content is narrower than the
   viewport anyway, but full-bleed with no margins on mobile). */
.case-body-wrap { padding-top: 56px; padding-bottom: 20px; }
.case-layout { display: grid; grid-template-columns: 230px 1fr; gap: 64px; align-items: start; }

.case-toc {
  position: sticky; top: 110px; display: flex; flex-direction: column; gap: 10px;
  padding-right: 8px;
}
.case-toc-title { font-size: 10.5px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 4px; }
#caseTocList { list-style: none; display: flex; flex-direction: column; gap: 2px; border-left: 2px solid var(--border); }
#caseTocList li { margin: 0; }
#caseTocList a {
  display: block; font-size: 12.5px; color: var(--text-faint); padding: 7px 0 7px 14px;
  border-left: 2px solid transparent; margin-left: -2px; transition: color .2s, border-color .2s;
  font-family: 'Neo Sans Pro', sans-serif; line-height: 1.35;
}
#caseTocList a:hover { color: var(--text); }
#caseTocList a.active { color: var(--accent); border-left-color: var(--accent); font-weight: 700; }
.case-toc-divider { height: 1px; background: var(--border); margin: 10px 0; }
.case-share-btn {
  display: flex; align-items: center; gap: 9px; font-size: 12.5px; font-weight: 600;
  color: var(--text-dim); background: none; border: 1px solid var(--border-strong);
  border-radius: 100px; padding: 9px 14px; cursor: pointer; font-family: 'Neo Sans Pro', sans-serif;
  transition: border-color .2s, background .2s, color .2s;
}
.case-share-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
.case-share-btn:hover { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
.case-share-btn.copied { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }

.case-content { font-size: 16.5px; line-height: 1.8; color: var(--text-dim); max-width: 720px; overflow-wrap: break-word; }
.case-content h2 { font-size: 26px; font-weight: 800; color: var(--text); letter-spacing: -0.01em; margin: 44px 0 16px; scroll-margin-top: 120px; }
.case-content h3 { font-size: 20px; font-weight: 700; color: var(--text); letter-spacing: -0.005em; margin: 34px 0 14px; scroll-margin-top: 120px; }
.case-content h4 {
  font-size: 13px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--accent); margin: 40px 0 16px; padding-bottom: 10px; border-bottom: 1px solid var(--border);
  scroll-margin-top: 120px;
}
.case-content p { margin-bottom: 20px; }

/* Migrated figure/caption markup — force it inside the article column
   regardless of whatever inline pixel width WordPress originally set. */
.case-content figure,
.case-content .wp-caption {
  max-width: 100% !important; width: auto !important; margin: 8px 0 28px;
}
.case-content figure img,
.case-content .wp-caption img { margin: 0 0 10px; width: 100%; }
.case-content figcaption,
.case-content .wp-caption-text {
  font-size: 12.5px; font-style: italic; color: var(--text-faint);
  font-family: 'Neo Sans Pro', sans-serif; line-height: 1.5; padding: 0;
}

/* Twitter/X embeds — contain width and stop the bright default card
   from clashing with the dark theme (paired with the data-theme="dark"
   attribute injected server-side in functions.php). */
.case-content .twitter-tweet { margin: 24px auto !important; max-width: 550px !important; }
.case-content iframe[src*="twitter.com"],
.case-content iframe[src*="platform.twitter"] { max-width: 100%; }
.case-content a { color: var(--accent); text-decoration: underline; text-decoration-color: var(--accent-soft); text-underline-offset: 2px; }
.case-content a:hover { text-decoration-color: var(--accent); }
.case-content strong { color: var(--text); }
.case-content img { max-width: 100%; height: auto; border-radius: 12px; margin: 8px 0 28px; }
.case-content iframe { max-width: 100%; border-radius: 12px; margin: 8px 0 28px; }
.case-content ul, .case-content ol { margin: 0 0 22px 22px; }
.case-content li { margin-bottom: 8px; }
.case-content blockquote {
  position: relative; margin: 32px 0; padding: 22px 26px 22px 30px;
  background: var(--bg-elevated); border-left: 3px solid var(--accent); border-radius: 0 12px 12px 0;
  font-size: 17px; font-style: italic; color: var(--text);
}
.case-content blockquote p { margin-bottom: 0; }
.case-content blockquote::before {
  content: '“'; position: absolute; top: -6px; left: 10px; font-size: 40px; font-style: normal;
  color: var(--accent); opacity: .5; font-family: Georgia, serif;
}

.case-verify-footer {
  display: flex; align-items: flex-start; gap: 14px; margin-top: 48px; padding: 22px;
  background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 14px;
}
.case-verify-icon { flex-shrink: 0; width: 30px; height: 30px; color: var(--accent); }
.case-verify-icon svg { width: 100%; height: 100%; }
.case-verify-footer p { font-size: 13px; color: var(--text-faint); margin: 0; }
.case-verify-footer a { color: var(--accent); }

.related-band { border-top: 1px solid var(--border); margin-top: 30px; }

.case-toc-hint {
  display: flex; align-items: flex-start; gap: 8px; font-size: 11px; line-height: 1.5;
  color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif;
}
.case-toc-hint svg { width: 13px; height: 13px; flex-shrink: 0; margin-top: 1px; }

/* Interactive "tap to inspect" affordance for quotes and highlighted
   figures on Reports — clickable elements get a dashed underline and a
   faint highlight tint on hover so it reads as tappable, not just decor. */
.is-report .case-content blockquote:not(.twitter-tweet) { cursor: pointer; transition: transform .15s ease, box-shadow .2s ease; }
.is-report .case-content blockquote:not(.twitter-tweet):hover { transform: translateX(2px); box-shadow: 0 8px 24px rgba(0,0,0,0.25); }
.stat-pop {
  cursor: pointer; font-weight: 800; color: var(--accent);
  border-bottom: 1.5px dashed var(--accent); padding: 0 1px; transition: background .2s ease;
  border-radius: 3px;
}
.stat-pop:hover { background: var(--accent-soft); }

@media (max-width: 980px) {
  .case-layout { grid-template-columns: 1fr; gap: 30px; }
  .case-toc { position: static; flex-direction: row; flex-wrap: wrap; }
  #caseTocList { display: none; }
  .case-toc-title { display: none; }
  .case-toc-divider { display: none; }
  .case-toc-hint { display: none; }
}
@media (max-width: 600px) {
  .case-header { padding: 122px 0 26px; }
  .evidence-frame { border-radius: 10px; }
  .case-content { font-size: 15.5px; }
}

/* =====================================================================
   REPORT POPUPS — quote / figure lightbox + text-selection toolbar
===================================================================== */
.case-modal-backdrop {
  position: fixed; inset: 0; z-index: 3000; background: rgba(10,10,12,0.72);
  backdrop-filter: blur(6px); opacity: 0; pointer-events: none; transition: opacity .25s ease;
}
.case-modal-backdrop.show { opacity: 1; pointer-events: auto; }

.case-modal {
  position: fixed; top: 50%; left: 50%; z-index: 3001; width: min(560px, 88vw);
  background: var(--bg-card); border: 1px solid var(--border-strong); border-radius: 20px;
  padding: 40px 36px 30px; box-shadow: 0 30px 80px rgba(0,0,0,0.55);
  transform: translate(-50%, -50%) scale(.94); opacity: 0; pointer-events: none;
  transition: opacity .25s ease, transform .25s ease;
}
.case-modal.show { opacity: 1; transform: translate(-50%, -50%) scale(1); pointer-events: auto; }
.case-modal-close {
  position: absolute; top: 16px; right: 16px; width: 34px; height: 34px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: var(--bg-elevated); color: var(--text-dim);
  display: flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color .2s, color .2s;
}
.case-modal-close svg { width: 15px; height: 15px; }
.case-modal-close:hover { border-color: var(--accent); color: var(--text); }
.case-modal-kicker {
  font-size: 10.5px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 16px;
}
.case-modal-body {
  font-size: 21px; line-height: 1.55; font-weight: 600; color: var(--text);
  font-style: italic; max-height: 50vh; overflow-y: auto;
}
.case-modal-body::before { content: '“'; color: var(--accent); font-style: normal; }
.case-modal-body::after { content: '”'; color: var(--accent); font-style: normal; }
.case-modal-actions { display: flex; gap: 10px; margin-top: 26px; }

.selection-toolbar {
  position: absolute; z-index: 2500; display: none; gap: 4px; padding: 6px;
  background: var(--bg-elevated); border: 1px solid var(--border-strong); border-radius: 10px;
  box-shadow: 0 10px 30px rgba(0,0,0,0.4); transform: translate(-50%, -100%);
}
.selection-toolbar.show { display: flex; }
.selection-toolbar button {
  background: none; border: none; color: var(--text-dim); font-size: 12px; font-weight: 700;
  padding: 7px 12px; border-radius: 6px; cursor: pointer; font-family: 'Neo Sans Pro', sans-serif;
  transition: background .15s, color .15s;
}
.selection-toolbar button:hover { background: var(--accent-soft); color: var(--text); }

/* =====================================================================
   ARCHIVE INTERACTIVITY — filter chips, live search, card spotlight
===================================================================== */
.archive-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 40px; }
.archive-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.archive-chip {
  font-size: 13px; font-weight: 700; padding: 9px 18px; border-radius: 100px;
  border: 1px solid var(--border-strong); color: var(--text-dim);
  font-family: 'Neo Sans Pro', sans-serif; transition: border-color .2s, background .2s, color .2s;
}
.archive-chip:hover { border-color: var(--accent); color: var(--text); }
.archive-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.archive-search { position: relative; }
.archive-search input {
  width: 240px; max-width: 100%; background: var(--bg-elevated); border: 1px solid var(--border-strong);
  border-radius: 100px; padding: 10px 16px 10px 38px; font-size: 13.5px; color: var(--text);
  font-family: 'Neo Sans Pro', sans-serif; outline: none; transition: border-color .2s, box-shadow .2s;
}
.archive-search input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.archive-search svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; stroke: var(--text-faint); pointer-events: none; }
.archive-empty { color: var(--text-dim); padding: 30px 0; display: none; }
.archive-empty.show { display: block; }

.card { position: relative; }
.card::before {
  content: ''; position: absolute; inset: 0; z-index: 2; border-radius: var(--radius);
  background: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%), var(--accent-soft), transparent 70%);
  opacity: 0; transition: opacity .3s ease; pointer-events: none;
}
.card:hover::before { opacity: 1; }

@media (max-width: 600px) {
  .archive-toolbar { flex-direction: column; align-items: stretch; }
  .archive-search input { width: 100%; }
}

/* =====================================================================
   V9 — BRAND NAV BAR
   The top bar is always Intel Focus blue (#5271ff) in BOTH light and
   dark mode, so the white logo never changes between themes.
===================================================================== */
.nav.nav-brand,
html[data-theme="light"] .nav.nav-brand {
  background: linear-gradient(180deg, #5f7dff 0%, #5271ff 55%, #4763e8 100%);
  border-bottom: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 10px 34px rgba(39, 85, 191, 0.35);
}
.nav-gloss {
  position: absolute; inset: 0 0 50% 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,0.16), rgba(255,255,255,0));
}
.nav.nav-brand { position: fixed; overflow: hidden; }
.nav.nav-brand .nav-inner { position: relative; z-index: 1; }

.nav.nav-brand.scrolled,
html[data-theme="light"] .nav.nav-brand.scrolled {
  background: linear-gradient(180deg, rgba(82,113,255,0.92), rgba(71,99,232,0.92));
  backdrop-filter: blur(18px) saturate(150%);
  -webkit-backdrop-filter: blur(18px) saturate(150%);
  border-bottom: 1px solid rgba(255,255,255,0.18);
}

/* Bold, theme-independent logo: always solid white on the blue bar. */
.nav.nav-brand .nav-logo img,
html[data-theme="light"] .nav.nav-brand .nav-logo img {
  filter: brightness(0) invert(1) drop-shadow(0 2px 8px rgba(20,40,120,0.35));
}
.nav.nav-brand .nav-logo { transition: transform .25s ease; }
.nav.nav-brand .nav-logo:hover { transform: scale(1.03); }

/* Nav links + controls: white on blue in both modes. */
.nav.nav-brand .nav-links a,
html[data-theme="light"] .nav.nav-brand .nav-links a { color: rgba(255,255,255,0.82); }
.nav.nav-brand .nav-links a:hover,
html[data-theme="light"] .nav.nav-brand .nav-links a:hover {
  color: #ffffff; background: rgba(255,255,255,0.14);
}
.nav.nav-brand .nav-links a.active { color: #ffffff; }

.nav.nav-brand .theme-toggle,
.nav.nav-brand .nav-search,
.nav.nav-brand .nav-burger,
html[data-theme="light"] .nav.nav-brand .theme-toggle,
html[data-theme="light"] .nav.nav-brand .nav-search,
html[data-theme="light"] .nav.nav-brand .nav-burger {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.28);
}
.nav.nav-brand .theme-toggle:hover,
.nav.nav-brand .nav-search:hover,
.nav.nav-brand .nav-burger:hover { border-color: #ffffff; background: rgba(255,255,255,0.2); }
.nav.nav-brand .theme-toggle svg,
.nav.nav-brand .nav-search svg,
html[data-theme="light"] .nav.nav-brand .theme-toggle svg,
html[data-theme="light"] .nav.nav-brand .nav-search svg { stroke: #ffffff; }
.nav.nav-brand .nav-burger span,
html[data-theme="light"] .nav.nav-brand .nav-burger span { background: #ffffff; }

/* =====================================================================
   V9 — HERO ENTRANCE + SCROLL CUE
===================================================================== */
.hero-headline { display: block; }
.hero-line { display: block; overflow: hidden; }
.hero-line > span {
  display: inline-block;
  transform: translateY(112%);
  transition: transform .9s cubic-bezier(0.22, 1, 0.36, 1);
}
body.hero-in .hero-line > span { transform: translateY(0); }

.hero-copy { will-change: transform; }

.hero-scroll-cue {
  position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  opacity: 0.55;
}
.hero-scroll-cue-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif;
}
.hero-scroll-cue-line {
  width: 1.5px; height: 34px; border-radius: 2px; overflow: hidden; position: relative;
  background: var(--border-strong);
}
.hero-scroll-cue-line::after {
  content: ''; position: absolute; left: 0; right: 0; top: -40%; height: 40%;
  background: var(--accent); animation: scrollcue 1.8s ease-in-out infinite;
}
@keyframes scrollcue { 0% { top: -40%; } 100% { top: 110%; } }

/* =====================================================================
   V9 — THE METHOD (pinned Apple-style scroll sequence)
===================================================================== */
/* Section height = 100vh of pinned viewport + the scroll distance the
   five steps animate over. Paced at ~24vh per step. The blank stretch
   before "Latest episode" was never really about this number — it was
   the sticky pin failing outright (see the <html> overflow note near
   the top of this file), which left the tail of this section empty. */
.process { height: 220vh; position: relative; border-bottom: 1px solid var(--border); }
.process-sticky {
  position: sticky; top: 0; height: 100vh; height: 100svh;
  display: flex; align-items: center; overflow: hidden;
}
.process-stage-wrap { width: 100%; position: relative; }
.process-head { text-align: center; margin-bottom: 34px; }
.process-title {
  font-size: clamp(28px, 3.8vw, 46px); font-weight: 900;
  line-height: 1.1; letter-spacing: -0.02em;
}
.process-title .accent-text { color: var(--accent); }

.process-stage { position: relative; }
.process-canvas {
  position: absolute; inset: -40px -10px; width: calc(100% + 20px); height: calc(100% + 80px);
  pointer-events: none; z-index: 0;
}
.process-steps {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
  padding: 130px 0 90px;
}
.process-step {
  background: color-mix(in srgb, var(--bg-card) 88%, transparent);
  backdrop-filter: blur(14px) saturate(130%);
  -webkit-backdrop-filter: blur(14px) saturate(130%);
  border: 1px solid var(--border);
  border-radius: 16px; padding: 22px;
  /* Was 0.28 — inactive steps were near-unreadable; kept dimmer than
     .active but legible on its own. */
  opacity: 0.62; transform: translateY(18px) scale(0.97);
  transition: opacity .5s ease, transform .5s ease, border-color .5s ease;
}
.process-step.active { opacity: 1; transform: translateY(0) scale(1); }
.process-step.current { border-color: var(--accent); }
.process-step-num {
  font-size: 11px; font-weight: 800; letter-spacing: 0.14em; color: var(--accent);
  margin-bottom: 12px; font-family: 'Neo Sans Pro', sans-serif;
}
.process-step h3 { font-size: 19px; font-weight: 800; margin-bottom: 9px; letter-spacing: -0.01em; }
.process-step p { font-size: 13.5px; line-height: 1.6; color: var(--text); font-family: 'Neo Sans Pro', sans-serif; }

.process-progress {
  position: absolute; right: -14px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 180px; border-radius: 3px; background: var(--border); overflow: hidden;
}
.process-progress-bar {
  display: block; width: 100%; height: 0%;
  background: linear-gradient(180deg, var(--accent), var(--tag-podcast));
  transition: height .15s linear;
}

@media (max-width: 980px) {
  .process { height: 190vh; }
  .process-steps { grid-template-columns: repeat(2, 1fr); padding: 90px 0 60px; }
  .process-progress { display: none; }
}
@media (max-width: 600px) {
  .process { height: auto; border-bottom: 1px solid var(--border); }
  .process-sticky { position: relative; height: auto; padding: 48px 0; }
  .process-steps { grid-template-columns: 1fr; padding: 40px 0 0; }
  .process-step { opacity: 1; transform: none; }
}

/* =====================================================================
   V9 — SOCIAL SHARE BUTTONS
===================================================================== */
.share-row { display: flex; flex-direction: column; gap: 12px; }
.share-row-label {
  font-size: 11px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif;
}
.share-row-btns { display: flex; flex-wrap: wrap; gap: 9px; }
.share-btn {
  position: relative;
  width: 42px; height: 42px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border-strong);
  background: linear-gradient(180deg, color-mix(in srgb, var(--bg-elevated) 92%, #ffffff 8%), var(--bg-elevated));
  color: var(--text-dim); cursor: pointer;
  backdrop-filter: blur(8px);
  transition: transform .18s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease, background .2s ease;
}
.share-btn .share-btn-icon { display: flex; }
.share-btn svg { width: 17px; height: 17px; }
.share-btn:hover { transform: translateY(-3px) scale(1.06); color: #ffffff; }
.share-btn:active { transform: translateY(-1px) scale(1.0); }

.share-btn--x:hover        { background: #000000; border-color: #000000; box-shadow: 0 10px 24px rgba(0,0,0,0.4); }
.share-btn--facebook:hover { background: #1877f2; border-color: #1877f2; box-shadow: 0 10px 24px rgba(24,119,242,0.4); }
.share-btn--linkedin:hover { background: #0a66c2; border-color: #0a66c2; box-shadow: 0 10px 24px rgba(10,102,194,0.4); }
.share-btn--whatsapp:hover { background: #25d366; border-color: #25d366; box-shadow: 0 10px 24px rgba(37,211,102,0.4); }
.share-btn--telegram:hover { background: #229ed9; border-color: #229ed9; box-shadow: 0 10px 24px rgba(34,158,217,0.4); }
.share-btn--reddit:hover   { background: #ff4500; border-color: #ff4500; box-shadow: 0 10px 24px rgba(255,69,0,0.4); }
.share-btn--bluesky:hover  { background: #0285ff; border-color: #0285ff; box-shadow: 0 10px 24px rgba(2,133,255,0.4); }
.share-btn--email:hover    { background: var(--accent); border-color: var(--accent); box-shadow: 0 10px 24px var(--accent-glow); }
.share-btn--copy:hover { background: var(--accent); border-color: var(--accent); box-shadow: 0 10px 24px var(--accent-glow); }

.share-btn-tip {
  position: absolute; bottom: calc(100% + 9px); left: 50%; transform: translateX(-50%) translateY(4px);
  background: var(--bg); color: var(--text);
  border: 1px solid var(--border-strong); border-radius: 8px;
  font-size: 10.5px; font-weight: 700; font-family: 'Neo Sans Pro', sans-serif;
  padding: 5px 10px; white-space: nowrap;
  opacity: 0; pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
  box-shadow: var(--shadow); z-index: 5;
}
.share-btn:hover .share-btn-tip { opacity: 1; transform: translateX(-50%) translateY(0); }
.share-btn--copy.copied { background: #1f9d55; border-color: #1f9d55; color: #fff; }
.share-btn--copy.copied .share-btn-tip { opacity: 1; transform: translateX(-50%) translateY(0); }

.share-row--compact .share-row-btns { gap: 7px; }
.share-row--compact .share-btn { width: 34px; height: 34px; }
.share-row--compact .share-btn svg { width: 14px; height: 14px; }

.case-share-footer {
  margin-top: 52px; padding: 26px;
  border: 1px solid var(--border); border-radius: 16px;
  background: color-mix(in srgb, var(--bg-elevated) 80%, transparent);
  backdrop-filter: blur(10px);
}
.ep-cta-row .share-row { margin-top: 4px; }

/* =====================================================================
   V9 — STATIC PAGE TEMPLATE (page.php + index.php fallback)
===================================================================== */
.page-hero { padding: 170px 0 46px; border-bottom: 1px solid var(--border); }
.page-title {
  font-size: clamp(32px, 4.6vw, 54px); font-weight: 900;
  line-height: 1.06; letter-spacing: -0.02em; max-width: 880px;
}
/* Same fix as .case-body-wrap — keep .wrap's left/right gutter intact. */
.page-body-wrap { padding-top: 54px; padding-bottom: 90px; }
.page-prose { max-width: 760px; margin: 0 auto; }

/* =====================================================================
   V9 — GLOSS POLISH
===================================================================== */
.card { position: relative; }
.card::before {
  content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  border-radius: inherit;
  background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%), rgba(82,113,255,0.10), transparent 65%);
  opacity: 0; transition: opacity .25s ease;
}
.card:hover::before { opacity: 1; }
.card::after {
  content: ''; position: absolute; inset: 0 0 60% 0; z-index: 1; pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(180deg, rgba(255,255,255,0.045), rgba(255,255,255,0));
}

.btn-primary {
  position: relative; overflow: hidden;
}
.btn-primary::after {
  content: ''; position: absolute; inset: 0 0 55% 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.22), rgba(255,255,255,0));
  border-radius: inherit; pointer-events: none;
}

.podcast-feature, .evidence-frame {
  position: relative;
}
.podcast-feature::after {
  content: ''; position: absolute; inset: 0 0 65% 0; pointer-events: none; z-index: 3;
  background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0));
  border-radius: inherit;
}

/* =====================================================================
   V9 — REDUCED MOTION
===================================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .hero-line > span { transform: none; transition: none; }
  .hero-scroll-cue { display: none; }
  .process { height: auto; }
  .process-sticky { position: relative; height: auto; padding: 48px 0; }
  .process-step { opacity: 1; transform: none; }
  .network-bg { display: none; }
}

/* =====================================================================
   V10 — LIGHT-MODE LEGIBILITY FIXES
   Tag and stamp text used fixed pale colours that vanished on white.
===================================================================== */
html[data-theme="light"] .tag-report,
html[data-theme="light"] .case-stamp.tag-report {
  background: rgba(82,113,255,0.12); color: #2447b8; border-color: rgba(82,113,255,0.5);
}
html[data-theme="light"] .tag-podcast,
html[data-theme="light"] .case-stamp.tag-podcast {
  background: rgba(170,39,38,0.10); color: #8c1f1e; border-color: rgba(170,39,38,0.45);
}
/* =====================================================================
   V10 — SEARCH OVERLAY
===================================================================== */
.search-overlay {
  position: fixed; inset: 0; z-index: 3000;
  background: color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  opacity: 0; pointer-events: none;
  transition: opacity .3s ease;
  display: flex; align-items: flex-start; justify-content: center;
}
.search-overlay.open { opacity: 1; pointer-events: auto; }
body.search-open { overflow: hidden; }

.search-overlay-inner {
  width: 100%; max-width: 760px; padding-top: 18vh; position: relative;
  transform: translateY(-14px); transition: transform .35s cubic-bezier(0.22, 1, 0.36, 1);
}
.search-overlay.open .search-overlay-inner { transform: translateY(0); }

.search-close {
  position: absolute; top: 10vh; right: 24px;
  width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  transition: border-color .2s, transform .2s;
}
.search-close:hover { border-color: var(--accent); transform: rotate(90deg); }
.search-close svg { width: 17px; height: 17px; stroke: var(--text); }

.search-kicker {
  font-size: 11px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 18px; font-family: 'Neo Sans Pro', sans-serif;
}
.search-form { position: relative; display: flex; }
.search-input {
  width: 100%;
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: 18px;
  padding: 22px 66px 22px 24px;
  font-size: clamp(18px, 2.4vw, 24px); font-weight: 600;
  color: var(--text); font-family: 'Neo Sans Pro', sans-serif;
  outline: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.search-input::placeholder { color: var(--text-faint); font-weight: 400; }
.search-input:focus { border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft), 0 18px 50px var(--accent-glow); }
.search-submit {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  width: 46px; height: 46px; border-radius: 14px; border: none; cursor: pointer;
  background: linear-gradient(135deg, var(--accent), var(--accent-dark));
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 20px var(--accent-glow);
  transition: transform .2s ease;
}
.search-submit:hover { transform: translateY(-50%) scale(1.06); }
.search-submit svg { width: 18px; height: 18px; stroke: #fff; }

.search-hints { display: flex; align-items: center; gap: 10px; margin-top: 22px; flex-wrap: wrap; }
.search-hints-label { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.search-hints a {
  font-size: 12.5px; font-weight: 700; padding: 7px 15px; border-radius: 100px;
  border: 1px solid var(--border-strong); color: var(--text-dim);
  font-family: 'Neo Sans Pro', sans-serif;
  transition: border-color .2s, background .2s, color .2s;
}
.search-hints a:hover { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }

/* =====================================================================
   V10 — REPORT / PODCAST ARTICLE CHOREOGRAPHY
===================================================================== */
.flow-reveal { opacity: 0; transform: translateY(22px); transition: opacity .65s ease, transform .65s cubic-bezier(0.22, 1, 0.36, 1); }
.flow-reveal.in { opacity: 1; transform: translateY(0); }

.content-evidence {
  position: relative; margin: 34px 0; border-radius: 14px; overflow: hidden;
  border: 1px solid var(--border-strong); box-shadow: var(--shadow); cursor: zoom-in;
}
.content-evidence img { width: 100%; display: block; margin: 0; transition: transform .5s ease; }
.content-evidence:hover img { transform: scale(1.02); }
.content-evidence figure { margin: 0; }
.content-evidence figcaption {
  padding: 12px 16px; font-size: 12.5px; color: var(--text-dim);
  border-top: 1px solid var(--border); background: var(--bg-elevated);
  font-family: 'Neo Sans Pro', sans-serif;
}
.content-evidence-zoom {
  position: absolute; top: 12px; right: 12px; width: 34px; height: 34px;
  border-radius: 10px; background: color-mix(in srgb, var(--bg) 70%, transparent);
  backdrop-filter: blur(8px); border: 1px solid var(--border-strong);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .2s ease;
}
.content-evidence:hover .content-evidence-zoom { opacity: 1; }
.content-evidence-zoom svg { width: 15px; height: 15px; stroke: var(--text); }

.image-lightbox {
  position: fixed; inset: 0; z-index: 4000;
  background: rgba(10, 10, 14, 0.92);
  backdrop-filter: blur(14px);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none; transition: opacity .28s ease;
  padding: 4vh 4vw;
}
.image-lightbox.open { opacity: 1; pointer-events: auto; }
.image-lightbox figure { max-width: 100%; max-height: 100%; margin: 0; text-align: center; transform: scale(0.96); transition: transform .3s cubic-bezier(0.22, 1, 0.36, 1); }
.image-lightbox.open figure { transform: scale(1); }
.image-lightbox img { max-width: 100%; max-height: 84vh; border-radius: 12px; box-shadow: 0 40px 120px rgba(0,0,0,0.6); }
.image-lightbox figcaption { color: rgba(255,255,255,0.75); font-size: 13px; margin-top: 14px; font-family: 'Neo Sans Pro', sans-serif; }
.image-lightbox-close {
  position: absolute; top: 22px; right: 22px; width: 46px; height: 46px;
  border-radius: 50%; border: 1px solid rgba(255,255,255,0.3);
  background: rgba(255,255,255,0.08); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: transform .2s, border-color .2s;
}
.image-lightbox-close:hover { transform: rotate(90deg); border-color: #fff; }
.image-lightbox-close svg { width: 17px; height: 17px; stroke: #fff; }

/* Report header: dossier strip + rotating verification seal */
.case-header-grid { display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: center; }
.case-dossier {
  display: flex; gap: 26px; flex-wrap: wrap; margin-top: 26px;
  padding: 16px 20px; border: 1px dashed var(--border-strong); border-radius: 12px;
  background: color-mix(in srgb, var(--bg-elevated) 60%, transparent);
}
.dossier-item { display: flex; flex-direction: column; gap: 3px; }
.dossier-k { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; }
.dossier-v { font-size: 12.5px; font-weight: 600; color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }

.case-seal { position: relative; width: 118px; height: 118px; flex-shrink: 0; }
.case-seal-ring {
  position: absolute; inset: 0; border-radius: 50%;
  border: 1.5px solid var(--accent); opacity: 0.75;
}
.case-seal-ring::before {
  content: ''; position: absolute; inset: 7px; border-radius: 50%;
  border: 1px dashed var(--accent); opacity: 0.7;
  animation: sealspin 26s linear infinite;
}
.case-seal-text {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  text-align: center; font-size: 10px; font-weight: 800; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--accent); line-height: 1.6;
  font-family: 'Neo Sans Pro', sans-serif;
  transform: rotate(-8deg);
}
@keyframes sealspin { to { transform: rotate(360deg); } }
@media (max-width: 780px) {
  .case-header-grid { grid-template-columns: 1fr; }
  .case-seal { display: none; }
}

/* Podcast refinements */
.ep-platforms { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 24px; }
.ep-platform {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: 13px; font-weight: 700; padding: 11px 20px; border-radius: 100px;
  border: 1px solid var(--border-strong); color: var(--text);
  background: color-mix(in srgb, var(--bg-elevated) 80%, transparent);
  backdrop-filter: blur(8px);
  font-family: 'Neo Sans Pro', sans-serif;
  transition: transform .2s ease, border-color .2s, box-shadow .2s;
}
.ep-platform:hover { transform: translateY(-2px); }
.ep-platform-dot { width: 8px; height: 8px; border-radius: 50%; }
.ep-platform--spotify .ep-platform-dot { background: #1db954; }
.ep-platform--spotify:hover { border-color: #1db954; box-shadow: 0 10px 26px rgba(29,185,84,0.3); }
.ep-platform--apple .ep-platform-dot { background: #b150e2; }
.ep-platform--apple:hover { border-color: #b150e2; box-shadow: 0 10px 26px rgba(177,80,226,0.3); }
.ep-platform--youtube .ep-platform-dot { background: #ff0000; }
.ep-platform--youtube:hover { border-color: #ff0000; box-shadow: 0 10px 26px rgba(255,0,0,0.25); }

.podcast-listen-cue {
  display: inline-flex; align-items: center; gap: 7px;
  color: var(--tag-podcast); font-weight: 700;
}
.podcast-listen-cue svg { width: 13px; height: 13px; transition: transform .2s; }
.podcast-feature:hover .podcast-listen-cue svg { transform: translateX(4px); }

/* Five-step method grid */
.process-steps--five { grid-template-columns: repeat(5, 1fr); gap: 14px; }
.process-steps--five .process-step { padding: 18px; }
.process-steps--five .process-step h3 { font-size: 16.5px; }
.process-steps--five .process-step p { font-size: 12px; }
@media (max-width: 1100px) {
  .process-steps--five { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 980px) {
  .process-steps--five { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .process-steps--five { grid-template-columns: 1fr; }
}

/* =====================================================================
   V10 — RETRO × MODERN BRAND LAYER
   Classical / retro print cues in the brand palette: engraved rules,
   a Greek-key (meander) strip, off-register duotone display titles,
   and the pantheon divider that draws itself in on scroll.
===================================================================== */

/* Engraved double rule under section titles */
.section-title { position: relative; padding-bottom: 14px; }
.section-title::after {
  content: ''; position: absolute; left: 0; bottom: 0; width: 64px; height: 5px;
  border-top: 2px solid var(--accent);
  border-bottom: 1px solid var(--border-strong);
}

/* Subtle print grain across the whole page */
#page-content::after {
  content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 2147483000;
  opacity: 0.05; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
}
html[data-theme="light"] #page-content::after { opacity: 0.035; }

/* Retro stamp treatment for eyebrows on major sections */
.eyebrow { position: relative; }

/* Pantheon divider */
.pantheon-divider {
  display: flex; align-items: center; justify-content: center; gap: 22px;
  padding: 54px 24px 10px; color: var(--accent);
}
.pantheon-rule {
  flex: 1; max-width: 260px; height: 3px;
  border-top: 1px solid var(--border-strong);
  border-bottom: 1px solid var(--border);
  transform: scaleX(0.35); transform-origin: center;
  transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
  opacity: 0.55;
}
.pantheon-divider.drawn .pantheon-rule { transform: scaleX(1); }
.pantheon-svg { width: 86px; height: 46px; flex-shrink: 0; opacity: 0.9; filter: drop-shadow(0 0 12px var(--accent-glow)); }
.pantheon-label {
  font-size: 10px; font-weight: 800; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif; white-space: nowrap;
}

/* Column motif echoed in the footer top border */
footer { position: relative; }
footer::before {
  content: ''; position: absolute; top: -1px; left: 0; right: 0; height: 8px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='8' viewBox='0 0 26 8'%3E%3Cpath d='M6 8 V2 M3 2 H9 M20 8 V2 M17 2 H23' fill='none' stroke='%235271ff' stroke-width='1.2' opacity='0.4'/%3E%3C/svg%3E");
  background-repeat: repeat-x; background-size: 26px 8px;
}

@media (prefers-reduced-motion: reduce) {
  .case-seal-ring::before { animation: none; }
  .flow-reveal { opacity: 1; transform: none; transition: none; }
  .pantheon-rule { transform: scaleX(1); transition: none; }
}

/* Search toggle is a real <button> now — neutralise UA styles */
button.nav-search { padding: 0; appearance: none; -webkit-appearance: none; }

/* =====================================================================
   V11 — MIGRATION PARITY (intelfocus.org)
===================================================================== */
.spotlight-band { border-top: 1px solid var(--border); }
.spotlight-grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 44px; align-items: center; }
.spotlight-video {
  position: relative; aspect-ratio: 16/9; border-radius: 18px; overflow: hidden;
  border: 1px solid var(--border-strong); box-shadow: var(--shadow); background: #000;
}
.spotlight-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.spotlight-copy p { font-size: 14.5px; line-height: 1.75; color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }
.spotlight-channels { margin-top: 26px; }
.spotlight-channels-label {
  display: block; font-size: 11px; font-weight: 800; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--text-faint); margin-bottom: 12px;
  font-family: 'Neo Sans Pro', sans-serif;
}
.spotlight-channel-row { display: flex; flex-wrap: wrap; gap: 8px; }
.spotlight-channel {
  font-size: 12.5px; font-weight: 700; padding: 8px 16px; border-radius: 100px;
  border: 1px solid var(--border-strong); color: var(--text-dim);
  font-family: 'Neo Sans Pro', sans-serif;
  transition: border-color .2s, background .2s, color .2s, transform .2s;
}
.spotlight-channel:hover { border-color: var(--accent); background: var(--accent-soft); color: var(--text); transform: translateY(-2px); }
@media (max-width: 980px) { .spotlight-grid { grid-template-columns: 1fr; } }

.footer-quote { padding: 34px 0 6px; text-align: center; }
.footer-quote blockquote {
  font-size: clamp(15px, 1.8vw, 18px); font-style: italic; color: var(--text-dim);
  max-width: 620px; margin: 0 auto 8px; line-height: 1.6;
}
.footer-quote cite { font-size: 12px; color: var(--text-faint); font-style: normal; letter-spacing: 0.06em; font-family: 'Neo Sans Pro', sans-serif; }

/* =====================================================================
   V13 — TEAM FEEDBACK ROUND 1
   (Logo-sizing rules from this round were superseded by V16 below,
   which redefines the same selectors with fixed-px values across the
   same breakpoints. Keeping both was the source of a real bug: equal
   specificity + duplicate media queries made the winning declaration
   depend on source order in a way that wasn't reliably predictable
   across theme/scroll-state changes. V16 is the single source of truth now.)
===================================================================== */

/* Tighter hero so the reports grid is visible at first glance. */
.hero--tight { padding: 138px 0 44px; }
.section--first { padding: 56px 0 72px; }
@media (max-width: 600px) {
  .hero--tight { padding: 90px 0 24px; }
  .section--first { padding: 32px 0 48px; }
}

/* Retired: verification seal + case number (removed at team request).
   Kept minimal styles for cached HTML only. */
.case-seal, .case-no { display: none !important; }

/* V14 — podcast guest CTA (replaces the verification note on episodes) */
.ep-guest-cta { border-color: rgba(170, 39, 38, 0.35); }
.ep-guest-cta .case-verify-icon { color: var(--tag-podcast); }
.ep-guest-cta a { color: var(--tag-podcast); font-weight: 700; }

/* =====================================================================
   V15 — HOMEPAGE REDESIGN: 3D GLOBE, LOCATION SLIDER, DEPTH LAYER
===================================================================== */

/* Aurora backdrop behind the hero — layered brand-colour light.
   Clipped at the source, at every width. The decorative .hero-orb
   layers sit at right:-80px / left:-70px and the ::before aurora at
   inset:-20% -10%, so without this they extend past the page's own
   box. On mobile that inflates the *layout* viewport (what vw units
   and window.innerWidth measure against) beyond the real screen,
   which pushed the nav icons off-screen and skewed vw-based sizing.
   Clipping here means the page never needs overflow-x on <html> —
   which is important, because that would break position:sticky
   site-wide (see the note next to the html rule above). The clipped
   area was off-screen anyway, so there is no visual loss. */
.hero--tight { position: relative; overflow: hidden; }
.hero--tight::before {
  content: ''; position: absolute; inset: -20% -10% 0 -10%; z-index: -1; pointer-events: none;
  background:
    radial-gradient(46% 60% at 18% 22%, var(--accent-soft), transparent 70%),
    radial-gradient(34% 46% at 86% 12%, rgba(170,39,38,0.10), transparent 70%),
    radial-gradient(50% 62% at 70% 78%, var(--accent-soft), transparent 72%);
  filter: blur(2px);
}

/* Floating depth orbs (blurred, slow drift). */
.hero-orb {
  position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;
  filter: blur(46px); opacity: 0.5;
}
.hero-orb--1 {
  width: 300px; height: 300px; top: 8%; right: -80px;
  background: radial-gradient(circle, var(--accent-glow), transparent 70%);
  animation: orbfloat 13s ease-in-out infinite alternate;
}
.hero-orb--2 {
  width: 220px; height: 220px; bottom: -60px; left: -70px;
  background: radial-gradient(circle, rgba(170,39,38,0.30), transparent 70%);
  animation: orbfloat 17s ease-in-out infinite alternate-reverse;
}
@keyframes orbfloat {
  from { transform: translate3d(0,0,0) scale(1); }
  to   { transform: translate3d(0,-36px,0) scale(1.12); }
}

/* 3D-ready cards. */
.reports-grid { perspective: 1200px; }
.card { transform-style: preserve-3d; will-change: transform; }

/* Animated OSINT network lines: make the site-wide layer clearly
   visible in both modes (was nearly invisible in light mode). */
.network-bg { opacity: 0.6; }
html[data-theme="light"] .network-bg { opacity: 0.34; }

/* Retired map styles kept harmless for cached pages. */
.map-svg, .map-caption, .map-pin-tooltip { display: none !important; }

@media (prefers-reduced-motion: reduce) {
  .hero-orb { animation: none; }
}

/* =====================================================================
   V16 — LOGO FILL
===================================================================== */

/* The logo file carries generous transparent padding around the
   artwork, so it always rendered small. Render the file larger and
   let the bar clip the empty padding — the artwork itself now fills
   the bar height.

   Nav uses a fixed "height" (not "min-height"): the logo is rendered
   oversized on purpose and pulled back with negative margins so only
   its center fills the bar, and .nav.nav-brand has overflow:hidden to
   clip the rest. "min-height" is only a floor — with a flex container
   and an oversized child, the actual rendered box can still grow
   taller than that floor depending on how the browser resolves the
   child's contribution, which was making the real nav height
   unpredictable (differing at first paint vs. after a theme toggle
   reflow) and letting it overlap the hero content below. A fixed
   "height" plus overflow:hidden makes the bar's own size deterministic
   regardless of the logo's oversized/negative-margined box. */
.nav.nav-brand { height: 118px; display: flex; align-items: center; }
.nav.nav-brand .nav-inner { width: 100%; }
.nav.nav-brand .nav-logo { overflow: visible; }

/* Logo sizing — measured from the artwork, not the file.
   The SVG is a square canvas that is mostly empty: the wordmark+globe
   lockup occupies only the middle 41% of its height, and that band is
   not centred (31.8% padding above vs 27.2% below). So sizing and
   centring the <img> box does NOT size or centre what you actually
   see. These rules size the image from the wordmark height we actually
   want, and nudge it up by the artwork's off-centre amount, so the
   clearance above and below the logo comes out equal.

   IMPORTANT: sizing lives on the plain `.nav.nav-brand .nav-logo img`
   selector only. It must never be grouped with an
   `html[data-theme="light"] …` variant: that variant scores higher
   specificity (0,4,2 vs 0,3,1), so grouping the height into it made
   the desktop size win over every responsive override below *in light
   mode only* — the phone kept the 200px desktop logo and the bar
   clipped the bottom of the artwork. Theme-specific styling that
   genuinely needs that specificity (the white `filter`) stays in its
   own rule up in the V9 brand-nav block.

   Values below are derived as:
     img-height = wanted-artwork-height / 0.41
     top        = img-height * -0.022      (undo the artwork's off-centre)
     margins    = (img-height - 40px) / -2 (keep the layout box compact) */
.nav.nav-brand .nav-logo img {
  height: 190px;              /* ~78px visible lockup in a 118px bar */
  width: auto;
  max-width: none;
  position: relative;
  top: -4.2px;
  margin-top: -75px;
  margin-bottom: -75px;
  transition: height .3s ease, top .3s ease, filter .3s ease;
}
.nav.nav-brand.scrolled { height: 92px; }
.nav.nav-brand.scrolled .nav-logo img {
  height: 146px; top: -3.2px; margin-top: -53px; margin-bottom: -53px;
}
@media (max-width: 980px) {
  .nav.nav-brand { height: 96px; }
  .nav.nav-brand .nav-logo img {
    height: 146px; top: -3.2px; margin-top: -53px; margin-bottom: -53px;
  }
  .nav.nav-brand.scrolled .nav-logo img {
    height: 137px; top: -3px; margin-top: -48.5px; margin-bottom: -48.5px;
  }
}
@media (max-width: 600px) {
  .nav.nav-brand { height: 80px; }
  .nav.nav-brand .nav-logo img {
    height: 122px; top: -2.7px; margin-top: -41px; margin-bottom: -41px;
  }
}

.hero--tight .wrap { position: relative; z-index: 2; }
.hero--tight .hero-orb { z-index: 0; }

/* =====================================================================
   V17 — OSINT QUIZ (replaces the scrolling word marquee)
===================================================================== */
.quiz-intro { font-size: 15px; color: var(--text-dim); max-width: 560px; margin: -18px 0 34px; }
.quiz-card {
  background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 34px; display: flex; flex-direction: column; gap: 26px;
}
.quiz-question { border: 0; padding: 0; margin: 0; }
.quiz-question + .quiz-question { padding-top: 26px; border-top: 1px solid var(--border); }
.quiz-question legend {
  display: flex; align-items: center; gap: 12px; padding: 0 0 16px;
  font-size: 15.5px; font-weight: 700; line-height: 1.5;
}
.quiz-question-num {
  flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 800; color: #fff; background: var(--accent);
  font-family: 'Neo Sans Pro', sans-serif;
}
.quiz-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.quiz-option {
  display: flex; align-items: center; gap: 10px; padding: 12px 16px;
  border: 1px solid var(--border-strong); border-radius: 100px; cursor: pointer;
  font-size: 13.5px; font-weight: 600; color: var(--text-dim);
  transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.quiz-option:hover { border-color: var(--accent); background: var(--accent-soft); }
.quiz-option input { accent-color: var(--accent); flex-shrink: 0; }
.quiz-option:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
.quiz-question.is-correct .quiz-option:has(input:checked) { border-color: #1f9d55; background: rgba(31,157,85,0.12); color: var(--text); }
.quiz-question.is-wrong .quiz-option:has(input:checked) { border-color: var(--tag-podcast); background: rgba(170,39,38,0.10); color: var(--text); }

.quiz-actions { display: flex; gap: 14px; flex-wrap: wrap; }
.quiz-result {
  font-size: 14.5px; font-weight: 700; padding: 16px 20px; border-radius: 14px;
  display: none; font-family: 'Neo Sans Pro', sans-serif;
}
.quiz-result.show { display: block; }
.quiz-result.pass { background: rgba(31,157,85,0.12); color: #1f9d55; border: 1px solid rgba(31,157,85,0.35); }
.quiz-result.fail { background: rgba(170,39,38,0.10); color: var(--tag-podcast); border: 1px solid rgba(170,39,38,0.3); }

@media (max-width: 700px) {
  .quiz-card { padding: 24px 20px; }
  .quiz-options { grid-template-columns: 1fr; }
}

/* =====================================================================
   V26 — COOKIE CONSENT (UK PECR / GDPR)
   Bottom bar + preferences dialog + blocked-embed placeholders.
   "Reject" is given the same visual weight and the same number of
   clicks as "Accept", which the regulations require.
===================================================================== */
.consent-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 3000;
  background: color-mix(in srgb, var(--bg-elevated) 94%, transparent);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-top: 1px solid var(--border-strong);
  box-shadow: 0 -14px 44px rgba(0,0,0,0.28);
  animation: consentUp .35s ease both;
}
@keyframes consentUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .consent-bar { animation: none; } }
.consent-bar[hidden] { display: none; }
.consent-bar-inner {
  display: flex; align-items: center; gap: 30px;
  padding-top: 18px; padding-bottom: 18px; flex-wrap: wrap;
}
.consent-bar-copy { flex: 1 1 460px; min-width: 0; }
.consent-bar-title { font-size: 14.5px; font-weight: 800; margin-bottom: 5px; }
.consent-bar-dek {
  font-size: 13px; line-height: 1.6; color: var(--text-dim);
  font-family: 'Neo Sans Pro', sans-serif; max-width: 760px;
}
.consent-bar-dek a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.consent-bar-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.consent-bar-actions .btn { padding: 11px 20px; font-size: 13px; }
.consent-bar-link {
  background: none; border: 0; cursor: pointer; padding: 6px 2px;
  font-size: 12.5px; font-weight: 600; color: var(--text-dim);
  text-decoration: underline; text-underline-offset: 3px;
  font-family: 'Neo Sans Pro', sans-serif;
}
.consent-bar-link:hover { color: var(--text); }

/* ---------- Preferences dialog ---------- */
.consent-modal { position: fixed; inset: 0; z-index: 3100; display: flex; align-items: center; justify-content: center; padding: 20px; }
.consent-modal[hidden] { display: none; }
.consent-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.55); backdrop-filter: blur(3px); }
.consent-modal-panel {
  position: relative; z-index: 1; width: 100%; max-width: 560px;
  max-height: 86vh; overflow-y: auto;
  background: var(--bg-card); border: 1px solid var(--border-strong);
  border-radius: var(--radius); padding: 30px; box-shadow: var(--shadow);
}
.consent-modal-close {
  position: absolute; top: 16px; right: 16px; width: 32px; height: 32px;
  border-radius: 50%; border: 1px solid var(--border); background: transparent;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  color: var(--text-dim); transition: border-color .2s, color .2s;
}
.consent-modal-close:hover { border-color: var(--accent); color: var(--text); }
.consent-modal-close svg { width: 15px; height: 15px; }
.consent-modal-title { font-size: 21px; font-weight: 800; margin-bottom: 22px; letter-spacing: -0.01em; }
.consent-option { padding: 18px 0; border-top: 1px solid var(--border); }
.consent-option-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 7px; }
.consent-option-name { font-size: 14.5px; font-weight: 700; }
.consent-option-fixed {
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--text-faint); font-family: 'Neo Sans Pro', sans-serif;
}
.consent-option-dek { font-size: 12.5px; line-height: 1.6; color: var(--text-dim); font-family: 'Neo Sans Pro', sans-serif; }

.consent-switch { position: relative; display: inline-flex; cursor: pointer; flex-shrink: 0; }
.consent-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.consent-switch-track {
  width: 44px; height: 25px; border-radius: 100px;
  background: var(--bg-elevated); border: 1px solid var(--border-strong);
  transition: background .2s ease, border-color .2s ease; position: relative;
}
.consent-switch-track::after {
  content: ''; position: absolute; top: 3px; left: 3px; width: 17px; height: 17px;
  border-radius: 50%; background: var(--text-faint); transition: transform .2s ease, background .2s ease;
}
.consent-switch input:checked + .consent-switch-track { background: var(--accent); border-color: var(--accent); }
.consent-switch input:checked + .consent-switch-track::after { transform: translateX(19px); background: #fff; }
.consent-switch input:focus-visible + .consent-switch-track { outline: 2px solid var(--accent); outline-offset: 2px; }

.consent-modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 24px; flex-wrap: wrap; }
.consent-modal-actions .btn { padding: 11px 20px; font-size: 13px; }

/* ---------- Blocked embed placeholder ---------- */
.consent-embed { position: relative; margin: 8px 0 28px; }
.consent-embed-frame { display: none; }
.consent-embed.is-allowed .consent-embed-frame { display: block; }
.consent-embed.is-allowed .consent-embed-notice { display: none; }
.consent-embed-notice {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 9px; padding: 40px 26px;
  border: 1px dashed var(--border-strong); border-radius: 14px;
  background: color-mix(in srgb, var(--bg-elevated) 60%, transparent);
}
.consent-embed-notice svg { width: 26px; height: 26px; color: var(--text-faint); }
.consent-embed-title { font-size: 14.5px; font-weight: 700; color: var(--text); }
.consent-embed-dek {
  font-size: 12.5px; line-height: 1.6; color: var(--text-dim);
  max-width: 380px; font-family: 'Neo Sans Pro', sans-serif;
}
.consent-embed-btn { margin-top: 6px; padding: 10px 20px; font-size: 12.5px; }
/* The spotlight iframe is absolutely positioned inside its 16:9 shell,
   so the placeholder needs to fill that shell rather than sit inline. */
.spotlight-video .consent-embed { position: absolute; inset: 0; margin: 0; }
.spotlight-video .consent-embed-notice { height: 100%; justify-content: center; border-radius: inherit; }

.footer-cookie-btn {
  background: none; border: 0; padding: 0; cursor: pointer;
  font-size: 11.5px; color: var(--text-faint);
  font-family: 'Neo Sans Pro', sans-serif;
}
.footer-cookie-btn:hover { color: var(--accent); }

@media (max-width: 700px) {
  .consent-bar-inner { gap: 16px; padding-top: 16px; padding-bottom: 16px; }
  .consent-bar-actions { width: 100%; }
  /* Equal width so neither choice is nudged — a GDPR "dark pattern" risk. */
  .consent-bar-actions .btn { flex: 1 1 0; justify-content: center; }
  .consent-bar-link { width: 100%; text-align: center; }
  .consent-modal-panel { padding: 24px 20px; }
  .consent-modal-actions .btn { flex: 1 1 0; justify-content: center; }
}

/* Equal visual weight for Accept vs Reject. The regulations require
   refusing to be as easy as accepting, and regulators have treated a
   visually down-played reject button as a dark pattern — so the two
   share a size and neither gets the accent glow that would nudge. */
.consent-bar-actions .btn,
.consent-modal-actions .btn { min-width: 176px; justify-content: center; }
.consent-bar-actions .btn-primary,
.consent-modal-actions .btn-primary { box-shadow: none; }
.consent-bar-actions .btn-primary:hover,
.consent-modal-actions .btn-primary:hover { box-shadow: none; transform: translateY(-1px); }
@media (max-width: 700px) {
  .consent-bar-actions .btn,
  .consent-modal-actions .btn { min-width: 0; }
}
