/* =============================================================
   HORIZON — news.terminal × editorial
   ============================================================= */

/* ---------- TOKENS: TERMINAL (default) ---------- */
:root,
[data-mode="terminal"][data-theme="dark"]{
  --bg:         oklch(0.135 0.022 250);
  --bg-2:       oklch(0.175 0.022 250);
  --bg-3:       oklch(0.215 0.024 250);
  --paper:      oklch(0.19 0.020 250);
  --ink:        oklch(0.975 0.004 250);
  --ink-2:      oklch(0.74 0.012 250);
  --ink-3:      oklch(0.54 0.014 250);
  --ink-4:      oklch(0.40 0.015 250);
  --rule:       oklch(0.30 0.018 250);
  --rule-soft:  oklch(0.24 0.018 250);

  --accent:     oklch(0.80 0.16 75);   /* amber */
  --accent-ink: oklch(0.20 0.04 70);
  --accent-2:   oklch(0.78 0.14 200);  /* cyan */

  --pos:        oklch(0.74 0.16 145);
  --neg:        oklch(0.66 0.22 25);
  --warn:       oklch(0.82 0.16 85);
  --info:       oklch(0.72 0.12 240);

  --serif:      'Instrument Serif', 'DM Serif Display', Georgia, serif;
  --serif-display: 'DM Serif Display', 'Instrument Serif', Georgia, serif;
  --sans:       'Space Grotesk', system-ui, -apple-system, sans-serif;
  --mono:       'JetBrains Mono', ui-monospace, Menlo, monospace;

  --maxw:       1480px;
  --gutter:     32px;
  --radius:     2px;
  --ease:       cubic-bezier(.22,1,.36,1);
  --shadow-1:   0 1px 0 var(--rule-soft);
  --shadow-2:   0 20px 60px -28px rgba(0,0,0,.65), 0 0 0 1px var(--rule);
  --shadow-pop: 0 30px 80px -20px rgba(0,0,0,.7), 0 0 0 1px var(--rule);
}

/* ---------- TOKENS: EDITORIAL (warm paper) ---------- */
[data-mode="editorial"][data-theme="dark"]{
  --bg:         oklch(0.155 0.008 60);
  --bg-2:       oklch(0.195 0.008 60);
  --bg-3:       oklch(0.235 0.009 60);
  --paper:      oklch(0.22 0.010 60);
  --ink:        oklch(0.975 0.005 85);
  --ink-2:      oklch(0.78 0.012 70);
  --ink-3:      oklch(0.58 0.014 70);
  --ink-4:      oklch(0.42 0.014 70);
  --rule:       oklch(0.30 0.010 60);
  --rule-soft:  oklch(0.25 0.010 60);
  --accent:     oklch(0.74 0.155 45);
  --accent-ink: oklch(0.20 0.04 40);
  --accent-2:   oklch(0.66 0.13 200);
}
[data-mode="magazine"][data-theme="dark"]{
  --bg:         oklch(0.08 0.005 240);
  --bg-2:       oklch(0.13 0.006 240);
  --bg-3:       oklch(0.18 0.007 240);
  --paper:      oklch(0.10 0.005 240);
  --ink:        oklch(0.985 0.002 240);
  --ink-2:      oklch(0.78 0.005 240);
  --ink-3:      oklch(0.56 0.008 240);
  --ink-4:      oklch(0.40 0.010 240);
  --rule:       oklch(0.30 0.010 240);
  --rule-soft:  oklch(0.20 0.010 240);
  --accent:     oklch(0.74 0.24 25);   /* crimson */
  --accent-ink: oklch(0.98 0 0);
  --accent-2:   oklch(0.86 0.14 90);
}
[data-mode="brutalist"][data-theme="dark"]{
  --bg:         oklch(0.06 0 0);
  --bg-2:       oklch(0.10 0 0);
  --bg-3:       oklch(0.15 0 0);
  --paper:      oklch(0.08 0 0);
  --ink:        oklch(0.99 0 0);
  --ink-2:      oklch(0.80 0 0);
  --ink-3:      oklch(0.55 0 0);
  --ink-4:      oklch(0.38 0 0);
  --rule:       oklch(0.40 0 0);
  --rule-soft:  oklch(0.22 0 0);
  --accent:     oklch(0.92 0.22 110); /* lime */
  --accent-ink: #000;
  --accent-2:   oklch(0.99 0 0);
}

/* ---------- LIGHT THEME ---------- */
[data-theme="light"]{
  --bg:         oklch(0.985 0.003 85);
  --bg-2:       oklch(0.965 0.005 85);
  --bg-3:       oklch(0.94 0.006 85);
  --paper:      oklch(0.97 0.005 85);
  --ink:        oklch(0.18 0.012 60);
  --ink-2:      oklch(0.42 0.012 60);
  --ink-3:      oklch(0.58 0.012 60);
  --ink-4:      oklch(0.70 0.010 60);
  --rule:       oklch(0.86 0.008 75);
  --rule-soft:  oklch(0.92 0.006 75);
  --accent-ink: oklch(0.98 0 0);
  --shadow-2:   0 20px 60px -28px rgba(0,0,0,.22), 0 0 0 1px var(--rule);
  --shadow-pop: 0 30px 80px -20px rgba(0,0,0,.18), 0 0 0 1px var(--rule);
}
[data-mode="terminal"][data-theme="light"]{
  --accent:     oklch(0.62 0.17 50);
  --accent-2:   oklch(0.60 0.14 220);
}
[data-mode="editorial"][data-theme="light"]{
  --accent:     oklch(0.56 0.17 35);
  --accent-2:   oklch(0.56 0.14 230);
}
[data-mode="magazine"][data-theme="light"]{
  --bg:         oklch(0.99 0.002 0);
  --bg-2:       oklch(0.96 0.003 0);
  --ink:        oklch(0.08 0 0);
  --accent:     oklch(0.55 0.25 25);
  --rule:       oklch(0.10 0 0);
}
[data-mode="brutalist"][data-theme="light"]{
  --bg:         oklch(0.99 0 0);
  --ink:        #000;
  --rule:       #000;
  --accent:     oklch(0.62 0.27 25);
}

/* density scaling */
[data-density="1"]{ --d-pad: 1.6; --d-text: 1.10; --d-gap: 1.5; }
[data-density="2"]{ --d-pad: 1.4; --d-text: 1.06; --d-gap: 1.35; }
[data-density="3"]{ --d-pad: 1.25; --d-text: 1.04; --d-gap: 1.2; }
[data-density="4"]{ --d-pad: 1.15; --d-text: 1.02; --d-gap: 1.1; }
[data-density="5"]{ --d-pad: 1.05; --d-text: 1.0; --d-gap: 1.0; }
[data-density="6"]{ --d-pad: 1.0; --d-text: 1.0; --d-gap: 1.0; }
[data-density="7"]{ --d-pad: 0.9; --d-text: 0.97; --d-gap: 0.9; }
[data-density="8"]{ --d-pad: 0.8; --d-text: 0.95; --d-gap: 0.8; }
[data-density="9"]{ --d-pad: 0.7; --d-text: 0.92; --d-gap: 0.7; }
[data-density="10"]{ --d-pad: 0.6; --d-text: 0.9; --d-gap: 0.6; }

/* ---------- RESET ---------- */
*{box-sizing:border-box; margin:0; padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg); color:var(--ink);
  font-family:var(--sans);
  font-size: calc(14px * var(--d-text, 1));
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"ss01","ss02","cv11";
  overflow-x:hidden;
  transition: background .35s var(--ease), color .35s var(--ease);
}
a{color:inherit; text-decoration:none}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer}
img{display:block; max-width:100%}
::selection{background:var(--accent); color:var(--accent-ink)}
::-webkit-scrollbar{width:10px; height:10px}
::-webkit-scrollbar-track{background:var(--bg-2)}
::-webkit-scrollbar-thumb{background:var(--rule); border-radius:5px}
::-webkit-scrollbar-thumb:hover{background:var(--accent)}

.serif{font-family:var(--serif)}
.mono{font-family:var(--mono); font-variant-numeric: tabular-nums}
.up{color:var(--pos)} .down{color:var(--neg)} .flat{color:var(--ink-3)}
.container{max-width:var(--maxw); margin:0 auto; padding: 0 var(--gutter)}
.kbd{
  font-family:var(--mono); font-size:10px;
  padding:2px 6px; border:1px solid var(--rule); border-radius:3px;
  color:var(--ink-3); background:var(--bg-2);
}

/* ============================================================
   SENTIMENT RIBBON  (top of page, breathing gradient)
   ============================================================ */
.ribbon{
  position:sticky; top:0; z-index:60;
  height:6px; width:100%;
  background: linear-gradient(90deg,
    var(--neg) 0%,
    color-mix(in oklch, var(--neg) 50%, var(--ink-3)) 18%,
    var(--ink-3) 45%,
    color-mix(in oklch, var(--pos) 50%, var(--ink-3)) 65%,
    var(--pos) 88%,
    var(--accent) 100%
  );
  background-size: 220% 100%;
  animation: ribbonBreath 24s ease-in-out infinite alternate;
  opacity:.9;
}
@keyframes ribbonBreath{
  0%{background-position: 0% 50%}
  100%{background-position: 100% 50%}
}
.ribbon-readout{
  position:absolute; right:var(--gutter); top:8px; z-index:60;
  font-family:var(--mono); font-size:10px; color:var(--ink-3);
  letter-spacing:.08em; pointer-events:none;
  display:flex; gap:14px;
}
.ribbon-readout b{color:var(--ink-2); font-weight:500}

/* ============================================================
   MASTHEAD
   ============================================================ */
.masthead{
  border-bottom:1px solid var(--rule);
  background: var(--bg);
  position:relative; z-index:30;
}
.masthead-top{
  display:flex; align-items:center; justify-content:space-between;
  padding: 14px var(--gutter) 10px;
  max-width:var(--maxw); margin:0 auto;
  font-size:11px; color:var(--ink-3); letter-spacing:.04em;
  border-bottom: 1px dashed var(--rule-soft);
}
.masthead-top .date{
  font-family:var(--serif); font-style:italic; font-size:14px; color:var(--ink-2);
}
.masthead-top .edn{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em;
}
.masthead-tools{display:flex; align-items:center; gap:10px}
.icon-btn{
  width:30px; height:30px; border-radius:50%;
  border:1px solid var(--rule); color:var(--ink-2);
  display:inline-flex; align-items:center; justify-content:center;
  transition:.18s var(--ease);
}
.icon-btn:hover{ border-color:var(--accent); color:var(--accent) }
.icon-btn svg{width:14px;height:14px}
.icon-btn.active{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent) }
.lang-pair{
  display:inline-flex; border:1px solid var(--rule); border-radius:999px; overflow:hidden;
}
.lang-pair button{
  font-size:10px; font-weight:600; letter-spacing:.1em; padding:6px 10px;
  color:var(--ink-3); transition:.15s;
}
.lang-pair button.active{background:var(--ink); color:var(--bg)}
.clock{font-family:var(--mono); font-size:11.5px; color:var(--ink-2)}
.live-tag{
  display:inline-flex; align-items:center; gap:6px;
  font-size:10px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-2);
}
.live-tag::before{
  content:""; width:6px; height:6px; border-radius:50%; background:var(--pos);
  box-shadow: 0 0 0 0 var(--pos);
  animation: pulseDot 1.6s ease-in-out infinite;
}
@keyframes pulseDot{
  0%,100%{ box-shadow: 0 0 0 0 currentColor; opacity:1 }
  50%{ box-shadow: 0 0 0 6px transparent; opacity:.55 }
}

.masthead-main{
  display:grid; grid-template-columns: 1fr auto 1fr;
  align-items:center; gap:24px;
  padding: 28px var(--gutter) 22px;
  max-width:var(--maxw); margin:0 auto;
}
.edition-meta{
  font-family:var(--serif); font-style:italic;
  font-size:13.5px; color:var(--ink-3); line-height:1.45;
}
.edition-meta .label{
  display:block; font-family:var(--sans); font-style:normal;
  font-size:9.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-3); margin-bottom:4px; font-weight:600;
}
.wordmark{
  text-align:center; line-height:.9;
}
.wordmark .name{
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(48px, 7.5vw, 124px);
  letter-spacing: -.025em;
  display:inline-block;
  white-space: nowrap;
}
.wordmark .name .dot{
  color: var(--accent);
  font-style: normal;
  font-weight: 300;
  display: inline-block;
  font-size: .68em;
  vertical-align: 0.32em;
  margin: 0 -0.04em;
}
.wordmark .sub{
  display:block; font-family:var(--sans); font-weight:500;
  font-size:10.5px; letter-spacing:.36em; color:var(--ink-3);
  margin-top:10px; text-transform:uppercase;
}
.edition-stats{
  display:flex; justify-content:flex-end; gap:20px;
  font-size:11px; color:var(--ink-3);
}
.edition-stats div{ text-align:right }
.edition-stats .val{
  font-family:var(--mono); font-size:14px; color:var(--ink);
  display:block; margin-bottom:2px; font-weight:500;
}

/* CONDENSED masthead variant */
[data-masthead="condensed"] .masthead-main{ padding: 14px var(--gutter); grid-template-columns: auto 1fr auto; text-align:left }
[data-masthead="condensed"] .wordmark{ text-align:left }
[data-masthead="condensed"] .wordmark .name{ font-size: clamp(28px, 3.6vw, 44px) }
[data-masthead="condensed"] .wordmark .sub{ display:inline-block; margin-left:14px; margin-top:0 }
[data-masthead="condensed"] .edition-meta{ font-size:12px }
[data-masthead="condensed"] .edition-stats{ gap:12px }

[data-masthead="wordmark"] .masthead-main{ grid-template-columns:1fr; padding: 38px var(--gutter) 28px }
[data-masthead="wordmark"] .edition-meta,
[data-masthead="wordmark"] .edition-stats{ display:none }
[data-masthead="wordmark"] .wordmark .name{ font-size: clamp(72px, 11vw, 168px) }

[data-mode="brutalist"] .wordmark .name{
  font-family: var(--serif-display);
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: -.04em;
}
[data-mode="magazine"] .wordmark .name{
  font-family: var(--serif-display);
  font-style: normal;
}

/* ============================================================
   NAV
   ============================================================ */
.nav-row{
  border-bottom:3px double var(--rule);
  background:var(--bg);
}
.nav-inner{
  display:flex; align-items:center; justify-content:space-between;
  max-width:var(--maxw); margin:0 auto; padding: 0 var(--gutter);
}
.nav{ display:flex; overflow-x:auto; scrollbar-width:none }
.nav::-webkit-scrollbar{display:none}
.nav button{
  font-size:12px; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-2);
  padding: 16px 18px; white-space:nowrap;
  position:relative; transition:color .15s;
}
.nav button:first-child{padding-left:0}
.nav button:hover{color:var(--ink)}
.nav button.active{color:var(--accent)}
.nav button.active::after{
  content:""; position:absolute; left:18px; right:18px; bottom:-1px;
  height:2px; background:var(--accent);
}
.nav button:first-child.active::after{ left:0 }
.nav button + button::before{
  content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:1px; height:12px; background:var(--rule);
}
.nav-search-wrap{ display:flex; align-items:center; gap:14px }
.nav-search{
  display:flex; align-items:center; gap:8px;
  font-size:12px; color:var(--ink-3);
  border:1px solid var(--rule); border-radius:999px;
  padding: 6px 12px; transition: .2s;
}
.nav-search:focus-within{ border-color:var(--accent); color:var(--ink) }
.nav-search input{
  background:transparent; border:0; outline:0; color:var(--ink);
  font-family:var(--sans); font-size:12px; width:160px;
}
.nav-search input::placeholder{ color:var(--ink-3) }

/* ============================================================
   TICKER  (with mini sparklines per item)
   ============================================================ */
.ticker{
  background: var(--bg-2);
  border-bottom:1px solid var(--rule);
  overflow:hidden;
  position:sticky; top:6px; z-index:50;
  height: 38px;
}
.ticker::before, .ticker::after{
  content:""; position:absolute; top:0; bottom:0; width:48px; z-index:2; pointer-events:none;
}
.ticker::before{ left:0; background: linear-gradient(to right, var(--bg-2), transparent) }
.ticker::after{ right:0; background: linear-gradient(to left, var(--bg-2), transparent) }
.ticker-label{
  position:absolute; left:0; top:0; bottom:0; z-index:3;
  background:var(--bg); display:flex; align-items:center; gap:8px;
  padding: 0 14px; border-right:1px solid var(--rule);
  font-size:10px; letter-spacing:.2em; font-weight:700;
  color:var(--accent); text-transform:uppercase;
}
.ticker-label::before{
  content:""; width:6px; height:6px; border-radius:50%; background:var(--accent);
  animation: pulseDot 1.6s ease-in-out infinite;
}
.ticker-track{
  display:flex; gap: 32px; align-items:center;
  padding: 0 0 0 130px; white-space:nowrap;
  animation: tickerScroll 180s linear infinite;
  width: max-content; height:100%;
}
.ticker:hover .ticker-track{ animation-play-state: paused }
@keyframes tickerScroll{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
.tk{
  display:inline-flex; align-items:center; gap:7px;
  font-size:12px; padding: 4px 0;
}
.tk .sym{ font-family:var(--sans); font-weight:700; color:var(--ink); letter-spacing:.02em }
.tk .px{ font-family:var(--mono); color:var(--ink-2); font-size:11px }
.tk .ch{ font-family:var(--mono); font-size:11px; font-weight:600 }
.tk .ch::before{
  content:""; display:inline-block; width:0; height:0; margin-right:3px;
  border-left:3.5px solid transparent; border-right:3.5px solid transparent;
  vertical-align:1px;
}
.tk.up .ch::before{ border-bottom:5px solid var(--pos) }
.tk.down .ch::before{ border-top:5px solid var(--neg) }
.tk-spark{ width:42px; height:14px; opacity:.85 }

/* ============================================================
   BREAKING
   ============================================================ */
.breaking{
  display:flex; align-items:center; gap:12px;
  background: linear-gradient(90deg, var(--neg) 0%, color-mix(in oklch, var(--neg) 50%, var(--accent)) 100%);
  color:#fff; padding: 0 14px;
  position:sticky; top:44px; z-index:48;
  border-bottom: 1px solid rgba(0,0,0,.25);
  min-height:36px;
}
.breaking.hidden{ display:none }
.breaking-label{
  flex-shrink:0; background:#fff; color:var(--neg);
  font-size:10px; font-weight:800; letter-spacing:.18em;
  padding: 5px 9px; border-radius:2px; text-transform:uppercase;
  display:flex; align-items:center; gap:7px;
}
.breaking-label::before{ content:""; width:6px; height:6px; background:var(--neg); border-radius:50%; animation:pulseDot 1.2s infinite }
.breaking-wrap{ flex:1; overflow:hidden; min-width:0 }
.breaking-track{
  display:inline-flex; gap:36px; padding: 8px 0;
  animation: tickerScroll 90s linear infinite;
  white-space:nowrap; will-change: transform;
}
.breaking:hover .breaking-track{ animation-play-state: paused }
.breaking-item{
  font-size:12.5px; font-weight:500; cursor:pointer;
  display:inline-flex; align-items:center; gap:10px;
}
.breaking-item::before{ content:"·"; opacity:.5 }
.breaking-item .arc-pill{
  font-family:var(--mono); font-size:9.5px;
  background: rgba(0,0,0,.25); color:#fff;
  padding: 2px 6px; border-radius:2px; letter-spacing:.08em;
}
.breaking-close{
  flex-shrink:0; width:24px; height:24px; opacity:.85;
  display:flex; align-items:center; justify-content:center; border-radius:50%;
}
.breaking-close:hover{ background: rgba(0,0,0,.2); opacity:1 }

/* ============================================================
   FRONT PAGE — hero + clusters
   ============================================================ */
.front{
  display:grid;
  grid-template-columns: 1.45fr 1fr 1fr;
  gap:0;
  border-bottom: 1px solid var(--rule);
  margin-top: 32px;
}
.front > * + * { border-left: 1px solid var(--rule); padding-left: 26px }
.front > * { padding-bottom: 28px }
@media(max-width:1080px){
  .front{ grid-template-columns: 1fr 1fr }
  .front > :nth-child(1){ grid-column:1/-1; border-left:0; padding-left:0;
    border-bottom:1px solid var(--rule); padding-bottom:24px; margin-bottom:24px }
  .front > :nth-child(2){ padding-left:0; border-left:0 }
}
@media(max-width:680px){
  .front{ grid-template-columns:1fr }
  .front > * { padding-left:0 !important; border-left:0 !important;
    border-bottom:1px solid var(--rule); padding-bottom:22px; margin-bottom:0 }
  .front > *:last-child{ border-bottom:0 }
}

/* Hero variations (data-hero=) */
[data-hero="split"] .front{ grid-template-columns: 1fr 1fr 1fr }
[data-hero="one"] .front{ grid-template-columns: 1fr }
[data-hero="one"] .front > :nth-child(n+2){ display:none }
[data-hero="data"] .front{ grid-template-columns: 1.2fr 1fr }
[data-hero="data"] .front > :nth-child(n+3){ display:none }

.lead-eyebrow{
  display:flex; align-items:center; gap:10px;
  font-family:var(--sans); font-size:10.5px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase; color:var(--accent);
  margin-bottom: 16px;
}
.lead-eyebrow::after{ content:""; flex:1; height:1px; background:linear-gradient(to right, var(--accent), transparent) }

.lead{ cursor:pointer }
.lead-image{
  aspect-ratio: 16/10; background: var(--bg-3);
  position:relative; overflow:hidden; margin-bottom:20px;
  border-radius: var(--radius);
}
.lead-image::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  box-shadow: inset 0 -90px 90px -40px rgba(0,0,0,.55);
}
.lead-image .placeholder{
  width:100%; height:100%;
  background:
    repeating-linear-gradient(45deg, transparent 0 12px, rgba(255,255,255,.025) 12px 24px),
    var(--bg-3);
  display:flex; flex-direction:column; gap:6px;
  align-items:center; justify-content:center;
  font-family:var(--mono); font-size:11px;
  color:var(--ink-3); letter-spacing:.16em;
}
.lead-image .placeholder svg{ width:32px; height:32px; opacity:.5 }
.lead-image .arc-stamp{
  position:absolute; top:14px; left:14px;
  font-family:var(--mono); font-size:10px;
  background: rgba(0,0,0,.7); color:#fff;
  padding: 4px 8px; border-radius: 2px;
  letter-spacing:.08em; backdrop-filter: blur(8px);
  display:flex; align-items:center; gap:6px;
}
.lead-image .arc-stamp .arc-dot{
  width:6px; height:6px; border-radius:50%; background: var(--accent);
}
.lead h1{
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(36px, 4.4vw, 64px);
  line-height: .98;
  letter-spacing: -.02em;
  margin-bottom: 18px;
  text-wrap: balance;
}
.lead:hover h1{ color: var(--accent); transition: color .25s }
.lead-deck{
  font-family: var(--serif);
  font-size: 18px; line-height: 1.45;
  color: var(--ink-2);
  max-width: 64ch;
  text-wrap: pretty;
}
.byline{
  margin-top:18px; display:flex; align-items:center; gap:12px;
  font-size:11px; color:var(--ink-3); letter-spacing:.02em;
}
.byline .src{ font-weight:700; color:var(--ink-2); letter-spacing:.05em; text-transform:uppercase; font-size:10.5px }
.byline .dot{ width:3px; height:3px; border-radius:50%; background:var(--ink-3) }
.byline .read-bar{
  flex:1; max-width:120px; height:3px; background:var(--rule-soft); border-radius:2px; overflow:hidden;
  position:relative;
}
.byline .read-bar::after{
  content:""; position:absolute; inset:0; right:auto;
  width: var(--read, 30%); background: var(--accent);
}

.hero-chart{
  margin-top:20px; padding:14px;
  border:1px solid var(--rule); background:var(--bg-2);
  border-radius:var(--radius);
}
.hero-chart-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px }
.hero-chart-head .sym{ font-weight:700; font-size:13px; letter-spacing:.04em }
.hero-chart-head .px{ font-family:var(--mono); font-size:14px; font-weight:500 }
.hero-chart-head .px .ch{ margin-left:10px; font-size:12px }
.hero-chart svg{ width:100%; height:60px; display:block }

/* secondary stacks */
.stack-title{
  font-size: 10.5px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3);
  padding-bottom: 8px; border-bottom: 1px solid var(--rule);
  margin-bottom: 14px;
  display:flex; justify-content:space-between; align-items:baseline;
}
.stack-title .count{ font-family:var(--mono); color:var(--accent); letter-spacing:0 }
.stack-card{
  padding: 14px 0; border-bottom: 1px dashed var(--rule-soft); cursor:pointer;
  display:grid; grid-template-columns:1fr; gap:6px;
}
.stack-card.with-image{ grid-template-columns: 1fr 96px; gap:14px; align-items:start }
.stack-card.with-image .thumb{
  width:96px; height:74px; background:var(--bg-3); border-radius:var(--radius); overflow:hidden;
  background-image:
    repeating-linear-gradient(45deg, transparent 0 8px, rgba(255,255,255,.03) 8px 16px);
}
.stack-card:last-child{ border-bottom:0 }
.stack-card .kicker{
  font-size:9.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-3); display:flex; align-items:center; gap:7px;
}
.stack-card .kicker .dot{ width:5px; height:5px; border-radius:50%; background:var(--accent) }
.stack-card h3{
  font-family: var(--serif); font-weight:400; font-style:italic;
  font-size: 19px; line-height: 1.15; letter-spacing:-.005em;
  transition: color .15s;
  text-wrap: balance;
}
.stack-card:hover h3{ color: var(--accent) }
.stack-card .meta{ font-size:10.5px; color:var(--ink-3); font-family:var(--mono); display:flex; gap:10px; align-items:center }
.stack-card .pulse{
  display:inline-block; width:6px; height:6px; border-radius:50%;
  background: var(--pos); margin-right:4px;
  animation: pulseDot 2s ease-in-out infinite;
}

/* Opinion column */
.opinion-card{
  padding: 16px 0; border-bottom: 1px dashed var(--rule-soft); cursor:pointer;
}
.opinion-card:last-child{ border-bottom:0 }
.opinion-card .pull{
  font-family: var(--serif); font-style: italic; font-weight: 400;
  font-size: 19px; line-height: 1.3; color: var(--ink); text-wrap: pretty;
}
.opinion-card .pull::before{ content:"\201C"; opacity:.5; margin-right:2px }
.opinion-card .pull::after{ content:"\201D"; opacity:.5; margin-left:2px }
.opinion-card .author{
  margin-top:12px; display:flex; align-items:center; gap:10px;
  font-size:11px; color:var(--ink-3); letter-spacing:.04em;
}
.opinion-card .author .name{ font-weight:700; color:var(--ink-2); text-transform:uppercase; letter-spacing:.06em }
.opinion-card .author .av{
  width:24px; height:24px; border-radius:50%; background: var(--bg-3);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-style:italic; font-size:12px;
  color: var(--ink-2); border:1px solid var(--rule);
}

/* ============================================================
   SECTION HEADERS
   ============================================================ */
.section-head{
  display:grid; grid-template-columns: auto 1fr auto; gap:24px; align-items:end;
  border-top: 3px double var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: 18px 0 14px;
  margin: 56px 0 28px;
}
.section-head h2{
  font-family: var(--serif); font-weight: 400; font-style: italic;
  font-size: 34px; line-height: 1; letter-spacing:-.012em;
}
.section-head h2 .num{
  font-family: var(--mono); font-size: 13px; color: var(--accent);
  font-weight: 500; margin-right: 14px; vertical-align: 8px; font-style:normal;
}
.section-head .deck{
  font-family: var(--serif); font-style: italic; font-size: 14px;
  color: var(--ink-2); margin-top: 4px;
}
.section-head .meta{
  font-family: var(--mono); font-size: 11px; color: var(--ink-3);
  letter-spacing:.04em; text-align:right;
}
.section-head .filters{
  display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end;
}
.filter-chip{
  font-size:10.5px; font-weight:600; letter-spacing:.08em;
  padding: 5px 10px; border:1px solid var(--rule); border-radius: 2px;
  color: var(--ink-3); text-transform:uppercase;
  transition:.15s;
}
.filter-chip:hover{ border-color: var(--ink-2); color: var(--ink) }
.filter-chip.active{ background: var(--ink); color: var(--bg); border-color: var(--ink) }

/* ============================================================
   MARKETS FLOOR
   ============================================================ */
.markets-grid{
  display:grid;
  grid-template-columns: 2fr 1fr 1.2fr;
  gap: 22px; align-items: stretch;
}
@media(max-width:1080px){ .markets-grid{ grid-template-columns: 1fr 1fr } }
@media(max-width:680px){ .markets-grid{ grid-template-columns: 1fr } }

.market-pane{
  border:1px solid var(--rule); background: var(--paper);
  padding: 18px; border-radius: var(--radius);
  display:flex; flex-direction:column;
}
.pane-title{
  display:flex; justify-content:space-between; align-items:baseline;
  font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color: var(--ink-3); margin-bottom:14px;
}
.pane-title .accent{ font-family:var(--mono); color:var(--accent); letter-spacing:0; font-weight:500 }

/* heatmap */
.heatmap{
  display:grid; grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 50px; gap: 3px;
}
.heat-tile{
  display:flex; flex-direction:column; justify-content:space-between;
  padding: 6px 8px; cursor:pointer; transition:.2s var(--ease);
  color:#fff; overflow:hidden; border-radius: 1px;
  font-size:10px;
}
.heat-tile:hover{ transform: scale(1.08); box-shadow: 0 8px 20px rgba(0,0,0,.35); z-index:2; position:relative }
.heat-tile .ht-sym{
  font-family:var(--sans); font-weight:700; font-size:11px;
  text-shadow: 0 1px 1px rgba(0,0,0,.35);
}
.heat-tile .ht-ch{ font-family:var(--mono); font-size:10.5px; font-weight:600 }
.heat-tile.big{ grid-column: span 2; grid-row: span 2 }
.heat-tile.big .ht-sym{ font-size: 22px }
.heat-tile.big .ht-ch{ font-size: 14px }
.heat-tile.big .ht-px{ font-family:var(--mono); font-size:11px; opacity:.85 }
.heat-tile.med{ grid-column: span 2 }
.heat-legend{
  display:flex; align-items:center; gap:8px;
  margin-top:12px; font-family:var(--mono); font-size:10px; color:var(--ink-3);
}
.heat-legend .bar{
  flex:1; height:5px; border-radius:2px;
  background: linear-gradient(90deg, var(--neg) 0%, var(--ink-4) 50%, var(--pos) 100%);
}

/* Fear & Greed */
.fng-row{ display:flex; align-items:center; gap:18px }
.fng-dial{ width: 110px; height: 110px; position:relative; flex-shrink:0 }
.fng-dial svg{ transform: rotate(-90deg); width:100%; height:100% }
.fng-dial .ctr{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center }
.fng-dial .val{ font-family:var(--serif); font-style:italic; font-weight:400; font-size:38px; line-height:1 }
.fng-dial .lbl{ font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3); margin-top:5px; font-weight:600 }
.fng-desc{
  font-family:var(--serif); font-style:italic; font-size:14px;
  line-height:1.45; color:var(--ink-2); text-wrap:pretty;
}
.fng-30d{ margin-top:18px; padding-top:14px; border-top:1px dashed var(--rule-soft) }
.fng-30d-head{ display:flex; justify-content:space-between; font-family:var(--mono); font-size:10px; color:var(--ink-3); margin-bottom:6px }
.fng-spark{ width:100%; height:54px; display:block }

/* watchlist */
.watch-row{
  display:grid; grid-template-columns: 1fr 1fr 84px;
  gap:10px; align-items:center;
  padding: 12px 0; border-bottom:1px dashed var(--rule-soft);
}
.watch-row:first-child{ padding-top:4px }
.watch-row:last-child{ border-bottom:0 }
.watch-row .sym{ font-family:var(--sans); font-weight:700; font-size:13px }
.watch-row .sym .name{ display:block; font-family:var(--serif); font-style:italic; font-size:11.5px; color:var(--ink-3); font-weight:400; margin-top:1px }
.watch-row .val{ font-family:var(--mono); font-size:13px; text-align:right }
.watch-row .val .ch{ display:block; font-size:11px; margin-top:1px }
.watch-row svg{ width:84px; height:30px; display:block }

/* econ calendar */
.econ-cal{
  margin-top: 22px;
  border:1px solid var(--rule); background:var(--paper);
  border-radius:var(--radius); overflow:hidden;
}
.econ-cal table{ width:100%; border-collapse:collapse; font-family:var(--mono); font-size:12px }
.econ-cal th{
  text-align:left; padding: 12px 14px;
  font-size:10px; letter-spacing:.16em; text-transform:uppercase;
  color: var(--ink-3); font-family:var(--sans); font-weight:700;
  border-bottom:1px solid var(--rule); background: var(--bg-2);
}
.econ-cal td{ padding: 11px 14px; border-bottom: 1px dashed var(--rule-soft); color:var(--ink-2) }
.econ-cal tr:last-child td{ border-bottom:0 }
.econ-cal tr:hover{ background: var(--bg-2) }
.econ-cal td.evt{ color:var(--ink); font-family:var(--sans); font-size:13px }
.econ-cal .flag{
  display:inline-block; width: 22px; padding: 1px 4px;
  font-size: 9px; font-weight:700; letter-spacing:.05em;
  background: var(--bg-3); color: var(--ink-2); border-radius: 1px;
  text-align:center; margin-right:8px;
}
.econ-cal .imp{ display:inline-flex; gap:2px }
.econ-cal .imp i{ width:5px; height:10px; border-radius:1px; background:var(--rule); display:inline-block }
.econ-cal .imp.imp1 i:nth-child(1),
.econ-cal .imp.imp2 i:nth-child(-n+2),
.econ-cal .imp.imp3 i{ background: var(--accent) }

/* ============================================================
   FEED
   ============================================================ */
.body-grid{
  display:grid; grid-template-columns: minmax(0, 1fr) 340px;
  gap: 56px; margin-top: 6px;
}
@media(max-width:1080px){ .body-grid{ grid-template-columns:1fr; gap:40px } }

.feed-list{ display:flex; flex-direction:column }
.feed-item{
  display:grid; grid-template-columns: 44px 1fr auto; gap: 18px;
  padding: 20px 0; border-bottom:1px solid var(--rule-soft);
  cursor:pointer; align-items:flex-start;
  transition: padding-left .25s var(--ease), background .15s;
  position:relative;
}
.feed-item:hover{ padding-left: 10px }
.feed-item:hover .feed-title{ color: var(--accent) }
.feed-item.pinned{ background: linear-gradient(to right, color-mix(in oklch, var(--accent) 10%, transparent), transparent 80%) }
.feed-item.pinned::before{
  content:""; position:absolute; left:-8px; top:50%; transform: translateY(-50%);
  width:2px; height:60%; background: var(--accent);
}
.feed-num{
  font-family:var(--mono); font-size:11px; color: var(--ink-3);
  text-align:right; padding-top:3px; font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}
.feed-body{ min-width:0 }
.feed-meta{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:10.5px; color:var(--ink-3); margin-bottom:7px }
.feed-meta .src{ font-weight:700; color:var(--ink-2); letter-spacing:.06em; text-transform:uppercase }
.feed-meta .dot{ width:3px; height:3px; border-radius:50%; background:var(--ink-3) }
.feed-meta .arc{
  font-family:var(--mono); font-size:9.5px;
  background: var(--bg-2); color: var(--accent); border:1px solid var(--rule);
  padding: 2px 6px; border-radius:2px; letter-spacing:.08em;
}
.feed-title{
  font-family: var(--serif); font-weight: 400; font-style: italic;
  font-size: 22px; line-height: 1.18; letter-spacing: -.005em;
  transition: color .2s; text-wrap: balance;
}
.feed-deck{
  font-family: var(--serif); font-size: 14.5px; line-height: 1.5;
  color: var(--ink-2); margin-top: 7px; text-wrap: pretty;
  font-style: normal;
}
.feed-time{
  font-family:var(--mono); font-size:10.5px; color:var(--ink-3);
  white-space:nowrap; padding-top:3px; text-align:right;
  display:flex; flex-direction:column; align-items:flex-end; gap:6px;
}
.feed-actions{ display:flex; gap:6px; opacity:0; transition: opacity .2s }
.feed-item:hover .feed-actions{ opacity:1 }
.feed-act{
  width:22px; height:22px; border-radius:50%;
  border:1px solid var(--rule); color: var(--ink-3);
  display:flex; align-items:center; justify-content:center;
  transition:.15s;
}
.feed-act:hover{ border-color:var(--accent); color:var(--accent) }
.feed-act.on{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent); opacity:1 }
.feed-item.pinned .feed-actions, .feed-item.saved .feed-actions{ opacity:1 }

.feed-pulse{
  display:flex; align-items:center; gap:6px;
  font-family:var(--mono); font-size:10px; color:var(--ink-3);
}
.feed-pulse .bars{
  display:inline-flex; gap:2px; align-items:flex-end; height:12px;
}
.feed-pulse .bars i{
  width:3px; background:var(--ink-4); border-radius:1px; display:inline-block;
}
.feed-pulse[data-pulse="hot"] .bars i{ background: var(--neg); animation: barPulse 1.5s ease-in-out infinite alternate }
.feed-pulse[data-pulse="warm"] .bars i{ background: var(--accent) }
.feed-pulse[data-pulse="cool"] .bars i{ background: var(--ink-4) }
@keyframes barPulse{ 0%{opacity:.5} 100%{opacity:1} }
.feed-pulse .bars i:nth-child(1){ height:30% }
.feed-pulse .bars i:nth-child(2){ height:60% }
.feed-pulse .bars i:nth-child(3){ height:100% }

/* chip */
.chip{
  display:inline-flex; align-items:center; gap:5px;
  padding: 2px 7px; border-radius:1px; font-size:9.5px;
  font-weight:700; letter-spacing:.1em; text-transform:uppercase;
}
.chip::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor }
.chip-crypto   { color: oklch(0.78 0.16 75) }
.chip-finance  { color: oklch(0.74 0.16 145) }
.chip-tech     { color: oklch(0.72 0.14 240) }
.chip-politics { color: var(--accent) }
.chip-macro    { color: oklch(0.74 0.12 300) }
.chip-world    { color: oklch(0.78 0.10 200) }
.chip-priority { color: var(--accent) }
.chip-priority::before{ content:"\2605"; background:transparent; width:auto; height:auto; font-size:10px; line-height:1 }

/* ============================================================
   SIDEBAR
   ============================================================ */
.sidebar{
  display:flex; flex-direction:column; gap:36px;
  position:sticky; top: 92px; align-self:start;
  max-height: calc(100vh - 100px); overflow-y:auto;
  padding-right:8px;
}
.sidebar::-webkit-scrollbar{ width:4px }
@media(max-width:1080px){ .sidebar{ position:static; max-height:none } }

.side-block h3{
  font-size:11px; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--ink-3);
  padding-bottom: 10px; border-bottom: 1px solid var(--rule);
  margin-bottom: 14px; display:flex; justify-content:space-between; align-items:baseline;
}
.side-block h3 .accent{ font-family:var(--mono); color:var(--accent); letter-spacing:0 }
.most-read-item{
  display:grid; grid-template-columns: 32px 1fr; gap:14px;
  padding: 14px 0; border-bottom: 1px dashed var(--rule-soft);
  cursor:pointer;
}
.most-read-item:last-child{ border-bottom:0 }
.most-read-item .rk{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size: 32px; line-height:.9; color: var(--ink-4);
}
.most-read-item:hover .rk{ color: var(--accent) }
.most-read-item h4{
  font-family:var(--serif); font-style:italic; font-size:15px; line-height:1.25;
  letter-spacing:-.005em; transition:color .15s; text-wrap:balance;
}
.most-read-item:hover h4{ color: var(--accent) }
.most-read-item .meta{ margin-top:6px; font-size:10.5px; color:var(--ink-3); font-family:var(--mono) }

/* Story Arcs sidebar */
.arc-item{
  padding:14px 0; border-bottom:1px dashed var(--rule-soft); cursor:pointer;
}
.arc-item:last-child{ border-bottom:0 }
.arc-item .top{ display:flex; align-items:center; gap:10px; margin-bottom:6px }
.arc-item .arc-stamp{
  font-family:var(--mono); font-size:9.5px; letter-spacing:.06em;
  color: var(--accent); padding: 2px 6px;
  background: color-mix(in oklch, var(--accent) 15%, transparent);
  border-radius:2px;
}
.arc-item .arc-cnt{ font-family:var(--mono); font-size:10px; color:var(--ink-3) }
.arc-item h4{
  font-family:var(--serif); font-style:italic; font-size:16px; line-height:1.2;
  transition: color .15s;
}
.arc-item:hover h4{ color: var(--accent) }
.arc-item .arc-timeline{
  display:flex; gap:3px; margin-top:8px; height:6px; align-items:center;
}
.arc-item .arc-timeline i{
  flex:1; height:100%; background: var(--rule-soft); border-radius:1px;
}
.arc-item .arc-timeline i.live{ background: var(--accent); animation: pulseDot 2s infinite }
.arc-item .arc-timeline i.past{ background: var(--rule) }

/* newsletter */
.newsletter{
  border: 1px solid var(--rule); background: var(--paper);
  padding: 22px; border-radius: var(--radius);
}
.newsletter h4{
  font-family: var(--serif); font-style:italic; font-weight:400;
  font-size: 26px; line-height: 1.05; margin-bottom: 10px;
  text-wrap: balance;
}
.newsletter p{ font-family:var(--serif); font-size:13.5px; line-height:1.5; color: var(--ink-2); margin-bottom:14px; text-wrap:pretty }
.newsletter form{ display:flex; gap:0; border:1px solid var(--rule); border-radius:var(--radius); overflow:hidden; transition:.2s }
.newsletter form:focus-within{ border-color:var(--accent) }
.newsletter input{
  flex:1; background:transparent; border:0; outline:0; color:var(--ink);
  font: inherit; padding: 10px 12px; font-size:12.5px;
}
.newsletter button[type=submit]{
  background: var(--ink); color: var(--bg);
  padding: 0 16px; font-size: 11px; font-weight:700;
  letter-spacing: .12em; text-transform:uppercase;
}
.newsletter button:hover{ background: var(--accent); color: var(--accent-ink) }
.newsletter .meta{ margin-top:10px; font-family:var(--mono); font-size:10px; color:var(--ink-3); letter-spacing:.04em }

/* ============================================================
   OPINION ROW (mid-page)
   ============================================================ */
.opinion-row{
  display:grid; grid-template-columns: repeat(3, 1fr);
  gap: 0; border-top: 1px solid var(--rule); border-bottom:1px solid var(--rule);
}
.opinion-row > * + *{ border-left: 1px solid var(--rule) }
.opinion-row > *{ padding: 28px 26px }
.opinion-row > :first-child{ padding-left:0 }
.opinion-row > :last-child{ padding-right:0 }
@media(max-width:980px){
  .opinion-row{ grid-template-columns:1fr }
  .opinion-row > * + *{ border-left:0; border-top:1px solid var(--rule) }
  .opinion-row > *{ padding:24px 0 }
}
.op-eyebrow{
  font-size:10px; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; color:var(--accent); margin-bottom:14px;
}
.op-quote{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size: clamp(22px, 1.7vw, 28px); line-height:1.22;
  text-wrap: balance;
}
.op-quote::before{ content:"\201C"; opacity:.5 }
.op-quote::after{ content:"\201D"; opacity:.5 }
.op-author{
  margin-top: 18px; display:flex; align-items:center; gap:12px;
}
.op-author .av{
  width:36px; height:36px; border-radius:50%; background:var(--bg-3);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-style:italic; font-size:17px;
  color:var(--ink); border:1px solid var(--rule);
}
.op-author .who .name{ font-weight:700; font-size:12px; letter-spacing:.04em }
.op-author .who .role{ font-family:var(--serif); font-style:italic; font-size:12px; color:var(--ink-3) }

/* ============================================================
   VIDEO GRID
   ============================================================ */
.videos{
  display:grid; grid-template-columns: 2fr 1fr 1fr; gap: 22px;
}
@media(max-width:980px){ .videos{ grid-template-columns: 1fr 1fr } }
@media(max-width:600px){ .videos{ grid-template-columns: 1fr } }

.video-card{ cursor:pointer; transition: transform .3s var(--ease) }
.video-card:hover{ transform: translateY(-3px) }
.video-card .thumb{
  aspect-ratio: 16/10; background: var(--bg-3); position:relative; overflow:hidden;
  border-radius:var(--radius); margin-bottom:14px;
  background-image: repeating-linear-gradient(45deg, transparent 0 10px, rgba(255,255,255,.025) 10px 20px);
}
.video-card.big .thumb{ aspect-ratio: 16/9 }
.video-card .thumb .play{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
}
.video-card .thumb .play span{
  width:56px; height:56px; border-radius:50%;
  background: rgba(0,0,0,.6); backdrop-filter:blur(8px);
  display:flex; align-items:center; justify-content:center;
  color:#fff; transition:.25s;
}
.video-card:hover .thumb .play span{ background:var(--accent); color:var(--accent-ink); transform: scale(1.1) }
.video-card .thumb .dur{
  position:absolute; bottom:10px; right:10px;
  font-family:var(--mono); font-size:10px;
  background: rgba(0,0,0,.7); color:#fff; padding: 3px 6px; border-radius:2px;
}
.video-card .thumb .chan{
  position:absolute; top:10px; left:10px;
  font-family:var(--sans); font-size:9.5px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
  background:#fff; color:#000; padding: 3px 6px; border-radius:1px;
}
.video-card h4{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size: 20px; line-height:1.2; letter-spacing:-.005em;
  margin-bottom:6px; text-wrap:balance;
}
.video-card.big h4{ font-size: 28px }
.video-card .vmeta{ font-family:var(--mono); font-size:10.5px; color:var(--ink-3); letter-spacing:.04em }
.video-card:hover h4{ color: var(--accent); transition: color .2s }

/* ============================================================
   ARTICLE MODAL
   ============================================================ */
.modal-back{
  position:fixed; inset:0; z-index:200;
  background: color-mix(in oklch, var(--bg) 80%, black);
  backdrop-filter: blur(12px);
  display:flex; align-items:flex-start; justify-content:center;
  overflow-y: auto;
  animation: fadeIn .3s var(--ease);
}
@keyframes fadeIn{ from{opacity:0} to{opacity:1} }
.modal-card{
  background: var(--bg); border:1px solid var(--rule);
  max-width: 1080px; width: calc(100% - 48px);
  margin: 60px 24px;
  border-radius: var(--radius);
  box-shadow: var(--shadow-pop);
  animation: rise .35s var(--ease);
}
@keyframes rise{ from{transform: translateY(20px); opacity:0} to{transform:translateY(0); opacity:1} }
.modal-head{
  display:flex; justify-content:space-between; align-items:center;
  padding: 16px 24px; border-bottom:1px solid var(--rule);
  position:sticky; top:0; background:var(--bg); z-index:5;
}
.modal-head .read-progress{
  position:absolute; left:0; bottom:-1px; height:2px; background:var(--accent); width: var(--rp, 0%);
  transition: width .3s;
}
.modal-head .arc-stamp{
  font-family:var(--mono); font-size:10.5px; color: var(--accent);
  background: color-mix(in oklch, var(--accent) 12%, transparent);
  padding: 4px 8px; border-radius: 2px; letter-spacing:.08em;
  display:flex; align-items:center; gap:7px;
}
.modal-head .arc-stamp .arc-dot{ width:5px; height:5px; border-radius:50%; background:var(--accent); animation: pulseDot 2s infinite }
.modal-head .actions{ display:flex; gap:8px }
.modal-body{ padding: 32px 56px 56px }
@media(max-width:780px){ .modal-body{ padding: 24px } }
.modal-eyebrow{
  font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent); margin-bottom:18px; display:flex; align-items:center; gap:10px;
}
.modal-eyebrow::after{ content:""; flex:1; height:1px; background: linear-gradient(to right, var(--accent), transparent) }
.modal-body h1{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size: clamp(32px, 4vw, 56px); line-height:.98; letter-spacing:-.02em;
  margin-bottom: 18px; text-wrap: balance;
}
.modal-deck{
  font-family:var(--serif); font-size: 20px; line-height:1.45;
  color: var(--ink-2); max-width: 56ch; margin-bottom: 28px; text-wrap:pretty;
}
.modal-byline{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  padding: 18px 0; border-top:1px dashed var(--rule); border-bottom:1px dashed var(--rule);
  margin-bottom: 32px; font-size:12px; color:var(--ink-2);
}
.modal-byline .av{
  width:36px; height:36px; border-radius:50%; background:var(--bg-3);
  display:flex; align-items:center; justify-content:center; font-family:var(--serif); font-style:italic;
}
.modal-byline .src{ font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--accent); font-size:11px }
.modal-hero{
  aspect-ratio: 16/9; background: var(--bg-3); border-radius:var(--radius); overflow:hidden;
  margin-bottom: 32px;
  background-image: repeating-linear-gradient(45deg, transparent 0 12px, rgba(255,255,255,.025) 12px 24px);
  position:relative;
}
.modal-content{
  font-family:var(--serif); font-size: 19px; line-height: 1.6; color: var(--ink-2);
  max-width: 64ch;
}
.modal-content p{ margin-bottom: 22px; text-wrap:pretty }
.modal-content p:first-letter{ /* drop cap */ }
.modal-content p.dropcap::first-letter{
  font-family: var(--serif-display); font-style:normal;
  font-size: 5.5em; line-height: .9; float: left;
  padding: 6px 12px 0 0; color: var(--accent);
}
.modal-content blockquote{
  font-style:italic; font-size: 24px; line-height:1.3;
  border-left: 3px solid var(--accent); padding-left: 22px;
  margin: 28px 0; color: var(--ink); text-wrap: balance;
}
.modal-content h3{
  font-family: var(--serif); font-style:italic; font-weight:400;
  font-size: 26px; margin: 36px 0 14px; color: var(--ink); text-wrap:balance;
}
.modal-related{
  margin-top: 48px; padding-top:28px; border-top: 3px double var(--rule);
}
.modal-related h4{
  font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color: var(--ink-3); margin-bottom: 18px;
}
.modal-related .grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:18px }
@media(max-width:780px){ .modal-related .grid{ grid-template-columns:1fr } }
.related-card{
  cursor:pointer; padding-bottom: 14px; border-bottom: 1px solid var(--rule-soft);
}
.related-card .kicker{ font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); margin-bottom:6px; font-weight:700 }
.related-card h5{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:16px; line-height:1.2; text-wrap:balance;
}
.related-card:hover h5{ color:var(--accent) }

/* ============================================================
   SEARCH OVERLAY
   ============================================================ */
.search-overlay{
  position:fixed; inset:0; z-index:180;
  background: color-mix(in oklch, var(--bg) 85%, black);
  backdrop-filter: blur(14px);
  display:flex; flex-direction:column; align-items:center;
  padding-top: 12vh;
  animation: fadeIn .25s var(--ease);
}
.search-bar{
  width: min(720px, 90%);
  display:flex; align-items:center; gap:14px;
  padding: 18px 22px; border:1px solid var(--rule); background: var(--paper);
  border-radius: var(--radius); box-shadow: var(--shadow-pop);
}
.search-bar input{
  flex:1; background:transparent; border:0; outline:0; color:var(--ink);
  font-family:var(--serif); font-style:italic; font-size: 26px;
}
.search-bar input::placeholder{ color: var(--ink-3) }
.search-bar .kbd{ font-size:10px }
.search-results{
  width: min(720px, 90%); margin-top: 22px;
  background: var(--paper); border:1px solid var(--rule); border-radius: var(--radius);
  max-height: 50vh; overflow-y:auto;
}
.search-results .res{
  padding: 14px 22px; border-bottom:1px solid var(--rule-soft);
  cursor:pointer; display:grid; grid-template-columns: 1fr auto; gap:18px;
}
.search-results .res:last-child{ border-bottom:0 }
.search-results .res:hover{ background: var(--bg-2) }
.search-results .res h4{
  font-family:var(--serif); font-style:italic; font-size:17px; line-height:1.2; text-wrap:balance;
}
.search-results .res .meta{ font-size:10.5px; color:var(--ink-3); margin-top:5px; font-family:var(--mono) }
.search-results .res .cat{ font-size:10px }

/* ============================================================
   TIME SCRUBBER
   ============================================================ */
.scrubber{
  position:fixed; bottom: 0; left: 0; right:0; z-index:90;
  background: color-mix(in oklch, var(--bg) 85%, transparent);
  backdrop-filter: blur(14px);
  border-top: 1px solid var(--rule);
  padding: 12px var(--gutter);
  display:flex; align-items:center; gap:18px;
  transition: transform .35s var(--ease);
}
.scrubber.hidden{ transform: translateY(100%) }
.scrub-label{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em;
  color:var(--ink-3); display:flex; gap:8px; align-items:center;
}
.scrub-label .val{ color:var(--ink); font-weight:500 }
.scrub-track{
  flex:1; position:relative; height: 22px;
  display:flex; align-items:center;
}
.scrub-track .line{
  position:absolute; left:0; right:0; height:2px; background:var(--rule); border-radius:1px;
}
.scrub-track .marks{
  position:absolute; left:0; right:0; top:0; height:100%;
  display:flex; justify-content:space-between; pointer-events:none;
}
.scrub-track .marks i{
  width:1px; height:8px; background: var(--rule); align-self:center;
}
.scrub-track input[type=range]{
  position:absolute; inset:0; width:100%; background:transparent;
  -webkit-appearance:none; appearance:none;
}
.scrub-track input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width: 14px; height: 14px; background: var(--accent);
  border-radius: 50%; cursor:pointer;
  box-shadow: 0 0 0 4px color-mix(in oklch, var(--accent) 30%, transparent);
}
.scrub-track input[type=range]::-moz-range-thumb{
  width: 14px; height: 14px; background: var(--accent);
  border-radius: 50%; cursor:pointer; border:0;
  box-shadow: 0 0 0 4px color-mix(in oklch, var(--accent) 30%, transparent);
}
.scrub-pings{
  position:absolute; left:0; right:0; top:50%; transform: translateY(-50%);
  height: 18px; pointer-events:none;
}
.scrub-pings i{
  position:absolute; width: 4px; height: 4px; border-radius:50%;
  background: var(--ink-3); transform: translate(-50%, -50%);
  top: 50%;
}
.scrub-pings i.imp{ background: var(--accent); width:6px; height:6px }
.scrub-pings i.imp::after{
  content:""; position:absolute; inset:-3px; border-radius:50%;
  background: var(--accent); opacity:.3;
  animation: pulseDot 2s infinite;
}
.scrub-toggle{
  width:30px; height:30px; border-radius:50%;
  border:1px solid var(--rule); color: var(--ink-2);
}
.scrub-toggle:hover{ border-color: var(--accent); color:var(--accent) }

/* ============================================================
   DOCK (pinned modules)
   ============================================================ */
.dock-zone{
  position:fixed; bottom: 72px; right: 24px; z-index:80;
  display:flex; flex-direction:column; gap:10px; max-width: 320px;
  pointer-events:none;
}
.dock-zone .dock-item{ pointer-events:auto }
.dock-item{
  background: var(--paper); border:1px solid var(--rule);
  border-radius: var(--radius); padding: 14px;
  box-shadow: var(--shadow-2);
  animation: rise .35s var(--ease);
  font-size:12px;
}
.dock-item .dh{ display:flex; justify-content:space-between; align-items:center; margin-bottom:8px }
.dock-item .dh .lbl{ font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3); font-weight:700 }
.dock-item .dh button{ width:18px; height:18px; color:var(--ink-3) }
.dock-item .dh button:hover{ color:var(--neg) }
.dock-item h4{ font-family:var(--serif); font-style:italic; font-size:16px; line-height:1.2 }
.dock-item .meta{ margin-top:6px; font-family:var(--mono); font-size:10px; color:var(--ink-3) }

/* ============================================================
   FOOTER
   ============================================================ */
.footer{
  border-top: 3px double var(--rule);
  padding: 48px 0 96px;
  color: var(--ink-3); font-size: 12px;
  margin-top: 64px;
}
.footer-grid{
  display:grid; grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 32px; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter);
}
@media(max-width:780px){ .footer-grid{ grid-template-columns:1fr 1fr } }
.footer h5{
  font-size:10px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;
  color: var(--ink-2); margin-bottom: 14px;
}
.footer ul{ list-style:none; display:flex; flex-direction:column; gap:8px }
.footer a:hover{ color: var(--accent) }
.footer .colophon{
  font-family:var(--serif); font-style:italic; font-size: 14px;
  color: var(--ink-2); line-height: 1.5; max-width: 50ch; margin-bottom:20px; text-wrap:pretty;
}
.footer .colophon .name{
  font-family:var(--serif); font-style:italic; font-size: 32px; font-weight:400;
  color: var(--ink); display:block; line-height:1; margin-bottom:8px;
}
.footer .colophon .name .dot{ color: var(--accent); font-style:normal }
.footer-meta{
  margin-top: 36px; padding-top: 18px; border-top: 1px solid var(--rule-soft);
  max-width: var(--maxw); margin-left:auto; margin-right:auto; padding-left: var(--gutter); padding-right: var(--gutter);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:14px;
  font-family:var(--mono); font-size: 10.5px; letter-spacing:.04em;
}

/* ============================================================
   TWEAKS — preset chip row
   ============================================================ */
.preset-row{ display:grid; grid-template-columns: repeat(2, 1fr); gap: 6px }
.preset-chip{
  border:1px solid var(--rule); border-radius:2px; padding: 10px;
  text-align:left; cursor:pointer; transition:.15s;
}
.preset-chip:hover{ border-color: var(--accent) }
.preset-chip.active{ border-color: var(--accent); background: color-mix(in oklch, var(--accent) 10%, transparent) }
.preset-chip .pname{
  font-family:var(--serif); font-style:italic; font-size:16px; line-height:1; margin-bottom:4px;
}
.preset-chip .psub{ font-family:var(--mono); font-size:9.5px; color:var(--ink-3); letter-spacing:.06em }

/* ============================================================
   READER (modo lectura) — clean editorial layout
   ============================================================ */
[data-reader="on"] .ticker,
[data-reader="on"] .breaking,
[data-reader="on"] .ribbon,
[data-reader="on"] .markets-floor,
[data-reader="on"] .econ-cal-wrap,
[data-reader="on"] .videos-section,
[data-reader="on"] .scrubber{
  display:none !important;
}
[data-reader="on"] .body-grid{ grid-template-columns: minmax(0, 760px) 280px; justify-content:center }
[data-reader="on"] .front{ max-width: 900px; margin: 32px auto 0; grid-template-columns:1fr }
[data-reader="on"] .front > * + *{ border-left:0; padding-left:0; padding-top:24px; margin-top:24px; border-top:1px solid var(--rule) }
[data-reader="on"] .feed-title{ font-size:24px }
[data-reader="on"] body{ font-size: calc(15.5px * var(--d-text, 1)) }

/* ============================================================
   MISC ANIMATION
   ============================================================ */
.fade-in{ animation: fadeIn .35s var(--ease) }

/* heat tile color via inline style; helper classes */
.htc-strong-pos{ background: oklch(0.55 0.20 145) }
.htc-pos{ background: oklch(0.50 0.15 145) }
.htc-mild-pos{ background: oklch(0.40 0.10 145) }
.htc-flat{ background: oklch(0.30 0.02 250) }
.htc-mild-neg{ background: oklch(0.40 0.12 25) }
.htc-neg{ background: oklch(0.45 0.17 25) }
.htc-strong-neg{ background: oklch(0.52 0.22 25) }

/* small utilities */
.row{ display:flex; align-items:center; gap:8px }
.spacer{ flex:1 }
.divider{ height:1px; background: var(--rule); margin: 8px 0 }

/* ============================================================
   HORIZON · v6.3 — refresh btn, live status pill, skeletons,
   responsive nav (mobile)
   ============================================================ */

/* refresh button spinning state */
.icon-btn.refresh-btn{ position:relative }
.icon-btn.refresh-btn[disabled]{ cursor:wait; opacity:.6 }
.icon-btn.refresh-btn.spinning svg{ animation: hz-spin 1.4s linear infinite }
@keyframes hz-spin { from { transform: rotate(0) } to { transform: rotate(360deg) } }

/* live status pill (bottom-right) */
.live-pill{
  position: fixed; right: 16px; bottom: 16px; z-index: 200;
  display: flex; align-items: center; gap: 9px;
  padding: 7px 13px; border: 1px solid var(--rule, #23262f);
  background: color-mix(in oklch, var(--paper, #14161c) 88%, transparent);
  backdrop-filter: blur(10px) saturate(140%);
  -webkit-backdrop-filter: blur(10px) saturate(140%);
  border-radius: 999px;
  font-family: var(--mono, 'JetBrains Mono', monospace);
  font-size: 10.5px; letter-spacing: .04em;
  color: var(--ink-2, #a9adb8);
  box-shadow: 0 4px 14px rgba(0,0,0,.25);
  user-select: none;
}
.live-pill .dot{
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--ink-3, #6d7180);
}
.live-pill.state-ok      .dot{ background: var(--pos, #25c26e); box-shadow: 0 0 0 0 var(--pos, #25c26e); animation: hz-pulse 1.8s infinite }
.live-pill.state-partial .dot{ background: oklch(0.78 0.16 65); }
.live-pill.state-off     .dot{ background: var(--neg, #e8365d); }
.live-pill .lbl{ font-weight: 700; color: var(--ink, #fafafa); letter-spacing: .1em; font-size: 9.5px }
.live-pill.state-ok      .lbl{ color: var(--pos, #25c26e) }
.live-pill.state-partial .lbl{ color: oklch(0.82 0.14 85) }
.live-pill.state-off     .lbl{ color: var(--neg, #e8365d) }
.live-pill .sep{ opacity: .35 }
.live-pill .ago{ color: var(--ink-2, #a9adb8) }
.live-pill .health{
  font-size: 9.5px; padding: 2px 6px; border-radius: 3px;
  background: color-mix(in oklch, var(--bg-3, #1b1e27) 70%, transparent);
  color: var(--ink-3, #6d7180);
}
@keyframes hz-pulse {
  0%   { box-shadow: 0 0 0 0 currentColor; opacity: 1 }
  70%  { box-shadow: 0 0 0 6px transparent; opacity: .6 }
  100% { box-shadow: 0 0 0 0 transparent; opacity: 1 }
}
@media (max-width: 520px) {
  .live-pill{ right: 10px; bottom: 10px; padding: 6px 10px; font-size: 9.5px }
  .live-pill .health{ display: none }
}

/* skeleton blocks */
.skel{
  background: linear-gradient(90deg,
    var(--bg-2, #14161c)   0%,
    var(--bg-3, #1b1e27)  50%,
    var(--bg-2, #14161c) 100%);
  background-size: 200% 100%;
  animation: hz-shimmer 1.4s linear infinite;
  border-radius: 3px; color: transparent;
}
@keyframes hz-shimmer {
  from { background-position: 200% 0 }
  to   { background-position: -200% 0 }
}
.skel-line{ display: block }
.skel-block{ display: block }
.w-25  { width: 25% }
.w-30  { width: 30% }
.w-40  { width: 40% }
.w-60  { width: 60% }
.w-70  { width: 70% }
.w-80  { width: 80% }
.w-90  { width: 90% }
.w-100 { width: 100% }

/* responsive nav — scroll horizontal on mobile */
@media (max-width: 720px) {
  .nav-row .nav-inner{ padding-right: 0 }
  .nav-row .nav{
    overflow-x: auto;
    overflow-y: hidden;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    mask-image: linear-gradient(to right, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
  }
  .nav-row .nav::-webkit-scrollbar{ display: none }
  .nav-row .nav button{ flex-shrink: 0; white-space: nowrap }
  .nav-search-wrap{ display: none }
}

/* breaking-bar guard for live-pill overlap on narrow screens — nothing to override */
