:root.theme-amber {
  --bg: #0c0905;
  --bg-2: #120b04;
  --panel: #1a1306;
  --panel-2: #221a0b;
  --border: #2e2311;
  --text: #ffb74a;
  --muted: #8a6f35;
  --muted-2: #d5a158;
  --accent: #ffb74a;
  --accent-2: #ffd280;
}

:root.theme-light {
  --bg: #f5f6fa;
  --bg-2: #ffffff;
  --panel: #ffffff;
  --panel-2: #f0f2f6;
  --border: #d4d8dd;
  --border-2: #b5bcc5;
  --text: #1a1f28;
  --muted: #6a7380;
  --muted-2: #384254;
}

:root {
  /* Microscalp-inspired palette — restored after the copper/amber experiment. */
  --bg: #04060a;
  --bg-2: #070a10;
  --panel: #0d121a;
  --panel-2: #131a25;
  --border: #1c2530;
  --border-2: #2a3344;
  --text: #e7edf3;
  --muted: #6b7785;
  --muted-2: #8a96a5;
  --up: #3fb950;
  --up-bg: rgba(63,185,80,0.10);
  --dn: #f85149;
  --dn-bg: rgba(248,81,73,0.10);
  --warn: #d29922;
  --accent: #58a6ff;
  --accent-2: #79b8ff;
  --flash: rgba(88,166,255,0.18);

  /* Category accents — kept for category-page tinting only.
     On tiles/lists we now use the single accent above to keep the eye on numbers. */
  --cat-equities: #58a6ff;
  --cat-bonds: #a872ff;
  --cat-fx: #22c1c3;
  --cat-metals: #d29922;
  --cat-energy: #ff8a3d;
  --cat-ags: #7fd77f;
  --cat-crypto: #ff9a2e;
  --cat-macro: #ff6bd6;
  --cat-geo: #f85149;
  --cat-news: #ff6b9d;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: var(--bg); color: var(--text); font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 13.5px; line-height: 1.45; -webkit-font-smoothing: antialiased; }
.mono, .px, .chg, .clock, .hc-price, .hc-change, .ex-time, table.q td.px, table.q td.chg { font-family: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace; font-variant-numeric: tabular-nums; }
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-2); text-decoration: underline; }

/* ─── TOP BAR ─── */
.topbar {
  position: sticky; top: 0; z-index: 30;
  display: grid; grid-template-columns: 260px minmax(0, 1fr) auto; align-items: center;
  gap: 14px; padding: 10px 18px;
  background: linear-gradient(180deg, #0a0e15 0%, #070a0f 100%);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(8px);
}
.brand { display: flex; align-items: center; gap: 10px; }
.brand-name { font-weight: 800; font-size: 20px; letter-spacing: -0.01em; }
.brand-sub { color: var(--muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.16em; font-weight: 600; }
.live-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: #2ecc71; box-shadow: 0 0 0 0 #2ecc71;
  animation: pulse 1.6s ease-out infinite;
}
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(46,204,113,0.7); }
  70% { box-shadow: 0 0 0 10px rgba(46,204,113,0); }
  100% { box-shadow: 0 0 0 0 rgba(46,204,113,0); }
}
.top-alert { justify-self: stretch; width: 100%; }
.top-clock { justify-self: end; text-align: right; }
.clock { font-size: 18px; font-weight: 700; letter-spacing: 0.02em; line-height: 1; }
.clock-sub { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.16em; margin-top: 2px; }

/* ─── ALERT BAR ─── */
.alert { display: flex; align-items: center; gap: 10px; padding: 7px 14px; border-radius: 6px; font-size: 12.5px; }
.alert .dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.alert .al-label { letter-spacing: 0.1em; font-size: 11.5px; font-weight: 700; }
.alert-green { background: rgba(46,204,113,0.08); color: #5ad898; border: 1px solid rgba(46,204,113,0.22); }
.alert-orange { background: rgba(255,167,38,0.10); color: #ffc57a; border: 1px solid rgba(255,167,38,0.25); }
.alert-red { background: rgba(255,77,79,0.10); color: #ff9a9a; border: 1px solid rgba(255,77,79,0.3); animation: breathe 2.4s ease-in-out infinite; }
@keyframes breathe {
  0%,100% { box-shadow: 0 0 0 0 rgba(255,77,79,0); }
  50% { box-shadow: 0 0 14px 0 rgba(255,77,79,0.45); }
}
.alert .rules { display: flex; gap: 6px; flex-wrap: wrap; }
.alert .rule { padding: 2px 10px; border-radius: 10px; background: rgba(255,255,255,0.09); font-size: 11.5px; font-weight: 600; color: inherit; text-decoration: none; border: 1px solid rgba(255,255,255,0.1); }
.alert .rule:hover { background: rgba(255,255,255,0.18); text-decoration: none; border-color: rgba(255,255,255,0.3); }
.alert .al-more { margin-left: auto; font-size: 11px; color: inherit; opacity: 0.7; text-decoration: none; padding: 2px 8px; border-radius: 4px; border: 1px solid currentColor; }
.alert .al-more:hover { opacity: 1; text-decoration: none; }
.alert .muted { color: var(--muted); font-size: 12px; }

/* ─── EXEC (homepage) — v4 redesign 2026-04-19 ─── */
.exec { display: flex; flex-direction: column; gap: 22px; padding: 14px 0 10px; }
.exec-section { display: flex; flex-direction: column; gap: 10px; }
.exec-section-label { margin: 0; font-size: 11px; font-weight: 800; letter-spacing: 0.22em; color: var(--muted-2); text-transform: uppercase; padding: 8px 2px; border-bottom: 1px solid var(--border); }
.exec-section-label::before { content: ""; display: inline-block; width: 4px; height: 12px; background: var(--accent); margin-right: 10px; vertical-align: -1px; border-radius: 1px; }

/* Cross-Asset Pulse strip */
.cap-strip { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; }
@media (max-width: 1400px) { .cap-strip { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 780px)  { .cap-strip { grid-template-columns: 1fr 1fr; } }
.cap-group {
  background: linear-gradient(180deg, #121821 0%, #0a0e15 100%);
  border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px;
  border-left: 3px solid var(--muted);
  display: flex; flex-direction: column; gap: 6px;
}
.cap-group.cap-stocks { border-left-color: var(--cat-equities); }
.cap-group.cap-bonds  { border-left-color: var(--cat-bonds); }
.cap-group.cap-metals { border-left-color: var(--cat-metals); }
.cap-group.cap-energy { border-left-color: var(--cat-energy); }
.cap-group.cap-fx     { border-left-color: var(--cat-fx); }
.cap-group.cap-crypto { border-left-color: var(--cat-crypto); }
.cap-head { display: flex; justify-content: space-between; align-items: baseline; }
.cap-label { font-size: 10px; font-weight: 800; letter-spacing: 0.16em; color: var(--muted-2); text-transform: uppercase; }
.cap-avg { font-size: 16px; font-weight: 800; }
.cap-avg.up { color: var(--up); }
.cap-avg.dn { color: var(--dn); }
.cap-items { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1px; }
.cap-item-link { display: flex; justify-content: space-between; align-items: baseline; padding: 3px 6px; border-radius: 3px; font-size: 11px; color: var(--text); text-decoration: none; }
.cap-item-link:hover { background: rgba(255,255,255,0.05); text-decoration: none; }
.cap-item-label { color: var(--muted-2); font-weight: 600; }
.cap-item-pct { font-weight: 700; font-size: 11px; }
.cap-item-pct.up { color: var(--up); }
.cap-item-pct.dn { color: var(--dn); }
.cap-footer { display: flex; justify-content: space-between; font-size: 10px; padding-top: 6px; border-top: 1px dashed var(--border); margin-top: 2px; }
.cap-best { color: var(--up); font-weight: 700; }
.cap-worst { color: var(--dn); font-weight: 700; }

/* ─── CURRENCY CONVERTER ─── */
.fxc { padding: 12px 16px; background: linear-gradient(90deg, rgba(34,193,195,0.06) 0%, rgba(0,0,0,0) 100%); border: 1px solid var(--border); border-left: 4px solid var(--cat-fx); border-radius: 10px; }
.fxc-input { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; flex-wrap: wrap; }
.fxc-input input { background: var(--bg-2); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 8px 12px; font-size: 16px; font-weight: 700; font-family: 'JetBrains Mono', monospace; width: 160px; }
.fxc-input input:focus { outline: none; border-color: var(--accent); }
.fxc-input select { background: var(--bg-2); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; font-size: 14px; font-weight: 700; font-family: inherit; cursor: pointer; }
.fxc-input select:focus { outline: none; border-color: var(--accent); }
.fxc-arrow { color: var(--muted); font-size: 18px; }
.fxc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 6px; }
.fxc-cell { display: flex; justify-content: space-between; align-items: baseline; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,255,255,0.02); }
.fxc-ccy { font-size: 10px; font-weight: 800; letter-spacing: 0.14em; color: var(--muted-2); text-transform: uppercase; }
.fxc-val { font-size: 14px; font-weight: 700; color: var(--text); }

/* ─── KEYBOARD SHORTCUTS HELP MODAL ─── */
.kbd-help { position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 200; display: flex; align-items: center; justify-content: center; padding: 20px; }
.kbd-card { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 22px 26px; min-width: 340px; max-width: 480px; box-shadow: 0 20px 60px rgba(0,0,0,0.6); }
.kbd-card h3 { margin: 0 0 14px; font-size: 13px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent); }
.kbd-card ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; }
.kbd-card li { display: flex; align-items: center; gap: 12px; padding: 4px 0; font-size: 12.5px; color: var(--muted-2); }
.kbd-card kbd { background: var(--bg-2); border: 1px solid var(--border); border-radius: 4px; padding: 2px 8px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--text); min-width: 40px; text-align: center; }

/* ─── PRICE TICK FLASH (up-tick green, down-tick red) ─── */
@keyframes tick-up-flash { 0% { background-color: rgba(46,204,113,0.40); } 100% { background-color: transparent; } }
@keyframes tick-dn-flash { 0% { background-color: rgba(255,77,79,0.40); } 100% { background-color: transparent; } }
.tick-up { animation: tick-up-flash 1.2s ease-out; border-radius: 3px; }
.tick-dn { animation: tick-dn-flash 1.2s ease-out; border-radius: 3px; }

/* ─── FAVORITES / WATCHLIST ─── */
.fav-bar { display: none; margin: 10px 0 16px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 10px; border-left: 4px solid var(--accent); background: linear-gradient(180deg, rgba(77,163,255,0.04) 0%, rgba(0,0,0,0) 100%); }
.fav-bar h3 { margin: 0 0 10px; font-size: 11px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: var(--accent); }
.fav-bar h3::before { content: "★ "; }
.fav-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 12px; }
.fav-tile { min-height: 120px; }
.fav-btn { background: transparent; border: 0; color: var(--muted); cursor: pointer; font-size: 14px; padding: 0 4px; font-family: inherit; line-height: 1; transition: color 120ms, transform 120ms; }
.fav-btn:hover { color: var(--accent); transform: scale(1.2); }
/* Watchlist tile wrapper with hover remove button */
.fav-tile-wrap { position: relative; }
.fav-del { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; background: rgba(10,13,20,0.85); border: 1px solid var(--border); color: var(--muted-2); font-size: 14px; cursor: pointer; opacity: 0; transition: opacity 150ms, color 120ms, border-color 120ms; z-index: 3; line-height: 1; font-family: inherit; padding: 0; }
.fav-tile-wrap:hover .fav-del { opacity: 1; }
.fav-del:hover { color: #ff8585; border-color: #ff5a5a; }
.fav-btn.on { color: #ffcd46; }
.fav-btn.on:hover { color: #ffd96b; }

/* Theme + currency toggle buttons */
.theme-toggle { background: transparent; border: 1px solid var(--border); color: var(--muted-2); font-size: 14px; width: 28px; height: 28px; border-radius: 50%; cursor: pointer; margin-top: 4px; line-height: 1; padding: 0; font-family: inherit; }
.theme-toggle:hover { color: var(--text); border-color: var(--accent); }
.ccy-toggle { background: transparent; border: 1px solid var(--border); color: var(--muted-2); font-size: 12px; min-width: 28px; height: 28px; padding: 0 8px; border-radius: 14px; cursor: pointer; margin-top: 4px; margin-right: 4px; line-height: 1; font-family: inherit; font-weight: 700; }
.ccy-toggle:hover { color: var(--text); border-color: var(--accent); }
/* Mobile: collapse the 5 toggles behind a ⋯ button */
/* Multi-timezone ticker next to the UTC clock */
.clock-tz { display: flex; gap: 8px; font-size: 9.5px; color: var(--muted); margin-top: 2px; font-variant-numeric: tabular-nums; }
.tz-item { display: inline-flex; gap: 3px; }
.tz-lbl { color: var(--muted-2); font-weight: 700; letter-spacing: 0.04em; }
.tz-v { color: var(--text); font-family: 'JetBrains Mono', monospace; }
@media (max-width: 640px) { .clock-tz { display: none; } }

/* Session indicator (US/EU/ASIA) in topbar */
.sessions { display: inline-flex; gap: 6px; margin-right: 10px; margin-top: 6px; }
.sess { display: inline-flex; align-items: center; gap: 3px; font-size: 9.5px; font-weight: 700; letter-spacing: 0.06em; color: var(--muted); padding: 2px 6px; border-radius: 10px; border: 1px solid var(--border); }
.sess-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); }
.sess.sess-open .sess-dot   { background: #5fd072; box-shadow: 0 0 4px rgba(95,208,114,0.6); }
.sess.sess-open             { color: #5fd072; border-color: rgba(95,208,114,0.3); }
.sess.sess-pre .sess-dot    { background: #ffb34f; }
.sess.sess-pre              { color: #ffb34f; border-color: rgba(255,179,79,0.3); }
.sess.sess-closed .sess-dot { background: var(--muted); opacity: 0.5; }
@media (max-width: 640px) { .sessions { display: none; } }

.top-menu-btn { display: none; }
.top-toggles { display: inline-flex; gap: 2px; }
@media (max-width: 820px) {
  .top-menu-btn { display: inline-flex; align-items: center; justify-content: center; }
  .top-toggles { display: none; position: absolute; top: 48px; right: 10px; flex-direction: column; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 6px; z-index: 100; box-shadow: 0 6px 20px rgba(0,0,0,0.45); }
  .top-toggles.open { display: flex; }
  .top-toggles button { margin: 2px 0; }
}
.cv { white-space: nowrap; }

/* Admin page */
.admin-wrap { padding: 14px 0 32px; }
.admin-head { margin: 4px 0 18px; }
.admin-head h2 { margin: 0 0 10px; font-size: 18px; }
.admin-stats { display: flex; gap: 8px; flex-wrap: wrap; }
.admin-stats .pill { font-size: 11px; padding: 3px 10px; border-radius: 12px; background: var(--panel-2); color: var(--muted-2); border: 1px solid var(--border); }
.admin-stats .pill b { color: var(--text); font-weight: 700; margin-left: 4px; }
.admin-stats .pill.ok  { border-color: rgba(95,208,114,0.4); color: #5fd072; }
.admin-stats .pill.warn{ border-color: rgba(255,179,79,0.4);  color: #ffb34f; }
.admin-stats .pill.bad { border-color: rgba(255,90,90,0.45);  color: #ff5a5a; }
.admin-stats .pill.neu { border-color: rgba(160,160,160,0.3); color: var(--muted); }
.admin-table { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-top: 8px; }
.admin-table th, .admin-table td { padding: 6px 10px; text-align: left; border-bottom: 1px solid var(--panel-2); }
.admin-table th { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; }
.admin-table td.num, .admin-table th.num { text-align: right; }
.adm-row.adm-fresh { color: var(--text); }
.adm-row.adm-stale { color: #d8b88a; }
.adm-row.adm-dead  { color: #ff8b8b; background: rgba(255,90,90,0.04); }
.adm-row.adm-never { color: var(--muted); }
.adm-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.adm-dot-fresh { background: #5fd072; }
.adm-dot-stale { background: #ffb34f; }
.adm-dot-dead  { background: #ff5a5a; }
.adm-dot-never { background: var(--muted); }
.adm-link { color: inherit; text-decoration: none; margin-right: 8px; font-weight: 600; }
.adm-link:hover { color: var(--accent); text-decoration: underline; }
.adm-fails { color: #ff8585; font-weight: 700; }
.adm-retry { margin-left: 6px; background: transparent; border: 1px solid var(--border); color: var(--muted); cursor: pointer; font-size: 10px; padding: 1px 6px; border-radius: 50%; width: 18px; height: 18px; line-height: 1; }
.adm-refresh-all { margin-left: 14px; font-size: 11px; padding: 4px 12px; background: var(--panel-2); border: 1px solid var(--accent); color: var(--accent-2); border-radius: 14px; cursor: pointer; font-family: inherit; font-weight: 600; vertical-align: middle; }
.adm-refresh-all:hover { background: rgba(77,163,255,0.14); }
.adm-refresh-all:disabled { opacity: 0.6; cursor: wait; }
.adm-retry:hover { color: var(--accent); border-color: var(--accent); }
.adm-retry:disabled { opacity: 0.5; cursor: wait; }
.adm-err { font-size: 10.5px; color: var(--muted); max-width: 280px; }
.adm-err-msg { display: block; color: #d0a9a9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.adm-backfill { margin-top: 10px; padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2); }
.adm-backfill.adm-bf-running { border-color: rgba(77,163,255,0.55); background: rgba(77,163,255,0.06); }
.adm-backfill.adm-bf-done { border-color: rgba(95,208,114,0.4); }
.adm-backfill.adm-bf-error { border-color: rgba(255,90,90,0.55); }
.adm-bf-head { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; font-size: 11.5px; }
.adm-bf-label { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: var(--muted); }
.adm-bf-state { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; padding: 2px 8px; border-radius: 10px; }
.adm-bf-state-running { background: rgba(77,163,255,0.18); color: var(--accent-2); }
.adm-bf-state-done { background: rgba(95,208,114,0.18); color: #5fd072; }
.adm-bf-state-error { background: rgba(255,90,90,0.18); color: #ff5a5a; }
.adm-bf-state-idle { background: var(--panel); color: var(--muted); }
.adm-bf-counts { color: var(--text); }
.adm-bf-current { color: var(--muted); font-size: 10.5px; margin-left: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 260px; }
.adm-bf-bar { margin-top: 6px; height: 5px; background: var(--panel); border-radius: 3px; overflow: hidden; }
.adm-bf-fill { display: block; height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-2)); transition: width 0.5s ease; }
.adm-bf-done .adm-bf-fill { background: #5fd072; }
.adm-bf-error .adm-bf-fill { background: #ff5a5a; }

/* Sector heatmap (treemap-style) */
.sh-map { display: flex; flex-direction: column; gap: 3px; border-radius: 6px; overflow: hidden; }
.sh-row { display: flex; gap: 3px; height: 64px; }
.sh-row:first-child { height: 88px; }
.sh-cell { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 4px 6px; text-decoration: none; border-radius: 4px; background: var(--panel-2); color: var(--text); transition: transform 120ms ease; position: relative; overflow: hidden; min-width: 0; }
.sh-cell:hover { transform: scale(1.015); z-index: 3; outline: 1px solid var(--accent); }
.sh-ticker { font-size: 13px; font-weight: 800; letter-spacing: 0.02em; }
.sh-label { font-size: 9.5px; color: var(--muted-2); text-transform: uppercase; letter-spacing: 0.04em; margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.sh-pct { font-size: 11px; font-weight: 700; margin-top: 2px; }
/* Intensity coloring — green up / red down, darker = flatter */
.sh-cell.up.sh-int-0   { background: rgba(46, 140, 70, 0.22); }
.sh-cell.up.sh-int-20  { background: rgba(46, 160, 80, 0.38); }
.sh-cell.up.sh-int-40  { background: rgba(46, 180, 90, 0.55); }
.sh-cell.up.sh-int-60  { background: rgba(46, 200, 100, 0.72); color: #072; }
.sh-cell.up.sh-int-80  { background: rgba(46, 210, 110, 0.88); color: #062; }
.sh-cell.up.sh-int-100 { background: rgba(46, 220, 120, 1.00); color: #052; }
.sh-cell.dn.sh-int-0   { background: rgba(180, 60, 60, 0.22); }
.sh-cell.dn.sh-int-20  { background: rgba(200, 55, 55, 0.38); }
.sh-cell.dn.sh-int-40  { background: rgba(220, 50, 50, 0.55); }
.sh-cell.dn.sh-int-60  { background: rgba(235, 50, 50, 0.72); color: #300; }
.sh-cell.dn.sh-int-80  { background: rgba(245, 55, 55, 0.88); color: #200; }
.sh-cell.dn.sh-int-100 { background: rgba(255, 60, 60, 1.00); color: #200; }
.sh-cell.up .sh-label, .sh-cell.dn .sh-label { opacity: 0.92; }
@media (max-width: 640px) {
  .sh-row { height: 48px; }
  .sh-row:first-child { height: 64px; }
  .sh-label { display: none; }
}

/* ─── DENSITY: compact mode ─── */
:root.density-compact .tile { padding: 6px 10px; }
:root.density-compact .tile-head { margin-bottom: 4px; padding-bottom: 4px; }
:root.density-compact .tile-head h3 { font-size: 11.5px; }
:root.density-compact .exec-section { margin-bottom: 12px; }
:root.density-compact .exec-section-label { font-size: 10px; margin-bottom: 4px; }
:root.density-compact .catnav { padding: 4px 6px; gap: 2px; }
:root.density-compact .catnav-item { padding: 2px 8px; font-size: 11px; }
:root.density-compact .grid { gap: 6px; }
:root.density-compact .hero { gap: 4px; }
:root.density-compact .hero-card { padding: 6px 8px; }
:root.density-compact .hc-price { font-size: 14px; }
:root.density-compact .metals-row { gap: 4px; }
:root.density-compact .metal-card { padding: 5px 7px; }
:root.density-compact .ribbon { padding: 2px 8px; font-size: 10px; }
:root.density-compact footer { padding: 6px 10px; }
:root.density-compact ul.list li { padding: 2px 0; font-size: 11.5px; }

/* Settings modal reuses .kbd-help styling, with category checkboxes */
.settings-cats { list-style: none; padding: 0; margin: 8px 0; max-height: 55vh; overflow-y: auto; }
.settings-cats li { padding: 4px 0; }
.settings-cats label { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 13px; }
.settings-cats input[type=checkbox] { accent-color: var(--accent); }
.settings-sub { margin: 14px 0 4px; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.settings-resets { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 4px; }
.reset-btn { font-family: inherit; font-size: 11px; padding: 4px 10px; background: var(--panel-2); color: var(--muted-2); border: 1px solid var(--border); border-radius: 4px; cursor: pointer; }
.reset-btn:hover { color: var(--text); border-color: var(--accent); }
.reset-btn.reset-all { border-color: rgba(255,90,90,0.3); color: #ff8585; }
.reset-btn.reset-all:hover { border-color: #ff5a5a; background: rgba(255,90,90,0.08); }

/* Command palette */
.cmdk { position: fixed; inset: 0; display: none; z-index: 200; }
.cmdk.open { display: block; }
.cmdk-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.55); backdrop-filter: blur(2px); }
.cmdk-panel { position: relative; margin: 10vh auto 0; width: min(640px, calc(100vw - 32px)); background: var(--panel); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 24px 60px rgba(0,0,0,0.55); overflow: hidden; }
#cmdk-input { width: 100%; padding: 14px 18px; font-size: 15px; background: var(--panel); border: 0; border-bottom: 1px solid var(--border); color: var(--text); outline: none; font-family: inherit; }
#cmdk-input::placeholder { color: var(--muted); }
.cmdk-results { list-style: none; padding: 4px 0; margin: 0; max-height: 52vh; overflow-y: auto; }
.cmdk-item { display: grid; grid-template-columns: 26px 1fr auto; gap: 10px; align-items: baseline; padding: 8px 16px; cursor: pointer; font-size: 13px; }
.cmdk-item.active { background: rgba(77,163,255,0.10); }
.cmdk-item:hover { background: rgba(77,163,255,0.06); }
.cmdk-ic { font-size: 14px; opacity: 0.9; }
.cmdk-lab { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-sub { color: var(--muted); font-size: 11px; font-family: 'JetBrains Mono', monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 240px; }
.cmdk-empty { padding: 18px; color: var(--muted); font-size: 12px; text-align: center; }
.cmdk-foot { display: flex; justify-content: flex-end; gap: 16px; padding: 8px 16px; border-top: 1px solid var(--border); background: var(--panel-2); font-size: 10.5px; color: var(--muted); }
.cmdk-foot kbd { background: var(--bg); border: 1px solid var(--border); padding: 0 5px; border-radius: 3px; margin-right: 3px; font-size: 10px; }

/* Brief archive bar */
.brief-archive-tag { font-size: 10.5px; padding: 2px 8px; background: var(--panel-2); color: var(--accent-2); border: 1px solid rgba(77,163,255,0.3); border-radius: 10px; letter-spacing: 0.06em; vertical-align: middle; font-weight: 600; font-family: 'JetBrains Mono', monospace; }
.brief-archive-bar { display: flex; gap: 4px; flex-wrap: wrap; align-items: center; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2); margin-bottom: 14px; font-size: 11px; }
.ba-label { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: var(--muted); margin-right: 6px; }
.ba-day { padding: 2px 8px; border-radius: 10px; color: var(--muted-2); text-decoration: none; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; }
.ba-day:hover { color: var(--text); background: rgba(255,255,255,0.04); }
.ba-day.ba-active { background: rgba(77,163,255,0.14); color: var(--accent-2); border: 1px solid rgba(77,163,255,0.35); padding: 1px 7px; }

/* Brief page — regime strip + narrative card grid */
.brief-regimes { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin-bottom: 20px; }
a.brief-reg { display: grid; grid-template-columns: auto auto 1fr; gap: 10px; align-items: baseline; padding: 10px 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2); text-decoration: none; color: inherit; transition: border-color 120ms, transform 120ms; border-left: 3px solid var(--muted); }
a.brief-reg:hover { border-color: var(--accent); transform: translateY(-1px); }
.brief-reg.rg-red          { border-left-color: #ff5a5a; }
.brief-reg.rg-orange       { border-left-color: #ffb34f; }
.brief-reg.rg-yellow       { border-left-color: #ffd96b; }
.brief-reg.rg-green        { border-left-color: #5fd072; }
.brief-reg.rg-bright-green { border-left-color: #7dff9a; }
.brief-reg-key   { font-size: 10px; color: var(--muted); letter-spacing: 0.12em; font-weight: 700; }
.brief-reg-score { font-size: 20px; font-weight: 800; color: var(--text); }
.brief-reg-label { font-size: 11px; color: var(--muted-2); text-transform: uppercase; letter-spacing: 0.06em; text-align: right; }

.brief-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 14px; }
.brief-grid-tile { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.brief-card { background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; transition: border-color 120ms; }
.brief-grid-tile .brief-card { padding: 10px 12px; }
.brief-card:hover { border-color: var(--border-2); }
.brief-card-head { display: flex; align-items: baseline; gap: 8px; border-bottom: 1px solid var(--panel-2); padding-bottom: 6px; }
.brief-card-icon { font-size: 14px; color: var(--accent); width: 18px; text-align: center; }
.brief-card-title { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text); text-decoration: none; }
a.brief-card-title:hover { color: var(--accent); }
.brief-card-tone { font-size: 9.5px; padding: 1px 7px; border-radius: 10px; background: var(--panel-2); color: var(--muted-2); letter-spacing: 0.05em; text-transform: uppercase; margin-left: auto; }
.brief-card-body { margin: 0; font-size: 13px; line-height: 1.55; color: var(--text); flex: 1; }
.brief-card-more { font-size: 10.5px; color: var(--muted); text-decoration: none; align-self: flex-end; margin-top: 2px; }
.brief-card-more:hover { color: var(--accent); }

/* Regime / mover / digest rows should behave like plain text even when wrapped in <a> */
a.rg-card, a.mv-row, a.digest-theme { color: inherit; text-decoration: none; display: block; cursor: pointer; }
a.anom-sym, a.anom-link { color: inherit; text-decoration: none; cursor: pointer; }
a.anom-sym:hover, a.anom-link:hover, a.mv-row:hover { color: var(--accent); }
a.sym-link { color: inherit; text-decoration: none; }
a.sym-link:hover { color: var(--accent); }
.cal-ext { font-size: 9px; color: var(--muted); margin-left: 2px; opacity: 0.6; }
a.sym-link:hover .cal-ext { opacity: 1; }
a.mv-row { padding: 2px 0; }
a.digest-theme { transition: transform 120ms; }
a.digest-theme:hover { transform: translateY(-1px); filter: brightness(1.12); }

/* Currency converter popover */
.ccy-popover { position: fixed; top: 58px; right: 16px; width: 280px; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 10px 32px rgba(0,0,0,0.55); z-index: 160; display: none; }
.ccy-popover.open { display: block; }
.ccy-popover-head { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; border-bottom: 1px solid var(--border); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }
.ccy-popover-close { background: transparent; border: 0; color: var(--muted); font-size: 18px; cursor: pointer; line-height: 1; padding: 0 4px; }
.ccy-popover-close:hover { color: var(--text); }
.ccy-popover-body { padding: 10px 12px; }
.ccy-popover-input { display: flex; gap: 6px; margin-bottom: 10px; }
#cpop-amount { flex: 1; padding: 6px 8px; background: var(--panel-2); border: 1px solid var(--border); border-radius: 4px; color: var(--text); font-family: inherit; font-size: 13px; }
#cpop-from { padding: 6px 8px; background: var(--panel-2); border: 1px solid var(--border); border-radius: 4px; color: var(--text); font-family: inherit; font-size: 12px; }
.ccy-popover-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; margin-bottom: 8px; }
.cpop-cell { display: flex; justify-content: space-between; padding: 4px 8px; background: var(--panel-2); border-radius: 4px; font-size: 12px; }
.cpop-ccy { color: var(--muted); font-size: 10px; font-weight: 700; }
.cpop-val { color: var(--text); }
@media (max-width: 640px) { .ccy-popover { left: 8px; right: 8px; width: auto; } }

/* Collapsible dashboard sections */
[data-collapsible] { user-select: none; display: flex; align-items: center; gap: 6px; transition: color 120ms; }
[data-collapsible]:hover { color: var(--text); }
.sec-share { margin-left: 6px; background: transparent; border: 0; color: var(--muted); cursor: pointer; font-size: 10px; padding: 0 4px; opacity: 0; transition: opacity 120ms, color 120ms; }
[data-collapsible]:hover .sec-share { opacity: 0.7; }
.sec-share:hover { color: var(--accent); opacity: 1; }

/* Toast */
#lazy-toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(20px); background: var(--panel); border: 1px solid var(--border); color: var(--text); padding: 8px 16px; border-radius: 20px; font-size: 12px; opacity: 0; pointer-events: none; transition: opacity 180ms, transform 180ms; z-index: 210; box-shadow: 0 6px 20px rgba(0,0,0,0.45); }
#lazy-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.coll-arrow { font-size: 10px; color: var(--muted); transition: transform 150ms; display: inline-block; }
.sec-collapsed [data-collapsible] .coll-arrow { transform: rotate(-90deg); }
.sec-collapsed > *:not(.exec-section-label):not(script) { display: none !important; }
.sec-collapsed [data-collapsible] { opacity: 0.6; }
.sec-flash { animation: secflash 1.6s ease-out; }
@keyframes secflash {
  0%   { box-shadow: 0 0 0 0 rgba(77,163,255,0.55); background: rgba(77,163,255,0.06); }
  100% { box-shadow: 0 0 0 0 rgba(77,163,255,0); background: transparent; }
}

/* Category page — compact meta bar under the header */
.cat-meta-bar { display: flex; align-items: center; gap: 14px; padding: 6px 0 14px; border-bottom: 1px solid var(--panel-2); margin-bottom: 16px; flex-wrap: wrap; font-size: 11.5px; }
.cm-stat { color: var(--muted-2); }
.cm-stat strong { color: var(--text); margin: 0 3px; font-weight: 700; }
.cm-stat.cm-avg.up strong { color: #5fd072; }
.cm-stat.cm-avg.dn strong { color: #ff5a5a; }
a.cm-stat, a.cm-quick { text-decoration: none; color: var(--muted-2); }
a.cm-stat:hover, a.cm-quick:hover { color: var(--accent); }
.cm-regime { padding: 2px 9px; border-radius: 11px; border: 1px solid var(--border); }
.cm-regime.rg-red          { border-color: rgba(255,90,90,0.45);  color: #ff8585; }
.cm-regime.rg-orange       { border-color: rgba(255,179,79,0.45); color: #ffb34f; }
.cm-regime.rg-yellow       { border-color: rgba(255,217,107,0.4); color: #ffd96b; }
.cm-regime.rg-green        { border-color: rgba(95,208,114,0.45); color: #5fd072; }
.cm-regime.rg-bright-green { border-color: rgba(125,255,154,0.45); color: #7dff9a; }
.cm-spacer { flex: 1; }
.cm-quick { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--accent); }
.cat-topic-top { margin-bottom: 16px; }

/* Dashboard upcoming-events strip */
.dash-events { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 6px 14px; border: 1px solid var(--border); border-radius: 6px; background: rgba(77,163,255,0.03); border-left: 3px solid var(--accent); margin: 10px 0 6px; font-size: 11.5px; }
.dash-events-label { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: var(--accent); margin-right: 4px; white-space: nowrap; }
.de-item { display: inline-flex; align-items: baseline; gap: 5px; padding: 2px 8px; border-radius: 12px; background: var(--panel-2); text-decoration: none; color: var(--muted-2); transition: color 120ms, background 120ms; max-width: 340px; }
.de-item:hover { color: var(--text); background: rgba(77,163,255,0.08); }
.de-kind { font-size: 9px; font-weight: 800; letter-spacing: 0.1em; color: var(--muted); }
.de-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.de-eta { font-size: 10px; color: var(--text); font-weight: 700; }
.de-red .de-kind, .de-red .de-eta { color: #ff8585; }
.de-orange .de-kind, .de-orange .de-eta { color: #ffb34f; }
.de-more { margin-left: auto; font-size: 10px; color: var(--muted); text-decoration: none; }
.de-more:hover { color: var(--accent); }

/* Dashboard trending-words strip (one-row horizontal) */
.dash-cloud { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; padding: 6px 14px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,179,79,0.03); border-left: 3px solid #ffb34f; margin: 10px 0 14px; }
.dash-cloud-label { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: #ffb34f; margin-right: 6px; white-space: nowrap; }

/* Word cloud (news page) */
.word-cloud-head { display: flex; align-items: center; gap: 10px; margin: 4px 0 6px; font-size: 10.5px; }
.word-cloud { display: flex; flex-wrap: wrap; gap: 6px 12px; padding: 12px 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2); margin-bottom: 18px; line-height: 1.3; align-items: baseline; }
.wc-word { color: var(--muted-2); text-decoration: none; font-weight: 600; letter-spacing: 0.01em; transition: color 120ms, transform 120ms; }
.wc-word:hover { color: var(--accent); transform: translateY(-1px); }
.wc-word.wc-active { color: var(--accent-2); text-shadow: 0 0 8px rgba(77,163,255,0.35); }
.wc-clear { background: rgba(77,163,255,0.14); color: var(--accent-2); border: 1px solid rgba(77,163,255,0.35); font-size: 10px; padding: 2px 8px; border-radius: 10px; cursor: pointer; font-family: inherit; }
.wc-clear:hover { background: rgba(77,163,255,0.22); }
.topic-more { margin-top: 8px; }
.topic-more summary { cursor: pointer; color: var(--muted); font-size: 11px; list-style: none; }
.topic-more summary::-webkit-details-marker { display: none; }
.topic-more summary:hover { color: var(--accent); }

/* "What's Moving" — unified 3-column pulse (movers / anomalies / breaking) */
.pulse-grid { display: grid; grid-template-columns: 1.1fr 1fr 1.2fr; gap: 12px; }
.pulse-col { min-height: 260px; }
.pulse-col .tile-head h3 { font-size: 12.5px; }
@media (max-width: 1100px) { .pulse-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px)  { .pulse-grid { grid-template-columns: 1fr; } }

/* ─── MARKET HEATWALL — unified cross-asset heatmap ─── */
.hw-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 6px; }
.hw-col { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.hw-col-head { display: flex; justify-content: space-between; align-items: baseline; padding: 2px 4px 4px; border-bottom: 1px solid var(--border); margin-bottom: 3px; }
.hw-col-label { font-size: 9px; font-weight: 700; letter-spacing: 0.1em; color: var(--muted); text-transform: uppercase; }
.hw-col-avg { font-size: 10px; font-weight: 700; }
.hw-col-avg.up { color: #5fd072; }
.hw-col-avg.dn { color: #ff5a5a; }
.hw-cells { display: flex; flex-direction: column; gap: 2px; }
.hw-cell { display: flex; justify-content: space-between; align-items: center; padding: 4px 6px; border-radius: 3px; text-decoration: none; color: var(--text); font-size: 10.5px; line-height: 1.2; background: var(--panel-2); transition: transform 80ms; min-width: 0; }
.hw-cell:hover { transform: scale(1.02); outline: 1px solid var(--accent); z-index: 2; }
.hw-ticker { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.hw-pct { font-weight: 700; font-size: 9.5px; white-space: nowrap; }
/* Intensity coloring — 6 tiers each side */
.hw-cell.up.hw-int-0   { background: rgba(46,140,70,0.18); }
.hw-cell.up.hw-int-20  { background: rgba(46,170,80,0.38); }
.hw-cell.up.hw-int-40  { background: rgba(46,190,90,0.58); }
.hw-cell.up.hw-int-60  { background: rgba(46,205,100,0.78); color: #042; }
.hw-cell.up.hw-int-80  { background: rgba(46,215,110,0.95); color: #032; }
.hw-cell.up.hw-int-100 { background: rgba(46,225,120,1);   color: #021; }
.hw-cell.dn.hw-int-0   { background: rgba(180,60,60,0.18); }
.hw-cell.dn.hw-int-20  { background: rgba(200,55,55,0.38); }
.hw-cell.dn.hw-int-40  { background: rgba(220,50,50,0.58); }
.hw-cell.dn.hw-int-60  { background: rgba(235,50,50,0.78); color: #300; }
.hw-cell.dn.hw-int-80  { background: rgba(245,55,55,0.95); color: #200; }
.hw-cell.dn.hw-int-100 { background: rgba(255,60,60,1);    color: #200; }
@media (max-width: 1400px) { .hw-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 820px)  { .hw-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px)  { .hw-grid { grid-template-columns: 1fr; } }

/* Unified F&G strip: aggregate + 5 sub-regimes in one row */
.fg-strip { display: grid; grid-template-columns: 1.25fr repeat(5, 1fr); gap: 10px; margin: 12px 0 20px; }
a.fg-cell { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); text-decoration: none; color: inherit; transition: border-color 120ms, transform 120ms; border-left: 3px solid var(--muted); position: relative; min-width: 0; }
a.fg-cell:hover { border-color: var(--accent); transform: translateY(-1px); }
a.fg-cell.fg-red          { border-left-color: #ff5a5a; }
a.fg-cell.fg-orange       { border-left-color: #ffb34f; }
a.fg-cell.fg-yellow       { border-left-color: #ffd96b; }
a.fg-cell.fg-green        { border-left-color: #5fd072; }
a.fg-cell.fg-bright-green { border-left-color: #7dff9a; }
.fg-cell .fg-kicker { font-size: 9.5px; letter-spacing: 0.12em; font-weight: 700; color: var(--muted); }
.fg-cell .fg-score  { font-size: 24px; font-weight: 800; line-height: 1.1; color: var(--text); }
.fg-cell .fg-state  { font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Gradient fear→greed bar (red → yellow → green) so the position is readable even at a glance */
.fg-cell .fg-bar { position: relative; height: 6px; background: linear-gradient(90deg, #ff5a5a 0%, #ffb34f 30%, #ffd96b 50%, #5fd072 75%, #7dff9a 100%); border-radius: 3px; margin-top: 6px; opacity: 0.55; }
.fg-cell .fg-tick { position: absolute; top: -4px; width: 4px; height: 14px; background: var(--text); border: 2px solid var(--bg); border-radius: 2px; transform: translateX(-2px); box-shadow: 0 0 4px rgba(0,0,0,0.6); }
a.fg-cell:hover .fg-bar { opacity: 0.85; }
.fg-cell .fg-spark { margin-top: 2px; opacity: 0.8; }
.fg-cell .fg-spark svg { width: 100%; }
.fg-cell .fg-trend { position: absolute; top: 8px; right: 10px; font-size: 10px; font-weight: 700; }
.fg-cell .fg-trend.up { color: #5fd072; }
.fg-cell .fg-trend.dn { color: #ff5a5a; }
.fg-cell.fg-cell-agg { background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); }
.fg-cell.fg-cell-agg .fg-score { font-size: 32px; }
.fg-cell.fg-cell-agg .fg-kicker { color: var(--accent); letter-spacing: 0.16em; }
@media (max-width: 1100px) { .fg-strip { grid-template-columns: 1fr 1fr 1fr; } }
@media (max-width: 640px)  { .fg-strip { grid-template-columns: 1fr 1fr; gap: 6px; } .fg-cell.fg-cell-agg { grid-column: 1 / -1; } .fg-cell .fg-spark { display: none; } }

/* Move narrative to top — bit more prominent */
.narr-top { margin-top: 6px; margin-bottom: 14px; }
.fg-strip-label { margin: 4px 0 6px; }

.news-age { margin-left: 8px; font-size: 10px; letter-spacing: 0.02em; }

/* Asset-page related-assets strip */
.asset-related { margin-top: 22px; }
.asset-related-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.asset-related-card { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2); text-decoration: none; color: inherit; transition: transform 120ms, border-color 120ms; border-left: 3px solid var(--muted); }
.asset-related-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.asset-related-card.up { border-left-color: #5fd072; }
.asset-related-card.dn { border-left-color: #ff5a5a; }
.ar-ticker { font-size: 12px; font-weight: 700; color: var(--text); }
.ar-label { font-size: 10px; color: var(--muted-2); text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ar-head { display: flex; justify-content: space-between; align-items: baseline; }
.ar-price { font-size: 13px; font-weight: 600; margin-top: 2px; }
.ar-chg { font-size: 11px; font-weight: 700; }
.ar-spark { margin-top: 4px; line-height: 0; }
.ar-spark svg { width: 100%; height: 22px; }
.asset-related-card.up .ar-chg { color: #5fd072; }
.asset-related-card.dn .ar-chg { color: #ff5a5a; }

/* Asset page actions (copy link / back) */
.asset-actions { display: flex; gap: 10px; align-items: center; margin-left: auto; }
.asset-share { background: var(--panel-2); border: 1px solid var(--border); color: var(--muted-2); font-size: 11px; padding: 4px 10px; border-radius: 14px; cursor: pointer; font-family: inherit; }
.asset-share:hover { color: var(--text); border-color: var(--accent); }

/* Near-extreme badges shown inline in the 52w stat label */
.near-ext { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; font-size: 9px; font-weight: 800; letter-spacing: 0.1em; vertical-align: middle; }
.near-ext.near-hi { background: rgba(95,208,114,0.2); color: #5fd072; }
.near-ext.near-lo { background: rgba(255,90,90,0.2); color: #ff8585; }

/* Asset-page: intraday day range bar (compact) */
.asset-day-range { padding-top: 4px; min-width: 160px; }
.dr-bar { position: relative; height: 5px; background: var(--panel-2); border-radius: 3px; }
.dr-fill { position: absolute; left: 0; top: 0; height: 100%; background: rgba(77,163,255,0.3); border-radius: 3px; }
.dr-tick { position: absolute; top: -2px; width: 3px; height: 9px; background: var(--accent); border-radius: 1px; transform: translateX(-1.5px); }
.dr-ends { display: flex; justify-content: space-between; font-size: 10px; color: var(--muted); margin-top: 3px; }
.dr-lo { color: #ff8585; }
.dr-hi { color: #5fd072; }

/* Asset-page: 52-week range bar */
.asset-stat-range { min-width: 260px; }
.asset-52w { padding-top: 4px; }
.a52w-bar { position: relative; height: 6px; background: var(--panel-2); border-radius: 3px; overflow: visible; }
.a52w-fill { position: absolute; left: 0; top: 0; height: 100%; background: linear-gradient(90deg, #ff5a5a 0%, #ffb34f 35%, #5fd072 75%); border-radius: 3px; opacity: 0.35; }
.a52w-tick { position: absolute; top: -3px; width: 4px; height: 12px; background: var(--text); border: 2px solid var(--bg); border-radius: 2px; transform: translateX(-2px); box-shadow: 0 0 4px rgba(0,0,0,0.6); }
.a52w-ends { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--muted); margin-top: 5px; }
.a52w-lo { color: #ff8585; }
.a52w-hi { color: #5fd072; }

/* Asset-page: RSI color coding */
.rsi-overbought { color: #ff8585 !important; }
.rsi-oversold   { color: #5fd072 !important; }
.rsi-neutral    { color: var(--muted-2); }
.rsi-overbought .asset-stat-unit { color: #ff5a5a; }
.rsi-oversold   .asset-stat-unit { color: #5fd072; }

/* Asset-page: compare-series dropdown */
.asset-cmp-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--muted-2); margin-left: 14px; }
.asset-cmp-toggle select { background: var(--panel-2); border: 1px solid var(--border); border-radius: 4px; color: var(--text); font-family: inherit; font-size: 11px; padding: 3px 6px; cursor: pointer; }
.asset-cmp-toggle select:hover { border-color: var(--accent); }
.asset-cmp-toggle .muted-note { font-size: 10px; color: var(--muted); }
.asset-chart-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

/* 404 page */
.err-page { display: grid; grid-template-columns: 5px 1fr; gap: 20px; padding: 60px 16px 40px; max-width: 720px; margin: 0 auto; }
.err-rule { border-radius: 3px; background: var(--cat-news); width: 5px; }
.err-glyph { font-family: 'JetBrains Mono', monospace; font-size: 72px; font-weight: 800; color: var(--muted-2); letter-spacing: -0.03em; line-height: 1; margin-bottom: 10px; }
.err-body h1 { margin: 0 0 10px; font-size: 24px; letter-spacing: -0.01em; }
.err-sub { color: var(--muted-2); font-size: 14px; line-height: 1.5; margin: 0 0 18px; }
.err-jumps { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.err-jumps a { padding: 6px 14px; border: 1px solid var(--border); border-radius: 18px; color: var(--text); text-decoration: none; font-size: 12px; background: var(--panel-2); transition: border-color 120ms, color 120ms; }
.err-jumps a:hover { border-color: var(--accent); color: var(--accent); }

/* Top loading progress bar (HTMX requests) */
.htmx-bar { position: fixed; top: 0; left: 0; height: 2px; width: 0; background: linear-gradient(90deg, var(--accent), #7dff9a); z-index: 1000; pointer-events: none; opacity: 0; transition: width 650ms ease-out, opacity 180ms; box-shadow: 0 0 8px rgba(77,163,255,0.6); }
.htmx-bar.show { opacity: 1; width: 70%; }
.htmx-bar.done  { width: 100%; opacity: 0; transition: width 200ms ease-out, opacity 250ms 80ms; }

/* Scroll-spy minimap (right edge, page-section index) */
.scrollspy { position: fixed; top: 96px; right: 10px; max-height: calc(100vh - 140px); display: flex; flex-direction: column; gap: 4px; z-index: 80; padding: 8px 6px; background: rgba(15, 20, 32, 0.78); backdrop-filter: blur(6px); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 4px 14px rgba(0,0,0,0.35); overflow-y: auto; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; }
.scrollspy::-webkit-scrollbar { width: 4px; }
.scrollspy::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.18); border-radius: 2px; }
.scrollspy::-webkit-scrollbar-track { background: transparent; }
.ss-dot { display: flex; align-items: center; gap: 8px; text-decoration: none; padding: 3px 6px; border-radius: 4px; color: var(--muted-2); justify-content: flex-end; transition: color 120ms, background 120ms; flex: 0 0 auto; }
.ss-bullet { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-2); opacity: 0.7; transition: background 120ms, transform 120ms; border: 1px solid var(--bg); flex-shrink: 0; }
.ss-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; opacity: 0; max-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; transition: opacity 120ms, max-width 180ms, color 120ms; }
.scrollspy:hover .ss-label, .ss-dot.active .ss-label { opacity: 1; max-width: 140px; }
.ss-dot:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.ss-dot:hover .ss-label { opacity: 1; }
.ss-dot:hover .ss-bullet { transform: scale(1.25); }
.ss-dot.active .ss-bullet { background: var(--accent); opacity: 1; transform: scale(1.35); box-shadow: 0 0 6px rgba(77,163,255,0.5); }
.ss-dot.active { color: var(--text); }
.ss-dot.active .ss-label { opacity: 1; color: var(--accent-2); }
@media (max-width: 900px) { .scrollspy { display: none; } }

/* Jump-to-top floating button */
.j2t { position: fixed; right: 16px; bottom: 20px; width: 38px; height: 38px; border-radius: 50%; background: var(--panel); border: 1px solid var(--border); color: var(--muted-2); font-size: 16px; cursor: pointer; opacity: 0; pointer-events: none; transition: opacity 180ms, color 120ms, transform 120ms; z-index: 90; box-shadow: 0 4px 12px rgba(0,0,0,0.4); }
.j2t.show { opacity: 1; pointer-events: auto; }
.j2t:hover { color: var(--text); border-color: var(--accent); transform: translateY(-2px); }

/* Heatwall hover popover */
.hw-pop { position: absolute; z-index: 160; width: 180px; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; box-shadow: 0 8px 24px rgba(0,0,0,0.5); opacity: 0; pointer-events: none; transform: translateY(-4px); transition: opacity 120ms, transform 120ms; font-size: 11.5px; }
.hw-pop.show { opacity: 1; transform: translateY(0); }
.hw-pop-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2px; }
.hw-pop-tick { font-weight: 800; font-size: 13px; letter-spacing: 0.02em; }
.hw-pop-pct { font-weight: 700; font-size: 11px; }
.hw-pop-pct.up { color: #5fd072; }
.hw-pop-pct.dn { color: #ff8585; }
.hw-pop-name { color: var(--muted-2); font-size: 10px; letter-spacing: 0.04em; text-transform: uppercase; margin-bottom: 4px; }
.hw-pop-price { color: var(--text); font-weight: 700; font-size: 14px; }
.hw-pop-range { margin-top: 6px; }
.hw-pop-bar { position: relative; height: 3px; background: var(--panel-2); border-radius: 2px; }
.hw-pop-bar > span { position: absolute; top: -2px; width: 3px; height: 7px; background: var(--accent); border-radius: 1px; transform: translateX(-1.5px); }
.hw-pop-ends { display: flex; justify-content: space-between; font-size: 9.5px; color: var(--muted); margin-top: 3px; }

/* Heatwall · extreme move flag */
.hw-cell { position: relative; }
.hw-flag { position: absolute; top: 1px; right: 3px; font-size: 9px; font-weight: 800; width: 10px; height: 10px; line-height: 10px; text-align: center; border-radius: 50%; background: var(--text); color: var(--bg); opacity: 0.9; }
.hw-cell.hw-extreme { outline: 1px solid rgba(255,255,255,0.25); }

/* News time-filter + calendar event-type filter buttons — shared style */
.nt-btn, .cf-btn, .ci-btn { font-family: inherit; font-size: 10.5px; padding: 3px 10px; background: transparent; color: var(--muted-2); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; letter-spacing: 0.04em; }
.nt-btn:hover, .cf-btn:hover, .ci-btn:hover { color: var(--text); border-color: var(--border-2); }
.nt-btn.active, .cf-btn.active, .ci-btn.active { background: rgba(77,163,255,0.14); color: var(--accent-2); border-color: rgba(77,163,255,0.35); }

/* Admin · infra stats */
.admin-infra { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.admin-infra .pill { border-color: var(--border); }

/* Admin · alert history */
.admin-alerts { margin-top: 24px; }
.admin-alerts h3 { font-size: 14px; margin: 0 0 10px; color: var(--muted); letter-spacing: 0.08em; text-transform: uppercase; }
ul.alert-history { list-style: none; padding: 0; margin: 0; }
.ah-item { display: grid; grid-template-columns: 70px 70px 1fr; gap: 12px; align-items: baseline; padding: 6px 8px; border-bottom: 1px solid var(--panel-2); font-size: 12px; }
.ah-ts { color: var(--muted); font-size: 11px; }
.ah-level { font-size: 9.5px; font-weight: 800; letter-spacing: 0.1em; padding: 1px 6px; border-radius: 3px; text-align: center; }
.ah-level-red    { background: rgba(255,90,90,0.18); color: #ff8585; }
.ah-level-orange { background: rgba(255,179,79,0.18); color: #ffb34f; }
.ah-level-green  { background: rgba(95,208,114,0.18); color: #5fd072; }
.ah-rule { color: var(--text); text-decoration: none; }
.ah-rule:hover { color: var(--accent); }

/* News-impact markers on asset chart */
.asset-markers { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,180,64,0.03); }
.asset-markers-head { font-size: 10.5px; color: #ffb34f; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; margin-bottom: 6px; }
.asset-markers ul { list-style: none; padding: 0; margin: 0; }
.asset-markers li { display: grid; grid-template-columns: 90px 80px 1fr 150px; gap: 10px; align-items: baseline; padding: 4px 0; font-size: 12px; border-bottom: 1px dotted var(--panel-2); }
.am-mvs { text-align: right; font-size: 10.5px; letter-spacing: 0.02em; display: flex; gap: 6px; justify-content: flex-end; }
.am-mv { padding: 1px 5px; border-radius: 3px; background: var(--panel-2); font-weight: 700; }
.am-mv.up { color: #5fd072; background: rgba(95,208,114,0.1); }
.am-mv.dn { color: #ff8585; background: rgba(255,90,90,0.1); }
.am-mv-na { color: var(--muted); opacity: 0.4; }
@media (max-width: 800px) { .asset-markers li { grid-template-columns: 70px 1fr; } .am-src, .am-mvs { display: none; } }
.asset-markers li:last-child { border-bottom: none; }
.am-ts { color: var(--muted); font-size: 10.5px; }
.am-src { color: var(--muted-2); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
.asset-markers a { color: var(--text); text-decoration: none; }
.asset-markers a:hover { color: var(--accent); text-decoration: underline; }

/* Aggregate F&G banner */
.fg-banner {
  display: grid; grid-template-columns: 1.2fr 1fr; gap: 14px 28px;
  padding: 18px 24px; border-radius: 10px; border: 1px solid var(--border);
  background: linear-gradient(135deg, #10151e 0%, #0a0e15 100%);
  border-left: 4px solid var(--muted);
  align-items: center;
}
.fg-banner-left { flex-wrap: wrap; }
.fg-banner-components { justify-content: flex-end; align-content: center; }
.fg-banner.fg-red { border-left-color: #ff4d4f; background: linear-gradient(135deg, rgba(255,77,79,0.09) 0%, #0a0e15 100%); }
.fg-banner.fg-orange { border-left-color: #ff9a3c; background: linear-gradient(135deg, rgba(255,154,60,0.07) 0%, #0a0e15 100%); }
.fg-banner.fg-yellow { border-left-color: #f5b83d; background: linear-gradient(135deg, rgba(245,184,61,0.06) 0%, #0a0e15 100%); }
.fg-banner.fg-green { border-left-color: #2ecc71; background: linear-gradient(135deg, rgba(46,204,113,0.06) 0%, #0a0e15 100%); }
.fg-banner.fg-bright-green { border-left-color: #4ade80; background: linear-gradient(135deg, rgba(74,222,128,0.08) 0%, #0a0e15 100%); }
.fg-banner-left { display: flex; align-items: baseline; gap: 14px; }
.fg-banner-kicker { font-size: 10px; font-weight: 800; letter-spacing: 0.2em; color: var(--muted); text-transform: uppercase; }
.fg-banner-score { font-size: 62px; font-weight: 900; letter-spacing: -0.03em; line-height: 1; }
.fg-banner.fg-red .fg-banner-score { color: #ff4d4f; }
.fg-banner.fg-orange .fg-banner-score { color: #ff9a3c; }
.fg-banner.fg-yellow .fg-banner-score { color: #f5b83d; }
.fg-banner.fg-green .fg-banner-score { color: #2ecc71; }
.fg-banner.fg-bright-green .fg-banner-score { color: #4ade80; }
.fg-banner-state { font-size: 14px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.fg-banner.fg-red .fg-banner-state { color: #ff9a9a; }
.fg-banner.fg-orange .fg-banner-state { color: #ffc57a; }
.fg-banner.fg-yellow .fg-banner-state { color: #fde68a; }
.fg-banner.fg-green .fg-banner-state { color: #8fd3b0; }
.fg-banner.fg-bright-green .fg-banner-state { color: #5cf06c; }
.fg-banner-trend { font-size: 13px; font-weight: 700; padding: 3px 8px; border-radius: 4px; }
.fg-banner-trend.up { color: var(--up); background: rgba(46,204,113,0.12); }
.fg-banner-trend.dn { color: var(--dn); background: rgba(255,77,79,0.12); }
.fg-banner-components { display: flex; flex-wrap: wrap; gap: 6px; }
.fg-banner-comp { display: inline-flex; align-items: baseline; gap: 4px; padding: 3px 8px; border-radius: 4px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.05); font-size: 11px; }
.fg-banner-comp-name { color: var(--muted-2); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; font-size: 10px; }
.fg-banner-comp-score { font-weight: 800; }
.fg-banner-bar { grid-column: 1 / 2; }
.fg-banner-spark { grid-column: 2 / 3; min-width: 0; }
.fg-banner-spark svg { width: 100%; height: 44px; display: block; }
@media (max-width: 1100px) {
  .fg-banner { grid-template-columns: 1fr; }
  .fg-banner-bar, .fg-banner-spark, .fg-banner-components { grid-column: 1 / -1; }
  .fg-banner-components { justify-content: flex-start; }
}

/* Multi-regime strip */
.regimes-strip { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
@media (max-width: 1400px) { .regimes-strip { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px)  { .regimes-strip { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px)  { .regimes-strip { grid-template-columns: 1fr; } }
.rg-card {
  background: linear-gradient(180deg, #141a24 0%, #0a0e15 100%);
  border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px 14px;
  display: flex; flex-direction: column; gap: 8px;
  border-left: 4px solid var(--muted);
  transition: transform 150ms, box-shadow 150ms;
}
.rg-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,0.5); }
.rg-red         { border-left-color: #ff4d4f; }
.rg-orange      { border-left-color: #ff9a3c; }
.rg-yellow      { border-left-color: #f5b83d; }
.rg-green       { border-left-color: #2ecc71; }
.rg-bright-green { border-left-color: #4ade80; }
.rg-grey        { border-left-color: var(--muted); opacity: 0.6; }
.rg-head { display: flex; justify-content: space-between; align-items: baseline; }
.rg-kicker { font-size: 9.5px; font-weight: 800; letter-spacing: 0.18em; color: var(--muted); }
.rg-state { font-size: 10.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.rg-red .rg-state         { color: #ff9a9a; }
.rg-orange .rg-state      { color: #ffc57a; }
.rg-yellow .rg-state      { color: #fde68a; }
.rg-green .rg-state       { color: #8fd3b0; }
.rg-bright-green .rg-state { color: #5cf06c; }
.rg-body { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; }
.rg-score { font-size: 42px; font-weight: 900; letter-spacing: -0.03em; line-height: 1; }
.rg-red .rg-score         { color: #ff4d4f; }
.rg-orange .rg-score      { color: #ff9a3c; }
.rg-yellow .rg-score      { color: #f5b83d; }
.rg-green .rg-score       { color: #2ecc71; }
.rg-bright-green .rg-score { color: #4ade80; }
.rg-spark svg { width: 100%; height: 30px; display: block; }
.rg-bar { position: relative; height: 7px; border-radius: 4px; background: linear-gradient(90deg, #ff4d4f 0%, #ff4d4f 20%, #ff9a3c 20%, #ff9a3c 40%, #f5b83d 40%, #f5b83d 60%, #95d96d 60%, #95d96d 80%, #2ecc71 80%, #2ecc71 100%); margin-top: 4px; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.3); }
.rg-tick { position: absolute; top: -4px; width: 4px; height: 15px; background: #fff; border: 1px solid #000; transform: translateX(-50%); border-radius: 2px; box-shadow: 0 0 10px rgba(255,255,255,0.5); }
.rg-zones { display: grid; grid-template-columns: repeat(5, 1fr); gap: 3px; margin: 6px 0 2px; font-size: 9px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
.rg-zone { text-align: center; padding: 3px 0; border-radius: 3px; background: rgba(255,255,255,0.025); font-weight: 600; }
.rg-zone.active { color: #fff; background: linear-gradient(180deg, rgba(77,163,255,0.35) 0%, rgba(77,163,255,0.18) 100%); box-shadow: 0 0 0 1px rgba(77,163,255,0.55) inset, 0 0 10px rgba(77,163,255,0.3); font-weight: 900; letter-spacing: 0.08em; }
.rg-desc { font-size: 11px; line-height: 1.45; color: var(--muted-2); padding: 4px 0; margin: 2px 0 4px; font-style: italic; min-height: 30px; }
.rg-components { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.rg-comp { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06); padding: 2px 6px; border-radius: 3px; font-size: 10px; white-space: nowrap; }
.rg-comp-name { color: var(--muted); margin-right: 4px; letter-spacing: 0.04em; }
.rg-comp-score { font-weight: 700; color: var(--text); }

/* full-width narrative */
.narr-full { padding: 8px 14px; background: linear-gradient(135deg, rgba(77,163,255,0.06) 0%, rgba(255,107,214,0.03) 100%); border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: 8px; }

.anom-strip { border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; background: rgba(255,255,255,0.015); }
.anom-strip .anom-inline { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 4px 14px; }

/* ─── EXEC (legacy — kept for backward compat but unused after redesign) ─── */
.exec-legacy { display: flex; flex-direction: column; gap: 10px; padding: 8px 0 4px; }
.exec-top-row { display: grid; grid-template-columns: 1.1fr 1fr; gap: 10px; }
@media (max-width: 1100px) { .exec-top-row { grid-template-columns: 1fr; } }
.tile.exec-regime { padding: 12px 14px; background: linear-gradient(180deg, #121821 0%, #0c1016 100%); }
.exec-regime-flex { display: grid; grid-template-columns: 130px 1fr; gap: 14px; align-items: center; }
.exec-regime-left .regime-label { font-size: 9px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.16em; font-weight: 700; }
.exec-regime-left .regime-score { font-size: 40px; font-weight: 800; letter-spacing: -0.02em; line-height: 1; margin: 4px 0 2px; }
.exec-regime-left .regime-state { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted-2); }
.regime-trend-wrap { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.regime-trend-label { font-size: 9.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.12em; font-weight: 600; white-space: nowrap; }
.regime-trend-wrap svg { flex: 1; min-width: 80px; }
.tile.exec-regime.regime-red   .regime-state { color: #ff9a9a; }
.tile.exec-regime.regime-orange .regime-state { color: #ffc57a; }
.tile.exec-regime.regime-yellow .regime-state { color: #fde68a; }
.tile.exec-regime.regime-green  .regime-state { color: #8fd3b0; }
.tile.exec-regime.regime-bright-green .regime-state { color: #5cf06c; }
.tile.exec-regime .regime-scale { margin-top: 0; }
.tile.exec-regime .regime-bar { height: 10px; border-radius: 5px; }
.tile.exec-regime .regime-tick { top: -3px; height: 16px; }
.exec-regime-components { display: flex; flex-wrap: wrap; gap: 6px 10px; margin-top: 10px; font-size: 11.5px; }
.reg-comp { background: rgba(255,255,255,0.04); border: 1px solid var(--border); padding: 3px 8px; border-radius: 4px; }
.reg-comp-name { color: var(--muted-2); font-size: 10.5px; letter-spacing: 0.04em; margin-right: 4px; text-transform: uppercase; }
.reg-comp-score { font-weight: 700; color: var(--text); }

.tile.exec-narrative { padding: 14px 16px; background: linear-gradient(135deg, rgba(77,163,255,0.06) 0%, rgba(255,107,214,0.04) 100%); border-left: 3px solid var(--accent); }
.narrative-card { display: grid; grid-template-columns: 22px 1fr; gap: 8px; align-items: center; }
.narr-top .narrative-card { min-height: 0; }
.narr-glyph { font-size: 38px; font-family: 'JetBrains Mono', ui-monospace, monospace; color: var(--accent); line-height: 0.8; opacity: 0.55; }
.narr-kicker { font-size: 9.5px; font-weight: 800; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); margin-bottom: 4px; }
.narr-body { margin: 0; font-size: 13px; line-height: 1.45; color: var(--text); font-weight: 500; }
/* Collapsed-by-default: single line with overflow ellipsis — click "more" to expand */
.narr-top .narr-body { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; transition: -webkit-line-clamp 150ms; }
.narr-top.narr-expanded .narr-body { -webkit-line-clamp: 10; }
.narr-kicker { font-size: 9.5px !important; letter-spacing: 0.14em !important; }
.narr-glyph { font-size: 16px !important; opacity: 0.6; }
.narr-more { background: transparent; border: 0; color: var(--muted); cursor: pointer; font-size: 10px; padding: 0 6px; letter-spacing: 0.04em; }
.narr-more:hover { color: var(--accent); }
.narr-body .narr-sent { margin-right: 4px; }
.narr-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.narr-tag { padding: 3px 10px; border-radius: 4px; font-size: 10.5px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; border: 1px solid transparent; }
.narr-tag.good    { background: rgba(46,204,113,0.14); color: #5ad898; border-color: rgba(46,204,113,0.35); }
.narr-tag.danger  { background: rgba(255,77,79,0.14); color: #ff9a9a; border-color: rgba(255,77,79,0.45); animation: breathe 2.4s ease-in-out infinite; }
.narr-tag.neutral { background: rgba(77,163,255,0.14); color: var(--accent-2); border-color: rgba(77,163,255,0.3); }

.exec-hero { padding: 0 !important; }
.exec-hero .hero-card { padding: 10px 12px; }
.exec-hero .hc-price { font-size: 20px; }

/* Metals row — compact strip */
.metals-row {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: stretch;
  padding: 10px 12px; background: linear-gradient(90deg, rgba(245,184,61,0.07) 0%, rgba(255,255,255,0.015) 100%);
  border: 1px solid var(--border); border-left: 4px solid var(--cat-metals); border-radius: 10px;
}
.metals-row-label { font-size: 11px; font-weight: 800; letter-spacing: 0.2em; color: var(--cat-metals); padding: 6px 10px; align-self: center; white-space: nowrap; }
.metal-card {
  flex: 1 1 170px; min-width: 150px;
  display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto auto;
  gap: 1px 8px;
  padding: 8px 12px; border-radius: 6px; background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.04);
}
.metal-card { text-decoration: none; color: inherit; }
.metal-card:hover { border-color: var(--accent); text-decoration: none; }
.metal-card .mc-label { grid-column: 1 / 2; grid-row: 1 / 2; color: var(--muted-2); font-weight: 700; font-size: 10px; text-transform: uppercase; letter-spacing: 0.14em; }
.metal-card .mc-unit { color: var(--muted); font-size: 9px; margin-left: 3px; text-transform: lowercase; letter-spacing: 0; }
.metals-unit-toggle { display: inline-flex; gap: 2px; margin-left: 10px; vertical-align: -2px; }
.mu-btn { background: transparent; border: 1px solid var(--border); color: var(--muted-2); font-size: 9.5px; font-weight: 700; letter-spacing: 0.08em; padding: 2px 8px; border-radius: 3px; cursor: pointer; font-family: inherit; text-transform: uppercase; }
.mu-btn:hover { color: var(--text); border-color: var(--border-2); }
.mu-btn.active { background: rgba(245,184,61,0.18); color: var(--cat-metals); border-color: rgba(245,184,61,0.4); }
.metal-card .mc-price { grid-column: 1 / 2; grid-row: 2 / 3; font-weight: 700; font-size: 15px; color: var(--text); }
.metal-card .mc-change { grid-column: 1 / 2; grid-row: 3 / 4; font-size: 11px; font-weight: 700; }
.metal-card .mc-spark  { grid-column: 2 / 3; grid-row: 1 / 4; align-self: center; }
.metal-card .mc-spark svg { display: block; }
.metal-card.up .mc-change { color: var(--up); }
.metal-card.dn .mc-change { color: var(--dn); }

/* Exec split row (movers + breaking side by side) */
.exec-split { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 900px) { .exec-split { grid-template-columns: 1fr; } }

/* Breaking news urgent styling */
.brk-section { padding: 8px 0; border-bottom: 1px dashed var(--border); }
.brk-section:last-child { border-bottom: none; }
.brk-section.urgent { background: rgba(255,77,79,0.06); padding: 8px 10px; margin: -2px -4px 8px; border: 1px solid rgba(255,77,79,0.25); border-radius: 6px; }
.brk-head { font-size: 10px; font-weight: 800; letter-spacing: 0.16em; color: var(--muted); text-transform: uppercase; margin-bottom: 4px; }
.brk-section.urgent .brk-head { color: #ff6b6b; }
ul.brk-list { list-style: none; padding: 0; margin: 0; }
.brk-item { display: flex; align-items: baseline; gap: 8px; padding: 4px 0; font-size: 12.5px; border-bottom: 1px solid var(--panel-2); }
.brk-item:last-child { border-bottom: none; }
.brk-item.urgent { animation: brk-pulse 2s ease-in-out infinite; }
@keyframes brk-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.88; } }
.brk-src { color: var(--accent); font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em; padding: 1px 6px; border: 1px solid rgba(77,163,255,0.3); border-radius: 3px; flex-shrink: 0; }
.brk-age { color: var(--muted); font-size: 10.5px; font-family: 'JetBrains Mono', monospace; margin-left: auto; }

/* Exec anomalies inline */
.exec-anomalies .anom-list.anom-inline { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 4px 16px; }
.exec-anomalies .anom { grid-template-columns: auto auto 1fr auto; }

/* ─── COLLAPSIBLE CATEGORY SECTION ─── */
.browse-all { margin-top: 18px; border-top: 1px solid var(--border); padding-top: 10px; }
.browse-all summary { cursor: pointer; list-style: none; padding: 8px 4px; display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; border-radius: 6px; }
.browse-all summary::-webkit-details-marker { display: none; }
.browse-all summary:hover { background: rgba(255,255,255,0.03); }
.browse-all summary::before { content: "▸"; margin-right: 8px; font-size: 11px; color: var(--muted); transition: transform 150ms; display: inline-block; }
.browse-all[open] summary::before { transform: rotate(90deg); }
.browse-title { font-weight: 700; letter-spacing: 0.04em; }
.browse-hint { color: var(--muted); font-size: 11.5px; }

/* ─── SECTOR PILLS ─── */
.sector-pill {
  display: inline-block; padding: 1px 6px; border-radius: 3px;
  font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  margin-right: 5px; color: #fff; opacity: 0.85;
}

/* ─── INTENSITY GRADIENT on %-change cells ─── */
.chg.up.intensity-1 { background: rgba(46,204,113,0.06); }
.chg.up.intensity-2 { background: rgba(46,204,113,0.12); }
.chg.up.intensity-3 { background: rgba(46,204,113,0.18); text-shadow: 0 0 6px rgba(46,204,113,0.4); }
.chg.up.intensity-4 { background: rgba(46,204,113,0.25); text-shadow: 0 0 8px rgba(46,204,113,0.6); font-weight: 700; }
.chg.up.intensity-5, .chg.up.intensity-6, .chg.up.intensity-7, .chg.up.intensity-8, .chg.up.intensity-9 { background: rgba(46,204,113,0.32); text-shadow: 0 0 10px rgba(46,204,113,0.8); font-weight: 800; }
.chg.dn.intensity-1 { background: rgba(255,77,79,0.06); }
.chg.dn.intensity-2 { background: rgba(255,77,79,0.12); }
.chg.dn.intensity-3 { background: rgba(255,77,79,0.18); text-shadow: 0 0 6px rgba(255,77,79,0.4); }
.chg.dn.intensity-4 { background: rgba(255,77,79,0.25); text-shadow: 0 0 8px rgba(255,77,79,0.6); font-weight: 700; }
.chg.dn.intensity-5, .chg.dn.intensity-6, .chg.dn.intensity-7, .chg.dn.intensity-8, .chg.dn.intensity-9 { background: rgba(255,77,79,0.32); text-shadow: 0 0 10px rgba(255,77,79,0.8); font-weight: 800; }

/* asset-class pill color for mover rows */
.mv-class { font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 1px 6px; border-radius: 3px; background: rgba(255,255,255,0.06); color: var(--muted-2); }
.mv-class-index, .mv-class-intl, .mv-class-futures { background: rgba(77,163,255,0.14); color: var(--cat-equities); }
.mv-class-mag7   { background: rgba(168,114,255,0.14); color: var(--cat-bonds); }
.mv-class-sector { background: rgba(127,215,255,0.14); color: var(--cat-shipping); }
.mv-class-fx     { background: rgba(34,193,195,0.14); color: var(--cat-fx); }
.mv-class-metal  { background: rgba(245,184,61,0.16); color: var(--cat-metals); }
.mv-class-energy { background: rgba(255,138,61,0.16); color: var(--cat-energy); }
.mv-class-ag     { background: rgba(127,215,127,0.14); color: var(--cat-ags); }
.mv-class-bond   { background: rgba(168,114,255,0.14); color: var(--cat-bonds); }
.mv-class-shipping{ background: rgba(79,179,255,0.14); color: var(--cat-shipping); }
.mv-class-china  { background: rgba(255,77,79,0.14); color: var(--cat-geo); }
.mv-class-crypto { background: rgba(255,154,46,0.16); color: var(--cat-crypto); }
.mv-class-vol    { background: rgba(255,107,214,0.14); color: var(--cat-macro); }
ul.movers-list li { grid-template-columns: 56px 52px 1fr 80px; }

/* ─── CORRELATIONS ─── */
table.corr-table td.corr-val { text-align: right; font-family: 'JetBrains Mono', monospace; font-weight: 600; }
td.corr-val.corr-pos { color: #8fd3b0; }
td.corr-val.corr-neg { color: #ffb0a8; }
.corr-flag { text-align: right; }
.flag-pill { padding: 1px 6px; border-radius: 3px; font-size: 9.5px; font-weight: 800; letter-spacing: 0.1em; }
.flag-flip    { background: rgba(255,77,79,0.16); color: #ff9a9a; border: 1px solid rgba(255,77,79,0.35); animation: breathe 2.4s ease-in-out infinite; }
.flag-diverge { background: rgba(255,167,38,0.14); color: #ffc57a; border: 1px solid rgba(255,167,38,0.3); }
tr.corr-flip td.sym, tr.corr-diverge td.sym { font-weight: 700; }

/* ─── BREAKING NEWS TIMELINE (pizzint.watch-inspired) ─── */
ul.brk-list.brk-timeline { position: relative; padding-left: 14px; border-left: 2px solid var(--border); margin-left: 6px; }
ul.brk-list.brk-timeline .brk-item { position: relative; padding: 6px 0 6px 4px; border-bottom: none; display: block; }
ul.brk-list.brk-timeline .brk-item::before {
  content: ""; position: absolute; left: -21px; top: 10px;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--bg); border: 2px solid var(--muted);
}
ul.brk-list.brk-timeline .brk-item.urgent::before {
  background: #ff4d4f; border-color: #ff4d4f;
  box-shadow: 0 0 8px rgba(255,77,79,0.6);
  animation: pulse 1.6s ease-out infinite;
}
ul.brk-list.brk-timeline .brk-item.fresh::before {
  background: var(--accent); border-color: var(--accent);
  box-shadow: 0 0 6px rgba(77,163,255,0.5);
}
ul.brk-list.brk-timeline .brk-age { margin-left: 6px; }
.sectors-hero { background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); margin-bottom: 14px; }

/* ─── FX / BOND / COMMODITY narrative tiles ─── */
.fx-hero, .bn-hero { padding: 6px 0 10px; border-bottom: 1px dashed var(--border); margin-bottom: 8px; }
.fx-head, .bn-head { display: flex; gap: 8px; align-items: baseline; }
.fx-label, .bn-label { font-size: 10px; font-weight: 800; letter-spacing: 0.18em; color: var(--muted); text-transform: uppercase; }
.fx-state { font-size: 13px; font-weight: 800; letter-spacing: 0.08em; }
.fx-strong, .fx-firm { color: var(--up); }
.fx-weak, .fx-soft   { color: var(--dn); }
.fx-neutral          { color: var(--muted-2); }
.fx-risk { background: rgba(77,163,255,0.14); color: var(--accent); padding: 1px 6px; border-radius: 3px; font-size: 10.5px; font-weight: 700; }
.fx-row, .bn-row { display: flex; gap: 12px; margin-top: 4px; align-items: baseline; }
.fx-px { font-size: 22px; font-weight: 800; letter-spacing: -0.01em; }
.fx-chg { font-size: 14px; font-weight: 700; }
.bn-state { font-size: 13px; font-weight: 800; letter-spacing: 0.08em; }
.bn-normal { color: #8fd3b0; }
.bn-flat   { color: var(--muted-2); }
.bn-inverted, .bn-steep { color: #ffc57a; }
.bn-dir { background: rgba(255,167,38,0.12); color: #ffc57a; padding: 1px 6px; border-radius: 3px; font-size: 10px; font-weight: 700; }
.bn-pair { display: inline-flex; gap: 4px; align-items: baseline; }
.bn-k { color: var(--muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.08em; }
.bn-v { font-weight: 700; }
.bn-spread { color: var(--accent); font-size: 11px; margin-left: auto; }

/* ─── NEWS PAGE FILTERS ─── */
.news-filters { display: flex; flex-wrap: wrap; gap: 4px; margin: 8px 2px 10px; align-items: center; }
.news-filter-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.12em; margin-right: 8px; }
.nf-btn {
  padding: 4px 12px; border: 1px solid var(--border-2); background: var(--panel-2); color: var(--muted-2);
  border-radius: 12px; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; cursor: pointer;
  font-family: inherit; transition: border-color 120ms, color 120ms, background 120ms;
}
.nf-btn:hover { color: var(--text); border-color: var(--accent); background: rgba(77,163,255,0.06); }
.nf-btn.active { background: rgba(77,163,255,0.18); color: var(--accent-2); border-color: rgba(77,163,255,0.5); }

/* ─── CORRELATION HEATMAP (visual) ─── */
.corr-heatmap { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 6px; }
.corr-cell { padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,255,255,0.015); position: relative; }
.corr-pair-label { font-size: 11px; font-weight: 700; letter-spacing: 0.04em; color: var(--text); margin-bottom: 4px; }
.corr-bars { display: flex; flex-direction: column; gap: 2px; }
.corr-bar-row { display: grid; grid-template-columns: 26px 1fr 52px; gap: 6px; align-items: center; }
.corr-bar-k { font-size: 9px; color: var(--muted); font-weight: 700; letter-spacing: 0.08em; }
.corr-bar-track { height: 8px; background: rgba(255,255,255,0.04); border-radius: 3px; position: relative; overflow: hidden; }
.corr-bar-fill { height: 100%; }
.corr-bar-fill.corr-pos { background: linear-gradient(90deg, rgba(46,204,113,0.2), rgba(46,204,113,0.6)); }
.corr-bar-fill.corr-neg { background: linear-gradient(270deg, rgba(255,77,79,0.2), rgba(255,77,79,0.6)); }
.corr-bar-v { font-size: 10.5px; font-weight: 700; text-align: right; }
.corr-bar-v.corr-pos { color: #8fd3b0; }
.corr-bar-v.corr-neg { color: #ffb0a8; }
.corr-cell.corr-flag-flip { border-color: rgba(255,77,79,0.45); background: rgba(255,77,79,0.06); animation: breathe 2.4s ease-in-out infinite; }
.corr-cell.corr-flag-diverge { border-color: rgba(255,167,38,0.35); background: rgba(255,167,38,0.04); }
.corr-flag-badge { position: absolute; top: 4px; right: 4px; }

/* ─── COHORT CORRELATIONS (B.15) ─── */
.coco-headline { margin-bottom: 10px; padding: 8px 12px; border-radius: 6px; border: 1px solid rgba(255,77,79,0.45); background: rgba(255,77,79,0.06); display: flex; gap: 10px; align-items: center; flex-wrap: wrap; animation: breathe 2.4s ease-in-out infinite; }
.coco-head-tag { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: #ffb0a8; padding: 2px 8px; border-radius: 10px; background: rgba(255,77,79,0.15); }
.coco-head-pair { font-size: 12.5px; color: var(--text); }
.coco-head-pair b { color: #ffb0a8; }
.coco-head-detail { font-size: 10.5px; color: var(--muted); margin-left: auto; }
.coco-heatmap { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 6px; }
.coco-cell { padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,255,255,0.015); position: relative; }
.coco-pair-label { font-size: 11px; font-weight: 700; letter-spacing: 0.04em; color: var(--text); margin-bottom: 4px; }
.coco-bars { display: flex; flex-direction: column; gap: 2px; }
.coco-bar-row { display: grid; grid-template-columns: 26px 1fr 52px; gap: 6px; align-items: center; }
.coco-bar-k { font-size: 9px; color: var(--muted); font-weight: 700; letter-spacing: 0.08em; }
.coco-bar-track { height: 8px; background: rgba(255,255,255,0.04); border-radius: 3px; position: relative; overflow: hidden; }
.coco-bar-fill { height: 100%; }
.coco-bar-fill.coco-pos { background: linear-gradient(90deg, rgba(46,204,113,0.2), rgba(46,204,113,0.6)); }
.coco-bar-fill.coco-neg { background: linear-gradient(270deg, rgba(255,77,79,0.2), rgba(255,77,79,0.6)); }
.coco-bar-v { font-size: 10.5px; font-weight: 700; text-align: right; }
.coco-bar-v.coco-pos { color: #8fd3b0; }
.coco-bar-v.coco-neg { color: #ffb0a8; }
.coco-cell.coco-flag-flip { border-color: rgba(255,77,79,0.45); background: rgba(255,77,79,0.06); animation: breathe 2.4s ease-in-out infinite; }
.coco-cell.coco-flag-diverge { border-color: rgba(255,167,38,0.35); background: rgba(255,167,38,0.04); }
.coco-flag-badge { position: absolute; top: 4px; right: 6px; font-size: 9px; font-weight: 800; letter-spacing: 0.12em; padding: 1px 6px; border-radius: 8px; }
.coco-flag-badge-flip { background: rgba(255,77,79,0.18); color: #ffb0a8; }
.coco-flag-badge-diverge { background: rgba(255,167,38,0.18); color: #ffcb7a; }

/* ─── NEWS DIGEST ─── */
.digest { display: flex; flex-direction: column; gap: 8px; }
.digest-label { font-size: 9.5px; font-weight: 800; letter-spacing: 0.14em; color: var(--muted); text-transform: uppercase; margin-bottom: 4px; }
.digest-row { display: flex; flex-wrap: wrap; gap: 4px; }
.digest-theme { padding: 3px 8px; border-radius: 4px; background: rgba(255,255,255,0.04); font-size: 11px; font-weight: 600; border-left: 2px solid var(--muted); }
.digest-theme.theme-macro { border-left-color: var(--cat-macro); }
.digest-theme.theme-geo   { border-left-color: var(--cat-geo); }
.digest-theme.theme-energy { border-left-color: var(--cat-energy); }
.digest-theme.theme-crypto { border-left-color: var(--cat-crypto); }
.digest-theme.theme-tech   { border-left-color: var(--cat-bonds); }
.digest-theme.theme-trade  { border-left-color: var(--cat-fx); }
.digest-theme.theme-earnings { border-left-color: var(--cat-equities); }
.digest-theme strong { color: var(--accent); margin-left: 4px; }
.digest-src { padding: 2px 8px; font-size: 10.5px; background: rgba(77,163,255,0.06); color: var(--muted-2); border-radius: 3px; border: 1px solid rgba(77,163,255,0.18); }
.digest-src strong { color: var(--accent); margin-left: 3px; }

/* ─── PRICE TAPE (Bloomberg-style top-of-page) ─── */
.price-tape {
  position: sticky; top: 0; z-index: 25;
  background: linear-gradient(180deg, #06090e 0%, #030507 100%);
  border-bottom: 1px solid var(--border);
  overflow: hidden; height: 32px;
}
.price-tape .tape-track {
  display: flex; gap: 0; height: 100%; width: max-content;
  animation: tape-scroll 120s linear infinite;
}
.price-tape:hover .tape-track { animation-play-state: paused; }
.tape-item {
  display: inline-flex; align-items: center; gap: 6px; padding: 0 14px;
  background: none; border: 0; border-right: 1px solid var(--border);
  color: inherit; cursor: pointer; font-family: 'JetBrains Mono', monospace; font-size: 11.5px;
  white-space: nowrap; transition: background 120ms;
}
.tape-item:hover { background: rgba(77,163,255,0.06); }
.tape-label { color: var(--muted-2); font-weight: 700; font-size: 10.5px; letter-spacing: 0.04em; }
.tape-price { font-weight: 700; }
.tape-chg { font-weight: 600; }
.tape-item.up .tape-chg { color: var(--up); }
.tape-item.dn .tape-chg { color: var(--dn); }
@keyframes tape-scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ─── SECTOR ROTATION ─── */
.sr-narrative { margin: 4px 0 8px; font-size: 13px; line-height: 1.45; color: var(--text); font-weight: 500; }
.sr-split { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.sr-head { font-size: 10px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; padding: 2px 0 4px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.sr-head.up { color: var(--up); }
.sr-head.dn { color: var(--dn); }
ul.sr-list { list-style: none; padding: 0; margin: 0; }
ul.sr-list li { display: grid; grid-template-columns: 44px 1fr 70px; gap: 6px; padding: 3px 0; font-size: 12px; align-items: center; }

/* ─── OVERNIGHT ─── */
.ovn-block { padding: 6px 0; border-bottom: 1px dashed var(--border); }
.ovn-block:last-child { border-bottom: none; }
.ovn-label { font-size: 10px; font-weight: 800; letter-spacing: 0.16em; color: var(--muted); text-transform: uppercase; margin-bottom: 4px; }
.ovn-state { color: var(--accent); font-weight: 700; }
.ovn-avg { color: var(--muted-2); font-size: 10.5px; margin-left: 4px; }
.ovn-row { display: flex; flex-wrap: wrap; gap: 4px 10px; }
.ovn-pair { display: inline-flex; align-items: baseline; gap: 6px; font-size: 12px; padding: 2px 6px; background: rgba(255,255,255,0.02); border-radius: 3px; }
.ovn-sym { color: var(--muted-2); font-size: 11px; font-weight: 600; }
.ovn-chg { font-weight: 700; }
.ovn-chg.up { color: var(--up); }
.ovn-chg.dn { color: var(--dn); }

/* ─── WATCH TODAY ─── */
.watch-section { padding: 6px 0 10px; border-bottom: 1px dashed var(--border); }
.watch-section:last-child { border-bottom: none; }
.watch-section.muted { opacity: 0.85; }
.watch-head { font-size: 10px; font-weight: 800; letter-spacing: 0.18em; color: var(--muted); text-transform: uppercase; margin-bottom: 6px; }
ul.watch-list { list-style: none; padding: 0; margin: 0; }
.watch-item { display: grid; grid-template-columns: 42px 28px 1fr 120px 42px; gap: 8px; align-items: center; padding: 4px 4px; font-size: 12px; border-bottom: 1px solid var(--panel-2); border-left: 3px solid var(--muted); padding-left: 8px; }
.watch-item:last-child { border-bottom: none; }
.watch-item.watch-red    { border-left-color: #ff6b6b; background: rgba(255,77,79,0.04); }
.watch-item.watch-orange { border-left-color: #ffb53d; background: rgba(255,167,38,0.03); }
.watch-kind { font-size: 9.5px; font-weight: 800; letter-spacing: 0.1em; color: var(--accent); }
.watch-region { font-size: 10.5px; font-weight: 700; color: var(--muted-2); }
.watch-label { color: var(--text); }
.watch-when { color: var(--muted-2); font-size: 10.5px; text-align: right; }
.watch-eta { color: var(--accent); font-weight: 700; font-size: 11px; text-align: right; }

/* ─── EARNINGS LIST ─── */
ul.earn-list { list-style: none; padding: 0; margin: 0; }
.earn-item { display: grid; grid-template-columns: 78px 60px 54px 52px 1fr 46px 38px; gap: 6px; align-items: center; padding: 5px 2px; border-bottom: 1px solid var(--panel-2); font-size: 12px; }
.earn-item:last-child { border-bottom: none; }
.earn-date { color: var(--muted-2); font-size: 11px; }
.earn-when { color: var(--muted); font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }
.earn-ticker { font-weight: 700; color: var(--text); font-size: 12px; }
.earn-company { color: var(--muted-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.earn-mcap { color: var(--cat-equities); font-size: 11.5px; text-align: right; }
.earn-countdown { color: var(--accent); font-weight: 600; font-size: 11px; text-align: right; }

/* ─── THEMES ─── */
.themes { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; }
.theme { padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: rgba(255,255,255,0.02); border-left: 3px solid var(--muted); }
.theme-macro    { border-left-color: var(--cat-macro); }
.theme-geo      { border-left-color: var(--cat-geo); }
.theme-energy   { border-left-color: var(--cat-energy); }
.theme-crypto   { border-left-color: var(--cat-crypto); }
.theme-tech     { border-left-color: var(--cat-bonds); }
.theme-trade    { border-left-color: var(--cat-fx); }
.theme-earnings { border-left-color: var(--cat-equities); }
.theme-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.theme-label { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text); }
.theme-count { font-size: 14px; font-weight: 800; color: var(--accent); }
.theme-score { font-size: 14px; font-weight: 800; color: var(--accent); }
.theme-score .muted-note { font-size: 9.5px; font-weight: 600; margin-left: 2px; color: var(--muted); }
.theme-bar { display: flex; height: 4px; margin: 3px 0 4px; background: var(--panel-2); border-radius: 2px; overflow: hidden; }
.theme-bar .tb-seg { height: 100%; }
.theme-bar .tb-news  { background: #4fb3ff; }
.theme-bar .tb-asset { background: #ffb34f; }
.theme-bar .tb-vol   { background: #ff5a5a; }
.theme-meta { font-size: 10px; color: var(--muted); margin-bottom: 4px; }
ul.theme-samples { list-style: none; padding: 0; margin: 0; }
ul.theme-samples li { padding: 3px 0; font-size: 11.5px; border-bottom: 1px dotted var(--panel-2); }
ul.theme-samples li:last-child { border-bottom: none; }
ul.theme-samples .src { color: var(--muted); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.08em; margin-right: 5px; }
.trend-word { display: inline-block; padding: 1px 6px; margin: 1px 3px; background: rgba(77,163,255,0.08); color: var(--muted-2); border-radius: 3px; font-size: 10.5px; font-family: 'JetBrains Mono', monospace; }

/* ─── RELATIVE STRENGTH TABLE ─── */
table.rs-table th { padding: 5px 4px; text-align: right; color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; border-bottom: 1px solid var(--border); }
table.rs-table th:first-child { text-align: left; }
table.rs-table td.chg { text-align: right; padding: 4px 4px; }

/* ─── KP INDEX / GLOBAL TEMP heroes ─── */
.kp-hero, .gt-hero {
  display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center;
  padding: 6px 0 8px; border-bottom: 1px dashed var(--border); margin-bottom: 6px;
}
.kp-label, .gt-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.14em; font-weight: 700; }
.kp-value, .gt-value { font-size: 32px; font-weight: 800; letter-spacing: -0.02em; line-height: 1; }
.kp-state { font-size: 11.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; margin-top: 2px; }
.kp-storm { background: rgba(255,77,79,0.15); color: #ff9a9a; padding: 1px 6px; border-radius: 3px; font-size: 10.5px; }
.kp-green .kp-value { color: #5ad898; }
.kp-yellow .kp-value { color: #fde68a; }
.kp-orange .kp-value { color: #ffc57a; }
.kp-red .kp-value { color: #ff6b6b; }
.gt-value { color: #ff9a3c; }
.gt-sub { font-size: 11.5px; color: var(--muted); }

/* ─── MACRO HERO ─── */
.macro-hero { padding: 8px 0 10px; border-bottom: 1px dashed var(--border); margin-bottom: 8px; }
.mh-label { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); }
.mh-big   { font-size: 28px; font-weight: 800; letter-spacing: -0.01em; color: var(--cat-macro); margin: 2px 0; }
.mh-sub   { font-size: 11.5px; color: var(--muted-2); }
.mh-sub .mv-hold { color: var(--muted-2); }
.mh-sub .mv-cut  { color: var(--up); }
.mh-sub .mv-hike { color: var(--dn); }
.trend { font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.08em; margin-left: 6px; padding: 1px 5px; border-radius: 3px; font-family: 'Inter', sans-serif; }
.trend-cooling { color: var(--up); background: rgba(46,204,113,0.10); }
.trend-sticky  { color: #ffc57a; background: rgba(255,167,38,0.10); }
.trend-steady  { color: var(--muted-2); background: rgba(255,255,255,0.06); }
.trend-heating { color: var(--dn); background: rgba(255,77,79,0.10); }
.fed-latest { display: block; font-size: 13px; color: var(--accent); padding: 4px 0; }
.fed-latest:hover { color: var(--accent-2); }

/* ─── GOLD/SILVER RATIO ─── */
.gsr-hero { display: grid; grid-template-columns: auto 1fr; gap: 14px; align-items: center; padding: 6px 0 10px; border-bottom: 1px dashed var(--border); margin-bottom: 8px; }
.gsr-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.14em; font-weight: 700; }
.gsr-value { font-size: 38px; font-weight: 800; letter-spacing: -0.02em; color: var(--cat-metals); line-height: 1; }
.gsr-regime { font-size: 11px; color: var(--muted-2); margin-top: 4px; max-width: 200px; }

/* ─── CONFLICT THEATERS ─── */
.theaters { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px; }
.theater { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: rgba(255,255,255,0.015); }
.theater.warm { border-color: rgba(255,167,38,0.4); background: rgba(255,167,38,0.04); }
.theater.hot  { border-color: rgba(255,77,79,0.45); background: rgba(255,77,79,0.06); animation: breathe 2.4s ease-in-out infinite; }
.theater-head { display: flex; justify-content: space-between; align-items: baseline; }
.theater-label { font-size: 11.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text); }
.theater-count { font-size: 22px; font-weight: 800; }
.theater.hot .theater-count { color: #ff6b6b; }
.theater.warm .theater-count { color: #ffb53d; }
ul.theater-items { list-style: none; padding: 0; margin: 6px 0 0; }
ul.theater-items li { padding: 3px 0; font-size: 11.5px; border-bottom: 1px solid var(--panel-2); }
ul.theater-items li:last-child { border-bottom: none; }
ul.theater-items .src { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; margin-right: 6px; }
.theater-empty { color: var(--muted); font-size: 11px; padding: 6px 0; }

/* topic news list styling */
ul.topic-list li { font-size: 12.5px; padding: 5px 0; }
ul.topic-list .src { background: rgba(77,163,255,0.12); color: var(--accent); padding: 1px 7px; border-radius: 3px; font-size: 10.5px; margin-right: 8px; min-width: unset; }

/* ─── REGIME BANNER ─── */
.regime { padding: 10px 12px; border-radius: 8px; margin-bottom: 10px; border: 1px solid var(--border); }
.regime-label { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted-2); margin-bottom: 4px; }
.regime-score { font-size: 34px; font-weight: 800; letter-spacing: -0.02em; line-height: 1; }
.regime-scale { margin-top: 8px; }
.regime-bar { position: relative; height: 8px; border-radius: 4px; background: linear-gradient(90deg, #ff4d4f 0%, #ff7a3d 25%, #f5b83d 45%, #95d96d 65%, #2ecc71 100%); }
.regime-tick { position: absolute; top: -3px; width: 3px; height: 14px; background: #fff; border: 1px solid #000; transform: translateX(-50%); border-radius: 2px; }
.regime-markers { display: flex; justify-content: space-between; margin-top: 4px; font-size: 9.5px; color: var(--muted); letter-spacing: 0.06em; }
.regime-red         .regime-score { color: #ff4d4f; }
.regime-orange      .regime-score { color: #ff7a3d; }
.regime-yellow      .regime-score { color: #f5b83d; }
.regime-green       .regime-score { color: #2ecc71; }
.regime-bright-green .regime-score { color: #4ade80; text-shadow: 0 0 10px rgba(74,222,128,0.5); }
.regime-breakdown { margin-top: 8px; }
.regime-breakdown td.sym { font-size: 11px; }
.regime-cscore { font-family: 'JetBrains Mono', monospace; font-weight: 700; }

/* ─── ANOMALIES LIST ─── */
ul.anom-list { list-style: none; padding: 0; margin: 0; }
.anom { display: grid; grid-template-columns: 50px 80px 60px 70px 46px 60px; gap: 8px; align-items: center; padding: 4px 2px; border-bottom: 1px solid var(--panel-2); font-size: 12px; }
.anom:last-child { border-bottom: none; }
.anom-group { color: var(--accent); font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.anom-sym { font-family: 'JetBrains Mono', monospace; color: var(--text); }
.anom-z { text-align: right; font-weight: 700; }
.anom.up .anom-z { color: var(--up); }
.anom.dn .anom-z { color: var(--dn); }
.anom-pct { font-size: 10.5px; color: var(--muted-2); text-align: right; }
.anom-pct.near { color: #ffb34f; }
.anom-pct.extreme { color: var(--dn); font-weight: 700; }
.anom.up .anom-pct.extreme { color: #5fd072; }
.anom-last { font-size: 10px; color: var(--muted); text-align: right; }
.anom-link { color: var(--muted); font-size: 10.5px; background: none; border: 0; cursor: pointer; text-align: right; padding: 0; }
.anom-link:hover { color: var(--accent); text-decoration: underline; }

/* ─── CATEGORY ACCENT COLORS (new) ─── */
:root {
  --cat-shipping: #4fb3ff;
  --cat-signals:  #d9a7ff;
  --cat-climate:  #7dcfa6;
}
.category.cat-shipping .cat-rule, .catnav-item.cat-shipping .catnav-dot, .cat-page.cat-shipping .cat-rule { background: var(--cat-shipping); }
.category.cat-signals .cat-rule,  .catnav-item.cat-signals .catnav-dot,  .cat-page.cat-signals .cat-rule  { background: var(--cat-signals); }
.category.cat-climate .cat-rule,  .catnav-item.cat-climate .catnav-dot,  .cat-page.cat-climate .cat-rule  { background: var(--cat-climate); }
.tile.cat-shipping { border-left-color: var(--cat-shipping); }
.tile.cat-signals  { border-left-color: var(--cat-signals); }
.tile.cat-climate  { border-left-color: var(--cat-climate); }

/* ─── MOVERS ─── */
.movers { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.movers-col { padding: 4px 0; }
.movers-head { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; padding: 4px 2px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.movers-head.up { color: var(--up); }
.movers-head.dn { color: var(--dn); }
ul.movers-list { list-style: none; padding: 0; margin: 0; }
ul.movers-list li { display: grid; grid-template-columns: 56px 1fr 70px; gap: 6px; padding: 3px 0; font-size: 12px; border-bottom: 1px solid var(--panel-2); align-items: center; }
ul.movers-list li:last-child { border-bottom: none; }
.mv-ticker { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 11.5px; color: var(--text); }
.mv-label { color: var(--muted-2); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mv-chg { text-align: right; font-weight: 600; font-size: 11.5px; }
.mv-chg.up { color: var(--up); }
.mv-chg.dn { color: var(--dn); }

/* ─── CRYPTO FLOWS / SIGNALS / CLIMATE shared "cf-section" pattern ─── */
.cf-section { padding: 8px 0; border-bottom: 1px dashed var(--border); }
.cf-section:last-child { border-bottom: none; }
.cf-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.cf-label { font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; }
.cf-big { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; }
ul.cf-list { list-style: none; padding: 0; margin: 0; }
ul.cf-list li { display: flex; justify-content: space-between; padding: 3px 0; font-size: 12px; border-bottom: 1px solid var(--panel-2); }
ul.cf-list li:last-child { border-bottom: none; }
.cf-name { color: var(--muted-2); }
.cf-num { font-weight: 600; color: var(--text); }

.eonet-cats { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 6px; }
.eonet-cat { padding: 2px 8px; border-radius: 10px; background: rgba(255,255,255,0.05); font-size: 11px; color: var(--muted-2); }
.eonet-cat strong { color: var(--text); font-weight: 700; }

/* ─── YIELD CURVE SVG ─── */
.yc-wrap { padding: 6px 0 8px; display: flex; justify-content: center; }
svg.yieldcurve { max-width: 100%; height: auto; }
.yc-axis { stroke: var(--border); stroke-width: 1; }
.yc-line { stroke: var(--cat-bonds); stroke-width: 1.8; fill: none; }
.yc-dot  { fill: var(--cat-bonds); }
.yc-label { fill: var(--muted); font-size: 9.5px; font-family: 'JetBrains Mono', monospace; text-anchor: middle; }
.yc-tick { fill: var(--muted); font-size: 9.5px; font-family: 'JetBrains Mono', monospace; }

/* ─── CATEGORY NAV ─── */
.catnav {
  display: flex; flex-wrap: wrap; align-items: center; gap: 2px;
  padding: 6px 12px; background: var(--bg-2); border-bottom: 1px solid var(--border);
  overflow-x: auto; scrollbar-width: thin;
}
.catnav-item {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 600;
  color: var(--muted-2); letter-spacing: 0.04em; white-space: nowrap;
  border: 1px solid transparent;
}
.catnav-item:hover { color: var(--text); background: rgba(255,255,255,0.04); text-decoration: none; }
.catnav-item.active { color: var(--text); background: rgba(77,163,255,0.12); border-color: rgba(77,163,255,0.25); }
.catnav-item.visited:not(.active) { color: var(--muted); }
.catnav-item.visited:not(.active) .catnav-dot { opacity: 1; }
.catnav-item:not(.visited):not(.active) .catnav-dot { opacity: 0.35; }
/* Pulsing dot when this category has an active alert */
.catnav-item.has-alert .catnav-dot { animation: navdotpulse 1.6s ease-in-out infinite; opacity: 1 !important; box-shadow: 0 0 0 0 rgba(255,179,79,0.6); }
.catnav-item.has-red-alert .catnav-dot { background: #ff5a5a !important; box-shadow: 0 0 0 0 rgba(255,90,90,0.6); }
@keyframes navdotpulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,179,79,0.7); }
  70%  { box-shadow: 0 0 0 6px rgba(255,179,79,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,179,79,0); }
}
.catnav-item.has-red-alert .catnav-dot {
  animation-name: navdotpulseRed;
}
@keyframes navdotpulseRed {
  0%   { box-shadow: 0 0 0 0 rgba(255,90,90,0.75); }
  70%  { box-shadow: 0 0 0 7px rgba(255,90,90,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,90,90,0); }
}
.catnav-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); display: inline-block; }
.catnav-item.cat-equities .catnav-dot { background: var(--cat-equities); }
.catnav-item.cat-bonds .catnav-dot { background: var(--cat-bonds); }
.catnav-item.cat-fx .catnav-dot { background: var(--cat-fx); }
.catnav-item.cat-metals .catnav-dot { background: var(--cat-metals); }
.catnav-item.cat-energy .catnav-dot { background: var(--cat-energy); }
.catnav-item.cat-ags .catnav-dot { background: var(--cat-ags); }
.catnav-item.cat-crypto .catnav-dot { background: var(--cat-crypto); }
.catnav-item.cat-macro .catnav-dot { background: var(--cat-macro); }
.catnav-item.cat-geo .catnav-dot { background: var(--cat-geo); }
.catnav-item.cat-news .catnav-dot { background: var(--cat-news); }
.catnav-item.catnav-brief { background: rgba(77,163,255,0.10); border-color: rgba(77,163,255,0.30); }
.catnav-item.catnav-brief .catnav-dot { background: var(--accent); box-shadow: 0 0 6px var(--accent); }

.brand-link { display: flex; align-items: center; gap: 10px; color: inherit; }
.brand-link:hover { text-decoration: none; }

/* divider between hero and grid */
.dashboard-divider { height: 1px; background: linear-gradient(90deg, transparent 0%, var(--border) 40%, var(--border) 60%, transparent 100%); margin: 18px 16px 6px; }

/* cat-head "More →" link */
.cat-more { margin-left: 8px; font-size: 11px; color: var(--muted); font-weight: 500; letter-spacing: 0.04em; }
.cat-more:hover { color: var(--accent); text-decoration: none; }

/* category deep-dive page */
.cat-page { max-width: 1500px; margin: 0 auto; padding-top: 4px; }
.cat-page-head { display: flex; align-items: flex-start; gap: 14px; margin: 16px 2px 18px; }
.cat-page-title { flex: 1; }
.cat-page-head h1 { margin: 0; font-size: 24px; font-weight: 800; letter-spacing: -0.01em; }
.cat-page-desc { margin: 4px 0 0; color: var(--muted-2); font-size: 13px; max-width: 780px; }
/* Yield curve slider widget */
.ycs-wrap { padding: 4px 0; }
.ycs-slider { width: 100%; margin-top: 8px; accent-color: #ffb34f; }
.ycs-label { font-size: 11px; color: var(--muted-2); text-align: center; margin-top: 4px; letter-spacing: 0.06em; }
.ycs-active-label { color: #ffb34f; font-weight: 700; }

/* Market breadth widget */
.bd-wrap { padding: 4px 0; }
.bd-headline { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.bd-tone { font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 8px; border-radius: 10px; }
.bd-tone-up { background: rgba(95,208,114,0.15); color: #5fd072; }
.bd-tone-dn { background: rgba(255,90,90,0.15); color: #ff8585; }
.bd-tone-mx { background: var(--panel-2); color: var(--muted-2); }
.bd-pct { font-size: 22px; font-weight: 800; color: var(--text); }
.bd-bar { display: flex; height: 8px; background: var(--panel-2); border-radius: 4px; overflow: hidden; margin-bottom: 8px; }
.bd-seg { height: 100%; }
.bd-seg.bd-adv { background: #5fd072; }
.bd-seg.bd-dec { background: #ff5a5a; }
.bd-seg.bd-unch { background: var(--muted); opacity: 0.4; }
.bd-stats { font-size: 11.5px; display: flex; gap: 10px; flex-wrap: wrap; align-items: baseline; }
.bd-ratio { color: var(--muted-2); }

/* Crypto dominance widget */
.cdom-latest { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; }
.cdom-pill { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: var(--panel-2); color: var(--muted-2); }
.cdom-pill strong { color: var(--text); margin-left: 3px; }
.cdom-btc { border-left: 2px solid #f7931a; }
.cdom-eth { border-left: 2px solid #b09cff; }
.cdom-oth { border-left: 2px solid #ffb34f; }
.cdom-chart { min-height: 200px; }

.narr-ago { margin-left: 10px; font-size: 10px; color: var(--muted); letter-spacing: 0.04em; text-transform: none; font-weight: 400; }

/* Narrative diff highlights */
.narr-sent.narr-new { background: linear-gradient(0deg, rgba(77,163,255,0.12) 0%, transparent 100%); padding: 0 2px; border-radius: 2px; border-bottom: 1px dotted rgba(77,163,255,0.5); }
.narr-diff { margin-top: 6px; font-size: 10.5px; color: var(--muted); letter-spacing: 0.02em; }
.narr-diff-label { margin-right: 8px; text-transform: uppercase; font-size: 10px; letter-spacing: 0.1em; }
.narr-diff-count { margin-right: 10px; font-weight: 700; }
.narr-diff-count.up { color: #5fd072; }
.narr-diff-count.muted { color: var(--muted); }

/* Event-category stat strip */
.cat-stats { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important; gap: 10px; margin: 0 0 14px; padding: 0 0 14px; border-bottom: 1px solid var(--border); width: 100%; }
@media (max-width: 900px) { .cat-stats { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 540px) { .cat-stats { grid-template-columns: 1fr !important; } }
.cat-stat { padding: 10px 14px; border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: 6px; background: var(--panel-2); min-width: 0; }
.cs-label { font-size: 10px; color: var(--muted); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; margin-bottom: 4px; }
.cs-value { font-size: 22px; font-weight: 800; color: var(--text); line-height: 1.1; }
.cs-sub { font-size: 10.5px; color: var(--muted-2); margin-top: 2px; }

.cat-page-hero { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; padding: 0 0 14px; margin: 0 0 14px; border-bottom: 1px solid var(--border); width: 100%; }
/* News / geo / calendar categories: hero is just context — compact 1-row strip */
.cat-news .cat-page-hero, .cat-geo .cat-page-hero, .cat-calendar .cat-page-hero { gap: 6px; padding-bottom: 8px; margin-bottom: 12px; }
.cat-news .cat-page-hero .hero-card, .cat-geo .cat-page-hero .hero-card, .cat-calendar .cat-page-hero .hero-card { padding: 6px 10px; }
.cat-news .cat-page-hero .hc-label, .cat-geo .cat-page-hero .hc-label, .cat-calendar .cat-page-hero .hc-label { font-size: 9px; margin-bottom: 2px; }
.cat-news .cat-page-hero .hc-price, .cat-geo .cat-page-hero .hc-price, .cat-calendar .cat-page-hero .hc-price { font-size: 14px; }
.cat-news .cat-page-hero .hc-change, .cat-geo .cat-page-hero .hc-change, .cat-calendar .cat-page-hero .hc-change { font-size: 11px; }
.cat-news .cat-page-hero .hc-spark, .cat-geo .cat-page-hero .hc-spark, .cat-calendar .cat-page-hero .hc-spark { display: none; }
@media (max-width: 1100px) { .cat-page-hero { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px)  { .cat-page-hero { grid-template-columns: 1fr; } }
.cat-page-head .cat-rule { flex: 0 0 5px; height: 26px; border-radius: 3px; background: var(--muted); }
.cat-page.cat-equities .cat-rule { background: var(--cat-equities); }
.cat-page.cat-bonds .cat-rule { background: var(--cat-bonds); }
.cat-page.cat-fx .cat-rule { background: var(--cat-fx); }
.cat-page.cat-metals .cat-rule { background: var(--cat-metals); }
.cat-page.cat-energy .cat-rule { background: var(--cat-energy); }
.cat-page.cat-ags .cat-rule { background: var(--cat-ags); }
.cat-page.cat-crypto .cat-rule { background: var(--cat-crypto); }
.cat-page.cat-macro .cat-rule { background: var(--cat-macro); }
.cat-page.cat-geo .cat-rule { background: var(--cat-geo); }
.cat-page.cat-news .cat-rule { background: var(--cat-news); }
.cat-back { margin-left: auto; color: var(--muted); font-size: 12px; }
.cat-back:hover { color: var(--accent); text-decoration: none; }
.cat-page-grid { grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: 14px; }
.tile-wide { min-height: 200px; }
.tile-xwide { grid-column: span 2; min-height: 160px; }
@media (max-width: 900px) { .tile-xwide { grid-column: auto; } }
/* Narrative tiles: easier-to-read prose, subtle accent */
.tile-narrative { background: linear-gradient(180deg, var(--panel) 0%, rgba(77,163,255,0.03) 100%); border-left: 3px solid var(--accent); padding: 14px 18px; }
.tile-narrative .tile-head h3 { color: var(--accent); font-size: 11px; letter-spacing: 0.14em; }
.cat-page-news { margin-top: 26px; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 14px 18px; }
.cat-page-sub { margin: 0 0 10px; font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted-2); }
.cat-page-placeholder { margin-top: 18px; padding: 16px; border: 1px dashed var(--border); border-radius: 8px; }
.muted-note { margin: 0; color: var(--muted); font-size: 12px; }

/* ─── EXCHANGE RIBBON ─── */
.ribbon {
  display: flex; gap: 2px; padding: 6px 10px;
  background: var(--bg-2); border-bottom: 1px solid var(--border);
  overflow-x: auto;
  scrollbar-width: none;           /* Firefox */
  -ms-overflow-style: none;        /* IE / Edge */
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
}
.ribbon::-webkit-scrollbar { display: none; }  /* Chrome / Safari */
.ribbon .ex { scroll-snap-align: start; }
.ex {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px; border-radius: 6px; font-size: 11.5px; white-space: nowrap;
  border: 1px solid transparent;
}
.ex-code { font-weight: 700; color: var(--text); letter-spacing: 0.04em; min-width: 44px; }
.ex-time { color: var(--muted-2); font-size: 11.5px; font-weight: 600; }
.ex-status { font-weight: 700; font-size: 10.5px; letter-spacing: 0.12em; padding: 1px 6px; border-radius: 3px; }
.ex-when { color: var(--muted); font-size: 10.5px; }
.ex-open .ex-status { color: #4ade80; background: rgba(74,222,128,0.12); }
.ex-pre .ex-status { color: #fbbf24; background: rgba(251,191,36,0.12); }
.ex-closed .ex-status { color: #94a3b8; background: rgba(148,163,184,0.10); }
.ex-open { background: rgba(74,222,128,0.04); }

/* ─── HERO STRIP ─── */
.hero {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 10px; padding: 14px 16px 0;
}
.hero-card {
  background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%);
  border: 1px solid var(--border); border-radius: 12px;
  padding: 12px 14px; position: relative; overflow: hidden;
  transition: border-color 150ms, transform 150ms;
  display: block; color: inherit; text-decoration: none; cursor: pointer;
}
.hero-card:hover { border-color: var(--border-2); transform: translateY(-1px); }
.hero-card.up { border-top: 2px solid rgba(46,204,113,0.7); }
.hero-card.dn { border-top: 2px solid rgba(255,77,79,0.7); }
.hc-label { font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.14em; font-weight: 600; margin-bottom: 4px; }
.hc-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.hc-price { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
.hc-change { font-size: 13px; font-weight: 600; }
.hero-card.up .hc-change { color: var(--up); }
.hero-card.dn .hc-change { color: var(--dn); }
.hc-change .arrow { font-size: 9px; margin-right: 2px; }
.hc-spark { margin-top: 8px; height: 44px; overflow: hidden; }
.hc-spark svg { width: 100%; height: 100%; display: block; }
.hero-card.up .hc-spark .spark-area { fill: rgba(46,204,113,0.08); }
.hero-card.dn .hc-spark .spark-area { fill: rgba(255,77,79,0.08); }

/* ─── CATEGORY SECTIONS ─── */
html { scroll-padding-top: 80px; }
main { padding: 10px 16px 24px; min-height: calc(100vh - 220px); }
.exec-section, [data-collapsible] { scroll-margin-top: 80px; }
.category { margin-top: 20px; }
.cat-head { display: flex; align-items: center; gap: 10px; margin: 0 2px 10px; }
.cat-rule { flex: 0 0 4px; height: 18px; border-radius: 2px; background: var(--muted); }
.cat-head h2 { margin: 0; font-size: 11.5px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text); }
.cat-count { margin-left: auto; color: var(--muted); font-size: 11px; }
.category.cat-equities .cat-rule { background: var(--cat-equities); }
.category.cat-bonds .cat-rule { background: var(--cat-bonds); }
.category.cat-fx .cat-rule { background: var(--cat-fx); }
.category.cat-metals .cat-rule { background: var(--cat-metals); }
.category.cat-energy .cat-rule { background: var(--cat-energy); }
.category.cat-ags .cat-rule { background: var(--cat-ags); }
.category.cat-crypto .cat-rule { background: var(--cat-crypto); }
.category.cat-macro .cat-rule { background: var(--cat-macro); }
.category.cat-geo .cat-rule { background: var(--cat-geo); }
.category.cat-news .cat-rule { background: var(--cat-news); }

/* ─── CATEGORY NEWS STRIP ─── */
.cat-news { display: flex; flex-wrap: wrap; gap: 6px 12px; margin: -2px 2px 8px; }
.cat-news-item { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; padding: 3px 8px; border-radius: 4px; background: rgba(255,255,255,0.02); border: 1px solid var(--border); max-width: 100%; }
.cat-news-item:hover { background: rgba(255,255,255,0.05); border-color: var(--border-2); text-decoration: none; }
.cn-src { color: var(--accent); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; flex-shrink: 0; }
.cn-title { color: var(--muted-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 520px; }

/* ─── TILE GRID ─── */
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 12px; }
.category.cat-news .grid, .category.cat-geo .grid { grid-template-columns: 1fr; }
.tile {
  background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%);
  border: 1px solid var(--border);
  border-left: 3px solid var(--muted);
  border-radius: 10px; padding: 10px 14px 12px;
  min-height: 140px;
  transition: border-color 120ms, box-shadow 120ms;
}
.tile:hover { border-color: var(--border-2); }
.tile.cat-equities { border-left-color: var(--cat-equities); }
.tile.cat-bonds { border-left-color: var(--cat-bonds); }
.tile.cat-fx { border-left-color: var(--cat-fx); }
.tile.cat-metals { border-left-color: var(--cat-metals); }
.tile.cat-energy { border-left-color: var(--cat-energy); }
.tile.cat-ags { border-left-color: var(--cat-ags); }
.tile.cat-crypto { border-left-color: var(--cat-crypto); }
.tile.cat-macro { border-left-color: var(--cat-macro); }
.tile.cat-geo { border-left-color: var(--cat-geo); }
.tile.cat-news { border-left-color: var(--cat-news); }
.tile.flash, .hero-card.flash { animation: tile-flash 900ms ease-out; }
@keyframes tile-flash {
  0% { box-shadow: 0 0 0 1px var(--accent) inset, 0 0 14px rgba(77,163,255,0.25); }
  100% { box-shadow: none; }
}

/* tile head */
.tile-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; padding-bottom: 6px; border-bottom: 1px solid var(--border); }
.tile-head h3 { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #9db0c9; }
.tile-head .ago, .tile-head .loading { font-size: 10.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
/* Turn the "loading…" text into a tiny spinner for fresher feel */
.tile-head .loading { display: inline-block; width: 12px; height: 12px; border: 2px solid var(--panel-2); border-top-color: var(--accent); border-radius: 50%; animation: tl-spin 700ms linear infinite; vertical-align: middle; font-size: 0; color: transparent; }
@keyframes tl-spin { to { transform: rotate(360deg); } }
.tile-head-right { display: inline-flex; align-items: center; gap: 6px; }
.tile-head .ago.stale { color: #f59e0b; }
.empty { color: var(--muted); padding: 8px 0; font-size: 12px; }

/* ─── TABLES (quote tables) ─── */
table.q { width: 100%; border-collapse: collapse; }
table.q td { padding: 5px 2px; border-bottom: 1px solid var(--panel-2); vertical-align: middle; }
table.q tr:last-child td { border-bottom: none; }
table.q td.sym { color: var(--muted-2); font-weight: 500; font-size: 13px; white-space: nowrap; }
table.q td.sym .unit { color: var(--muted); font-size: 10.5px; margin-left: 2px; }
table.q td.spark-cell { width: 82px; padding: 0 6px; }
table.q td.spark-cell svg { display: block; }
table.q td.px { text-align: right; font-weight: 600; font-size: 13px; white-space: nowrap; }
table.q td.chg { text-align: right; width: 82px; font-weight: 500; font-size: 12px; white-space: nowrap; }
table.q td.chg .arrow { font-size: 9px; margin-right: 3px; position: relative; top: -1px; }
table.q td.chg.up { color: var(--up); }
table.q td.chg.dn { color: var(--dn); }
.meta { margin-top: 8px; padding-top: 6px; border-top: 1px dashed var(--border); font-size: 11.5px; color: var(--muted); }
.meta strong { color: var(--text); font-weight: 600; }

/* ─── SPARKLINE BUTTONS (clickable) ─── */
button.spark-btn { background: none; border: 0; padding: 0; cursor: pointer; display: block; margin: 0; line-height: 0; }
button.spark-btn svg { display: block; }
button.spark-btn:hover svg .spark-line { stroke-width: 2.2; }
button.spark-btn:hover { filter: brightness(1.15); }
table.q td.spark-cell .spark-btn svg { max-width: 80px; }
.hc-spark .spark-btn { width: 100%; height: 100%; }
.hc-spark .spark-btn svg { width: 100%; height: 100%; }

/* ─── FEAR & GREED ─── */
.fng-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: 10px; margin-bottom: 10px; }
.fng { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: rgba(255,255,255,0.02); }
.fng-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; }
.fng-big { display: flex; align-items: baseline; gap: 10px; margin: 4px 0 6px; }
.fng-score { font-size: 28px; font-weight: 800; letter-spacing: -0.02em; }
.fng-rating { font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; }
.fng[data-score] .fng-score, .fng[data-score] .fng-rating { color: #a8b3c4; }
.fng[data-score^="0"] .fng-score, .fng[data-score^="1"] .fng-score, .fng[data-score="20"] .fng-score, .fng[data-score="21"] .fng-score, .fng[data-score="22"] .fng-score, .fng[data-score="23"] .fng-score, .fng[data-score="24"] .fng-score { color: #ff4d4f; }
.fng[data-score^="7"] .fng-score, .fng[data-score^="8"] .fng-score, .fng[data-score^="9"] .fng-score, .fng[data-score="100"] .fng-score { color: #2ecc71; }
.fng-meter {
  position: relative; height: 8px; border-radius: 4px; overflow: hidden;
  background: linear-gradient(90deg,
    #ff4d4f 0%, #ff7a3d 25%, #f5b83d 45%, #d4d8e0 50%, #95d96d 60%, #2ecc71 100%);
}
.fng-fill { display: none; }
.fng-needle { position: absolute; top: -3px; width: 2px; height: 14px; background: #fff; border: 1px solid #000; transform: translateX(-50%); border-radius: 1px; }
.fng-history { display: flex; gap: 10px; margin-top: 6px; font-size: 10.5px; color: var(--muted); font-family: 'JetBrains Mono', monospace; }

/* ─── SECTOR HEATMAP ─── */
.heatmap { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 4px; }
.hm-tile {
  padding: 6px 8px; border-radius: 6px; min-height: 60px; display: flex; flex-direction: column; justify-content: center; gap: 2px;
  background: rgba(130,140,160,0.06);
  border: 1px solid transparent;
  transition: transform 120ms, border-color 120ms;
}
.hm-tile:hover { transform: translateY(-1px); border-color: var(--border-2); }
.hm-tile.up { background: color-mix(in srgb, var(--up) calc(var(--intensity) * 8%), rgba(130,140,160,0.06)); }
.hm-tile.dn { background: color-mix(in srgb, var(--dn) calc(var(--intensity) * 8%), rgba(130,140,160,0.06)); }
.hm-ticker { font-weight: 700; font-size: 11px; letter-spacing: 0.04em; }
.hm-label { font-size: 10px; color: var(--muted-2); }
.hm-chg { font-size: 12px; font-weight: 700; margin-top: 2px; }
.hm-tile.up .hm-chg { color: var(--up); }
.hm-tile.dn .hm-chg { color: var(--dn); }

/* ─── CALENDAR ─── */
ul.cal-list { list-style: none; padding: 0; margin: 0; }
.cal-item { display: grid; grid-template-columns: 36px 28px auto 1fr 52px; gap: 8px; align-items: center; padding: 6px 2px; border-bottom: 1px solid var(--panel-2); font-size: 12px; }
.cal-item:last-child { border-bottom: none; }
.cal-impact { font-size: 9px; letter-spacing: -1px; font-weight: 700; }
.cal-item.impact-H .cal-impact { color: #ef4444; }
.cal-item.impact-M .cal-impact { color: #f59e0b; }
.cal-item.impact-L .cal-impact { color: var(--muted); }
.cal-region { font-size: 10px; font-weight: 700; color: var(--muted-2); letter-spacing: 0.06em; }
.cal-when { display: flex; flex-direction: column; font-size: 11px; }
.cal-date { color: var(--muted-2); }
.cal-time { color: var(--muted); font-size: 10px; }
.cal-ev { color: var(--text); }
.cal-countdown { text-align: right; color: var(--accent); font-size: 11px; font-weight: 600; }

/* ─── RATES TABLE ─── */
table.q.rates th { padding: 5px 2px; text-align: left; color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; border-bottom: 1px solid var(--border); }
table.q.rates .last-move { font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; }
table.q.rates .mv-hold { color: var(--muted-2); }
table.q.rates .mv-cut { color: var(--up); }
table.q.rates .mv-hike { color: var(--dn); }
table.q.rates .next-meeting { text-align: right; white-space: nowrap; }
table.q.rates .nm-date { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted-2); margin-right: 4px; }
table.q.rates .nm-days { font-family: 'JetBrains Mono', monospace; color: var(--accent); font-size: 11px; font-weight: 600; }

/* ─── CHART DRAWER ─── */
.drawer { position: fixed; inset: 0; z-index: 100; visibility: hidden; }
.drawer.open { visibility: visible; }
.drawer-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.6); opacity: 0; transition: opacity 180ms; }
.drawer.open .drawer-backdrop { opacity: 1; }
.drawer-panel {
  position: absolute; right: 0; top: 0; bottom: 0; width: min(92vw, 1000px);
  background: var(--bg); border-left: 1px solid var(--border);
  transform: translateX(100%); transition: transform 220ms ease;
  display: flex; flex-direction: column;
}
.drawer.open .drawer-panel { transform: translateX(0); }
.drawer-head { display: flex; align-items: center; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--border); }
.drawer-head h3 { margin: 0; font-size: 16px; font-weight: 700; }
.drawer-sub { font-size: 11px; color: var(--muted); font-family: 'JetBrains Mono', monospace; margin-top: 2px; }
.drawer-ranges { display: flex; gap: 4px; margin-left: auto; }
.drawer-ranges button { background: rgba(255,255,255,0.04); border: 1px solid var(--border); color: var(--muted-2); padding: 4px 10px; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; letter-spacing: 0.06em; }
.drawer-ranges button:hover { color: var(--text); }
.drawer-ranges button.active { background: rgba(77,163,255,0.16); border-color: rgba(77,163,255,0.4); color: var(--text); }
.drawer-compare { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; color: var(--muted-2); margin: 0 8px; user-select: none; cursor: pointer; }
.drawer-compare input { margin: 0; accent-color: var(--accent); cursor: pointer; }
.drawer-stats small { color: var(--muted); font-size: 10px; margin-left: 2px; font-weight: 500; }
.drawer-close { background: none; border: 0; color: var(--muted); font-size: 28px; cursor: pointer; padding: 0 4px; line-height: 1; }
.drawer-close:hover { color: var(--text); }
.drawer-chart { flex: 1; padding: 18px; min-height: 380px; }
.drawer-loading { color: var(--muted); padding: 40px; text-align: center; font-size: 13px; }
.drawer-stats { display: flex; flex-wrap: wrap; gap: 18px; padding: 10px 18px 14px; font-size: 12px; border-top: 1px solid var(--border); color: var(--text); }
.drawer-stats span { font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums; }
.drawer-stats em { color: var(--muted); font-style: normal; text-transform: uppercase; letter-spacing: 0.1em; font-size: 9.5px; margin-right: 4px; }
.drawer-stats .up { color: var(--up); }
.drawer-stats .dn { color: var(--dn); }

/* ─── ASSET PAGE ─── */
.asset-page { max-width: 1500px; margin: 0 auto; padding-top: 4px; }
.asset-ticker { font-size: 14px; font-weight: 700; color: var(--accent); font-family: 'JetBrains Mono', monospace; margin-left: 10px; letter-spacing: 0.04em; }
.asset-hero { display: flex; gap: 16px; margin: 0 4px 18px; }
.asset-stats { display: flex; gap: 24px; padding: 14px 18px; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; border-left: 3px solid var(--accent); }
.asset-stat {}
.asset-stat-k { font-size: 9.5px; font-weight: 800; letter-spacing: 0.18em; color: var(--muted); text-transform: uppercase; margin-bottom: 4px; }
.asset-stat-v { font-size: 24px; font-weight: 800; letter-spacing: -0.015em; }
.asset-stat-v.up { color: var(--up); }
.asset-stat-v.dn { color: var(--dn); }
.asset-stat-unit { font-size: 10px; color: var(--muted); margin-top: 2px; letter-spacing: 0.08em; text-transform: uppercase; }
.asset-key-small { font-size: 12px !important; font-weight: 600 !important; color: var(--muted-2); }
.asset-chart-wrap { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 14px 18px; margin: 0 4px 18px; }
.asset-chart-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.asset-chart-head h3 { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted-2); }
.asset-chart { min-height: 420px; }
.asset-stats-footer { padding: 10px 0 0; border-top: 1px solid var(--border); margin-top: 8px; }
.asset-news { margin: 0 4px 18px; }
.asset-ranges button { background: rgba(255,255,255,0.04); border: 1px solid var(--border); color: var(--muted-2); padding: 4px 10px; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; letter-spacing: 0.06em; font-family: inherit; margin-left: 2px; }
.asset-ranges button:hover { color: var(--text); }
.asset-ranges button.active { background: rgba(77,163,255,0.16); border-color: rgba(77,163,255,0.4); color: var(--text); }

/* uPlot light theme override for dark background */
.uplot { font-family: 'JetBrains Mono', monospace; font-size: 11px; }
.uplot .u-legend { background: transparent; color: var(--muted-2); }

/* ─── SPARKLINE SVG ─── */
.spark { display: block; overflow: visible; }
.spark-line { stroke: var(--muted-2); fill: none; }
.spark-area { fill: rgba(159,176,198,0.08); stroke: none; }
.spark-up .spark-line { stroke: var(--up); }
.spark-up .spark-area { fill: rgba(46,204,113,0.10); }
.spark-dn .spark-line { stroke: var(--dn); }
.spark-dn .spark-area { fill: rgba(255,77,79,0.10); }
.spark.empty { background: repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(255,255,255,0.03) 4px, rgba(255,255,255,0.03) 8px); border-radius: 3px; }

/* ─── LISTS (earthquakes, news) ─── */
ul.list { list-style: none; padding: 0; margin: 0; }
ul.list li { padding: 5px 0; border-bottom: 1px solid var(--panel-2); font-size: 12.5px; }
ul.list li:last-child { border-bottom: none; }
ul.list .mag { display: inline-block; width: 42px; font-weight: 700; font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', ui-monospace, monospace; }
ul.list .mag-4 { color: #c2d2e3; }
ul.list .mag-5 { color: #ffc57a; }
ul.list .mag-6 { color: #ff9a3c; }
ul.list .mag-7 { color: #ef4444; }
ul.list .mag-8 { color: #ff1111; text-shadow: 0 0 8px #ff1111; }
ul.list .warn { background: #7f1d1d; padding: 1px 6px; border-radius: 4px; margin-left: 6px; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; }
ul.list.compact li { padding: 4px 0; font-size: 12px; line-height: 1.35; }
ul.list .src { color: var(--muted); font-size: 10px; margin-right: 6px; text-transform: uppercase; letter-spacing: 0.08em; display: inline-block; min-width: 64px; }

/* ─── MACRO ─── */
.macro .row { display: flex; justify-content: space-between; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--panel-2); }
.macro .row:last-child { border-bottom: none; }
.macro .row.fed { flex-direction: column; gap: 2px; align-items: stretch; }
.macro .k { color: var(--muted); font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.08em; }
.macro .v { font-weight: 600; font-family: 'JetBrains Mono', ui-monospace, monospace; }

/* ─── NEWS TICKER (marquee) ─── */
.ticker-wrap {
  position: sticky; bottom: 0; z-index: 15;
  background: linear-gradient(180deg, #0a0e15 0%, #06080c 100%);
  border-top: 1px solid var(--border);
  overflow: hidden; height: 34px;
}
.ticker { width: 100%; height: 100%; position: relative; overflow: hidden; }
.ticker-track {
  display: flex; gap: 28px; align-items: center; height: 100%;
  width: max-content;
  animation: scroll-left 180s linear infinite;
  padding-left: 10px;
}
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker-item { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text); white-space: nowrap; }
.ticker-src { color: var(--accent); font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; padding: 1px 6px; border: 1px solid rgba(77,163,255,0.35); border-radius: 3px; }
.ticker-title { color: var(--muted-2); }
.ticker-item:hover .ticker-title { color: var(--text); text-decoration: underline; }
@keyframes scroll-left {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ─── FOOTER ─── */
footer { padding: 14px 18px; display: flex; justify-content: space-between; color: var(--muted); font-size: 11px; border-top: 1px solid var(--border); margin-top: 10px; letter-spacing: 0.02em; }

/* ─── RESPONSIVE ─── */
@media (max-width: 820px) {
  .topbar { grid-template-columns: 1fr; gap: 8px; }
  .top-alert { justify-self: stretch; }
  .top-clock { justify-self: start; flex-wrap: wrap; gap: 4px; }
  .top-clock button { flex-shrink: 0; }
  .hero { padding: 12px 10px 0; grid-template-columns: repeat(2, 1fr); }
  .hc-price { font-size: 16px; }
  .hc-label { font-size: 9px; }
  main { padding: 8px 10px 20px; }

  /* Cat nav: horizontal scroll strip */
  .catnav { overflow-x: auto; flex-wrap: nowrap; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
  .catnav::-webkit-scrollbar { height: 4px; }
  .catnav-item { white-space: nowrap; flex-shrink: 0; }

  /* Ticker tape — smaller */
  .tape-label { font-size: 10px; }
  .tape-price, .tape-chg { font-size: 11px; }

  /* F&G banner: stack */
  .fg-banner { grid-template-columns: 1fr; gap: 10px 16px; padding: 12px 14px; }
  .fg-banner-score { font-size: 40px; }
  .fg-banner-components { flex-wrap: wrap; }

  /* Cross-asset pulse: smaller padding */
  .cap-group { padding: 8px 10px; }
  .cap-label { font-size: 10px; }

  /* Sector heatmap: shorter rows + hide subtitle label */
  .sh-row { height: 40px; }
  .sh-row:first-child { height: 56px; }
  .sh-ticker { font-size: 10.5px; }
  .sh-label { display: none; }
  .sh-pct { font-size: 9.5px; }

  /* Regime cards: hide descriptions/components on phone to keep scroll short */
  .rg-card .rg-desc, .rg-card .rg-components { display: none; }
  .rg-card { padding: 8px 10px; }
  .rg-score { font-size: 26px; }

  /* Metals row: smaller + 2-col wrap */
  .metals-row { grid-template-columns: repeat(2, 1fr); gap: 6px; }
  .metal-card { padding: 6px 8px; }
  .mc-price { font-size: 13px; }
  .mc-label { font-size: 10px; }
  .mc-spark { display: none; }

  /* Currency converter narrower */
  .fxc-grid { grid-template-columns: repeat(3, 1fr); }
  #fxc-amount { font-size: 16px; }  /* prevent iOS zoom */

  /* Top movers + breaking split → stack */
  .exec-split { grid-template-columns: 1fr; }
  .movers-list li { font-size: 11px; }
  .mv-label { display: none; }

  /* Brief page: single column */
  .brief-grid { grid-template-columns: 1fr; }
  .brief-regimes { grid-template-columns: 1fr 1fr; }

  /* Widget tables: horizontal scroll if overflows */
  .tile > table.q, .tile > div.tbl-wrap { overflow-x: auto; }
  table.q { font-size: 11.5px; }

  /* Drawer full-width */
  .drawer-panel { width: 100%; height: 100%; max-height: none; border-radius: 0; }

  /* Command palette full-width */
  .cmdk-panel { margin-top: 4vh; width: calc(100vw - 16px); }
  #cmdk-input { font-size: 16px; }  /* prevent iOS zoom */
  .cmdk-sub { max-width: 120px; }

  /* Settings + shortcuts modal full width */
  .kbd-card { max-width: calc(100vw - 24px); margin: 6vh 12px 0; }

  /* Footer/admin: tighter */
  .admin-table { font-size: 11px; }
  .admin-table th, .admin-table td { padding: 4px 6px; }

  /* Tile headers shrink */
  .tile-head h3 { font-size: 12.5px; }
  .tile { padding: 10px 12px; }
}

@media print {
  /* Hide chrome that makes no sense on paper */
  .topbar, .price-tape, .catnav, .ribbon, footer,
  .ticker-wrap, .drawer, #cmdk, #kbd-help, #settings-modal,
  .fav-btn, .mu-btn, .metals-unit-toggle, .asset-cmp-toggle,
  .browse-all summary, .browse-all { display: none !important; }

  /* Full-width main content */
  body { background: #fff !important; color: #000 !important; }
  main { padding: 0 !important; max-width: 100% !important; }

  /* Neutralize dark-theme gradients and shadows for clean print */
  .tile, .hero-card, .metal-card, .brief-card, .cap-group, .rg-card,
  .fg-banner, .admin-wrap, .asset-chart-wrap {
    background: #fff !important;
    color: #000 !important;
    border: 1px solid #ccc !important;
    box-shadow: none !important;
    page-break-inside: avoid;
  }
  a { color: #000 !important; text-decoration: none !important; }
  .sh-cell { color: #000 !important; }
  .spark-line, .spark-area { stroke: #555 !important; fill: #eee !important; }

  /* Page break hints */
  .exec-section, .category, .brief-grid { page-break-inside: avoid; }
  h1, h2, h3 { page-break-after: avoid; }

  /* Put the URL next to each external link when printing */
  .cat-news-item::after, .brk-item a::after { content: ""; }

  /* Show a small print header with the page + timestamp */
  main::before {
    content: "lazyai · world pulse · printed " attr(data-printed-ts);
    display: block; font-size: 10px; color: #666; padding: 8px 0 12px;
    border-bottom: 1px solid #999; margin-bottom: 12px;
  }
}

@media (max-width: 440px) {
  .hero { grid-template-columns: 1fr; }
  .metals-row { grid-template-columns: 1fr; }
  .brief-regimes { grid-template-columns: 1fr; }
  .fxc-grid { grid-template-columns: 1fr 1fr; }
  .fg-banner-score { font-size: 32px; }
  .ribbon { display: none; } /* exchanges ribbon hidden to save vertical space */
}

/* ─────────────────────────────────────────────────────────────────────────────
   DESIGN OVERHAUL — microscalp-inspired flat / dense / mono visual language
   Loaded last so it overrides earlier rules. Applies to ALL pages.
   ───────────────────────────────────────────────────────────────────────── */

/* 1. Flatten everything. No rounded corners (except dots / pills). No shadows. */
.brief-card, .cat-tile, .qbox, .ex-card, .narr-card, .ev-card, .news-card,
.fav-bar, .ev-strip, .dash-events, .dash-watch, .cat-stat, .hero-card, .metal-card,
.exec-section, .corr-cell, .coco-cell, .corr-heatmap, .coco-heatmap,
.fg-banner, .brief-reg, .ah-item, .pill, .nf-btn, .nt-btn,
.adm-backfill, .brief-archive-bar, .ba-day, .scrollspy, .hw-pop,
.cat-stat, .cat-stats, .topbar, .ribbon, .alert,
.tile, .tile-head, table.q,
.exec-card, .meta-bar { border-radius: 0 !important; }

.scrollspy, .hw-pop, .toast, .top-toggles, .topbar, .alert,
.cat-tile, .brief-card, .qbox, .ex-card, .fg-banner, .narr-card,
.adm-backfill, .ev-strip, .news-card, .ev-card, .pill,
.live-dot, .sess-dot, .dot, .ss-bullet { box-shadow: none !important; }

.live-dot, .sess-dot, .dot, .ss-bullet, .ss-dot.active .ss-bullet,
.coco-flag-badge, .ba-day { box-shadow: none !important; }

/* Bullet/status dots stay round */
.live-dot, .sess-dot, .ss-bullet, .dot { border-radius: 50% !important; }

/* Pills/badges: tiny 2px radius, uppercase, mono — microscalp style */
.pill, .nf-btn, .nt-btn, .ba-day, .brief-card-tone, .coco-flag-badge,
.adm-bf-state, .alert .rule, .al-label, .brief-reg-key {
  border-radius: 2px !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* 2. Typography: mono everywhere by default, tabular-nums for numbers.
      Headings keep Inter for readability, but body+labels go mono. */
html, body { font-family: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace !important; font-size: 12.5px; }
* { font-variant-numeric: tabular-nums; }
h1, h2, h3, h4, h5, .brand-name, .brief-card-title, .narr-card h3,
.cat-page-title h1, .cat-tile h3, .ex-card h3 { font-family: 'Inter', -apple-system, "Segoe UI", Roboto, sans-serif !important; font-weight: 700; letter-spacing: -0.01em; }

/* Tiny uppercase labels — eye locks onto values, labels recede */
.muted-note, .cs-label, .hc-label, .hw-col-label, .ev-when, .narr-tag,
.tile-head time, .ah-level, .fg-banner-label, .meta, .ba-label, .adm-bf-label,
.brief-reg-key, .news-filter-label, .digest-label, .coco-bar-k, .corr-bar-k,
.ss-label {
  font-size: 9.5px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.1em !important;
  font-weight: 600 !important;
  color: var(--muted) !important;
}

/* Big values — bold, mono, no decoration */
.hc-price, .mc-price, .cs-value, .fg-banner-score, .brief-reg-score,
.coco-head-detail, .corr-bar-v, .coco-bar-v {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* 3. Tiles: hairline borders, single panel shade, no inner glow */
.brief-card, .cat-tile, .qbox, .ex-card, .narr-card, .ev-card, .news-card,
.exec-card, .hero-card, .metal-card, .corr-cell, .coco-cell, .ev-strip,
.fav-bar, .dash-events, .dash-watch, .cat-stat, .pill,
.adm-backfill, .brief-archive-bar {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
}
.brief-card:hover, .cat-tile:hover, .ex-card:hover, .hero-card:hover,
.metal-card:hover, .corr-cell:hover, .coco-cell:hover, .ev-card:hover {
  border-color: var(--border-2) !important;
  background: var(--panel-2) !important;
  transform: none !important;
}

/* 4. Topbar — flat, tighter, no gradient/blur */
.topbar { background: var(--bg-2) !important; backdrop-filter: none !important; padding: 8px 14px !important; border-bottom: 1px solid var(--border) !important; }
.brand-name { font-size: 17px !important; }
.brand-sub { font-size: 9.5px !important; }
.clock { font-size: 14px !important; font-family: ui-monospace, Menlo, Consolas, monospace !important; }

/* 5. Hero cards / data rows — tighter padding, smaller decorative numbers */
.hero { gap: 1px !important; background: var(--border); padding: 1px; }
.hero-card { padding: 10px 12px !important; }
.hero-card .hc-price { font-size: 18px !important; }
.hero-card .hc-change { font-size: 11px !important; }
.metals-row { gap: 1px !important; background: var(--border); padding: 1px; }
.metal-card { padding: 8px 10px !important; }

/* 6. Heatwall — flatten cells, hairline gaps */
.hw-grid { gap: 1px !important; }
.hw-cells { gap: 1px !important; }
.hw-cell { border-radius: 0 !important; box-shadow: none !important; }
.hw-cell:hover { transform: none !important; }
.hw-col { background: var(--panel) !important; border: 1px solid var(--border) !important; }
.hw-col-head { padding: 6px 10px !important; border-bottom: 1px solid var(--border) !important; }

/* 7. Up/down semantic colours stay bright but only for state */
.up, .change-pos, .hc-change.up, .corr-pos, .coco-pos { color: var(--up) !important; }
.dn, .change-neg, .hc-change.dn, .corr-neg, .coco-neg { color: var(--dn) !important; }

/* 8. Scrollspy — flat, hairline. Anchor to vertical center so it never collides
      with the topbar dropdown menu in the top-right corner. */
.scrollspy { top: 50% !important; transform: translateY(-50%) !important; max-height: 60vh !important; background: rgba(13,18,26,0.92) !important; border: 1px solid var(--border) !important; border-radius: 0 !important; padding: 6px 4px !important; z-index: 60 !important; }

/* 9. Alert bar — uppercase rules, square corners */
.alert .rule { font-size: 10.5px !important; padding: 3px 9px !important; }
.al-label { font-size: 10px !important; padding: 3px 8px !important; font-weight: 800 !important; }

/* 10. Buttons — chunky uppercase, no radius */
button, .btn, .nf-btn, .nt-btn, .adm-refresh-all { border-radius: 0 !important; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.adm-refresh-all { font-size: 10.5px !important; padding: 4px 12px !important; }

/* 11. Tables — sticky uppercase headers, no borders on rows except hairlines */
table { border-collapse: collapse !important; }
table th { font-size: 9.5px !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; color: var(--muted) !important; font-weight: 600 !important; border-bottom: 1px solid var(--border) !important; }
table td { border-top: 1px solid var(--border) !important; }
table tr:hover { background: rgba(88,166,255,0.04) !important; }

/* 12. Section titles on dashboard / categories — hairline above, tight type */
.exec-section-label, .cat-page-title h1 { letter-spacing: 0.08em !important; }

/* 13. Drop noisy borders/backgrounds where parent already provides a frame */
.cat-stats { background: var(--border); padding: 1px; gap: 1px !important; }
.cat-stat { border: 0 !important; background: var(--panel) !important; }

/* 14. Manifest / images — keep icon/svg untouched */
img, svg { box-shadow: none !important; }

/* 15. New compact F&G row — aggregate big, sub-regimes as small chips */
.fg-bar-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 1px; background: var(--border); margin: 8px 0; }
@media (max-width: 720px) { .fg-bar-row { grid-template-columns: 1fr; } }
.fg-agg { display: grid; grid-template-columns: auto auto 1fr auto; align-items: center; gap: 12px; padding: 10px 14px; background: var(--panel); text-decoration: none; color: var(--text); }
.fg-agg-kicker { font-size: 9.5px; color: var(--muted); letter-spacing: 0.12em; font-weight: 700; }
.fg-agg-score { font-size: 28px; font-weight: 800; line-height: 1; }
.fg-agg-state { font-size: 11px; color: var(--muted-2); text-transform: uppercase; letter-spacing: 0.06em; }
.fg-agg-trend { font-size: 11px; }
.fg-agg-trend.up { color: var(--up); }
.fg-agg-trend.dn { color: var(--dn); }
.fg-agg-bar { grid-column: 1 / -1; height: 4px; background: linear-gradient(90deg, var(--dn) 0%, var(--warn) 50%, var(--up) 100%); position: relative; opacity: 0.75; }
.fg-agg-tick { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--text); }
.fg-agg-spark { display: none; }
.fg-agg.fg-red { border-left: 2px solid var(--dn); }
.fg-agg.fg-orange { border-left: 2px solid var(--warn); }
.fg-agg.fg-green { border-left: 2px solid var(--up); }
.fg-agg.fg-grey { border-left: 2px solid var(--muted); }

.fg-subs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1px; background: var(--border); }
.fg-sub { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 8px 6px; background: var(--panel); text-decoration: none; color: var(--text); }
.fg-sub:hover { background: var(--panel-2); }
.fg-sub-lbl { font-size: 9px; color: var(--muted); letter-spacing: 0.1em; font-weight: 700; text-transform: uppercase; }
.fg-sub-score { font-size: 16px; font-weight: 700; }
.fg-sub.fg-red .fg-sub-score { color: var(--dn); }
.fg-sub.fg-orange .fg-sub-score { color: var(--warn); }
.fg-sub.fg-green .fg-sub-score { color: var(--up); }
.fg-sub.fg-grey .fg-sub-score { color: var(--muted); }

/* 16. Narrative-events footer (replaces full-width NEXT-UP strip) */
.narr-events { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--border); }
.narr-events-label { font-size: 9.5px; color: var(--muted); letter-spacing: 0.12em; font-weight: 700; }
.ne-item { display: inline-flex; gap: 6px; align-items: center; padding: 2px 8px; font-size: 11px; color: var(--text); text-decoration: none; border: 1px solid var(--border); background: var(--panel); }
.ne-item:hover { border-color: var(--accent); color: var(--accent-2); }
.ne-kind { font-size: 9px; padding: 1px 5px; background: var(--panel-2); color: var(--muted); letter-spacing: 0.08em; text-transform: uppercase; }
.ne-eta { font-size: 10px; color: var(--muted); }
.ne-item.ne-red { border-color: rgba(248,81,73,0.4); }
.ne-item.ne-orange { border-color: rgba(210,153,34,0.4); }
.ne-more { font-size: 10px; color: var(--accent); margin-left: auto; }

/* 17. Hide empty watchlist (rendered but no localStorage favorites) */
.fav-bar:has(#fav-grid:empty) { display: none; }

/* 18. Tighter margins on dashboard sections, more density per scroll */
.exec-section { margin: 12px 0 !important; }
.exec-section-label { padding: 0 0 4px !important; margin: 0 0 6px !important; border-bottom: 1px solid var(--border); }
.narr-top { margin-bottom: 10px !important; }
.narrative-card { padding: 12px 16px !important; }

/* 19. News page: one-line meta bar (replaces 3 stat cards) */
.cat-meta-bar { display: flex; flex-wrap: wrap; gap: 10px 18px; padding: 8px 12px; background: var(--panel); border: 1px solid var(--border); margin: 6px 0 10px; font-size: 11px; }
.cmb-pair { display: inline-flex; gap: 6px; align-items: center; }
.cmb-label { font-size: 9.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; }
.cmb-value { font-weight: 700; color: var(--text); }

/* 20. News filters — single dense row with select + chips */
.news-filters-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--border); margin-bottom: 10px; }
.nf-select { background: var(--panel-2); color: var(--text); border: 1px solid var(--border); padding: 4px 10px; font-family: inherit; font-size: 11px; cursor: pointer; min-width: 140px; }
.nf-select:focus { outline: 1px solid var(--accent); border-color: var(--accent); }
.news-filter-divider { padding-left: 12px; border-left: 1px solid var(--border); margin-left: 6px; }

/* 21. Word cloud collapsed by default — cuts ~25% off /c/news viewport */
.word-cloud-wrap { margin: 8px 0 14px; border: 1px solid var(--border); background: var(--panel); }
.word-cloud-wrap > summary { padding: 6px 12px; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; }
.word-cloud-wrap > summary::-webkit-details-marker { display: none; }
.word-cloud-wrap > summary::before { content: '▸ '; color: var(--muted); margin-right: 6px; }
.word-cloud-wrap[open] > summary::before { content: '▾ '; }
.word-cloud-wrap[open] > summary { border-bottom: 1px solid var(--border); }
.word-cloud-wrap .word-cloud { padding: 10px 12px; }

/* 22. Topic news up top on /c/news — bigger primary headline list */
.cat-topic-top { margin-top: 0 !important; }
.cat-topic-top .topic-list { padding: 6px 0; }
.cat-topic-top .topic-list li { padding: 5px 8px; }
.cat-topic-top .topic-list li:hover { background: rgba(88,166,255,0.04); }

/* 23. /c/news 2-col layout: dense headlines on the left, breaking on the right */
.news-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 360px); gap: 1px; background: var(--border); margin-top: 0; }
.news-grid > * { background: var(--bg); }
.news-primary { padding: 0 12px 12px; }
.news-side { padding: 0; }
.news-side .tile { border: 0 !important; height: 100%; }
@media (max-width: 1024px) { .news-grid { grid-template-columns: 1fr; } }

/* Dense headline list on /c/news — tabular, mono ticker label, 2 lines per item max */
.news-dense { padding: 0 !important; }
.news-dense li { display: grid !important; grid-template-columns: 110px 1fr auto; gap: 10px; align-items: center; padding: 5px 6px !important; border-bottom: 1px solid var(--border) !important; font-size: 12px; }
.news-dense li:hover { background: rgba(88,166,255,0.04); }
.news-dense li .src { font-size: 9.5px !important; color: var(--muted) !important; text-transform: uppercase; letter-spacing: 0.08em; padding: 1px 6px; background: var(--panel-2); border: 1px solid var(--border); justify-self: start; }
.news-dense li a { color: var(--text); text-decoration: none; }
.news-dense li a:hover { color: var(--accent-2); text-decoration: underline; }

/* 24. Equalize "What's Moving" columns + cap heights so empty gaps don't dominate */
.pulse-grid { grid-template-columns: 1fr 1fr 1fr !important; gap: 1px !important; background: var(--border); }
.pulse-col { background: var(--panel) !important; min-height: 320px; }
.pulse-col ul { max-height: 360px; overflow-y: auto; scrollbar-width: thin; }
.pulse-col ul::-webkit-scrollbar { width: 4px; }
.pulse-col ul::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.18); }

/* 25. Heatwall — fill viewport horizontally on wide screens, equal columns */
.hw-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important; }
.hw-cells { min-height: 180px; }

/* 26. Drop scroll-spy on tall content — it was causing confusion. Keep on /brief etc. */
@media (max-width: 1280px) { .scrollspy { display: none !important; } }

/* ─────────────────────────────────────────────────────────────────────────────
   ALIGNMENT ROUND 2 — fix the "shit zit niet recht" leftovers identified
   in the full-site layout audit.
   ───────────────────────────────────────────────────────────────────────── */

/* P0-1. Heatwall hairline-gap leak — parent paints the gap colour */
.hw-cells { background: var(--border) !important; padding: 1px !important; gap: 1px !important; }
.hw-cell { border-radius: 0 !important; }

/* P0-2 + P0-3. Brief page: flat cards + hairline grid */
.brief-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important; gap: 1px !important; background: var(--border) !important; padding: 1px; }
.brief-card { border-radius: 0 !important; background: var(--panel) !important; padding: 12px 14px !important; }
.brief-card-tone { border-radius: 2px !important; }

/* P1-4 + P2-16. Cat-page-news panel flat, normal rhythm */
.cat-page-news { border-radius: 0 !important; padding: 12px 14px !important; margin-top: 14px !important; background: var(--panel); border: 1px solid var(--border); }
.cat-topic-top.news-primary { background: transparent; border: 0; }

/* P1-6. Hero strip on category pages — auto-fit so 3 items don't leave dead space */
.cat-page-hero { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important; gap: 1px !important; background: var(--border) !important; padding: 1px; }
.cat-page-hero .hero-card { border-radius: 0 !important; }

/* P1-7. Regime row on /brief — flat, hairline gaps */
.brief-regimes { display: grid !important; gap: 1px !important; background: var(--border) !important; padding: 1px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important; }
.brief-reg { border-radius: 0 !important; background: var(--panel) !important; padding: 10px 14px !important; }

/* P1-8. F&G subs — drop doubled hairline; parent already paints --border */
.fg-subs { background: transparent !important; }

/* P1-10. Tile-narrative — equalize with neighboring tiles, kill colored left bar */
.tile-narrative { border-left: 1px solid var(--border) !important; padding: 12px 14px !important; }

/* P1-11. News-dense source column — wide enough for "MarketWatch", "Al Jazeera" */
.news-dense li { grid-template-columns: 140px 1fr auto !important; }

/* P2-12. cm-regime square */
.cm-regime { border-radius: 0 !important; }

/* P2-14. Anom-strip / hero-card residual radii */
.anom-strip, .exec-hero .hero-card, .hero-card { border-radius: 0 !important; }

/* P2-15. Harmonize all "label" font-sizes to 9.5px so the same role looks the same everywhere */
.hc-label, .mc-label { font-size: 9.5px !important; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted) !important; font-weight: 700 !important; }

/* P2-17. Breaking urgent inset — flat */
.brk-section.urgent, .brk-section { border-radius: 0 !important; }

/* P2-18. News grid right column scales with viewport */
.news-grid { grid-template-columns: minmax(0, 1fr) minmax(280px, 25%) !important; }

/* Bonus polish: cat-stats hairline-gap fix (parent paints background) */
.cat-stats { background: var(--border) !important; padding: 1px !important; gap: 1px !important; }
.cat-stat { border-radius: 0 !important; background: var(--panel) !important; padding: 10px 14px !important; }

/* Bonus polish: cat-page-grid uses hairline gap too, like dashboard */
.cat-page-grid { gap: 1px !important; background: var(--border); padding: 1px; }
.cat-page-grid > .tile { border-radius: 0 !important; background: var(--panel) !important; }

/* Bonus: section margin rhythm — keep all dashboard sections to a consistent 10px */
.exec-section, .cat-stats, .cat-page-hero, .cat-meta-bar, .news-filters-row,
.word-cloud-wrap, .brief-archive-bar, .brief-regimes, .news-grid,
.fg-bar-row, .dash-events, .narr-full { margin-top: 10px !important; margin-bottom: 10px !important; }
.narr-top { margin-top: 0 !important; }

/* Bonus: any leftover gradient bg in tiles → flat panel */
.exec, .exec-section, .tile, .cat-tile, .brief-card { background-image: none !important; }

/* ─── /learn page ─── */
.learn-page { padding: 0 4px; }
.learn-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 1px; background: var(--border); padding: 1px; margin-top: 10px; }
.learn-card { background: var(--panel); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.learn-card:hover { background: var(--panel-2); }
.learn-card-head { display: flex; align-items: center; gap: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--border); }
.learn-icon { font-size: 18px; color: var(--accent); font-family: 'Inter', sans-serif; line-height: 1; }
.learn-card-title { margin: 0; font-size: 14px; font-weight: 700; color: var(--text); }
.learn-card-desc { margin: 0; font-size: 11px; color: var(--muted-2); line-height: 1.4; }
.learn-links { list-style: none; padding: 0; margin: 4px 0 0; display: flex; flex-direction: column; gap: 8px; }
.learn-links li { padding: 6px 8px; background: var(--bg-2); border-left: 2px solid var(--border); transition: border-color 120ms; }
.learn-links li:hover { border-left-color: var(--accent); }
.learn-link { display: inline-flex; gap: 8px; align-items: baseline; text-decoration: none; color: var(--accent-2); font-size: 12px; font-weight: 600; }
.learn-link:hover .learn-link-name { text-decoration: underline; }
.learn-link-name::after { content: ' ↗'; font-size: 9px; opacity: 0.6; }
.learn-tag { font-size: 8.5px; padding: 1px 6px; background: var(--panel-2); color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; }
.learn-link-desc { font-size: 10.5px; color: var(--muted-2); margin-top: 3px; line-height: 1.4; }

/* Catnav: Learn item gets a subtle distinct accent so it stands apart from data categories */
.catnav-item.catnav-learn { color: var(--muted-2); border-left: 1px solid var(--border); padding-left: 12px; margin-left: 6px; }
.catnav-item.catnav-learn.active { color: var(--accent-2); }
.catnav-item.catnav-learn .catnav-dot { background: var(--muted); }
.catnav-item.catnav-learn.active .catnav-dot { background: var(--accent); }

/* ─── v4 · KILL THE MARQUEE CHROME EVERYWHERE ─────────────────────────────
   The price-tape, the exchanges ribbon, and the news ticker were what made
   the site read like every other dashboard. Off they go. They survive only
   on /brief (where they belong as a "morning paper" element). */
.price-tape { display: none !important; }
.ribbon, #exchanges-ribbon { display: none !important; }
body[data-page="brief"] .price-tape, body[data-page="brief"] .ribbon { display: block !important; }

/* News-ticker marquee dies on the homepage (v4 doesn't use it).
   It still works as a widget endpoint, so brief/etc can opt in later. */
.ed.v4 .nt-host, .ed.v4 .v3-pulse { display: none !important; }

/* The top alert-bar in the header is also a "bar" — replace with a quieter
   inline state pill only when an actual alert is live. Hide the empty shell. */
.top-alert .alert:not(.alert-red):not(.alert-orange) { display: none !important; }
.top-alert { min-height: 0 !important; }
.top-alert .alert { padding: 4px 12px !important; border-radius: 0 !important; background: transparent !important; }
.top-alert .alert .rule { background: transparent !important; border: 0 !important; padding: 0 !important; font-size: 11px !important; color: var(--accent-2) !important; text-transform: none !important; letter-spacing: 0 !important; }

/* ─── HOMEPAGE v4 · EDITORIAL MAGAZINE ─── */

/* Editorial column — everything below the hero lives in one narrow column,
   like a magazine spread. Heatwall gets to breathe, prose flows, no grid. */
.ed.v4 { max-width: 1180px; margin: 0 auto; }
.ed-column { max-width: 760px; margin: 0 auto; padding: 0 8px; }

/* Heatwall as a featured spread, centered with whitespace */
.ed.v4 .v3-heatwall-hero { margin: 32px auto !important; padding: 0 !important; max-width: 1180px; }
.ed.v4 .v3-hw-label { font-size: 12px !important; color: var(--muted) !important; letter-spacing: 0.08em !important; text-transform: uppercase !important; padding: 0 0 10px !important; border: 0 !important; }
.ed.v4 .v3-hw-label::after { display: none !important; }
.ed.v4 .hw-grid { border: 1px solid var(--border-2); background: var(--border) !important; padding: 1px !important; gap: 1px !important; }

/* Editorial prose blocks */
.ed-prose { font-family: 'Fraunces', Georgia, serif; font-size: 18px; line-height: 1.65; color: var(--muted-2); margin: 32px auto; font-weight: 400; max-width: 720px; }
.ed-prose strong { color: var(--text); font-weight: 600; }
.ed-prose a { color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.ed-prose a:hover { color: var(--accent-2); }
.ed-prose-first::first-letter { font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: 4.6em; line-height: 0.85; float: left; padding-right: 12px; padding-top: 6px; color: var(--accent); }

/* Pull-quote — the magazine "what stands out" marker */
.ed-pull { margin: 40px auto; max-width: 720px; padding: 18px 28px; border-left: 3px solid var(--accent); font-family: 'Fraunces', Georgia, serif; font-size: 22px; line-height: 1.4; color: var(--text); font-style: italic; font-weight: 400; }
.ed-pull cite { display: block; margin-top: 8px; font-size: 11px; font-style: normal; color: var(--muted); letter-spacing: 0.1em; text-transform: uppercase; font-family: 'Inter', sans-serif; }

/* Numbered "annotations" block — replaces the tile feed.
   Reads like a magazine sidebar with footnoted updates. */
.ed-annotations { max-width: 720px; margin: 40px auto; padding: 24px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.ed-annotations-head { font-family: 'Fraunces', Georgia, serif; font-size: 13px; letter-spacing: 0.06em; color: var(--accent); margin-bottom: 14px; text-transform: uppercase; font-weight: 600; }
.ed-annotations ol { list-style: none; counter-reset: ann; padding: 0; margin: 0; }
.ed-annotations li { counter-increment: ann; display: grid; grid-template-columns: 28px 64px 1fr auto; gap: 14px; padding: 8px 0; font-family: 'Inter', sans-serif; font-size: 13.5px; line-height: 1.45; color: var(--muted-2); border-bottom: 1px dotted var(--border); }
.ed-annotations li:last-child { border-bottom: 0; }
.ed-annotations li::before { content: counter(ann, decimal-leading-zero); font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted); letter-spacing: 0.05em; }
.ed-annotations li time { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted); }
.ed-annotations li a { color: var(--text); text-decoration: none; }
.ed-annotations li a:hover { color: var(--accent); text-decoration: underline; }
.ed-annotations li .ed-ann-src { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; }

/* Quoted excerpts — headlines as journalism, not as a feed */
.ed-clippings { max-width: 760px; margin: 40px auto; }
.ed-clippings-head { font-family: 'Fraunces', Georgia, serif; font-size: 13px; letter-spacing: 0.06em; color: var(--accent); margin-bottom: 18px; text-transform: uppercase; font-weight: 600; }
.ed-clippings ul { list-style: none; padding: 0; margin: 0; }
.ed-clippings li { padding: 14px 0; border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 4px; }
.ed-clippings li:last-child { border-bottom: 0; }
.ed-clippings .ed-clip-title { font-family: 'Fraunces', Georgia, serif; font-weight: 500; font-size: 16px; line-height: 1.4; color: var(--text); text-decoration: none; }
.ed-clippings .ed-clip-title:hover { color: var(--accent); text-decoration: underline; }
.ed-clippings .ed-clip-meta { font-size: 10.5px; color: var(--muted); letter-spacing: 0.08em; text-transform: uppercase; font-family: 'Inter', sans-serif; }
.ed-clippings .ed-clip-meta a { color: var(--accent); margin-left: 8px; }

/* Footer index — links as inline text, like an article footer */
.ed-foot { max-width: 720px; margin: 48px auto 24px; padding-top: 24px; border-top: 1px solid var(--border); font-family: 'Inter', sans-serif; font-size: 12px; color: var(--muted-2); line-height: 1.9; }
.ed-foot a { color: var(--text); text-decoration: none; margin-right: 18px; border-bottom: 1px solid transparent; padding-bottom: 1px; }
.ed-foot a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.ed-foot-meta { font-size: 10px; color: var(--muted); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 12px; }

/* Hide v3 leftovers that the editorial template no longer renders */
.ed.v4 .v3-broadcast, .ed.v4 .v3-regime-band, .ed.v4 .dive-strip { display: none !important; }

/* Annotations list rows — explicit grid for the JS-rendered entries */
.ed-annotations-list li { display: grid !important; grid-template-columns: 28px 64px 1fr auto !important; gap: 14px !important; align-items: baseline; }
.ed-annotations-list li.ed-ann-empty { grid-template-columns: 1fr !important; padding: 12px 0 !important; color: var(--muted) !important; font-style: italic; }

/* Slim topbar — pure type, no toggle row.
   Toggles still accessible via the ⋯ menu on smaller screens. */
.topbar { grid-template-columns: auto 1fr auto !important; gap: 16px !important; padding: 14px 32px !important; background: transparent !important; border-bottom: 1px solid var(--border) !important; backdrop-filter: none !important; }
.top-alert { order: 3 !important; display: flex !important; justify-content: flex-end !important; }
.top-clock { order: 2 !important; display: flex !important; align-items: center !important; gap: 14px !important; }
.top-clock .sessions, .top-clock .clock-tz, .top-clock .top-toggles { display: none !important; }
.top-clock .clock { font-size: 13px !important; color: var(--muted-2) !important; }
.top-clock .clock-sub { font-size: 9px !important; color: var(--muted) !important; letter-spacing: 0.12em !important; }
.top-menu-btn { display: inline-flex !important; background: transparent !important; border: 1px solid var(--border-2) !important; color: var(--muted-2) !important; width: 28px !important; height: 28px !important; border-radius: 0 !important; }
.brand-link { display: flex; align-items: baseline; gap: 8px; text-decoration: none; }
.live-dot { display: none !important; }
@media (max-width: 720px) {
  .topbar { padding: 10px 18px !important; }
  .top-clock { display: none !important; }
}

/* Catnav — text links with thin underline, like a magazine TOC bar */
.catnav { overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; }
.catnav-item { padding: 14px 16px !important; border-bottom: 2px solid transparent !important; color: var(--muted-2) !important; transition: color 140ms, border-color 140ms; }
.catnav-item:hover { color: var(--text) !important; }
.catnav-item.active { color: var(--accent) !important; border-bottom-color: var(--accent) !important; }
.catnav-item.catnav-live { color: var(--dn) !important; }
.catnav-item.catnav-live.active { background: transparent !important; color: var(--dn) !important; border-bottom-color: var(--dn) !important; }
.catnav-dot, .catnav-brief .catnav-dot { display: none !important; }


/* Editorial hero — big serif headline, generous breathing, soft warm glow */
.ed-hero { position: relative; padding: 56px 0 48px; margin: 0 0 24px; overflow: hidden; }
.ed-hero-glow {
  position: absolute; inset: -10% -20% auto -20%; height: 70%;
  background: radial-gradient(ellipse at top, rgba(212,162,86,0.18) 0%, rgba(212,162,86,0.05) 35%, transparent 70%);
  pointer-events: none; z-index: 0;
}
.ed-hero-inner { position: relative; z-index: 1; max-width: 920px; }
.ed-hero-kicker { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin-bottom: 18px; }
.ed-issue { color: var(--accent); }
.ed-state { padding: 3px 10px; border: 1px solid var(--border-2); }
.ed-state-green { color: var(--up); border-color: rgba(110,201,122,0.45); }
.ed-state-orange { color: var(--warn); border-color: rgba(217,164,68,0.45); }
.ed-state-red { color: var(--dn); border-color: rgba(232,90,74,0.55); }
.ed-state-grey { color: var(--muted-2); }
.ed-date { margin-left: auto; }

.ed-hero-headline {
  font-family: 'Fraunces', Georgia, serif !important;
  font-weight: 600;
  font-size: clamp(28px, 4.2vw, 54px);
  line-height: 1.08;
  letter-spacing: -0.015em;
  color: var(--text);
  margin: 0 0 18px;
  font-feature-settings: "opsz" 144, "ss01";
}
.ed-hero-dek {
  font-family: 'Fraunces', Georgia, serif !important;
  font-weight: 400;
  font-size: clamp(15px, 1.6vw, 19px);
  line-height: 1.55;
  color: var(--muted-2);
  margin: 0 0 24px;
  font-feature-settings: "opsz" 24;
  max-width: 760px;
}
.ed-hero-foot { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.ed-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.ed-tag { font-size: 10px; padding: 3px 9px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; border: 1px solid var(--border-2); color: var(--muted-2); background: transparent; }
.ed-tag-good { color: var(--up); border-color: rgba(110,201,122,0.45); }
.ed-tag-danger { color: var(--dn); border-color: rgba(232,90,74,0.55); }
.ed-tag-neutral { color: var(--muted-2); }
.ed-cta { margin-left: auto; padding: 10px 18px; background: transparent; color: var(--accent); border: 1px solid var(--accent); font-size: 12px; text-decoration: none; letter-spacing: 0.06em; font-weight: 600; transition: background 140ms, color 140ms; }
.ed-cta:hover { background: var(--accent); color: var(--bg); }
@media (max-width: 720px) {
  .ed-hero { padding: 36px 0 32px; margin-bottom: 18px; }
  .ed-hero-kicker .ed-date { margin-left: 0; width: 100%; }
  .ed-cta { margin-left: 0; width: 100%; text-align: center; }
}

/* Reset main padding to give the editorial layout space */
main { padding: 0 32px 40px !important; max-width: 1480px; margin: 0 auto; min-height: calc(100vh - 220px); }
@media (max-width: 820px) { main { padding: 0 18px 30px !important; } }

/* Section labels — refined editorial style instead of dense uppercase */
.exec-section > .exec-section-label,
.v3-hw-label,
.learn-section-title {
  font-family: 'Fraunces', Georgia, serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  color: var(--text) !important;
  padding-bottom: 6px !important;
  border-bottom: 1px solid var(--border) !important;
  margin-bottom: 14px !important;
}

/* Heatwall sits in a darker, more dramatic container with more headroom */
.v3-heatwall-hero {
  margin: 0 !important;
  padding: 18px 0 8px !important;
  border-top: 0 !important;
  background: transparent !important;
}
.v3-hw-label { letter-spacing: 0 !important; padding: 0 0 8px !important; }
.v3-hw-label::after {
  content: "";
  display: inline-block;
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, var(--border-2), transparent);
  margin-left: 12px;
}
.hw-grid { gap: 2px !important; background: var(--border) !important; padding: 2px !important; border: 1px solid var(--border-2); }
.hw-cells { gap: 2px !important; padding: 2px !important; }

/* Broadcast strip stays but with editorial spacing */
.v3-broadcast { gap: 2px !important; background: var(--border-2) !important; padding: 2px !important; border: 1px solid var(--border-2); margin: 24px 0 !important; }
.v3-broadcast > section, .v3-broadcast > aside { padding: 20px 24px !important; min-height: 380px !important; background: var(--bg-2) !important; }
.v3-block-head { padding-bottom: 12px !important; margin-bottom: 14px !important; }
.v3-block-head h2 { font-size: 18px !important; letter-spacing: -0.005em !important; text-transform: none !important; }
.v3-story-lede { font-family: 'Fraunces', Georgia, serif !important; font-weight: 400; font-size: 17px !important; line-height: 1.55 !important; color: var(--text) !important; }

/* Regime band — calmer */
.v3-regime-band { background: transparent !important; border: 0 !important; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 12px 0 !important; }

/* Dive pills — more refined */
.dive-strip { background: transparent !important; padding: 0 !important; gap: 0 !important; border-top: 1px solid var(--border); margin: 24px 0 8px !important; }
.dive-pill { background: transparent !important; border: 0 !important; border-right: 1px solid var(--border) !important; color: var(--muted-2) !important; padding: 14px 18px !important; font-family: 'Inter', sans-serif !important; font-size: 12px !important; letter-spacing: 0 !important; font-weight: 500 !important; text-transform: none !important; }
.dive-pill:last-child { border-right: 0 !important; }
.dive-pill:hover { background: transparent !important; color: var(--accent) !important; }

/* Event ticker rows — give them air */
.et-item { padding: 9px 6px !important; font-size: 12.5px !important; gap: 10px !important; }
.et-label { font-family: 'Inter', sans-serif !important; font-size: 13px; }

/* Headline ticker — smaller, more refined, less Bloomberg-yellow-band */
.nt-host { background: transparent !important; border: 0 !important; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.nt-marquee { height: 34px !important; }
.nt-item { font-size: 12.5px !important; padding: 7px 16px !important; font-family: 'Inter', sans-serif !important; }
.nt-src { font-family: 'JetBrains Mono', monospace !important; background: transparent !important; border: 0 !important; color: var(--accent) !important; padding: 0 !important; font-size: 10px !important; }
.nt-headline { color: var(--text) !important; }

/* Topbar slimmer + serif brand */
.topbar { padding: 12px 32px !important; background: var(--bg-2) !important; }
@media (max-width: 820px) { .topbar { padding: 10px 18px !important; } }
.brand-name { font-family: 'Fraunces', Georgia, serif !important; font-weight: 700 !important; font-size: 22px !important; letter-spacing: -0.02em !important; color: var(--accent) !important; }
.brand-sub { color: var(--muted) !important; font-family: 'JetBrains Mono', monospace !important; font-size: 9px !important; }

/* Catnav refinement — editorial nav */
.catnav { padding: 0 32px !important; gap: 0 !important; background: transparent !important; border-bottom: 1px solid var(--border); }
@media (max-width: 820px) { .catnav { padding: 0 18px !important; } }
.catnav-item { padding: 12px 14px !important; font-family: 'Inter', sans-serif !important; font-size: 12px !important; font-weight: 500 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--muted-2) !important; border-bottom: 2px solid transparent !important; }
.catnav-item:hover { color: var(--text) !important; background: transparent !important; }
.catnav-item.active { color: var(--accent) !important; border-bottom-color: var(--accent) !important; background: transparent !important; }
.catnav-dot { display: none !important; }

/* ─── HOMEPAGE v3 · MAGAZINE BROADCAST ─── */

.warroom.v3 { display: flex; flex-direction: column; gap: 0; }

/* Headline pulse — top marquee */
.v3-pulse { margin: 0 0 8px; }

/* Heatwall full-bleed centerpiece */
.v3-heatwall-hero {
  margin: 0 calc(-1 * var(--main-pad-x, 16px));
  padding: 0 var(--main-pad-x, 16px) 4px;
  border-top: 2px solid var(--accent);
  border-bottom: 1px solid var(--border);
  background: var(--bg-2);
}
.v3-hw-label { display: flex; gap: 12px; align-items: center; font-size: 11px !important; letter-spacing: 0.14em !important; padding: 6px 0 !important; margin: 0 !important; border: 0 !important; }
.v3-hw-story { margin-left: auto; font-size: 11px; color: var(--muted-2); text-decoration: none; text-transform: none; letter-spacing: 0; font-weight: 400; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3-hw-story:hover { color: var(--accent-2); }

/* Broadcast strip: RIGHT NOW + TODAY'S STORY 60/40 */
.v3-broadcast { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 1px; background: var(--border); padding: 1px; margin: 12px 0; }
.v3-broadcast > section, .v3-broadcast > aside { background: var(--panel); padding: 12px 14px; min-height: 360px; display: flex; flex-direction: column; }
@media (max-width: 1000px) { .v3-broadcast { grid-template-columns: 1fr; } }

.v3-block-head { display: flex; align-items: baseline; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); margin-bottom: 8px; flex-wrap: wrap; }
.v3-block-head h2 { margin: 0; font-size: 13px; font-weight: 800; letter-spacing: 0.14em; color: var(--text); }
.v3-live-link { margin-left: auto; font-size: 10.5px; padding: 3px 9px; background: rgba(248,81,73,0.14); color: var(--dn); border: 1px solid rgba(248,81,73,0.5); text-decoration: none; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.v3-live-link:hover { background: var(--dn); color: #fff; }

/* RIGHT NOW container reuses .et-feed from v2 */
.v3-rn { display: flex; flex-direction: column; }

/* TODAY'S STORY aside */
.v3-story { display: flex; flex-direction: column; }
.v3-story-lede { margin: 0 0 12px; font-size: 13px; line-height: 1.5; color: var(--text); }
.v3-story-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 12px; }
.v3-story-links { list-style: none; padding: 0; margin: auto 0 0; display: flex; flex-direction: column; gap: 4px; border-top: 1px dashed var(--border); padding-top: 10px; }
.v3-story-links a { color: var(--accent-2); text-decoration: none; font-size: 12px; }
.v3-story-links a:hover { color: var(--accent); text-decoration: underline; }

/* Regime band — single-line horizontal pulse */
.v3-regime-band { background: var(--panel); border: 1px solid var(--border); padding: 8px 14px; margin: 0 0 10px; font-size: 11.5px; }

/* ─── /live page ─── */
.live-page { padding: 0; }
.live-grid-host { margin: 16px 0; }
.live-page .ln-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.live-page .ln-thumb { aspect-ratio: 16/9 !important; }
.live-page .ln-meta { padding: 8px 12px !important; }
.live-page .ln-label { font-size: 13px !important; font-weight: 700; }
.live-page .ln-sub { font-size: 11px !important; }
.live-page .ln-play { width: 56px !important; height: 56px !important; font-size: 18px !important; }
.live-page .ln-tag, .live-page .ln-live { font-size: 10px !important; padding: 3px 7px !important; }
@media (max-width: 1024px) { .live-page .ln-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (max-width: 540px) { .live-page .ln-grid { grid-template-columns: 1fr !important; } }
.live-feed-strip { margin: 16px 0; padding: 12px 14px; background: var(--panel); border: 1px solid var(--border); }
.live-feed-strip .et-feed { max-height: 280px; }

/* ─── /learn v2 ─── */

/* Filter chips */
.learn-chips { display: flex; flex-wrap: wrap; gap: 1px; background: var(--border); padding: 1px; margin: 12px 0; }
.learn-chip { padding: 8px 16px; background: var(--panel); color: var(--muted-2); border: 0; cursor: pointer; font-family: inherit; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; transition: background 120ms, color 120ms; }
.learn-chip:hover { background: var(--panel-2); color: var(--text); }
.learn-chip.active { background: var(--accent); color: #04060a; }

/* Learning paths */
.learn-paths { margin: 16px 0; background: var(--panel); border: 1px solid var(--border); padding: 16px 18px; }
.learn-paths-head { margin-bottom: 12px; }
.learn-paths-head h2 { margin: 0 0 4px; font-size: 16px; color: var(--text); }
.learn-paths-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.learn-path { background: var(--panel); padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.learn-path h3 { margin: 0; font-size: 13px; color: var(--accent-2); letter-spacing: 0.04em; }
.learn-path-desc { margin: 0; font-size: 11px; color: var(--muted-2); }
.learn-path-steps { padding: 0 0 0 22px; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.learn-path-steps li { font-size: 11.5px; color: var(--muted-2); }
.learn-path-link { color: var(--text); text-decoration: none; }
.learn-path-link:hover { color: var(--accent-2); text-decoration: underline; }
@media (max-width: 900px) { .learn-paths-grid { grid-template-columns: 1fr; } }

/* Cheatsheets strip */
.learn-cheats { margin: 16px 0; }
.learn-section-title { margin: 0 0 10px; font-size: 13px; letter-spacing: 0.1em; color: var(--text); border-bottom: 1px solid var(--border-2); padding-bottom: 4px; }
.learn-cheats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.learn-cheat { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--panel); color: var(--text); text-decoration: none; font-size: 12px; font-weight: 600; transition: background 120ms; }
.learn-cheat:hover { background: var(--panel-2); color: var(--accent-2); }
.learn-cheat-icon { font-size: 16px; color: var(--accent); width: 20px; text-align: center; }

/* Reading-time + level meta label */
.learn-meta { display: inline-block; margin-left: 6px; font-size: 9.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em; padding: 1px 6px; background: var(--panel-2); border: 1px solid var(--border); font-weight: 700; }

/* Video wall */
.learn-videos { margin: 20px 0; }
.learn-video-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.learn-video { background: var(--panel); border: 0; padding: 0; cursor: pointer; font-family: inherit; text-align: left; display: flex; flex-direction: column; }
.learn-video:hover .learn-video-play { background: var(--accent); transform: translate(-50%, -50%) scale(1.1); }
.learn-video-thumb { position: relative; aspect-ratio: 16/9; background: var(--bg); overflow: hidden; }
.learn-video-thumb img { width: 100%; height: 100%; object-fit: cover; }
.learn-video-thumb iframe { width: 100%; height: 100%; border: 0; }
.learn-video-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 42px; height: 42px; border-radius: 50%; background: rgba(0,0,0,0.7); color: #fff; border: 2px solid #fff; font-size: 14px; }
.learn-video-meta { padding: 8px 12px; display: flex; flex-direction: column; gap: 2px; border-top: 1px solid var(--border); }
.learn-video-title { font-size: 12px; font-weight: 700; color: var(--text); }
.learn-video-channel { font-size: 10.5px; color: var(--muted); }

/* Tools we use table */
.learn-tools { margin: 20px 0; }
.learn-tools-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.learn-tools-table th { text-align: left; padding: 8px 10px; background: var(--panel-2); color: var(--muted); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.12em; border-bottom: 1px solid var(--border); }
.learn-tools-table td { padding: 7px 10px; border-bottom: 1px solid var(--border); color: var(--text); }
.learn-tools-table tr:hover { background: rgba(88,166,255,0.04); }
.lt-api { font-weight: 700; }
.lt-powers { color: var(--muted-2); font-size: 11.5px; }
.lt-docs { text-align: right; white-space: nowrap; }
.lt-docs a { color: var(--accent); font-size: 11px; }

/* Footer note */
.learn-foot { text-align: center; padding: 24px 0; font-size: 11px; color: var(--muted); }
.learn-foot a { color: var(--accent-2); }

/* Hidden state for filter (use attribute selector to also work on existing tools) */
[data-topics][hidden] { display: none !important; }

/* Catnav additions */
.catnav-item.catnav-live { color: var(--dn); }
.catnav-item.catnav-live.active { color: #fff; background: var(--dn); }
.catnav-item.catnav-live .catnav-dot { background: var(--dn); }

/* ─── HOMEPAGE ROUND-3 · WAR-ROOM LAYOUT (v2, deprecated by v3 above) ─── */

/* Page wrapper — gives room to breathe */
.warroom { display: flex; flex-direction: column; gap: 8px; }

/* 1 · LIVE HEADLINE TICKER (top marquee) */
.nt-host { background: var(--panel); border: 1px solid var(--border); overflow: hidden; }
.nt-marquee { overflow: hidden; height: 30px; position: relative; }
.nt-track { display: inline-flex; white-space: nowrap; will-change: transform; animation: nt-scroll 240s linear infinite; }
.nt-host:hover .nt-track { animation-play-state: paused; }
.nt-item { display: inline-flex; align-items: center; gap: 8px; padding: 5px 14px; text-decoration: none; color: var(--text); font-size: 12px; }
.nt-src { font-size: 9.5px; padding: 1px 6px; background: var(--panel-2); color: var(--muted); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; border: 1px solid var(--border); }
.nt-headline { color: var(--text); }
.nt-item:hover .nt-headline { color: var(--accent-2); text-decoration: underline; }
.nt-age { font-size: 9.5px; color: var(--warn); padding: 0 4px; }
.nt-sep { color: var(--muted); padding-left: 8px; }
.nt-empty { padding: 8px 14px; }
@keyframes nt-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* 2 · HEATWALL hero — full bleed, biggest tile on page */
.heatwall-hero { margin: 8px 0 !important; padding: 0; }
.heatwall-label { display: flex; gap: 12px; align-items: center; font-size: 11px !important; letter-spacing: 0.14em !important; padding: 6px 2px !important; border-bottom: 2px solid var(--accent) !important; margin-bottom: 4px !important; }
.hw-fg { display: inline-flex; align-items: center; padding: 2px 9px; font-size: 11px; font-weight: 800; text-decoration: none; border: 1px solid var(--border); color: var(--text); }
.hw-fg.fg-green { background: rgba(63,185,80,0.14); color: var(--up); border-color: rgba(63,185,80,0.5); }
.hw-fg.fg-orange { background: rgba(210,153,34,0.14); color: var(--warn); border-color: rgba(210,153,34,0.5); }
.hw-fg.fg-red { background: rgba(248,81,73,0.14); color: var(--dn); border-color: rgba(248,81,73,0.5); }
.hw-fg.fg-grey { background: var(--panel-2); color: var(--muted); }
.hw-story { margin-left: auto; font-size: 11px; color: var(--muted-2); text-decoration: none; text-transform: none; letter-spacing: 0; font-weight: 400; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hw-story:hover { color: var(--accent-2); }

/* 3 · TWO-COLUMN MAIN: Right Now feed (big) + Live Newswire grid (compact) */
.warroom-2col { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr); gap: 1px; background: var(--border); padding: 1px; }
.warroom-2col > section { background: var(--panel); padding: 10px 12px; min-height: 420px; }
@media (max-width: 1100px) { .warroom-2col { grid-template-columns: 1fr; } }

/* RIGHT NOW feed */
.rightnow { display: flex; flex-direction: column; }
.rn-head { display: flex; align-items: baseline; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); margin-bottom: 8px; flex-wrap: wrap; }
.rn-head h2 { margin: 0; font-size: 13px; font-weight: 800; letter-spacing: 0.14em; color: var(--text); }
.rn-live { display: inline-flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 800; letter-spacing: 0.12em; color: var(--up); }
.rn-sub { font-size: 10px !important; }
.et-feed { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1px; max-height: 600px; overflow-y: auto; scrollbar-width: thin; }
.et-feed::-webkit-scrollbar { width: 4px; }
.et-feed::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.18); }
.et-item { display: grid; grid-template-columns: 52px 8px 70px 1fr auto; gap: 8px; align-items: baseline; padding: 6px 4px; background: var(--panel-2); font-size: 12px; }
.et-item.et-sev-urgent { background: rgba(248,81,73,0.10); border-left: 2px solid var(--dn); }
.et-item.et-sev-warn { background: rgba(210,153,34,0.06); border-left: 2px solid var(--warn); }
.et-item.et-sev-info { border-left: 2px solid var(--border); }
.et-ts { font-size: 10px; color: var(--muted); }
.et-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); justify-self: center; }
.et-dot-urgent { background: var(--dn); box-shadow: 0 0 6px var(--dn); animation: pulse 1.4s ease-in-out infinite; }
.et-dot-warn { background: var(--warn); }
.et-kind-tag { font-size: 9px; font-weight: 800; letter-spacing: 0.1em; color: var(--muted); padding: 1px 5px; background: var(--bg); border: 1px solid var(--border); }
.et-kind-mover .et-kind-tag { color: var(--accent-2); border-color: rgba(88,166,255,0.4); }
.et-kind-anomaly .et-kind-tag { color: var(--warn); border-color: rgba(210,153,34,0.4); }
.et-kind-breaking .et-kind-tag { color: var(--dn); border-color: rgba(248,81,73,0.4); }
.et-kind-regime .et-kind-tag { color: #c084fc; border-color: rgba(192,132,252,0.4); }
.et-label { color: var(--text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
.et-label:hover { color: var(--accent-2); text-decoration: underline; }
.et-source { font-size: 9.5px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; }

/* LIVE NEWSWIRE grid (right column) */
.newswire { display: flex; flex-direction: column; }
.nw-head { display: flex; align-items: baseline; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); margin-bottom: 8px; flex-wrap: wrap; }
.nw-head h2 { margin: 0; font-size: 13px; font-weight: 800; letter-spacing: 0.14em; color: var(--text); }
.ln-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
@media (max-width: 540px) { .ln-grid { grid-template-columns: 1fr; } }
.ln-thumb { aspect-ratio: 16/10; }
.ln-meta { padding: 4px 8px; }
.ln-label { font-size: 10.5px; }
.ln-sub { font-size: 9.5px; }
.ln-tag, .ln-live { font-size: 8px; padding: 1px 4px; }
.ln-play { width: 34px; height: 34px; font-size: 12px; }
.ln-card { background: var(--panel); display: flex; flex-direction: column; cursor: pointer; }
.ln-card:hover .ln-play { background: var(--accent); transform: translate(-50%, -50%) scale(1.1); }
.ln-thumb { position: relative; aspect-ratio: 16/9; background: var(--bg); overflow: hidden; }
.ln-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: 0.85; transition: opacity 120ms; }
.ln-card:hover .ln-thumb img { opacity: 1; }
.ln-thumb iframe { width: 100%; height: 100%; border: 0; }
.ln-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 42px; height: 42px; border-radius: 50%; background: rgba(0,0,0,0.7); color: #fff; border: 2px solid #fff; font-size: 14px; cursor: pointer; transition: background 120ms, transform 120ms; }
.ln-tag { position: absolute; top: 6px; left: 6px; font-size: 9px; letter-spacing: 0.1em; font-weight: 800; padding: 2px 6px; background: rgba(0,0,0,0.75); color: #fff; text-transform: uppercase; }
.ln-live { position: absolute; top: 6px; right: 6px; font-size: 9px; font-weight: 800; letter-spacing: 0.1em; padding: 2px 6px; background: var(--dn); color: #fff; }
.ln-meta { padding: 6px 10px; display: flex; flex-direction: column; gap: 2px; border-top: 1px solid var(--border); }
.ln-label { font-size: 11.5px; font-weight: 700; color: var(--text); }
.ln-sub { font-size: 10px; color: var(--muted); }

/* 4 · DEEP-DIVE strip — calm pills, replaces the giant catnav-on-homepage feeling */
.dive-strip { display: flex; flex-wrap: wrap; gap: 1px; background: var(--border); padding: 1px; margin: 12px 0 4px; }
.dive-pill { flex: 1 1 auto; min-width: 120px; padding: 10px 16px; background: var(--panel); color: var(--text); text-decoration: none; text-align: center; font-size: 12px; font-weight: 600; letter-spacing: 0.04em; transition: background 120ms, color 120ms; }
.dive-pill:hover { background: var(--panel-2); color: var(--accent-2); }
@media (max-width: 600px) { .dive-pill { min-width: 0; flex-basis: calc(50% - 0.5px); } }

/* ─── HOMEPAGE LAYOUT ROUND-2 (worldmonitor-inspired) ─── */

/* Verdict + CB-meetings row */
.vd-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 1px; background: var(--border); margin: 10px 0; padding: 1px; }
.vd-row > .tile { background: var(--panel) !important; border: 0 !important; padding: 0 !important; }
@media (max-width: 900px) { .vd-row { grid-template-columns: 1fr; } }

/* Heatwall as page centerpiece — give it visual weight */
.heatwall-hero { margin: 14px 0 !important; }
.heatwall-hero .exec-section-label { font-size: 11px; letter-spacing: 0.14em; padding-bottom: 6px; border-bottom: 2px solid var(--accent) !important; }

/* Rotation triptych */
.rot-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.rot-grid > .tile { background: var(--panel) !important; border: 0 !important; min-height: 240px; }
@media (max-width: 1100px) { .rot-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 720px) { .rot-grid { grid-template-columns: 1fr; } }

/* Under the hood — three columns of stacked tiles */
.deep-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.deep-col { display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.deep-col > .tile { background: var(--panel) !important; border: 0 !important; min-height: 180px; }
@media (max-width: 1100px) { .deep-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 720px) { .deep-grid { grid-template-columns: 1fr; } }

/* World state — left column of small tiles + big cams panel on right */
.world-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 1px; background: var(--border); padding: 1px; }
.world-col { display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.world-col > .tile { background: var(--panel) !important; border: 0 !important; min-height: 140px; }
.world-cams { background: var(--panel) !important; border: 0 !important; }
@media (max-width: 900px) { .world-grid { grid-template-columns: 1fr; } }

/* News cluster — digest left wide, themes right narrow, headlines below full */
.news-cluster { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 1px; background: var(--border); padding: 1px; margin-bottom: 1px; }
.news-cluster > .tile { background: var(--panel) !important; border: 0 !important; }
.news-topic-tile { margin-top: 1px; background: var(--panel) !important; border: 1px solid var(--border) !important; }
@media (max-width: 900px) { .news-cluster { grid-template-columns: 1fr; } }

/* Section labels — heavier underline so the new section boundaries are clear */
.exec-section > .exec-section-label { font-size: 10.5px !important; padding-bottom: 4px !important; border-bottom: 1px solid var(--border-2) !important; margin-bottom: 8px !important; }

/* ─── MACRO VERDICT ─── */
.mv-tile { margin: 10px 0; background: var(--panel) !important; border: 1px solid var(--border) !important; padding: 0 !important; }
.mv-card { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; border-left: 4px solid var(--muted); }
.mv-card.mv-tone-green { border-left-color: var(--up); background: rgba(63,185,80,0.04); }
.mv-card.mv-tone-orange { border-left-color: var(--warn); background: rgba(210,153,34,0.04); }
.mv-card.mv-tone-red { border-left-color: var(--dn); background: rgba(248,81,73,0.04); }
.mv-card.mv-tone-grey { border-left-color: var(--muted); }
.mv-headline { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.mv-label { font-size: 9.5px; color: var(--muted); letter-spacing: 0.14em; font-weight: 800; text-transform: uppercase; }
.mv-verdict { font-size: 22px; font-weight: 800; letter-spacing: 0.04em; color: var(--text); }
.mv-tone-green .mv-verdict { color: var(--up); }
.mv-tone-orange .mv-verdict { color: var(--warn); }
.mv-tone-red .mv-verdict { color: var(--dn); }
.mv-score { font-size: 16px; font-weight: 700; color: var(--muted-2); margin-left: auto; }
.mv-of { font-size: 10px; color: var(--muted); margin-left: 2px; }
.mv-desc { margin: 0; font-size: 12px; color: var(--muted-2); line-height: 1.4; }
.mv-components { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 1px; background: var(--border); margin-top: 4px; padding: 1px; }
.mv-comp { display: grid; grid-template-columns: 1fr auto auto; gap: 8px; align-items: baseline; padding: 6px 10px; background: var(--panel-2); }
.mv-comp-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.mv-comp-score { font-size: 13px; font-weight: 700; }
.mv-comp-delta { font-size: 10.5px; padding: 1px 6px; font-weight: 700; }
.mv-delta-strong-up .mv-comp-delta { background: rgba(63,185,80,0.18); color: var(--up); }
.mv-delta-up .mv-comp-delta { color: var(--up); }
.mv-delta-strong-dn .mv-comp-delta { background: rgba(248,81,73,0.18); color: var(--dn); }
.mv-delta-dn .mv-comp-delta { color: var(--dn); }
.mv-delta-flat .mv-comp-delta { color: var(--muted); }

/* ─── STABLECOIN PEG ─── */
.sp-summary { display: flex; flex-wrap: wrap; gap: 10px; align-items: baseline; padding: 8px 12px; border-bottom: 1px solid var(--border); }
.sp-summary.sp-green { background: rgba(63,185,80,0.04); }
.sp-summary.sp-orange { background: rgba(210,153,34,0.06); }
.sp-summary.sp-red { background: rgba(248,81,73,0.08); }
.sp-summary-label { font-size: 9.5px; color: var(--muted); letter-spacing: 0.12em; font-weight: 800; text-transform: uppercase; }
.sp-summary-val { font-size: 16px; font-weight: 700; }
.sp-green .sp-summary-val { color: var(--up); }
.sp-orange .sp-summary-val { color: var(--warn); }
.sp-red .sp-summary-val { color: var(--dn); }
.sp-summary-note { font-size: 10px; color: var(--muted); margin-left: auto; }
.sp-list { list-style: none; padding: 0; margin: 0; }
.sp-row { display: grid; grid-template-columns: 60px 1fr 80px 90px 80px; gap: 8px; align-items: baseline; padding: 6px 12px; border-bottom: 1px solid var(--border); font-size: 12px; }
.sp-row:last-child { border-bottom: 0; }
.sp-row.sp-orange { background: rgba(210,153,34,0.04); }
.sp-row.sp-red { background: rgba(248,81,73,0.06); }
.sp-ticker { font-weight: 700; color: var(--text); }
.sp-label { color: var(--muted-2); font-size: 11px; }
.sp-price { color: var(--text); font-weight: 600; }
.sp-dev { font-weight: 700; }
.sp-row.sp-green .sp-dev { color: var(--muted-2); }
.sp-row.sp-orange .sp-dev { color: var(--warn); }
.sp-row.sp-red .sp-dev { color: var(--dn); }
.sp-mcap { color: var(--muted); font-size: 10.5px; text-align: right; }

/* ─── CB MEETINGS ─── */
.cbm-list { list-style: none; padding: 0; margin: 0; }
.cbm-row { display: grid; grid-template-columns: 60px 90px 1fr auto; gap: 10px; align-items: baseline; padding: 7px 12px; border-bottom: 1px solid var(--border); font-size: 12px; }
.cbm-row:last-child { border-bottom: 0; }
.cbm-row.cbm-orange { background: rgba(210,153,34,0.06); }
.cbm-row.cbm-red { background: rgba(248,81,73,0.08); }
.cbm-bank { font-weight: 800; color: var(--text); letter-spacing: 0.04em; }
.cbm-rate { color: var(--muted-2); font-weight: 600; }
.cbm-when { color: var(--text); }
.cbm-eta { font-size: 11px; font-weight: 700; color: var(--muted); padding: 1px 6px; }
.cbm-row.cbm-orange .cbm-eta { color: var(--warn); background: rgba(210,153,34,0.18); }
.cbm-row.cbm-red .cbm-eta { color: var(--dn); background: rgba(248,81,73,0.18); }

/* ─── LIVE CAMS ─── */
.lc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1px; background: var(--border); padding: 1px; }
.lc-card { background: var(--panel); display: flex; flex-direction: column; cursor: pointer; }
.lc-card:hover .lc-play { background: rgba(88,166,255,0.9); }
.lc-thumb { position: relative; aspect-ratio: 16/9; background: var(--bg); overflow: hidden; }
.lc-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lc-thumb iframe { width: 100%; height: 100%; border: 0; }
.lc-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 44px; height: 44px; border-radius: 50%; background: rgba(0,0,0,0.6); color: #fff; border: 2px solid #fff; font-size: 16px; cursor: pointer; }
.lc-tag { position: absolute; top: 6px; right: 6px; font-size: 9px; letter-spacing: 0.08em; font-weight: 700; padding: 2px 6px; background: rgba(0,0,0,0.7); color: #fff; text-transform: uppercase; }
.lc-meta { padding: 6px 10px; display: flex; flex-direction: column; gap: 2px; border-top: 1px solid var(--border); }
.lc-label { font-size: 11.5px; font-weight: 700; color: var(--text); }
.lc-sub { font-size: 10px; color: var(--muted); }

/* ════════════════════════════════════════════════════════════════════════════
   v5 · THE PIT — DISABLED (kept in source for reference / future toggle).
   The body.cockpit-mode block below is gated to never apply by neutering the
   wrapper selector. Re-enable by removing the .__disabled prefix.
   ════════════════════════════════════════════════════════════════════════ */

body.cockpit-mode.__disabled {
  /* Lock the viewport. The page IS the app — no scrolling. */
  overflow: hidden !important;
  height: 100vh !important;
  margin: 0 !important;
  background: #0a0a0a !important;
  color: #d4d4d4 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
}
body.cockpit-mode main { padding: 0 !important; max-width: none !important; margin: 0 !important; min-height: 0 !important; height: 100vh !important; }

/* The pit: a flex column — minimal header, then 100% grid below */
.pit { display: flex; flex-direction: column; height: 100vh; width: 100vw; color: #d4d4d4; }

/* Header strip — slim, monospaced, amber accent */
.pit-header {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center;
  gap: 24px; padding: 10px 18px;
  background: #0a0a0a;
  border-bottom: 1px solid #2a2a2a;
  flex-shrink: 0;
}
.pit-brand { display: flex; align-items: baseline; gap: 8px; }
.pit-brand-name { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 14px; color: #f59e0b; letter-spacing: 0.06em; }
.pit-brand-sub { font-size: 10px; color: #525252; letter-spacing: 0.16em; text-transform: uppercase; }
.pit-status { display: flex; gap: 18px; align-items: baseline; justify-self: center; }
.pit-stat { display: inline-flex; align-items: baseline; gap: 6px; }
.pit-stat-k { font-size: 9px; color: #525252; letter-spacing: 0.12em; }
.pit-stat-v { font-family: 'JetBrains Mono', monospace; font-size: 16px; font-weight: 700; color: #d4d4d4; }
.pit-stat-sub { font-size: 9px; color: #f59e0b; letter-spacing: 0.1em; }
.pit-clock { font-family: 'JetBrains Mono', monospace; font-size: 14px; color: #d4d4d4; letter-spacing: 0.04em; padding-left: 14px; border-left: 1px solid #2a2a2a; }
.pit-nav { display: flex; gap: 0; align-items: center; }
.pit-nav a, .pit-cmd { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #737373; text-decoration: none; padding: 6px 12px; letter-spacing: 0.04em; transition: color 120ms; background: transparent; border: 0; cursor: pointer; }
.pit-nav a:hover, .pit-cmd:hover { color: #f59e0b; }
.pit-cmd { border-left: 1px solid #2a2a2a; margin-left: 6px; color: #f59e0b; }

/* THE GRID — 4 panes, fills remaining viewport */
.pit-grid {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  grid-template-rows: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 0.8fr);
  grid-template-areas:
    "a b"
    "a c"
    "d d";
  gap: 1px;
  background: #1f1f1f;
  min-height: 0;
}
.pit-pane { background: #0f0f0f; min-height: 0; display: flex; flex-direction: column; outline: none; transition: background 140ms; position: relative; }
.pit-pane:focus, .pit-pane.pane-flash { background: #141008; box-shadow: inset 0 0 0 1px #f59e0b; }
.pane-a { grid-area: a; }
.pane-b { grid-area: b; }
.pane-c { grid-area: c; }
.pane-d { grid-area: d; }

.pane-head { display: flex; gap: 10px; align-items: baseline; padding: 7px 12px; border-bottom: 1px solid #1f1f1f; background: #0a0a0a; flex-shrink: 0; }
.pane-num { font-family: 'JetBrains Mono', monospace; font-size: 9px; color: #f59e0b; letter-spacing: 0.16em; font-weight: 700; }
.pane-title { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: #d4d4d4; letter-spacing: 0.18em; font-weight: 700; }
.pane-meta { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; color: #525252; letter-spacing: 0.04em; margin-left: auto; display: flex; align-items: center; gap: 6px; }
.pane-link { font-size: 9.5px; color: #f59e0b; text-decoration: none; letter-spacing: 0.08em; }
.pane-link:hover { text-decoration: underline; }
.pane-body { flex: 1 1 auto; min-height: 0; overflow: hidden; }

/* PIT HEATWALL — fills its pane, no scroll */
.heatwall-host { padding: 6px; }
.pit-hw-grid {
  display: grid !important; gap: 1px !important; background: #1f1f1f !important; padding: 1px !important; border: 0 !important;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  height: 100%;
}
.pit-hw-grid .hw-col { background: #0a0a0a !important; border: 0 !important; display: flex; flex-direction: column; min-height: 0; }
.pit-hw-grid .hw-col-head { padding: 5px 8px !important; border-bottom: 1px solid #1f1f1f !important; background: #0a0a0a !important; flex-shrink: 0; }
.pit-hw-grid .hw-col-label { font-family: 'JetBrains Mono', monospace; font-size: 9px !important; color: #737373 !important; letter-spacing: 0.12em; }
.pit-hw-grid .hw-col-avg { font-size: 10px !important; }
.pit-hw-grid .hw-cells { flex: 1; min-height: 0; overflow: hidden; padding: 1px !important; gap: 1px !important; display: flex; flex-direction: column; }
.pit-hw-cell { border-radius: 0 !important; padding: 2px 8px !important; min-height: 18px !important; font-size: 10.5px !important; }
.pit-hw-cell .hw-ticker { font-size: 10px !important; }
.pit-hw-cell .hw-pct { font-size: 10px !important; }

/* STATE pane (b) — typographic, no tile feel */
.pane-b .pane-body { padding: 14px 16px; overflow-y: auto; }
.pit-narr-lede { margin: 0 0 10px; font-family: 'JetBrains Mono', monospace; font-size: 13px; line-height: 1.5; color: #f5f5f5; font-weight: 500; }
.pit-narr-dek { margin: 0 0 14px; font-size: 11.5px; line-height: 1.55; color: #a3a3a3; }
.pit-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 14px; }
.pit-tag { font-family: 'JetBrains Mono', monospace; font-size: 9px; padding: 2px 7px; letter-spacing: 0.08em; border: 1px solid #2a2a2a; color: #a3a3a3; }
.pit-tag-good { color: #84cc16; border-color: #3f4f12; }
.pit-tag-danger { color: #f43f5e; border-color: #4f1923; }
.pit-pane-cta { font-size: 10.5px; color: #f59e0b; text-decoration: none; letter-spacing: 0.08em; padding-top: 6px; border-top: 1px solid #2a2a2a; display: inline-block; }
.pit-pane-cta:hover { color: #fbbf24; }

/* LIVE pane (c) — 2x2 mini thumbnail wall */
.pane-c .pane-body { padding: 0; overflow: hidden; }
.pit-live-host { height: 100%; }
.pit-live-host .ln-grid { grid-template-columns: 1fr 1fr !important; height: 100% !important; gap: 1px !important; background: #1f1f1f !important; padding: 0 !important; }
.pit-live-host .ln-card { background: #0a0a0a !important; min-height: 0; }
.pit-live-host .ln-thumb { aspect-ratio: auto !important; flex: 1 1 auto; }
.pit-live-host .ln-meta { display: none !important; }
.pit-live-host .ln-tag, .pit-live-host .ln-live { font-size: 8.5px !important; padding: 1px 5px !important; background: rgba(0,0,0,0.85) !important; }
.pit-live-host .ln-play { width: 30px !important; height: 30px !important; font-size: 11px !important; }

/* WIRE pane (d) — bottom strip, dense scrolling list */
.pane-d .pane-body { padding: 0; overflow-y: auto; }
.pit-wire { font-family: 'JetBrains Mono', monospace; font-size: 11px; }
.pit-wire-row { display: grid; grid-template-columns: 70px 80px 1fr auto; gap: 12px; padding: 4px 14px; align-items: baseline; border-bottom: 1px solid #161616; }
.pit-wire-row:hover { background: #161616; }
.pit-wire-row time { color: #525252; }
.pit-wire-kind { font-size: 9px; letter-spacing: 0.1em; color: #737373; }
.pit-kind-mover { color: #f59e0b; }
.pit-kind-anomaly { color: #facc15; }
.pit-kind-breaking { color: #f43f5e; }
.pit-kind-regime { color: #c084fc; }
.pit-wire-label { color: #d4d4d4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pit-wire-label a { color: inherit; text-decoration: none; }
.pit-wire-label a:hover { color: #f59e0b; text-decoration: underline; }
.pit-wire-src { color: #525252; font-size: 9.5px; }
.pit-sev-urgent .pit-wire-kind { color: #f43f5e; }
.pit-sev-urgent { background: rgba(244,63,94,0.08); }
.pit-live-dot { width: 6px; height: 6px; border-radius: 50%; background: #f43f5e; display: inline-block; box-shadow: 0 0 6px #f43f5e; animation: pulse 1.4s ease-in-out infinite; }

/* Hover states everywhere — muted amber */
body.cockpit-mode a:hover { color: #f59e0b; }

/* MOBILE — gracefully fall back to scrollable stack */
@media (max-width: 900px) {
  body.cockpit-mode { overflow: auto !important; height: auto !important; }
  body.cockpit-mode main { height: auto !important; }
  .pit { height: auto; }
  .pit-grid { grid-template-columns: 1fr; grid-template-rows: auto auto auto auto; grid-template-areas: "a" "b" "c" "d"; gap: 1px; }
  .pit-pane { min-height: 320px; }
  .pit-header { flex-direction: column; gap: 8px; padding: 8px 12px; }
  .pit-status { justify-self: start; }
}

/* ════════════════════════════════════════════════════════════════════════════
   v6 · BENTO · CYBERPUNK
   ════════════════════════════════════════════════════════════════════════ */

.bento-page {
  --b-bg:    #050510;
  --b-bg-2:  #08081a;
  --b-panel: #0c0c1f;
  --b-border:#1a1a3a;
  --b-edge:  #2a2a5a;
  --b-text:  #d8d8ff;
  --b-muted: #6a6a90;
  --neon-cyan:  #00e0ff;
  --neon-pink:  #ff007a;
  --neon-green: #00ff88;
  --neon-yellow:#ffe600;
  --neon-violet:#b566ff;
  background: var(--b-bg);
  color: var(--b-text);
  padding: 12px;
  min-height: calc(100vh - 200px);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  background-image:
    repeating-linear-gradient(180deg, transparent 0, transparent 3px, rgba(0,224,255,0.018) 3px, rgba(0,224,255,0.018) 4px),
    radial-gradient(ellipse 80% 60% at 50% 0%, rgba(181,102,255,0.06) 0%, transparent 60%);
}

.bento {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  grid-auto-rows: 130px;
  gap: 10px;
  max-width: 1620px;
  margin: 0 auto;
}

.b {
  background: linear-gradient(180deg, var(--b-panel) 0%, var(--b-bg-2) 100%);
  border: 1px solid var(--b-border);
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  color: var(--b-text);
  text-decoration: none;
  transition: border-color 140ms, box-shadow 140ms;
}
.b::before {
  content: ""; position: absolute; top: 0; left: 0; width: 14px; height: 14px;
  border-top: 1px solid var(--neon-cyan); border-left: 1px solid var(--neon-cyan);
  opacity: 0.5; pointer-events: none;
}
.b::after {
  content: ""; position: absolute; bottom: 0; right: 0; width: 14px; height: 14px;
  border-bottom: 1px solid var(--neon-pink); border-right: 1px solid var(--neon-pink);
  opacity: 0.5; pointer-events: none;
}
.b:hover { border-color: var(--neon-cyan); box-shadow: 0 0 0 1px var(--neon-cyan), 0 0 24px rgba(0,224,255,0.15); }

.b-head {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--b-border);
  background: rgba(0,0,0,0.4);
  flex-shrink: 0;
}
.b-num { font-size: 9.5px; color: var(--neon-cyan); letter-spacing: 0.16em; font-weight: 700; text-shadow: 0 0 8px rgba(0,224,255,0.6); }
.b-title { font-size: 10.5px; color: var(--b-text); letter-spacing: 0.18em; font-weight: 700; }
.b-title-accent { color: var(--neon-pink); text-shadow: 0 0 8px rgba(255,0,122,0.55); }
.b-meta { margin-left: auto; font-size: 9.5px; color: var(--b-muted); display: flex; align-items: center; gap: 6px; }
.b-link { font-size: 9.5px; color: var(--neon-cyan); text-decoration: none; letter-spacing: 0.1em; margin-left: auto; }
.b-link:hover { color: var(--neon-yellow); text-shadow: 0 0 6px rgba(255,230,0,0.55); }
.b-body { flex: 1; min-height: 0; overflow: hidden; }

.b-heatwall { grid-column: span 4; grid-row: span 4; }
.b-fg       { grid-column: span 2; grid-row: span 2; }
.b-state    { grid-column: span 2; grid-row: span 2; }
.b-wire     { grid-column: span 4; grid-row: span 2; }
.b-live     { grid-column: span 2; grid-row: span 2; }
.b-headlines{ grid-column: span 4; grid-row: span 3; }
.b-regimes  { grid-column: span 2; grid-row: span 2; }
.b-nav      { grid-column: span 2; grid-row: span 1; }

@media (max-width: 1280px) {
  .bento { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .b-heatwall { grid-column: span 4; }
  .b-fg, .b-state, .b-live, .b-regimes { grid-column: span 2; }
  .b-wire, .b-headlines, .b-nav { grid-column: span 4; }
}
@media (max-width: 720px) {
  .bento { grid-template-columns: 1fr; }
  .b-heatwall, .b-fg, .b-state, .b-wire, .b-live, .b-headlines, .b-regimes, .b-nav { grid-column: span 1; grid-row: auto; min-height: 200px; }
  .b-heatwall { min-height: 480px; }
}

.b-heatwall-body { padding: 0; }
.bento-hw-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important; gap: 1px !important; background: var(--b-border) !important; padding: 1px !important; border: 0 !important; height: 100%; }
.bento-hw-grid .hw-col { background: var(--b-bg-2) !important; border: 0 !important; display: flex; flex-direction: column; min-height: 0; }
.bento-hw-grid .hw-col-head { padding: 5px 9px !important; border-bottom: 1px solid var(--b-border) !important; background: rgba(0,0,0,0.4) !important; flex-shrink: 0; }
.bento-hw-grid .hw-col-label { font-size: 9px !important; color: var(--neon-cyan) !important; letter-spacing: 0.12em; }
.bento-hw-grid .hw-col-avg { font-size: 10px !important; }
.bento-hw-grid .hw-col-avg.up { color: var(--neon-green) !important; text-shadow: 0 0 6px rgba(0,255,136,0.55); }
.bento-hw-grid .hw-col-avg.dn { color: var(--neon-pink) !important; text-shadow: 0 0 6px rgba(255,0,122,0.55); }
.bento-hw-grid .hw-cells { flex: 1; min-height: 0; overflow: hidden; padding: 1px !important; gap: 1px !important; display: flex; flex-direction: column; }
.bento-hw-grid .hw-cell { border-radius: 0 !important; padding: 3px 9px !important; min-height: 20px !important; font-size: 10.5px !important; border: 0 !important; }
.bento-hw-grid .hw-cell.up { color: var(--neon-green) !important; }
.bento-hw-grid .hw-cell.dn { color: var(--neon-pink) !important; }
.bento-hw-grid .hw-cell:hover { background: rgba(0,224,255,0.12) !important; color: var(--neon-cyan) !important; }

.b-fg-body { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 8px; }
.b-fg-num { font-size: 72px; font-weight: 900; line-height: 1; font-family: 'JetBrains Mono', monospace; letter-spacing: -0.04em; }
.b-fg.b-fg-green .b-fg-num { color: var(--neon-green); text-shadow: 0 0 24px rgba(0,255,136,0.55), 0 0 60px rgba(0,255,136,0.25); }
.b-fg.b-fg-orange .b-fg-num { color: var(--neon-yellow); text-shadow: 0 0 24px rgba(255,230,0,0.55), 0 0 60px rgba(255,230,0,0.25); }
.b-fg.b-fg-red .b-fg-num { color: var(--neon-pink); text-shadow: 0 0 24px rgba(255,0,122,0.6), 0 0 60px rgba(255,0,122,0.3); }
.b-fg.b-fg-grey .b-fg-num { color: var(--b-muted); }
.b-fg-label { font-size: 11px; letter-spacing: 0.14em; color: var(--b-text); text-transform: uppercase; font-weight: 700; }
.b-fg-trend { font-size: 11px; font-family: 'JetBrains Mono', monospace; }
.b-fg-trend.up { color: var(--neon-green); }
.b-fg-trend.dn { color: var(--neon-pink); }

.b-state .b-body { padding: 12px 14px; overflow-y: auto; display: flex; flex-direction: column; }
.b-state-lede { margin: 0 0 8px; font-size: 12px; line-height: 1.5; color: var(--b-text); font-weight: 500; }
.b-state-dek { margin: 0 0 10px; font-size: 10.5px; line-height: 1.55; color: var(--b-muted); }
.b-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 10px; }
.b-tag { font-size: 8.5px; padding: 2px 7px; letter-spacing: 0.08em; border: 1px solid var(--b-edge); color: var(--b-muted); }
.b-tag-good { color: var(--neon-green); border-color: rgba(0,255,136,0.4); text-shadow: 0 0 6px rgba(0,255,136,0.35); }
.b-tag-danger { color: var(--neon-pink); border-color: rgba(255,0,122,0.5); text-shadow: 0 0 6px rgba(255,0,122,0.45); }
.b-state-cta { font-size: 10.5px; color: var(--neon-cyan); text-decoration: none; letter-spacing: 0.1em; padding-top: 8px; border-top: 1px solid var(--b-border); margin-top: auto; font-weight: 700; }
.b-state-cta:hover { color: var(--neon-yellow); text-shadow: 0 0 8px rgba(255,230,0,0.55); }

.b-wire-body { padding: 0; overflow-y: auto; }
.b-wire-row { display: grid; grid-template-columns: 70px 80px 1fr; gap: 12px; padding: 5px 14px; align-items: baseline; border-bottom: 1px solid var(--b-border); font-size: 11px; }
.b-wire-row:hover { background: rgba(0,224,255,0.06); }
.b-wire-row time { color: var(--b-muted); font-size: 10px; }
.b-wire-kind { font-size: 9px; letter-spacing: 0.1em; color: var(--b-muted); }
.b-kind-mover .b-wire-kind { color: var(--neon-cyan); }
.b-kind-anomaly .b-wire-kind { color: var(--neon-yellow); }
.b-kind-breaking .b-wire-kind { color: var(--neon-pink); }
.b-kind-regime .b-wire-kind { color: var(--neon-violet); }
.b-wire-label { color: var(--b-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b-wire-label a { color: inherit; text-decoration: none; }
.b-wire-label a:hover { color: var(--neon-cyan); }
.b-sev-urgent { background: rgba(255,0,122,0.10); }
.b-sev-urgent .b-wire-kind { color: var(--neon-pink); }
.b-live-dot { width: 6px; height: 6px; background: var(--neon-pink); display: inline-block; box-shadow: 0 0 8px var(--neon-pink); animation: pulse 1.4s ease-in-out infinite; }

.b-live-body { padding: 0; height: 100%; }
.b-live-body .ln-grid { grid-template-columns: 1fr 1fr !important; height: 100% !important; gap: 1px !important; background: var(--b-border) !important; padding: 0 !important; }
.b-live-body .ln-card { background: var(--b-bg) !important; border: 0 !important; }
.b-live-body .ln-thumb { aspect-ratio: auto !important; flex: 1 !important; }
.b-live-body .ln-meta { display: none !important; }
.b-live-body .ln-tag, .b-live-body .ln-live { font-size: 8px !important; padding: 1px 4px !important; background: rgba(0,0,0,0.85) !important; color: var(--neon-cyan) !important; }
.b-live-body .ln-live { color: var(--neon-pink) !important; }
.b-live-body .ln-play { width: 28px !important; height: 28px !important; font-size: 10px !important; background: rgba(0,224,255,0.2) !important; border-color: var(--neon-cyan) !important; }

.b-headlines-body { padding: 8px 0; overflow-y: auto; }
.b-hl { display: grid; grid-template-columns: 90px 1fr auto; gap: 10px; padding: 6px 14px; text-decoration: none; color: var(--b-text); border-bottom: 1px solid var(--b-border); align-items: baseline; }
.b-hl:last-child { border-bottom: 0; }
.b-hl:hover { background: rgba(255,0,122,0.06); }
.b-hl-src { font-size: 9px; color: var(--neon-cyan); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; }
.b-hl-title { font-size: 11.5px; color: var(--b-text); line-height: 1.4; }
.b-hl:hover .b-hl-title { color: var(--neon-yellow); }
.b-hl-age { font-size: 9.5px; color: var(--neon-pink); }

.b-regimes-body { padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; justify-content: center; }
.b-reg { display: grid; grid-template-columns: 60px 1fr 32px; gap: 10px; align-items: center; text-decoration: none; color: var(--b-text); }
.b-reg-lbl { font-size: 9.5px; color: var(--b-muted); letter-spacing: 0.12em; font-weight: 700; }
.b-reg-bar { height: 6px; background: var(--b-border); position: relative; overflow: hidden; }
.b-reg-fill { height: 100%; background: var(--b-muted); transition: width 240ms; }
.b-reg-num { font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; text-align: right; }
.b-reg.b-reg-green .b-reg-fill { background: var(--neon-green); box-shadow: 0 0 8px rgba(0,255,136,0.4); }
.b-reg.b-reg-green .b-reg-num { color: var(--neon-green); }
.b-reg.b-reg-orange .b-reg-fill { background: var(--neon-yellow); box-shadow: 0 0 8px rgba(255,230,0,0.4); }
.b-reg.b-reg-orange .b-reg-num { color: var(--neon-yellow); }
.b-reg.b-reg-red .b-reg-fill { background: var(--neon-pink); box-shadow: 0 0 8px rgba(255,0,122,0.5); }
.b-reg.b-reg-red .b-reg-num { color: var(--neon-pink); }
.b-reg:hover .b-reg-lbl { color: var(--neon-cyan); }

.b-nav-body { display: flex; flex-wrap: wrap; gap: 4px; padding: 10px 14px; align-content: center; }
.b-nav-body a { font-size: 10.5px; padding: 4px 10px; color: var(--b-muted); text-decoration: none; letter-spacing: 0.06em; border: 1px solid var(--b-border); transition: all 120ms; }
.b-nav-body a:hover { color: var(--neon-cyan); border-color: var(--neon-cyan); text-shadow: 0 0 6px rgba(0,224,255,0.4); }

body:has(.bento-page) { background: #050510 !important; }
body:has(.bento-page) .topbar { background: #050510 !important; border-color: #1a1a3a !important; }
body:has(.bento-page) .brand-name { color: #00e0ff !important; text-shadow: 0 0 10px rgba(0,224,255,0.5); }
body:has(.bento-page) .brand-sub { color: #6a6a90 !important; }
body:has(.bento-page) .catnav { background: #050510 !important; border-bottom-color: #1a1a3a !important; }
body:has(.bento-page) .catnav-item { color: #6a6a90 !important; }
body:has(.bento-page) .catnav-item.active { color: #ff007a !important; border-bottom-color: #ff007a !important; text-shadow: 0 0 6px rgba(255,0,122,0.5); }
body:has(.bento-page) main { padding: 0 !important; max-width: none !important; }
body:has(.bento-page) .top-clock .clock { color: #d8d8ff !important; }
body:has(.bento-page) .ribbon { background: #050510 !important; border-color: #1a1a3a !important; }

/* ════════════════════════════════════════════════════════════════════════════
   v7 · NEO-TOKYO · Floating chrome, asymmetric hero, HUD frame, marquee.
   Based on neo-tokyo/preload-template/timsco/behance-futuristic references.
   ════════════════════════════════════════════════════════════════════════ */

body.neotokyo-mode {
  background: #0a0a14 !important;
  color: #e8e8f0 !important;
  font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 12.5px !important;
  margin: 0; padding: 0;
  overflow-x: hidden;
}
body.neotokyo-mode main { padding: 0 !important; max-width: none !important; margin: 0 !important; min-height: 0 !important; }

.neo {
  --n-bg:     #0a0a14;
  --n-bg-2:   #0d0d1c;
  --n-panel:  #11112a;
  --n-line:   #1c1c40;
  --n-edge:   #2a2a55;
  --n-text:   #e8e8f0;
  --n-muted:  #6a6a90;
  --n-muted2: #9090b0;
  --n-cyan:   #00e0ff;
  --n-pink:   #ff007a;
  --n-green:  #00ff88;
  --n-yellow: #ffe600;
  --n-violet: #b566ff;
  position: relative;
  min-height: 100vh;
  padding: 0;
  isolation: isolate;
}

/* Faint blueprint grid background */
.neo-grid-bg {
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(0,224,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,224,255,0.025) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.8;
  mask-image: radial-gradient(ellipse 80% 60% at 70% 30%, #000 0%, transparent 80%);
}

/* HUD edge labels — vertical text on the sides */
.neo-edge { position: fixed; top: 0; bottom: 0; z-index: 5; pointer-events: none; display: flex; flex-direction: column; justify-content: center; gap: 18px; }
.neo-edge-l { left: 14px; }
.neo-edge-r { right: 14px; }
.neo-edge-tick { writing-mode: vertical-rl; font-size: 9px; letter-spacing: 0.2em; color: rgba(0,224,255,0.4); font-family: 'JetBrains Mono', monospace; }
.neo-edge-label { writing-mode: vertical-rl; font-size: 9.5px; letter-spacing: 0.22em; color: rgba(255,255,255,0.18); font-family: 'JetBrains Mono', monospace; margin-top: 24px; }
.neo-edge-r .neo-edge-label { color: rgba(255,0,122,0.32); }
@media (max-width: 1100px) { .neo-edge { display: none; } }

/* Floating chrome (replaces topbar) */
.neo-chrome {
  position: sticky; top: 0; z-index: 50;
  display: grid; grid-template-columns: auto 1fr auto; align-items: center;
  gap: 24px; padding: 16px 48px;
  background: rgba(10,10,20,0.78);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--n-line);
}
.neo-mark { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; color: var(--n-text); font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 17px; letter-spacing: 0.02em; }
.neo-mark-dot { width: 8px; height: 8px; background: var(--n-pink); box-shadow: 0 0 10px var(--n-pink); animation: pulse 1.6s ease-in-out infinite; }
.neo-mark-period { color: var(--n-cyan); }
.neo-chrome-status { justify-self: center; display: flex; gap: 20px; align-items: baseline; }
.neo-stat { display: inline-flex; align-items: baseline; gap: 6px; font-family: 'JetBrains Mono', monospace; }
.neo-stat-k { font-size: 9px; color: var(--n-muted); letter-spacing: 0.14em; }
.neo-stat-v { font-size: 14px; color: var(--n-text); font-weight: 700; }
.neo-stat[data-fg-color="green"] .neo-stat-v { color: var(--n-green); text-shadow: 0 0 8px rgba(0,255,136,0.5); }
.neo-stat[data-fg-color="orange"] .neo-stat-v { color: var(--n-yellow); text-shadow: 0 0 8px rgba(255,230,0,0.5); }
.neo-stat[data-fg-color="red"] .neo-stat-v { color: var(--n-pink); text-shadow: 0 0 8px rgba(255,0,122,0.5); }
.neo-clock { font-family: 'JetBrains Mono', monospace; font-size: 13px; color: var(--n-text); padding-left: 14px; border-left: 1px solid var(--n-line); }
.neo-chrome-nav { display: flex; gap: 4px; align-items: center; }
.neo-chrome-nav a, .neo-cmd { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--n-muted2); text-decoration: none; padding: 6px 10px; letter-spacing: 0.04em; background: transparent; border: 0; cursor: pointer; transition: color 140ms; }
.neo-chrome-nav a:hover { color: var(--n-cyan); text-shadow: 0 0 6px rgba(0,224,255,0.5); }
.neo-cmd { color: var(--n-cyan); border: 1px solid var(--n-line); margin-left: 8px; }
.neo-cmd:hover { border-color: var(--n-cyan); background: rgba(0,224,255,0.08); }
@media (max-width: 900px) {
  .neo-chrome { grid-template-columns: 1fr auto; padding: 12px 18px; }
  .neo-chrome-status { display: none; }
  .neo-chrome-nav { overflow-x: auto; white-space: nowrap; }
}

/* ASYMMETRIC HERO */
.neo-hero { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: 0; padding: 56px 48px 32px; min-height: calc(100vh - 280px); align-items: stretch; }
@media (max-width: 1100px) { .neo-hero { grid-template-columns: 1fr; padding: 32px 18px; gap: 32px; min-height: 0; } }

.neo-hero-l { display: flex; flex-direction: column; gap: 22px; padding-right: 32px; max-width: 620px; }
.neo-hero-kicker { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--n-cyan); letter-spacing: 0.2em; text-transform: uppercase; }
.neo-hero-bracket { color: var(--n-pink); }
.neo-hero-kicker-text { color: var(--n-cyan); text-shadow: 0 0 8px rgba(0,224,255,0.45); }
.neo-hero-title { font-family: 'JetBrains Mono', 'IBM Plex Mono', monospace; font-weight: 700; font-size: clamp(38px, 5vw, 68px); line-height: 1.02; letter-spacing: -0.02em; margin: 0; color: var(--n-text); }
.neo-hero-title-line { display: block; }
.neo-hero-title-em { color: var(--n-pink); text-shadow: 0 0 18px rgba(255,0,122,0.4); font-style: normal; }
.neo-hero-sub { font-family: 'Inter', system-ui, sans-serif; font-size: 14.5px; line-height: 1.5; color: var(--n-muted2); margin: 0; max-width: 480px; }

.neo-search { display: flex; align-items: center; gap: 0; padding: 0; border: 1px solid var(--n-edge); background: var(--n-bg-2); max-width: 480px; transition: border-color 140ms, box-shadow 140ms; }
.neo-search:focus-within { border-color: var(--n-cyan); box-shadow: 0 0 0 1px var(--n-cyan), 0 0 24px rgba(0,224,255,0.2); }
.neo-search-glyph { padding: 0 14px; color: var(--n-cyan); font-size: 16px; }
.neo-search-input { flex: 1; background: transparent; border: 0; padding: 14px 8px; color: var(--n-text); font-family: 'JetBrains Mono', monospace; font-size: 13px; outline: none; }
.neo-search-input::placeholder { color: var(--n-muted); }
.neo-search-btn { background: transparent; border: 0; border-left: 1px solid var(--n-edge); padding: 14px 18px; color: var(--n-cyan); cursor: pointer; font-family: inherit; font-size: 16px; }
.neo-search-btn:hover { background: rgba(0,224,255,0.1); }

.neo-quote { display: flex; gap: 12px; align-items: flex-start; padding: 14px 0; border-top: 1px solid var(--n-line); border-bottom: 1px solid var(--n-line); }
.neo-quote-bar { width: 2px; background: var(--n-pink); flex-shrink: 0; align-self: stretch; box-shadow: 0 0 6px var(--n-pink); }
.neo-quote-text { font-family: 'Inter', system-ui, serif; font-style: italic; font-size: 13.5px; line-height: 1.5; color: var(--n-muted2); flex: 1; }
.neo-quote-cite { display: block; font-family: 'JetBrains Mono', monospace; font-size: 9.5px; color: var(--n-muted); letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; margin-top: 6px; }
.neo-quote-cite:hover { color: var(--n-cyan); }

.neo-hero-stats { display: flex; gap: 28px; flex-wrap: wrap; padding-top: 4px; }
.neo-mini-stat { display: flex; flex-direction: column; gap: 2px; }
.neo-mini-k { font-size: 9px; color: var(--n-muted); letter-spacing: 0.16em; }
.neo-mini-v { font-family: 'JetBrains Mono', monospace; font-size: 22px; color: var(--n-text); font-weight: 700; line-height: 1; }
.neo-mini-sub { font-size: 9px; color: var(--n-cyan); letter-spacing: 0.1em; }

/* RIGHT — heatwall full-bleed to viewport right, HUD framed */
.neo-hero-r { position: relative; margin-right: -48px; min-height: 480px; }
@media (max-width: 1100px) { .neo-hero-r { margin-right: 0; min-height: 420px; } }
.neo-hw-frame { position: relative; height: 100%; padding: 22px 28px 22px 22px; background: linear-gradient(135deg, rgba(255,0,122,0.04) 0%, rgba(0,224,255,0.04) 100%); border-left: 1px solid var(--n-line); }
.neo-bracket { position: absolute; width: 22px; height: 22px; }
.neo-bracket-tl { top: 8px; left: 8px; border-top: 1px solid var(--n-cyan); border-left: 1px solid var(--n-cyan); box-shadow: -2px -2px 12px rgba(0,224,255,0.4); }
.neo-bracket-tr { top: 8px; right: 8px; border-top: 1px solid var(--n-pink); border-right: 1px solid var(--n-pink); box-shadow: 2px -2px 12px rgba(255,0,122,0.4); }
.neo-bracket-bl { bottom: 8px; left: 8px; border-bottom: 1px solid var(--n-pink); border-left: 1px solid var(--n-pink); box-shadow: -2px 2px 12px rgba(255,0,122,0.4); }
.neo-bracket-br { bottom: 8px; right: 8px; border-bottom: 1px solid var(--n-cyan); border-right: 1px solid var(--n-cyan); box-shadow: 2px 2px 12px rgba(0,224,255,0.4); }
.neo-hw-vlabel { position: absolute; left: -12px; top: 50%; transform: translateY(-50%) rotate(-90deg); transform-origin: center; font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.24em; color: var(--n-cyan); white-space: nowrap; text-shadow: 0 0 8px rgba(0,224,255,0.5); }

.neo-hw-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important; gap: 1px !important; background: var(--n-line) !important; padding: 1px !important; border: 0 !important; height: 100%; min-height: 420px; }
.neo-hw-grid .hw-col { background: var(--n-bg) !important; border: 0 !important; display: flex; flex-direction: column; min-height: 0; }
.neo-hw-grid .hw-col-head { padding: 6px 10px !important; border-bottom: 1px solid var(--n-line) !important; background: rgba(0,0,0,0.5) !important; }
.neo-hw-grid .hw-col-label { font-size: 9px !important; color: var(--n-cyan) !important; letter-spacing: 0.14em; }
.neo-hw-grid .hw-col-avg { font-size: 10px !important; }
.neo-hw-grid .hw-col-avg.up { color: var(--n-green) !important; text-shadow: 0 0 6px rgba(0,255,136,0.5); }
.neo-hw-grid .hw-col-avg.dn { color: var(--n-pink) !important; text-shadow: 0 0 6px rgba(255,0,122,0.5); }
.neo-hw-grid .hw-cells { flex: 1; overflow: hidden; padding: 1px !important; gap: 1px !important; display: flex; flex-direction: column; }
.neo-hw-grid .hw-cell { border-radius: 0 !important; padding: 3px 9px !important; min-height: 20px !important; font-size: 10.5px !important; border: 0 !important; }
.neo-hw-grid .hw-cell.up { color: var(--n-green) !important; }
.neo-hw-grid .hw-cell.dn { color: var(--n-pink) !important; }
.neo-hw-grid .hw-cell:hover { background: rgba(0,224,255,0.14) !important; color: var(--n-cyan) !important; }

/* MARQUEE divider */
.neo-marquee { overflow: hidden; border-top: 1px solid var(--n-line); border-bottom: 1px solid var(--n-line); padding: 14px 0; background: rgba(0,0,0,0.3); position: relative; z-index: 1; }
.neo-marquee-track { display: inline-flex; white-space: nowrap; gap: 24px; animation: neo-mq-scroll 60s linear infinite; }
.neo-mq-item { font-family: 'JetBrains Mono', monospace; font-size: 26px; font-weight: 700; color: var(--n-text); letter-spacing: 0.04em; text-transform: lowercase; }
.neo-mq-sep { color: var(--n-pink); font-size: 22px; text-shadow: 0 0 8px var(--n-pink); }
@keyframes neo-mq-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
.neo-marquee:hover .neo-marquee-track { animation-play-state: paused; }

/* SECTIONS below */
.neo-sections { position: relative; z-index: 1; padding: 32px 48px; display: flex; flex-direction: column; gap: 36px; }
@media (max-width: 1100px) { .neo-sections { padding: 24px 18px; } }
.neo-section { background: var(--n-bg-2); border: 1px solid var(--n-line); padding: 22px 26px; position: relative; }
.neo-section::before { content: ""; position: absolute; top: 0; left: 0; width: 16px; height: 16px; border-top: 1px solid var(--n-cyan); border-left: 1px solid var(--n-cyan); }
.neo-section::after { content: ""; position: absolute; bottom: 0; right: 0; width: 16px; height: 16px; border-bottom: 1px solid var(--n-pink); border-right: 1px solid var(--n-pink); }
.neo-sec-head { display: flex; gap: 14px; align-items: baseline; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid var(--n-line); }
.neo-sec-num { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--n-cyan); letter-spacing: 0.16em; font-weight: 700; text-shadow: 0 0 6px rgba(0,224,255,0.4); }
.neo-sec-title { font-family: 'JetBrains Mono', monospace; font-size: 20px; font-weight: 700; color: var(--n-text); letter-spacing: -0.01em; margin: 0; }
.neo-sec-dim { color: var(--n-muted); font-size: 14px; font-weight: 400; }
.neo-sec-meta { margin-left: auto; font-size: 10.5px; color: var(--n-muted2); display: flex; align-items: center; gap: 8px; }
.neo-sec-link { margin-left: auto; font-size: 11px; color: var(--n-cyan); text-decoration: none; letter-spacing: 0.08em; }
.neo-sec-link:hover { color: var(--n-yellow); text-shadow: 0 0 6px rgba(255,230,0,0.5); }
.neo-live-dot { width: 6px; height: 6px; background: var(--n-pink); box-shadow: 0 0 6px var(--n-pink); animation: pulse 1.4s ease-in-out infinite; display: inline-block; }

/* WIRE inside section */
.neo-wire-row { display: grid; grid-template-columns: 80px 90px 1fr; gap: 14px; padding: 6px 0; align-items: baseline; border-bottom: 1px solid var(--n-line); font-size: 12px; }
.neo-wire-row:last-child { border-bottom: 0; }
.neo-wire-row:hover { background: rgba(0,224,255,0.04); }
.neo-wire-row time { font-family: 'JetBrains Mono', monospace; color: var(--n-muted); font-size: 10.5px; }
.neo-wire-kind { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; letter-spacing: 0.12em; color: var(--n-muted2); }
.neo-kind-mover .neo-wire-kind { color: var(--n-cyan); }
.neo-kind-anomaly .neo-wire-kind { color: var(--n-yellow); }
.neo-kind-breaking .neo-wire-kind { color: var(--n-pink); }
.neo-kind-regime .neo-wire-kind { color: var(--n-violet); }
.neo-wire-label { color: var(--n-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.neo-wire-label a { color: inherit; text-decoration: none; }
.neo-wire-label a:hover { color: var(--n-cyan); }
.neo-sev-urgent { background: rgba(255,0,122,0.08); }

/* STREAMS section */
.neo-streams .ln-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)) !important; gap: 1px !important; background: var(--n-line) !important; padding: 0 !important; }
.neo-streams .ln-card { background: var(--n-bg) !important; border: 0 !important; }
.neo-streams .ln-thumb { aspect-ratio: 16/9 !important; }
.neo-streams .ln-tag, .neo-streams .ln-live { color: var(--n-cyan) !important; background: rgba(0,0,0,0.85) !important; }
.neo-streams .ln-live { color: var(--n-pink) !important; }
.neo-streams .ln-meta { background: var(--n-bg-2) !important; border-top: 1px solid var(--n-line) !important; }
.neo-streams .ln-label { color: var(--n-text) !important; }
.neo-streams .ln-sub { color: var(--n-muted) !important; }

/* Section split (headlines + regimes) */
.neo-section-split { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1px; padding: 0; background: var(--n-line); }
.neo-section-split > div { background: var(--n-bg-2); padding: 22px 26px; position: relative; }
@media (max-width: 900px) { .neo-section-split { grid-template-columns: 1fr; } }

.neo-hl { display: grid; grid-template-columns: 100px 1fr; gap: 12px; padding: 7px 0; text-decoration: none; color: var(--n-text); border-bottom: 1px solid var(--n-line); align-items: baseline; }
.neo-hl:last-child { border-bottom: 0; }
.neo-hl:hover { background: rgba(255,0,122,0.05); }
.neo-hl-src { font-size: 9.5px; color: var(--n-cyan); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; }
.neo-hl-title { font-family: 'Inter', system-ui, sans-serif; font-size: 12.5px; color: var(--n-text); line-height: 1.4; }
.neo-hl:hover .neo-hl-title { color: var(--n-yellow); }

.neo-regimes { display: flex; flex-direction: column; gap: 12px; padding-top: 4px; }
.neo-reg { display: grid; grid-template-columns: 60px 1fr 32px; gap: 12px; align-items: center; text-decoration: none; color: var(--n-text); }
.neo-reg-k { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; color: var(--n-muted); letter-spacing: 0.14em; }
.neo-reg-bar { height: 8px; background: var(--n-line); position: relative; overflow: hidden; }
.neo-reg-fill { height: 100%; transition: width 240ms; background: var(--n-muted); }
.neo-reg-v { font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700; text-align: right; }
.neo-reg-green .neo-reg-fill, .neo-reg-green .neo-reg-v { color: var(--n-green); }
.neo-reg-green .neo-reg-fill { background: var(--n-green); box-shadow: 0 0 10px rgba(0,255,136,0.5); }
.neo-reg-orange .neo-reg-fill { background: var(--n-yellow); box-shadow: 0 0 10px rgba(255,230,0,0.5); }
.neo-reg-orange .neo-reg-v { color: var(--n-yellow); }
.neo-reg-red .neo-reg-fill { background: var(--n-pink); box-shadow: 0 0 10px rgba(255,0,122,0.5); }
.neo-reg-red .neo-reg-v { color: var(--n-pink); }

/* Footer */
.neo-foot { padding: 32px 48px; border-top: 1px solid var(--n-line); margin-top: 24px; display: flex; flex-direction: column; gap: 12px; }
.neo-foot-meta { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--n-muted); letter-spacing: 0.16em; }
.neo-foot-nav { display: flex; flex-wrap: wrap; gap: 16px; }
.neo-foot-nav a { font-family: 'JetBrains Mono', monospace; font-size: 11.5px; color: var(--n-muted2); text-decoration: none; letter-spacing: 0.04em; }
.neo-foot-nav a:hover { color: var(--n-cyan); }

/* ════════════════════════════════════════════════════════════════════════════
   v8 · NEO-TOKYO REBUILT — Preload + Timsco DNA.
   Restrained dark, blue-only accent, bold sans (Space Grotesk), no pink,
   no HUD brackets, no grid background, no neon glow. Overrides v7.
   ════════════════════════════════════════════════════════════════════════ */

body.neotokyo-mode {
  background: #0a0a0c !important;
  color: #e8e8eb !important;
  font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
}

.neo {
  --n-bg:      #0a0a0c;
  --n-bg-2:    #111114;
  --n-panel:   #16161a;
  --n-line:    #26262d;
  --n-edge:    #38383f;
  --n-text:    #f4f4f5;
  --n-muted:   #8a8a92;
  --n-muted2:  #b3b3bc;
  --n-blue:    #3a7afe;
  --n-blue-2:  #6196ff;
  --n-up:      #4ade80;
  --n-dn:      #ef4444;
  --n-warn:    #f59e0b;
  /* Force every old --n-pink reference to fall back to blue too */
  --n-cyan:    var(--n-blue);
  --n-pink:    var(--n-blue);
  --n-green:   var(--n-up);
  --n-yellow:  var(--n-blue-2);
  --n-violet:  var(--n-blue-2);
}

/* Kill cyberpunk artifacts globally inside neotokyo-mode */
body.neotokyo-mode .neo-grid-bg { display: none !important; }
body.neotokyo-mode .neo-edge { display: none !important; }
body.neotokyo-mode .neo-bracket { display: none !important; }
body.neotokyo-mode .neo-hw-vlabel { display: none !important; }
body.neotokyo-mode .neo-section::before,
body.neotokyo-mode .neo-section::after { display: none !important; }
body.neotokyo-mode .neo-mark-dot { background: var(--n-blue) !important; box-shadow: none !important; animation: none !important; }
body.neotokyo-mode .neo-live-dot { background: var(--n-up) !important; box-shadow: none !important; }
body.neotokyo-mode * { text-shadow: none !important; }

/* Chrome — Preload-style: logo left, nav center, CTA right */
body.neotokyo-mode .neo-chrome {
  background: rgba(10,10,12,0.9) !important;
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--n-line) !important;
  padding: 18px 56px !important;
}
@media (max-width: 900px) { body.neotokyo-mode .neo-chrome { padding: 14px 22px !important; } }
body.neotokyo-mode .neo-mark { font-family: 'Space Grotesk', 'Inter', sans-serif !important; font-weight: 600 !important; font-size: 19px !important; color: var(--n-text) !important; }
body.neotokyo-mode .neo-mark-period { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-chrome-status { gap: 24px; }
body.neotokyo-mode .neo-stat-k { color: var(--n-muted) !important; font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-stat-v { color: var(--n-text) !important; font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-stat[data-fg-color="green"] .neo-stat-v { color: var(--n-up) !important; }
body.neotokyo-mode .neo-stat[data-fg-color="orange"] .neo-stat-v { color: var(--n-warn) !important; }
body.neotokyo-mode .neo-stat[data-fg-color="red"] .neo-stat-v { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-clock { color: var(--n-muted2) !important; font-family: 'JetBrains Mono', monospace !important; border-left-color: var(--n-line) !important; }
body.neotokyo-mode .neo-chrome-nav a { color: var(--n-muted2) !important; font-family: 'Inter', sans-serif !important; font-size: 13px !important; letter-spacing: 0 !important; font-weight: 500 !important; padding: 8px 14px !important; }
body.neotokyo-mode .neo-chrome-nav a:hover { color: var(--n-text) !important; }
body.neotokyo-mode .neo-cmd {
  color: #fff !important;
  background: var(--n-blue) !important;
  border: 0 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  padding: 10px 18px !important;
  letter-spacing: 0 !important;
  margin-left: 14px !important;
  transition: background 140ms;
}
body.neotokyo-mode .neo-cmd:hover { background: var(--n-blue-2) !important; }

/* HERO — Preload spacing: 6vw side padding, generous top, headline ~72-88px */
body.neotokyo-mode .neo-hero {
  padding: 96px 6vw 72px !important;
  min-height: calc(100vh - 200px) !important;
  align-items: center !important;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) !important;
  gap: 5vw !important;
}
@media (max-width: 1100px) { body.neotokyo-mode .neo-hero { padding: 56px 22px !important; gap: 40px !important; grid-template-columns: 1fr !important; } }
body.neotokyo-mode .neo-hero-l { gap: 32px !important; padding-right: 0 !important; max-width: 640px; }

body.neotokyo-mode .neo-hero-kicker { font-family: 'JetBrains Mono', monospace !important; font-size: 12px !important; color: var(--n-muted) !important; letter-spacing: 0.16em !important; }
body.neotokyo-mode .neo-hero-bracket { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-hero-kicker-text { color: var(--n-muted2) !important; text-shadow: none !important; }

body.neotokyo-mode .neo-hero-title {
  font-family: 'Space Grotesk', 'Inter', sans-serif !important;
  font-weight: 600 !important;
  font-size: clamp(48px, 7vw, 96px) !important;
  line-height: 1.02 !important;
  letter-spacing: -0.035em !important;
  margin: 0 !important;
  color: var(--n-text) !important;
}
body.neotokyo-mode .neo-hero-title-em { color: var(--n-blue) !important; font-style: italic !important; font-weight: 500 !important; }

body.neotokyo-mode .neo-hero-sub { font-family: 'Inter', sans-serif !important; font-size: 17px !important; line-height: 1.55 !important; color: var(--n-muted2) !important; max-width: 520px; }

/* Search input — cleaner, Preload-style */
body.neotokyo-mode .neo-search { border: 1px solid var(--n-edge) !important; background: var(--n-bg-2) !important; max-width: 520px; box-shadow: none !important; }
body.neotokyo-mode .neo-search:focus-within { border-color: var(--n-blue) !important; box-shadow: 0 0 0 3px rgba(58,122,254,0.16) !important; }
body.neotokyo-mode .neo-search-glyph { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-search-input { font-family: 'Inter', sans-serif !important; font-size: 14.5px !important; padding: 16px 8px !important; }
body.neotokyo-mode .neo-search-btn { color: var(--n-blue) !important; border-left-color: var(--n-edge) !important; padding: 16px 22px !important; }
body.neotokyo-mode .neo-search-btn:hover { background: rgba(58,122,254,0.1) !important; }

/* Quote — restrained */
body.neotokyo-mode .neo-quote { border-color: var(--n-line) !important; padding: 18px 0 !important; }
body.neotokyo-mode .neo-quote-bar { background: var(--n-blue) !important; box-shadow: none !important; }
body.neotokyo-mode .neo-quote-text { font-family: 'Inter', sans-serif !important; font-size: 15px !important; color: var(--n-muted2) !important; }
body.neotokyo-mode .neo-quote-cite { font-family: 'JetBrains Mono', monospace !important; }

/* Mini stats — bigger, calmer */
body.neotokyo-mode .neo-hero-stats { gap: 36px !important; }
body.neotokyo-mode .neo-mini-k { font-family: 'JetBrains Mono', monospace !important; color: var(--n-muted) !important; }
body.neotokyo-mode .neo-mini-v { font-family: 'Space Grotesk', sans-serif !important; font-size: 28px !important; }
body.neotokyo-mode .neo-mini-sub { color: var(--n-blue) !important; font-family: 'JetBrains Mono', monospace !important; }

/* HEATWALL frame — clean, no neon brackets */
body.neotokyo-mode .neo-hero-r { margin-right: 0 !important; }
body.neotokyo-mode .neo-hw-frame { background: var(--n-bg-2) !important; border: 1px solid var(--n-line) !important; padding: 18px !important; }
body.neotokyo-mode .neo-hw-grid { background: var(--n-line) !important; gap: 1px !important; min-height: 480px; }
body.neotokyo-mode .neo-hw-grid .hw-col { background: var(--n-bg) !important; }
body.neotokyo-mode .neo-hw-grid .hw-col-head { background: var(--n-bg-2) !important; border-bottom-color: var(--n-line) !important; }
body.neotokyo-mode .neo-hw-grid .hw-col-label { color: var(--n-muted) !important; font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-hw-grid .hw-col-avg.up { color: var(--n-up) !important; }
body.neotokyo-mode .neo-hw-grid .hw-col-avg.dn { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-hw-grid .hw-cell.up { color: var(--n-up) !important; }
body.neotokyo-mode .neo-hw-grid .hw-cell.dn { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-hw-grid .hw-cell:hover { background: rgba(58,122,254,0.14) !important; color: var(--n-blue-2) !important; }

/* MARQUEE — bigger sans, blue glyph separator */
body.neotokyo-mode .neo-marquee { border-color: var(--n-line) !important; background: transparent !important; padding: 28px 0 !important; }
body.neotokyo-mode .neo-mq-item { font-family: 'Space Grotesk', 'Inter', sans-serif !important; font-size: 38px !important; font-weight: 500 !important; color: var(--n-text) !important; text-transform: none !important; letter-spacing: -0.01em !important; }
body.neotokyo-mode .neo-mq-sep { color: var(--n-blue) !important; font-size: 16px !important; vertical-align: middle; }

/* SECTIONS — clean panels, no corner ticks */
body.neotokyo-mode .neo-sections { padding: 56px 6vw !important; gap: 48px !important; }
body.neotokyo-mode .neo-section { background: var(--n-bg-2) !important; border: 1px solid var(--n-line) !important; padding: 28px 32px !important; }
body.neotokyo-mode .neo-sec-num { font-family: 'JetBrains Mono', monospace !important; color: var(--n-blue) !important; font-size: 12px !important; letter-spacing: 0.1em !important; }
body.neotokyo-mode .neo-sec-title { font-family: 'Space Grotesk', sans-serif !important; font-size: 26px !important; font-weight: 600 !important; letter-spacing: -0.02em !important; }
body.neotokyo-mode .neo-sec-dim { font-family: 'Inter', sans-serif !important; color: var(--n-muted) !important; font-size: 16px !important; font-weight: 400 !important; }
body.neotokyo-mode .neo-sec-link { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-sec-link:hover { color: var(--n-blue-2) !important; }
body.neotokyo-mode .neo-section-split { background: var(--n-line) !important; }
body.neotokyo-mode .neo-section-split > div { background: var(--n-bg-2) !important; }

/* WIRE rows */
body.neotokyo-mode .neo-wire-row { border-bottom-color: var(--n-line) !important; }
body.neotokyo-mode .neo-wire-row:hover { background: rgba(58,122,254,0.04) !important; }
body.neotokyo-mode .neo-wire-row time { font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-wire-kind { font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-kind-mover .neo-wire-kind { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-kind-anomaly .neo-wire-kind { color: var(--n-warn) !important; }
body.neotokyo-mode .neo-kind-breaking .neo-wire-kind { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-kind-regime .neo-wire-kind { color: var(--n-blue-2) !important; }
body.neotokyo-mode .neo-wire-label { font-family: 'Inter', sans-serif !important; }
body.neotokyo-mode .neo-wire-label a:hover { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-sev-urgent { background: rgba(239,68,68,0.06) !important; }
body.neotokyo-mode .neo-sev-urgent .neo-wire-kind { color: var(--n-dn) !important; }

/* HEADLINES */
body.neotokyo-mode .neo-hl-src { color: var(--n-blue) !important; font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-hl:hover { background: rgba(58,122,254,0.05) !important; }
body.neotokyo-mode .neo-hl:hover .neo-hl-title { color: var(--n-blue-2) !important; }

/* REGIMES */
body.neotokyo-mode .neo-reg-k { font-family: 'JetBrains Mono', monospace !important; color: var(--n-muted) !important; }
body.neotokyo-mode .neo-reg-green .neo-reg-fill { background: var(--n-up) !important; box-shadow: none !important; }
body.neotokyo-mode .neo-reg-green .neo-reg-v { color: var(--n-up) !important; }
body.neotokyo-mode .neo-reg-orange .neo-reg-fill { background: var(--n-warn) !important; box-shadow: none !important; }
body.neotokyo-mode .neo-reg-orange .neo-reg-v { color: var(--n-warn) !important; }
body.neotokyo-mode .neo-reg-red .neo-reg-fill { background: var(--n-dn) !important; box-shadow: none !important; }
body.neotokyo-mode .neo-reg-red .neo-reg-v { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-reg:hover .neo-reg-k { color: var(--n-blue) !important; }

/* STREAMS */
body.neotokyo-mode .neo-streams .ln-tag, body.neotokyo-mode .neo-streams .ln-live { color: var(--n-blue) !important; }
body.neotokyo-mode .neo-streams .ln-live { color: var(--n-dn) !important; }
body.neotokyo-mode .neo-streams .ln-play { border-color: var(--n-blue) !important; background: rgba(58,122,254,0.2) !important; }

/* Footer */
body.neotokyo-mode .neo-foot { padding: 48px 6vw !important; border-top-color: var(--n-line) !important; }
body.neotokyo-mode .neo-foot-meta { font-family: 'JetBrains Mono', monospace !important; }
body.neotokyo-mode .neo-foot-nav a { font-family: 'Inter', sans-serif !important; font-size: 13px !important; color: var(--n-muted2) !important; letter-spacing: 0 !important; }
body.neotokyo-mode .neo-foot-nav a:hover { color: var(--n-blue) !important; }

/* ════════════════════════════════════════════════════════════════════════════
   v9 · TERMINAL — terminal.lazyai.nl aesthetic.
   Dark navy + terminal cyan/green + pure mono + command-prompt layout.
   ════════════════════════════════════════════════════════════════════════ */

body.neotokyo-mode .term {
  --t-bg:       #060a1a;
  --t-bg-2:     #0a1024;
  --t-panel:    #0e1530;
  --t-line:     #1a2548;
  --t-edge:     #2a3870;
  --t-text:     #c8d4e8;
  --t-muted:    #5a6a8a;
  --t-muted2:   #8a9ab8;
  --t-prim:     #4aa3ff;   /* blue — primary */
  --t-prim-2:   #82c8ff;   /* blue — lighter */
  --t-glow:     #4aa3ff;
  --t-up:       #4ade80;
  --t-dn:       #ff5e7e;
  --t-warn:     #ffcc44;
  --t-white:    #f5f9ff;

  background: var(--t-bg) !important;
  color: var(--t-text);
  font-family: 'JetBrains Mono', 'IBM Plex Mono', 'SF Mono', Menlo, Consolas, monospace !important;
  font-size: 13px;
  line-height: 1.55;
  padding: 0;
  min-height: 100vh;
  position: relative;
}

/* Kill everything from v7/v8 inside the .term scope */
body.neotokyo-mode:has(.term) { background: var(--t-bg) !important; }
body.neotokyo-mode .neo-chrome,
body.neotokyo-mode .neo-grid-bg,
body.neotokyo-mode .neo-edge,
body.neotokyo-mode .neo-hero,
body.neotokyo-mode .neo-marquee,
body.neotokyo-mode .neo-sections,
body.neotokyo-mode .neo-foot { display: none !important; }

/* Minimal terminal header */
.term-head {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 28px;
  border-bottom: 1px solid var(--t-line);
  background: var(--t-bg-2);
  font-size: 12.5px;
  position: sticky; top: 0; z-index: 30;
}
.term-mark { color: var(--t-prim); font-weight: 700; letter-spacing: 0.12em; }
.term-path { color: var(--t-muted2); }
.term-meta { color: var(--t-muted); font-size: 11px; letter-spacing: 0.06em; }
.term-spacer { flex: 1; }
.term-head .term-link { color: var(--t-text); text-decoration: none; padding: 4px 10px; border: 1px solid var(--t-line); transition: all 140ms; }
.term-head .term-link:hover { color: var(--t-prim); border-color: var(--t-prim); background: rgba(74,163,255,0.05); }
.term-head .term-sep { color: var(--t-muted); padding: 0 2px; }

/* Main terminal output area */
.term-out {
  max-width: 1480px;
  margin: 0 auto;
  padding: 24px 28px 80px;
}

/* ASCII banner — big blue type with glow + cyan undertint */
.term-banner {
  font-family: inherit;
  font-size: 11.5px;
  line-height: 1.05;
  color: var(--t-prim);
  margin: 14px 0 4px;
  padding: 18px 0 14px;
  white-space: pre;
  overflow-x: auto;
  text-shadow:
    0 0 4px rgba(74,163,255,0.55),
    0 0 18px rgba(74,163,255,0.35),
    0 0 36px rgba(74,163,255,0.18);
  letter-spacing: -0.02em;
  font-weight: 400;
  background: linear-gradient(180deg, rgba(74,163,255,0.04) 0%, transparent 100%);
  border-top: 1px solid var(--t-line);
  border-bottom: 1px solid var(--t-line);
}
.term-banner-tag {
  font-size: 11px;
  color: var(--t-muted2);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 8px 0 22px;
  margin-bottom: 8px;
  border-bottom: 1px dotted var(--t-line);
}
.term-banner-tag::before { content: ""; }
@media (max-width: 1000px) { .term-banner { font-size: 9px; } }
@media (max-width: 760px) { .term-banner { font-size: 6.5px; } .term-banner-tag { font-size: 9.5px; letter-spacing: 0.12em; } }

/* Command blocks: $ command → output */
.term-block { margin-bottom: 18px; }
.term-cmd {
  color: var(--t-prim);
  font-weight: 500;
  padding: 4px 0;
  border-bottom: 1px dotted var(--t-line);
  margin-bottom: 8px;
}
.term-cmd::before { content: ""; }
.term-flag { color: var(--t-muted); font-weight: 400; margin-left: 8px; }
.term-flag-link { color: var(--t-prim-2); text-decoration: none; margin-left: 8px; }
.term-flag-link:hover { text-decoration: underline; }
.term-stdout { color: var(--t-text); padding: 4px 0; }

/* K/V status lines */
.term-kv { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; padding: 3px 0; font-size: 13px; }
.term-k { color: var(--t-muted); letter-spacing: 0.06em; min-width: 60px; }
.term-v { color: var(--t-white); font-weight: 700; font-size: 14px; }
.term-sub { color: var(--t-muted2); font-size: 11.5px; letter-spacing: 0.08em; }
.term-sep { color: var(--t-edge); padding: 0 2px; }
.term-up { color: var(--t-up); font-size: 11.5px; }
.term-dn { color: var(--t-dn); font-size: 11.5px; }
.term-fg-green { color: var(--t-up); text-shadow: 0 0 6px rgba(74,222,128,0.3); }
.term-fg-orange { color: var(--t-warn); text-shadow: 0 0 6px rgba(255,204,68,0.3); }
.term-fg-red { color: var(--t-dn); text-shadow: 0 0 6px rgba(255,94,126,0.4); }
.term-fg-grey { color: var(--t-muted); }

/* Narrative line */
.term-narr { display: flex; gap: 10px; padding: 12px 0 4px; align-items: baseline; }
.term-narr-glyph { color: var(--t-prim-2); font-size: 16px; }
.term-narr-text { color: var(--t-white); font-size: 14px; line-height: 1.45; }
.term-narr-dek { color: var(--t-muted2); font-size: 12.5px; line-height: 1.5; padding-left: 26px; padding-bottom: 8px; }
.term-tags { display: flex; flex-wrap: wrap; gap: 6px; padding-left: 26px; padding-top: 4px; }
.term-tag { font-size: 10.5px; color: var(--t-prim-2); letter-spacing: 0.04em; }

/* Heatwall inside the terminal */
.term-hw { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important; gap: 1px !important; background: var(--t-line) !important; padding: 1px !important; border: 1px solid var(--t-line); }
.term-hw .hw-col { background: var(--t-bg) !important; border: 0 !important; display: flex; flex-direction: column; min-height: 0; }
.term-hw .hw-col-head { padding: 6px 10px !important; border-bottom: 1px solid var(--t-line) !important; background: var(--t-bg-2) !important; }
.term-hw .hw-col-label { font-size: 10px !important; color: var(--t-prim) !important; letter-spacing: 0.14em; font-family: inherit !important; }
.term-hw .hw-col-avg { font-size: 10.5px !important; }
.term-hw .hw-col-avg.up { color: var(--t-up) !important; }
.term-hw .hw-col-avg.dn { color: var(--t-dn) !important; }
.term-hw .hw-cells { padding: 1px !important; gap: 1px !important; display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.term-hw .hw-cell { border-radius: 0 !important; padding: 3px 9px !important; min-height: 22px !important; font-size: 11px !important; border: 0 !important; }
.term-hw .hw-cell.up { color: var(--t-up) !important; }
.term-hw .hw-cell.dn { color: var(--t-dn) !important; }
.term-hw .hw-cell:hover { background: rgba(74,163,255,0.12) !important; color: var(--t-prim) !important; }
.term-hw .hw-ticker { font-size: 10.5px !important; }
.term-hw .hw-pct { font-size: 10.5px !important; }

/* Wire (event ticker) */
.term-wire { padding: 0; }
.term-wire-row { display: grid; grid-template-columns: 80px 90px 1fr; gap: 14px; padding: 4px 0; align-items: baseline; font-size: 12.5px; border-bottom: 1px dotted var(--t-line); }
.term-wire-row:last-child { border-bottom: 0; }
.term-wire-row:hover { background: rgba(74,163,255,0.04); }
.term-wire-row time { color: var(--t-muted); font-size: 11.5px; }
.term-wire-kind { color: var(--t-muted); font-size: 10.5px; letter-spacing: 0.12em; white-space: pre; }
.term-kind-mover .term-wire-kind { color: var(--t-prim-2); }
.term-kind-anomaly .term-wire-kind { color: var(--t-warn); }
.term-kind-breaking .term-wire-kind { color: var(--t-dn); }
.term-kind-regime .term-wire-kind { color: var(--t-prim); }
.term-wire-label { color: var(--t-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.term-wire-label a { color: inherit; text-decoration: none; }
.term-wire-label a:hover { color: var(--t-prim); }
.term-sev-urgent { background: rgba(255,94,126,0.06); }
.term-sev-urgent .term-wire-kind { color: var(--t-dn); }

/* Headlines */
.term-hl { display: grid; grid-template-columns: 130px 1fr; gap: 12px; padding: 4px 0; text-decoration: none; color: var(--t-text); border-bottom: 1px dotted var(--t-line); align-items: baseline; }
.term-hl:last-child { border-bottom: 0; }
.term-hl:hover { background: rgba(0,212,255,0.05); }
.term-hl-src { font-size: 10.5px; color: var(--t-prim-2); letter-spacing: 0.06em; }
.term-hl-title { font-size: 12.5px; color: var(--t-text); line-height: 1.4; }
.term-hl:hover .term-hl-title { color: var(--t-prim); }

/* Streams */
.term-streams .ln-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important; gap: 1px !important; background: var(--t-line) !important; padding: 1px !important; }
.term-streams .ln-card { background: var(--t-bg) !important; border: 0 !important; }
.term-streams .ln-thumb { aspect-ratio: 16/9 !important; }
.term-streams .ln-meta { background: var(--t-bg-2) !important; border-top-color: var(--t-line) !important; padding: 5px 9px !important; }
.term-streams .ln-label { color: var(--t-text) !important; font-family: inherit !important; font-size: 10.5px !important; }
.term-streams .ln-sub { color: var(--t-muted) !important; font-family: inherit !important; font-size: 9.5px !important; }
.term-streams .ln-tag, .term-streams .ln-live { font-family: inherit !important; font-size: 9px !important; color: var(--t-prim) !important; background: rgba(0,0,0,0.85) !important; }
.term-streams .ln-live { color: var(--t-dn) !important; }
.term-streams .ln-play { background: rgba(74,163,255,0.15) !important; border-color: var(--t-prim) !important; color: var(--t-prim) !important; width: 32px !important; height: 32px !important; font-size: 11px !important; }

/* CD list — terminal-style nav index */
.term-index { display: flex; flex-direction: column; gap: 1px; background: var(--t-line); padding: 1px; }
.term-row { display: grid; grid-template-columns: 110px auto 1fr auto; gap: 12px; align-items: baseline; padding: 7px 12px; background: var(--t-bg); text-decoration: none; color: var(--t-text); font-size: 12.5px; }
.term-row:hover { background: var(--t-bg-2); color: var(--t-prim); }
.term-row .term-k { color: var(--t-prim); font-weight: 600; }
.term-row .term-sub { color: var(--t-muted2); font-size: 11.5px; letter-spacing: 0; }
.term-go { color: var(--t-muted); font-size: 11px; }
.term-row:hover .term-go { color: var(--t-prim); }

/* Prompt line */
.term-prompt { padding: 16px 0 8px; font-size: 13px; }
.term-ps1 { color: var(--t-prim); }
.term-pwd { color: var(--t-prim-2); }
.term-cursor { color: var(--t-prim); animation: term-blink 1s steps(2) infinite; }
@keyframes term-blink { 0%, 50% { opacity: 1; } 50.01%, 100% { opacity: 0; } }

/* Status bar (bottom) */
.term-status {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  padding: 6px 28px;
  background: var(--t-bg-2);
  border-top: 1px solid var(--t-line);
  font-size: 11px;
  color: var(--t-muted2);
  letter-spacing: 0.04em;
}
.term-status-live { color: var(--t-prim); display: inline-flex; align-items: center; gap: 6px; }
.term-live-dot { width: 7px; height: 7px; background: var(--t-prim); display: inline-block; box-shadow: 0 0 6px var(--t-prim); animation: pulse 1.4s ease-in-out infinite; }
.term-status .term-sep { color: var(--t-edge); }

/* Bottom-padding so content isn't hidden under the status bar */
.term-out { padding-bottom: 80px; }
@media (max-width: 760px) { .term-status { font-size: 10px; padding: 6px 12px; gap: 6px; } }

.term-loading, .term-empty { color: var(--t-muted); font-style: italic; padding: 8px 0; }

/* ════════════════════════════════════════════════════════════════════════════
   v10 · TERMINAL SITE-WIDE — applies to every page (home, /live, /learn, /c/*).
   Pure black + cyan #5ad6f0 + 40px grid + scan line + pixel mascot.
   ════════════════════════════════════════════════════════════════════════ */

body.term-mode {
  --t-bg:       #000;
  --t-bg-2:     #060606;
  --t-bg-panel: #0a0a0a;
  --t-line:     #161616;
  --t-edge:     #2a2a2a;
  --t-text:     #e0e0e0;
  --t-muted:    #555;
  --t-muted2:   #888;
  --t-prim:     #5ad6f0;
  --t-prim-2:   #82e3f8;
  --t-prim-dim: #2a8aa0;
  --t-up:       #5ad65c;
  --t-dn:       #ef4f4f;
  --t-warn:     #f0c674;
  --t-white:    #fff;

  background: #000 !important;
  color: var(--t-text) !important;
  font-family: 'IBM Plex Mono', 'JetBrains Mono', Menlo, Consolas, 'Courier New', monospace !important;
  font-size: 12px;
  line-height: 1.4;
  font-feature-settings: "calt" 0, "liga" 0;
  margin: 0;
  min-height: 100vh;
  background-image:
    radial-gradient(900px 600px at 50% 38%, rgba(90,214,240,0.04), transparent 65%),
    repeating-linear-gradient(0deg,  transparent 0, transparent 39px, rgba(40,80,90,0.06) 40px),
    repeating-linear-gradient(90deg, transparent 0, transparent 39px, rgba(40,80,90,0.06) 40px) !important;
  background-color: #000 !important;
}

body.term-mode::after {
  content: ''; position: fixed; left: 0; right: 0; height: 90px;
  pointer-events: none; z-index: 2;
  background: linear-gradient(180deg, transparent 0%, rgba(90,214,240,0.025) 50%, transparent 100%);
  animation: term-scansweep 14s linear infinite;
}
@keyframes term-scansweep { from { top: -100px; } to { top: 110vh; } }

body.term-mode main { padding: 0 !important; max-width: none !important; margin: 0 !important; min-height: 0 !important; }

/* Terminal topbar */
.tbar { position: sticky; top: 0; z-index: 30; height: 32px; background: var(--t-bg-2); border-bottom: 1px solid var(--t-edge); display: flex; align-items: center; padding: 0; }
.tbar-brand { display: flex; align-items: center; gap: 9px; color: var(--t-prim); font-weight: 700; letter-spacing: 0.18em; padding: 0 14px; height: 32px; border-right: 1px solid var(--t-edge); font-size: 13px; text-decoration: none; }
.tbar-mascot { width: 16px; height: 16px; shape-rendering: crispEdges; filter: drop-shadow(0 0 3px rgba(90,214,240,0.35)); }
.tbar-mascot rect.fill { fill: var(--t-prim); }
.tbar-mascot rect.eye { fill: var(--t-bg-2); animation: tbar-blink 6s ease-in-out infinite; transform-origin: center; }
@keyframes tbar-blink { 0%, 90%, 100% { transform: scaleY(1); opacity: 1; } 92%, 95% { transform: scaleY(0.1); opacity: 0.6; } }
.tbar-name { color: var(--t-prim); letter-spacing: 0.18em; font-size: 13px; }
.tbar-sub { color: var(--t-muted); letter-spacing: 0.06em; font-size: 11px; margin-left: 6px; font-weight: 400; }
.tbar-nav { display: flex; gap: 0; height: 32px; }
.tbar-nav a { color: var(--t-muted2); text-decoration: none; font-size: 11.5px; letter-spacing: 0.08em; padding: 0 12px; height: 32px; display: inline-flex; align-items: center; border-right: 1px solid var(--t-line); transition: color 120ms, background 120ms; }
.tbar-nav a:hover { color: var(--t-prim); background: rgba(90,214,240,0.06); }
.tbar-nav a.is-active { color: var(--t-prim); background: rgba(90,214,240,0.08); }
.tbar-right { margin-left: auto; padding: 0 16px; color: var(--t-muted2); font-size: 11px; letter-spacing: 0.04em; display: flex; align-items: center; gap: 8px; height: 32px; }
.tbar-status { color: var(--t-prim); display: inline-flex; align-items: center; gap: 6px; }
.tbar-dot { width: 6px; height: 6px; background: var(--t-prim); display: inline-block; box-shadow: 0 0 6px var(--t-prim); animation: pulse 1.4s ease-in-out infinite; }
.tbar-clock { color: var(--t-text); font-variant-numeric: tabular-nums; }
.tbar-tz { color: var(--t-muted); }
.tbar-sep { color: var(--t-edge); }
@media (max-width: 900px) { .tbar-nav { display: none; } }

/* Hide leftover old chrome */
body.term-mode .topbar,
body.term-mode .catnav,
body.term-mode .ribbon,
body.term-mode .price-tape,
body.term-mode .top-alert { display: none !important; }

/* BENTO */
.term-bento { display: grid; gap: 10px; margin-bottom: 14px; }
.term-bento-1 {
  grid-template-columns: minmax(0, 7fr) minmax(0, 3fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  align-items: stretch;
  min-height: 540px;
}
.term-bento-1 .tile-hw     { grid-column: 1; grid-row: 1 / span 3; }
.term-bento-1 .tile-status { grid-column: 2; grid-row: 1; }
.term-bento-1 .tile-narr   { grid-column: 2; grid-row: 2 / span 2; }

.term-bento-2 {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  min-height: 360px;
}

@media (max-width: 1280px) {
  .term-bento-1 { grid-template-columns: 1fr; grid-template-rows: auto auto auto; min-height: 0; }
  .term-bento-1 .tile-hw     { grid-column: 1; grid-row: auto; min-height: 480px; }
  .term-bento-1 .tile-status { grid-column: 1; grid-row: auto; }
  .term-bento-1 .tile-narr   { grid-column: 1; grid-row: auto; }
  .term-bento-2 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) { .term-bento-2 { grid-template-columns: 1fr; } }

.term-tile { background: var(--t-bg-2); border: 1px solid var(--t-edge); display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.term-tile-head { background: var(--t-bg-panel); border-bottom: 1px solid var(--t-edge); padding: 6px 12px; display: flex; gap: 10px; align-items: center; flex-shrink: 0; }
.term-tile-num { color: var(--t-prim); font-size: 10px; letter-spacing: 0.16em; font-weight: 700; }
.term-tile-title { font-size: 11px; color: var(--t-text); letter-spacing: 0.04em; }
.term-tile-title .term-flag { color: var(--t-muted); margin-left: 6px; }
.term-tile-title .term-flag-link { color: var(--t-prim); text-decoration: none; margin-left: 6px; }
.term-tile-title .term-flag-link:hover { text-decoration: underline; }
.term-tile-body { flex: 1; padding: 12px 14px; overflow: auto; min-height: 0; }

.tile-status-body { padding: 12px 14px; }
.tile-narr-body { padding: 12px 14px; }
.term-tile-cta { display: inline-block; margin-top: 12px; color: var(--t-prim); text-decoration: none; font-size: 11px; letter-spacing: 0.08em; border: 1px solid var(--t-edge); padding: 4px 10px; transition: all 140ms; }
.term-tile-cta:hover { background: rgba(90,214,240,0.06); border-color: var(--t-prim); }

.tile-hw-body { padding: 4px; display: flex; flex-direction: column; }
.tile-hw-body .term-hw { height: 100%; min-height: 0; flex: 1; display: grid !important; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important; gap: 1px !important; background: var(--t-line) !important; padding: 1px !important; border: 0 !important; }

.tile-wire .term-tile-body,
.tile-news .term-tile-body { padding: 0; }
.tile-wire .term-wire-row { padding: 4px 12px; }
.tile-news .term-hl { padding: 4px 12px; }
.tile-streams { min-height: 320px; }
.tile-streams .term-tile-body { padding: 0; }
.tile-streams .ln-grid { grid-template-columns: 1fr 1fr !important; gap: 1px !important; padding: 0 !important; background: var(--t-line) !important; height: 100% !important; }
.tile-streams .ln-card { background: var(--t-bg) !important; border: 0 !important; }
.tile-streams .ln-thumb { aspect-ratio: auto !important; flex: 1 1 auto; }
.tile-streams .ln-meta { background: var(--t-bg-panel) !important; border-top-color: var(--t-line) !important; padding: 5px 9px !important; }
.tile-streams .ln-label { color: var(--t-text) !important; font-family: inherit !important; font-size: 10.5px !important; }
.tile-streams .ln-sub { color: var(--t-muted) !important; font-family: inherit !important; font-size: 9.5px !important; }
.tile-streams .ln-tag, .tile-streams .ln-live { color: var(--t-prim) !important; background: rgba(0,0,0,0.85) !important; font-family: inherit !important; }
.tile-streams .ln-live { color: var(--t-dn) !important; }
.tile-streams .ln-play { background: rgba(90,214,240,0.18) !important; border-color: var(--t-prim) !important; color: var(--t-prim) !important; width: 30px !important; height: 30px !important; font-size: 11px !important; }

.tile-cd { margin-bottom: 14px; }
.tile-cd .term-tile-body { padding: 0; }
.tile-cd .term-index { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1px; background: var(--t-line); padding: 1px; }
.tile-cd .term-row { background: var(--t-bg); }

/* Repaint heatwall in cyan/black */
body.term-mode .term-hw { background: var(--t-line) !important; }
body.term-mode .term-hw .hw-col { background: var(--t-bg) !important; }
body.term-mode .term-hw .hw-col-head { background: var(--t-bg-panel) !important; border-bottom-color: var(--t-line) !important; }
body.term-mode .term-hw .hw-col-label { color: var(--t-prim) !important; font-family: inherit !important; }
body.term-mode .term-hw .hw-col-avg.up { color: var(--t-up) !important; }
body.term-mode .term-hw .hw-col-avg.dn { color: var(--t-dn) !important; }
body.term-mode .term-hw .hw-cell.up { color: var(--t-up) !important; }
body.term-mode .term-hw .hw-cell.dn { color: var(--t-dn) !important; }
body.term-mode .term-hw .hw-cell:hover { background: rgba(90,214,240,0.12) !important; color: var(--t-prim) !important; }

/* Banner re-paint */
body.term-mode .term-banner { color: var(--t-prim) !important; text-shadow: 0 0 4px rgba(90,214,240,0.55), 0 0 18px rgba(90,214,240,0.35), 0 0 36px rgba(90,214,240,0.18) !important; background: linear-gradient(180deg, rgba(90,214,240,0.04) 0%, transparent 100%) !important; border-color: var(--t-line) !important; }
body.term-mode .term-banner-tag { color: var(--t-muted2) !important; border-bottom-color: var(--t-line) !important; }

body.term-mode .term { background: transparent !important; padding-bottom: 80px; }
body.term-mode .term-out { padding: 16px 24px 60px; max-width: 1620px; margin: 0 auto; }

body.term-mode .term-cmd { color: var(--t-prim) !important; border-bottom-color: var(--t-line) !important; }
body.term-mode .term-stdout { color: var(--t-text) !important; }
body.term-mode .term-k { color: var(--t-muted2) !important; }
body.term-mode .term-v { color: var(--t-white) !important; }
body.term-mode .term-sub { color: var(--t-muted) !important; }
body.term-mode .term-sep { color: var(--t-edge) !important; }
body.term-mode .term-narr-glyph { color: var(--t-prim) !important; }
body.term-mode .term-narr-text { color: var(--t-white) !important; }
body.term-mode .term-narr-dek { color: var(--t-muted2) !important; }
body.term-mode .term-tag { color: var(--t-prim) !important; }
body.term-mode .term-fg-green { color: var(--t-up) !important; text-shadow: 0 0 6px rgba(90,214,92,0.4) !important; }
body.term-mode .term-fg-orange { color: var(--t-warn) !important; }
body.term-mode .term-fg-red { color: var(--t-dn) !important; text-shadow: 0 0 6px rgba(239,79,79,0.4) !important; }

body.term-mode .term-wire-row { border-bottom-color: var(--t-line) !important; }
body.term-mode .term-kind-mover .term-wire-kind { color: var(--t-prim) !important; }
body.term-mode .term-kind-anomaly .term-wire-kind { color: var(--t-warn) !important; }
body.term-mode .term-kind-breaking .term-wire-kind { color: var(--t-dn) !important; }
body.term-mode .term-kind-regime .term-wire-kind { color: var(--t-prim-2) !important; }
body.term-mode .term-hl-src { color: var(--t-prim) !important; }
body.term-mode .term-row .term-k { color: var(--t-prim) !important; }
body.term-mode .term-row:hover { background: rgba(90,214,240,0.06) !important; }

body.term-mode .term-prompt { color: var(--t-text) !important; padding: 22px 0 12px; }
body.term-mode .term-ps1 { color: var(--t-prim) !important; }
body.term-mode .term-pwd { color: var(--t-prim-2) !important; }
body.term-mode .term-cursor { color: var(--t-prim) !important; }

body.term-mode .term-status { background: var(--t-bg-2) !important; border-top-color: var(--t-edge) !important; color: var(--t-muted2) !important; }
body.term-mode .term-status-live { color: var(--t-prim) !important; }
body.term-mode .term-live-dot { background: var(--t-prim) !important; box-shadow: 0 0 6px var(--t-prim) !important; }

/* Other pages — terminal-themed wrapper, keep their content */
body.term-mode main > section:not(.term) { padding: 22px 28px !important; max-width: 1620px; margin: 0 auto; color: var(--t-text); }
body.term-mode main > section:not(.term) .cat-page-head h1,
body.term-mode main > section:not(.term) .cat-page-title h1 { color: var(--t-prim) !important; font-family: 'IBM Plex Mono', monospace !important; letter-spacing: 0.04em; }

/* ════════════════════════════════════════════════════════════════════════════
   v11 · FIXED VIEWPORT — homepage locks to 100vh, no scroll, internal scroll
   inside each tile only. Drop banner, prompt, cd-list (catnav covers it).
   ════════════════════════════════════════════════════════════════════════ */

body.term-mode:has(.term-fixed) { overflow: hidden !important; height: 100vh !important; }
body.term-mode:has(.term-fixed) main { height: calc(100vh - 32px) !important; overflow: hidden !important; }

.term.term-fixed {
  display: flex; flex-direction: column;
  height: calc(100vh - 32px);
  padding: 0;
}
.term.term-fixed .term-status { position: relative; flex-shrink: 0; }

/* THE BENTO — fills available space exactly */
.term-grid {
  flex: 1; min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 3fr) minmax(0, 3fr);
  grid-template-rows: minmax(0, 4fr) minmax(0, 3fr) minmax(0, 4fr);
  grid-template-areas:
    "hw status status"
    "hw narr   narr"
    "wire news streams";
  gap: 4px;
  padding: 4px;
  background: var(--t-line);
}

.term-fixed .tile-hw      { grid-area: hw; }
.term-fixed .tile-status  { grid-area: status; }
.term-fixed .tile-narr    { grid-area: narr; }
.term-fixed .tile-wire    { grid-area: wire; }
.term-fixed .tile-news    { grid-area: news; }
.term-fixed .tile-streams { grid-area: streams; }

.term-fixed .term-tile {
  background: var(--t-bg-2);
  border: 1px solid var(--t-edge);
  min-height: 0;
  display: flex; flex-direction: column;
  overflow: hidden;
}
.term-fixed .term-tile-head { flex-shrink: 0; padding: 5px 12px; height: 24px; }
.term-fixed .term-tile-body { flex: 1; min-height: 0; overflow: auto; scrollbar-width: thin; scrollbar-color: var(--t-edge) transparent; }
.term-fixed .term-tile-body::-webkit-scrollbar { width: 4px; height: 4px; }
.term-fixed .term-tile-body::-webkit-scrollbar-thumb { background: var(--t-edge); }
.term-fixed .term-tile-link { margin-left: auto; color: var(--t-prim); text-decoration: none; font-size: 10px; letter-spacing: 0.08em; }
.term-fixed .term-tile-link:hover { color: var(--t-prim-2); text-shadow: 0 0 6px rgba(90,214,240,0.5); }

/* Heatwall fills its tile completely */
.term-fixed .tile-hw-body { padding: 4px; overflow: hidden; }
.term-fixed .tile-hw-body .term-hw { height: 100%; min-height: 0; }
.term-fixed .tile-hw-body .term-hw .hw-cells { flex: 1; min-height: 0; overflow: auto; scrollbar-width: thin; scrollbar-color: var(--t-edge) transparent; }
.term-fixed .tile-hw-body .term-hw .hw-cells::-webkit-scrollbar { width: 3px; }
.term-fixed .tile-hw-body .term-hw .hw-cells::-webkit-scrollbar-thumb { background: var(--t-edge); }

/* Tile bodies tighter for the fixed viewport */
.term-fixed .tile-status-body { padding: 8px 12px; }
.term-fixed .tile-status-body .term-kv { padding: 2px 0; }
.term-fixed .tile-narr-body { padding: 10px 12px; }
.term-fixed .tile-narr-body .term-narr { padding: 0 0 6px; }
.term-fixed .tile-narr-body .term-narr-dek { padding-left: 22px; font-size: 11.5px; line-height: 1.45; }
.term-fixed .tile-narr-body .term-tags { padding-left: 22px; padding-top: 4px; }
.term-fixed .tile-wire .term-tile-body,
.term-fixed .tile-news .term-tile-body { padding: 4px 0; }
.term-fixed .tile-wire .term-wire-row { padding: 3px 12px; font-size: 11.5px; }
.term-fixed .tile-wire .term-wire-row time { font-size: 10.5px; }
.term-fixed .tile-news .term-hl { padding: 3px 12px; grid-template-columns: 90px 1fr; }
.term-fixed .tile-news .term-hl-title { font-size: 11.5px; }
.term-fixed .tile-streams .term-tile-body { padding: 0; }
.term-fixed .tile-streams .ln-grid { grid-template-columns: repeat(3, 1fr) !important; grid-template-rows: repeat(2, 1fr) !important; gap: 1px !important; padding: 0 !important; background: var(--t-line) !important; height: 100% !important; }
.term-fixed .tile-streams .ln-card:nth-child(n+7) { display: none; }
.term-fixed .tile-streams .ln-card { background: var(--t-bg) !important; }
.term-fixed .tile-streams .ln-thumb { aspect-ratio: auto !important; flex: 1 !important; }
.term-fixed .tile-streams .ln-meta { padding: 4px 8px !important; }
.term-fixed .tile-streams .ln-label { font-size: 10px !important; }
.term-fixed .tile-streams .ln-sub { font-size: 9px !important; }

/* Status footer compact */
.term-fixed + .term-status,
.term-fixed .term-status {
  position: relative !important;
  height: 24px;
  padding: 4px 14px !important;
  font-size: 10.5px !important;
  border-top: 1px solid var(--t-edge);
  background: var(--t-bg-2);
}

/* Mobile fallback — allow scroll on tight viewports */
@media (max-width: 900px) {
  body.term-mode:has(.term-fixed) { overflow: auto !important; height: auto !important; }
  body.term-mode:has(.term-fixed) main { height: auto !important; overflow: auto !important; }
  .term.term-fixed { height: auto; }
  .term-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    grid-template-areas:
      "hw"
      "status"
      "narr"
      "wire"
      "news"
      "streams";
  }
  .term-fixed .tile-hw { min-height: 320px; }
  .term-fixed .term-tile { min-height: 200px; }
}

/* ─── STATUS / NARRATIVE — packed content ─── */

/* Section divider inside a tile */
.term-section { padding: 6px 12px 8px; }
.term-section + .term-section { border-top: 1px dotted var(--t-line); }
.term-section-h {
  font-size: 9px; color: var(--t-prim); letter-spacing: 0.18em; font-weight: 700;
  margin: 0 0 6px; text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
}
.term-section-h::before { content: "──"; color: var(--t-edge); letter-spacing: 0; }
.term-section-h::after { content: ""; flex: 1; height: 0; border-top: 1px solid var(--t-edge); margin-left: 4px; }

/* Tighten the status/narrative bodies so sections butt against the head */
.term-fixed .tile-status-body,
.term-fixed .tile-narr-body { padding: 0 !important; }

/* Sessions row — NYSE / LSE / TKY / HKEX status pills */
.term-sessions { display: flex; flex-wrap: wrap; gap: 6px; }
.term-sess { display: inline-flex; align-items: center; gap: 5px; padding: 2px 8px; border: 1px solid var(--t-line); font-size: 10.5px; letter-spacing: 0.08em; color: var(--t-text); }
.term-sess-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--t-muted); display: inline-block; }
.term-sess-open .term-sess-dot { background: var(--t-up); box-shadow: 0 0 5px var(--t-up); }
.term-sess-closed .term-sess-dot { background: var(--t-muted); }
.term-sess-st { color: var(--t-muted2); font-size: 9.5px; margin-left: 2px; }
.term-sess-open .term-sess-st { color: var(--t-up); }
.term-sess-closed .term-sess-st { color: var(--t-muted); }

/* K-V link rows for clickable regimes / movers */
.term-kv-link { text-decoration: none; color: inherit; padding: 2px 0; border-radius: 0; }
.term-kv-link:hover { background: rgba(90,214,240,0.05); color: var(--t-prim); }
.term-kv-link:hover .term-k { color: var(--t-prim); }

/* Mini bar embedded in the regime row */
.term-mini-bar { display: inline-block; flex: 1; max-width: 60px; height: 4px; background: var(--t-line); margin: 0 6px; position: relative; overflow: hidden; }
.term-mini-fill { display: block; height: 100%; background: var(--t-muted); }
.term-fg-green-bg { background: var(--t-up) !important; box-shadow: 0 0 4px rgba(90,214,92,0.4); }
.term-fg-orange-bg { background: var(--t-warn) !important; box-shadow: 0 0 4px rgba(240,198,116,0.4); }
.term-fg-red-bg { background: var(--t-dn) !important; box-shadow: 0 0 4px rgba(239,79,79,0.5); }
.term-fg-grey-bg { background: var(--t-muted) !important; }

/* Alert line */
.term-alert-line { display: flex; gap: 6px; align-items: baseline; padding: 4px 0 0; font-size: 10.5px; color: var(--t-text); text-decoration: none; }
.term-alert-line:hover { color: var(--t-prim); }
.term-alert-glyph { font-size: 10px; }

/* Narrative diff line */
.term-narr-diff { display: flex; gap: 8px; align-items: baseline; padding: 6px 0 0; font-size: 10.5px; padding-left: 22px; }

/* Next-72h events (in narrative tile) */
.term-event { display: grid; grid-template-columns: 38px 1fr auto; gap: 8px; align-items: baseline; padding: 3px 0; text-decoration: none; color: var(--t-text); font-size: 11.5px; border-bottom: 1px dotted var(--t-line); }
.term-event:last-of-type { border-bottom: 0; }
.term-event:hover { background: rgba(90,214,240,0.04); color: var(--t-prim); }
.term-event-kind { font-size: 9px; color: var(--t-prim); letter-spacing: 0.08em; text-transform: uppercase; }
.term-event-red .term-event-kind { color: var(--t-dn); }
.term-event-orange .term-event-kind { color: var(--t-warn); }
.term-event-label { color: var(--t-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.term-event-eta { font-size: 10px; color: var(--t-muted); }

/* Tighten KV padding inside packed sections */
.term-section .term-kv { padding: 2px 0; font-size: 11.5px; gap: 6px; }
.term-section .term-kv .term-k { min-width: 56px; font-size: 10px; letter-spacing: 0.08em; }
.term-section .term-kv .term-v { font-size: 12px; }
.term-section .term-kv .term-sub { font-size: 9.5px; }

/* Topbar live chips — biggest mover + alert count */
.tbar-chip {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 10.5px; padding: 3px 9px; border: 1px solid var(--t-line);
  letter-spacing: 0.06em; cursor: pointer; color: var(--t-text);
  background: rgba(0,0,0,0.4); transition: all 140ms;
}
.tbar-chip:hover { border-color: var(--t-prim); background: rgba(90,214,240,0.08); }
.tbar-chip-up { color: var(--t-up); border-color: rgba(90,214,92,0.4); }
.tbar-chip-up:hover { border-color: var(--t-up); }
.tbar-chip-dn { color: var(--t-dn); border-color: rgba(239,79,79,0.4); }
.tbar-chip-dn:hover { border-color: var(--t-dn); }
.tbar-chip-v { font-weight: 700; }
.tbar-chip-alert[data-level="green"]  { color: var(--t-up);    border-color: rgba(90,214,92,0.4); }
.tbar-chip-alert[data-level="orange"] { color: var(--t-warn);  border-color: rgba(240,198,116,0.4); }
.tbar-chip-alert[data-level="red"]    { color: var(--t-dn);    border-color: rgba(239,79,79,0.55); animation: pulse 1.6s ease-in-out infinite; }
@media (max-width: 1280px) { .tbar-chip { display: none; } }

/* Command bar above status footer */
.term-cmdbar {
  flex-shrink: 0;
  display: flex; align-items: center; gap: 10px;
  padding: 6px 14px;
  background: var(--t-bg);
  border-top: 1px solid var(--t-edge);
  font-family: inherit;
}
.term-cmdbar-ps1 { color: var(--t-prim); font-size: 11.5px; white-space: nowrap; }
.term-cmdbar-input {
  flex: 1; min-width: 0;
  background: transparent;
  border: 0;
  color: var(--t-text);
  font-family: inherit;
  font-size: 12.5px;
  outline: none;
  padding: 2px 0;
  letter-spacing: 0.02em;
}
.term-cmdbar-input::placeholder { color: var(--t-muted); }
.term-cmdbar-input:focus { color: var(--t-prim-2); }
.term-cmdbar-hint { color: var(--t-muted); font-size: 10px; letter-spacing: 0.1em; white-space: nowrap; }
@media (max-width: 700px) { .term-cmdbar-hint { display: none; } }

/* Re-balance the fixed grid height: subtract topbar 32 + cmdbar 28 + status 24 */
body.term-mode:has(.term-fixed) main { height: calc(100vh - 32px) !important; }
.term.term-fixed { height: calc(100vh - 32px); }
.term.term-fixed .term-grid { /* takes remaining flex space */ }

/* ─── Cmdbar autocomplete dropdown ─── */
.term-cmdbar { position: relative; }
.term-cmd-suggest {
  position: absolute; left: 14px; right: 14px; bottom: 100%;
  background: var(--t-bg-2);
  border: 1px solid var(--t-edge);
  border-bottom: 0;
  z-index: 60;
  max-height: 280px;
  overflow-y: auto;
}
.term-sug-item {
  display: grid; grid-template-columns: 60px 1fr auto; gap: 10px; align-items: baseline;
  width: 100%; padding: 6px 12px;
  background: transparent; border: 0; border-bottom: 1px dotted var(--t-line);
  font-family: inherit; font-size: 12px;
  color: var(--t-text);
  text-align: left; cursor: pointer;
}
.term-sug-item:last-child { border-bottom: 0; }
.term-sug-item:hover, .term-sug-item.is-active { background: rgba(90,214,240,0.08); color: var(--t-prim); }
.term-sug-kind { color: var(--t-prim); font-size: 9.5px; letter-spacing: 0.14em; font-weight: 700; }
.term-sug-label { color: var(--t-white); font-weight: 500; }
.term-sug-item:hover .term-sug-label, .term-sug-item.is-active .term-sug-label { color: var(--t-prim-2); }
.term-sug-href { color: var(--t-muted); font-size: 10.5px; }

/* ─── ? help overlay ─── */
.term-help {
  position: fixed; inset: 0; z-index: 100;
  background: rgba(0,0,0,0.78);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.term-help[hidden] { display: none; }
.term-help-panel {
  background: var(--t-bg-2);
  border: 1px solid var(--t-prim);
  box-shadow: 0 0 0 1px var(--t-prim), 0 0 36px rgba(90,214,240,0.25);
  min-width: 540px; max-width: 880px; width: 100%;
}
.term-help-head { display: flex; align-items: center; padding: 8px 16px; border-bottom: 1px solid var(--t-edge); background: var(--t-bg-panel); }
.term-help-title { color: var(--t-prim); font-size: 12px; letter-spacing: 0.1em; font-weight: 700; }
.term-help-close { margin-left: auto; background: transparent; border: 1px solid var(--t-edge); color: var(--t-muted2); padding: 3px 9px; font-family: inherit; font-size: 10.5px; cursor: pointer; }
.term-help-close:hover { color: var(--t-prim); border-color: var(--t-prim); }
.term-help-body { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; padding: 22px 28px; }
.term-help-col {}
.term-help-h { font-size: 10px; color: var(--t-prim); letter-spacing: 0.16em; margin-bottom: 10px; font-weight: 700; }
.term-help-row { display: grid; grid-template-columns: 64px 1fr; gap: 12px; padding: 4px 0; font-size: 11.5px; color: var(--t-text); align-items: baseline; }
.term-help-row kbd {
  display: inline-block; padding: 2px 8px;
  background: var(--t-bg); color: var(--t-prim);
  border: 1px solid var(--t-edge);
  font-family: inherit; font-size: 10.5px; font-weight: 700;
  text-align: center; min-width: 32px;
}
.term-help-row span { color: var(--t-muted2); }
@media (max-width: 720px) {
  .term-help-body { grid-template-columns: 1fr; gap: 16px; padding: 16px 20px; }
}

/* ─── Skeleton loaders ─── */
@keyframes term-skel-pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 0.8; } }
.term-skel-row {
  display: grid; grid-template-columns: 70px 80px 1fr; gap: 14px; align-items: center;
  padding: 5px 12px;
  border-bottom: 1px dotted var(--t-line);
}
.term-skel-row.term-skel-news { grid-template-columns: 90px 1fr; }
.term-skel { display: inline-block; height: 10px; background: var(--t-edge); animation: term-skel-pulse 1.4s ease-in-out infinite; border-radius: 1px; }
.skel-time  { width: 56px; }
.skel-kind  { width: 64px; }
.skel-label { width: 75%; height: 10px; }
.skel-src   { width: 70px; }
.skel-title { width: 85%; }

/* ─── Wire row fade-in for new events ─── */
@keyframes term-fresh-in {
  0%   { background: rgba(90,214,240,0.22); opacity: 0; transform: translateX(-4px); }
  60%  { opacity: 1; transform: translateX(0); }
  100% { background: transparent; opacity: 1; }
}
.term-wire-row.term-fresh { animation: term-fresh-in 1.6s ease-out; }

/* ─── HEATWALL — cells grow to fill columns (kill the dark void) ─── */
.term-fixed .tile-hw-body .term-hw .hw-cells { display: flex; flex-direction: column; gap: 1px; padding: 1px; flex: 1; min-height: 0; overflow: hidden; }
.term-fixed .tile-hw-body .term-hw .hw-cell { flex: 1 1 0; min-height: 24px; display: flex !important; justify-content: space-between !important; align-items: center !important; }

/* Cap the background-tint intensity so text stays readable.
   Original styles ramped to fully-saturated red/green at hw-int-100 which
   crashed contrast vs the bright-red foreground text. Tone it down. */
body.term-mode .hw-cell.up.hw-int-0   { background: rgba(90,214,92,0.08) !important; }
body.term-mode .hw-cell.up.hw-int-20  { background: rgba(90,214,92,0.18) !important; }
body.term-mode .hw-cell.up.hw-int-40  { background: rgba(90,214,92,0.28) !important; }
body.term-mode .hw-cell.up.hw-int-60  { background: rgba(90,214,92,0.38) !important; }
body.term-mode .hw-cell.up.hw-int-80  { background: rgba(90,214,92,0.50) !important; }
body.term-mode .hw-cell.up.hw-int-100 { background: rgba(90,214,92,0.65) !important; }
body.term-mode .hw-cell.dn.hw-int-0   { background: rgba(239,79,79,0.08) !important; }
body.term-mode .hw-cell.dn.hw-int-20  { background: rgba(239,79,79,0.20) !important; }
body.term-mode .hw-cell.dn.hw-int-40  { background: rgba(239,79,79,0.32) !important; }
body.term-mode .hw-cell.dn.hw-int-60  { background: rgba(239,79,79,0.44) !important; }
body.term-mode .hw-cell.dn.hw-int-80  { background: rgba(239,79,79,0.56) !important; }
body.term-mode .hw-cell.dn.hw-int-100 { background: rgba(239,79,79,0.70) !important; }

/* Ticker text always WHITE / near-white regardless of tint — only the pct keeps the up/down hue */
body.term-mode .term-hw .hw-cell { color: var(--t-white) !important; }
body.term-mode .term-hw .hw-cell .hw-ticker { color: var(--t-white) !important; font-weight: 600; }
body.term-mode .term-hw .hw-cell.up .hw-pct  { color: var(--t-up) !important; font-weight: 700; }
body.term-mode .term-hw .hw-cell.dn .hw-pct  { color: #ffd6d6 !important; font-weight: 700; }
/* On HIGH-intensity down cells the bg is dark red — make the pct stand out further */
body.term-mode .hw-cell.dn.hw-int-60 .hw-pct,
body.term-mode .hw-cell.dn.hw-int-80 .hw-pct,
body.term-mode .hw-cell.dn.hw-int-100 .hw-pct { color: #fff !important; text-shadow: 0 0 4px rgba(0,0,0,0.5); }
body.term-mode .hw-cell.up.hw-int-60 .hw-pct,
body.term-mode .hw-cell.up.hw-int-80 .hw-pct,
body.term-mode .hw-cell.up.hw-int-100 .hw-pct { color: #07210d !important; }
body.term-mode .hw-cell.up.hw-int-60 .hw-ticker,
body.term-mode .hw-cell.up.hw-int-80 .hw-ticker,
body.term-mode .hw-cell.up.hw-int-100 .hw-ticker { color: #06210d !important; }

/* ─── Status tile sections — tighter so all 4 fit in their 28% pane ─── */
.term-fixed .tile-status-body .term-section { padding: 5px 12px 6px; }
.term-fixed .tile-status-body .term-section + .term-section { border-top-style: dotted; }
.term-fixed .tile-status-body .term-section-h { font-size: 8.5px; margin-bottom: 4px; }
.term-fixed .tile-status-body .term-kv { padding: 1px 0; font-size: 11px; }
.term-fixed .tile-status-body .term-kv .term-v { font-size: 11.5px; }
.term-fixed .tile-status-body .term-mini-bar { max-width: 50px; height: 3px; }
.term-fixed .tile-status-body .term-sess { padding: 1px 6px; font-size: 9.5px; }
.term-fixed .tile-status-body .term-sess-st { font-size: 9px; }
.term-fixed .tile-status-body .term-alert-line { padding-top: 3px; font-size: 10px; }

/* ─── Narrative tile sections also tightened ─── */
.term-fixed .tile-narr-body .term-section { padding: 5px 12px 6px; }
.term-fixed .tile-narr-body .term-section + .term-section { border-top-style: dotted; }
.term-fixed .tile-narr-body .term-section-h { font-size: 8.5px; margin-bottom: 4px; }
.term-fixed .tile-narr-body .term-narr-dek { padding-top: 4px; padding-bottom: 4px; font-size: 11px; line-height: 1.4; }
.term-fixed .tile-narr-body .term-event { padding: 2px 0; font-size: 11px; }
.term-fixed .tile-narr-body .term-event-kind { font-size: 8.5px; }
.term-fixed .tile-narr-body .term-event-eta { font-size: 9.5px; }
.term-fixed .tile-narr-body .term-tags { padding-top: 3px; }
.term-fixed .tile-narr-body .term-tag { font-size: 9px; padding: 1px 5px; }
