/* ============================================================
   ÇAKIR WEALTH CONSOLE — JARVIS HUD design system
   ============================================================ */
:root{
  --bg:#05080C;
  --bg2:#070D14;
  --glow:#1FE5D8;       /* primary turquoise glow */
  --line:#0AA9B8;       /* structural cyan lines  */
  --line-dim:#0a6b76;
  --ink:#cdf2f4;        /* default text on dark    */
  --ink-dim:#8fc4c9;
  --ink-faint:#6fa0a6;

  --go:#3DF07A;         /* deploy   */
  --watch:#F5B642;      /* watch / hold */
  --risk:#FF5C5C;       /* de-risk  */
  --gold:#C9A24B;       /* metals only */

  --hud:'Rajdhani', sans-serif;
  --display:'Orbitron', sans-serif;
  --mono:'JetBrains Mono', monospace;
  --body:'Archivo', sans-serif;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html,body{ width:100%; height:100%; background:#000; overflow:hidden; }

.stage{
  position:fixed; inset:0; background:#000;
  display:flex; align-items:center; justify-content:center;
}
.canvas{
  position:absolute; top:50%; left:50%;
  width:1920px; height:1080px;
  transform-origin:center center;
  background:var(--bg);
  overflow:hidden;
  color:var(--ink);
  font-family:var(--body);
  -webkit-font-smoothing:antialiased;
}

/* ---------- ambient background ---------- */
.bg{ position:absolute; inset:0; pointer-events:none; }
.bg-radial{
  background:
    radial-gradient(1100px 1100px at 50% 49%, rgba(31,229,216,.10), rgba(31,229,216,.03) 38%, transparent 60%),
    radial-gradient(1600px 900px at 50% 120%, rgba(10,169,184,.08), transparent 60%);
}
.bg-hex{
  opacity:.16;
  background-image:
    repeating-linear-gradient(60deg,  rgba(10,169,184,.18) 0 1px, transparent 1px 26px),
    repeating-linear-gradient(-60deg, rgba(10,169,184,.18) 0 1px, transparent 1px 26px),
    repeating-linear-gradient(0deg,   rgba(10,169,184,.10) 0 1px, transparent 1px 45px);
  mask-image:radial-gradient(900px 760px at 50% 50%, transparent 30%, #000 78%);
}
.bg-grid{
  opacity:.5;
  background-image:
    radial-gradient(circle at center, rgba(31,229,216,.05) 0, transparent 70%);
  background-size:cover;
}
.bg-vignette{
  box-shadow:inset 0 0 320px 80px rgba(0,0,0,.9);
  background:radial-gradient(1400px 900px at 50% 50%, transparent 55%, rgba(0,0,0,.55) 100%);
}
.bg-scan{
  opacity:.35;
  background:repeating-linear-gradient(0deg, rgba(0,0,0,0) 0 2px, rgba(0,0,0,.25) 2px 3px);
  mix-blend-mode:multiply;
  animation:scan 8s linear infinite;
}
@keyframes scan{ from{ background-position:0 0 } to{ background-position:0 120px } }

/* ---------- frame chrome ---------- */
.frame-id{
  position:absolute; z-index:40;
  font-family:var(--mono); font-size:11px; letter-spacing:.28em;
  color:var(--ink-faint); text-transform:uppercase; white-space:nowrap;
}
.frame-id-tl{ top:53px; left:30px; }
.frame-id-tr{ top:54px; right:30px; text-align:right; }
.frame-id-tr{ top:53px; right:152px; }
.frame-id-bl{ bottom:74px; left:30px; }
.frame-id-br{ bottom:62px; right:30px; text-align:right; color:var(--glow);
  font-size:15px; letter-spacing:.18em; font-weight:500;
  text-shadow:0 0 12px rgba(31,229,216,.7);
  background:rgba(8,22,28,.55); border:1px solid rgba(31,229,216,.28); border-radius:3px; padding:4px 11px; }

/* global data-source legend */
.data-status{ position:absolute; z-index:41; bottom:60px; left:30px;
  display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:10.5px; letter-spacing:.16em;
  color:var(--ink-dim); text-transform:uppercase; background:rgba(8,22,28,.6);
  border:1px solid rgba(10,169,184,.3); border-radius:3px; padding:4px 12px; }
.ds-dot{ width:7px; height:7px; border-radius:50%; background:var(--watch); }
.data-status[data-on="1"] .ds-dot{ background:var(--go); box-shadow:0 0 8px var(--go); animation:pulseDot 1.8s ease-in-out infinite; }

/* top-right chrome toolbar (flex; logout sits far right) */
.chrome-tools{ position:absolute; z-index:42; top:54px; right:30px; display:flex; align-items:stretch; gap:9px; }
.ctool{ display:flex; align-items:center; gap:7px; height:33px; font-family:var(--mono); font-size:11px; letter-spacing:.16em;
  color:var(--ink-dim); text-transform:uppercase; background:rgba(8,22,28,.6); border:1px solid rgba(10,169,184,.35);
  border-radius:3px; padding:0 12px; cursor:pointer; transition:all .18s; white-space:nowrap; }
.ctool:hover{ color:var(--glow); border-color:rgba(31,229,216,.6); box-shadow:0 0 12px rgba(31,229,216,.25); }
.tt-ico{ font-size:13px; line-height:1; }
.tracker-btn .tk-ico{ font-size:14px; line-height:1; }

/* tracker popup iframe */
.tracker-frame{ flex:1 1 auto; min-height:0; border:1px solid rgba(10,169,184,.25); border-radius:5px; overflow:hidden; background:#0a0f14; }
.tracker-frame iframe{ display:block; width:100%; height:100%; border:0; }
.ledger-btn{ color:var(--glow); background:rgba(31,229,216,.08); border-color:rgba(31,229,216,.42); }
.ledger-btn:hover{ background:rgba(31,229,216,.18); box-shadow:0 0 14px rgba(31,229,216,.3); }
.lb-ico{ font-size:14px; line-height:1; }

/* eye (privacy) toggle — SVG eye reflects state */
.eye-btn .eye-svg{ color:var(--glow); }
.eye-btn .eye-slash{ opacity:0; }
.eye-btn.hidden{ color:var(--watch); border-color:rgba(245,182,66,.5); }
.eye-btn.hidden .eye-svg{ color:var(--watch); }
.eye-btn.hidden .eye-open{ opacity:.4; }
.eye-btn.hidden .eye-slash{ opacity:1 !important; }

/* lock / logout — far right, danger-tinted */
.lock-btn{ color:var(--ink-faint); }
.lock-btn .lk-ico{ font-size:14px; line-height:1; }
.lock-btn:hover{ color:var(--risk); border-color:rgba(255,92,92,.5); box-shadow:0 0 12px rgba(255,92,92,.2); }

/* privacy masking of sensitive values */
.canvas.private .sensitive{ position:relative; color:transparent !important; text-shadow:none !important; user-select:none; }
.canvas.private .sensitive::after{ content:"••••••"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:var(--ink-dim); letter-spacing:.12em; }
.canvas.private #navDelta.sensitive::after{ content:"•• •••"; }
.canvas.private #cashVal.sensitive::after{ content:"•••"; }

/* ============================================================
   AUTH GATE
   ============================================================ */
.auth-gate{ position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center;
  transition:opacity .55s ease, visibility .55s; }
.auth-gate[data-state="open"]{ opacity:0; visibility:hidden; pointer-events:none; }
.auth-bg{ position:absolute; inset:0; background:#04080c;
  background-image:
    radial-gradient(900px 900px at 50% 46%, rgba(31,229,216,.12), transparent 60%),
    repeating-linear-gradient(0deg, rgba(0,0,0,0) 0 2px, rgba(0,0,0,.3) 2px 3px),
    repeating-linear-gradient(60deg, rgba(10,169,184,.10) 0 1px, transparent 1px 26px),
    repeating-linear-gradient(-60deg, rgba(10,169,184,.10) 0 1px, transparent 1px 26px); }
.auth-card{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; text-align:center;
  padding:48px 56px; border:1px solid rgba(31,229,216,.3); border-radius:8px;
  background:linear-gradient(180deg, rgba(8,20,26,.86), rgba(5,11,16,.92)); backdrop-filter:blur(6px);
  box-shadow:inset 0 0 50px rgba(31,229,216,.08), 0 0 70px rgba(0,0,0,.6); }
.auth-card.shake{ animation:authShake .4s ease; }
@keyframes authShake{ 0%,100%{ transform:translateX(0) } 20%,60%{ transform:translateX(-9px) } 40%,80%{ transform:translateX(9px) } }
.auth-ring{ position:relative; width:120px; height:120px; margin-bottom:22px; }
.auth-ring svg{ width:100%; height:100%; }
.auth-ring-arc{ transform-origin:center; animation:authSpin 3s linear infinite; }
@keyframes authSpin{ to{ transform:rotate(360deg) } }
.auth-lock{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:38px; color:var(--glow); text-shadow:0 0 18px rgba(31,229,216,.6); }
.auth-title{ font-family:var(--display); font-weight:800; font-size:24px; letter-spacing:.2em; color:var(--ink); text-transform:uppercase; }
.auth-sub{ font-family:var(--mono); font-size:11px; letter-spacing:.28em; color:var(--ink-faint); text-transform:uppercase; margin-top:8px; }
.auth-form{ display:flex; gap:10px; margin-top:30px; }
.auth-input{ font-family:var(--mono); font-size:15px; letter-spacing:.18em; text-align:center; color:var(--ink);
  background:rgba(4,11,16,.8); border:1px solid rgba(31,229,216,.4); border-radius:4px; padding:13px 18px; width:270px; outline:none; transition:all .16s; }
.auth-input::placeholder{ color:var(--ink-faint); letter-spacing:.12em; font-size:12px; }
.auth-input:focus{ border-color:var(--glow); box-shadow:0 0 16px rgba(31,229,216,.3); }
.auth-btn{ font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.14em; color:var(--bg);
  background:var(--glow); border:0; border-radius:4px; padding:0 22px; cursor:pointer; transition:all .16s; box-shadow:0 0 16px rgba(31,229,216,.45); }
.auth-btn:hover{ filter:brightness(1.12); }
.auth-err{ font-family:var(--mono); font-size:12px; letter-spacing:.14em; color:var(--risk); text-transform:uppercase; height:18px; margin-top:16px; text-shadow:0 0 10px rgba(255,92,92,.5); }
.auth-foot{ font-family:var(--mono); font-size:10px; letter-spacing:.26em; color:var(--ink-faint); text-transform:uppercase; margin-top:8px; }

/* ============================================================
   WEALTH LEDGER overlay
   ============================================================ */
.ledger-fs{ position:absolute; z-index:60; inset:40px 30px 64px; display:flex; flex-direction:column; gap:18px;
  background:linear-gradient(180deg, rgba(6,16,22,.975), rgba(5,10,15,.99));
  border:1px solid rgba(31,229,216,.45); border-radius:6px; padding:26px 30px 22px;
  box-shadow:inset 0 0 70px rgba(31,229,216,.08), 0 0 60px rgba(0,0,0,.6); backdrop-filter:blur(6px);
  opacity:0; transform:scale(.99); transition:opacity .24s, transform .24s; }
.ledger-fs.open{ opacity:1; transform:scale(1); }

.ledg-head{ display:flex; align-items:center; gap:22px; border-bottom:1px solid rgba(10,169,184,.25); padding-bottom:16px; }
.ledg-title{ font-family:var(--display); font-weight:700; font-size:23px; letter-spacing:.16em; color:var(--glow);
  text-transform:uppercase; text-shadow:0 0 18px rgba(31,229,216,.5); display:flex; align-items:baseline; gap:14px; }
.ledg-tsub{ font-family:var(--mono); font-size:12px; letter-spacing:.14em; color:var(--ink-dim); text-shadow:none; }

.ledg-units{ display:flex; gap:6px; margin-left:auto; }
.unit-chip{ display:flex; align-items:center; gap:6px; font-family:var(--display); font-weight:600; font-size:12px; letter-spacing:.1em;
  color:var(--ink-dim); background:rgba(8,22,28,.6); border:1px solid rgba(10,169,184,.3); border-radius:3px; padding:6px 11px; cursor:pointer; transition:all .16s; text-transform:uppercase; }
.unit-chip b{ font-size:14px; }
.unit-chip:hover{ color:var(--ink); border-color:rgba(31,229,216,.5); }
.unit-chip.active{ color:var(--bg); background:var(--glow); border-color:var(--glow); box-shadow:0 0 12px rgba(31,229,216,.45); }

.ledg-modes{ display:flex; gap:0; border:1px solid rgba(10,169,184,.3); border-radius:3px; overflow:hidden; }
.mode-chip{ font-family:var(--mono); font-size:11px; letter-spacing:.12em; color:var(--ink-dim); background:rgba(8,22,28,.6);
  border:0; padding:7px 13px; cursor:pointer; transition:all .16s; }
.mode-chip:first-child{ border-right:1px solid rgba(10,169,184,.3); }
.mode-chip:hover{ color:var(--ink); }
.mode-chip.active{ color:var(--bg); background:var(--ink-dim); }

.ledg-gran{ display:flex; gap:0; border:1px solid rgba(10,169,184,.3); border-radius:3px; overflow:hidden; }
.gran-chip{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--ink-dim); background:rgba(8,22,28,.6);
  border:0; padding:7px 12px; cursor:pointer; transition:all .16s; }
.gran-chip:first-child{ border-right:1px solid rgba(10,169,184,.3); }
.gran-chip:hover{ color:var(--ink); }
.gran-chip.active{ color:var(--bg); background:var(--glow); }
.ledg-year{ font-family:var(--mono); font-size:11px; letter-spacing:.08em; color:var(--ink); background:rgba(8,22,28,.85);
  border:1px solid rgba(10,169,184,.3); border-radius:3px; padding:7px 10px; cursor:pointer; outline:none; }
.ledg-year:hover{ border-color:rgba(31,229,216,.5); }
.ledg-year option{ background:#06121a; color:var(--ink); }

.ledg-close{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.14em; padding:9px 16px;
  color:var(--ink-dim); background:rgba(10,169,184,.1); border:1px solid rgba(10,169,184,.35); border-radius:3px; cursor:pointer; transition:all .18s; }
.ledg-close:hover{ color:var(--risk); border-color:rgba(255,92,92,.5); background:rgba(255,92,92,.1); }

.ledg-main{ flex:1 1 auto; min-height:0; display:flex; gap:20px; }
.ledg-chart{ flex:1 1 auto; min-width:0; min-height:0; }
.ledg-pulse{ transform-box:fill-box; transform-origin:center; animation:ledgPulse 2s ease-out infinite; }
@keyframes ledgPulse{ 0%{ transform:scale(.6); opacity:.9 } 100%{ transform:scale(2.6); opacity:0 } }

/* portfolio composition donut */
.ledg-comp{ flex:0 0 340px; border-left:1px solid rgba(10,169,184,.2); padding-left:20px; display:flex; flex-direction:column; }
.comp-title{ font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.18em; color:var(--ink); text-transform:uppercase; display:flex; flex-direction:column; gap:3px; margin-bottom:10px; }
.comp-title span{ font-family:var(--mono); font-weight:400; font-size:10.5px; letter-spacing:.16em; color:var(--ink-faint); }
.comp-body{ display:flex; flex-direction:column; align-items:center; gap:16px; flex:1; position:relative; }
.comp-svg{ width:200px; height:200px; flex:none; }
.comp-arc{ filter:drop-shadow(0 0 5px rgba(0,0,0,.4)); cursor:pointer; transition:opacity .18s; }
.comp-arc.dim{ opacity:.22 !important; }
.comp-legend{ width:100%; display:flex; flex-direction:column; gap:7px; }
.comp-row{ display:grid; grid-template-columns:14px 1fr auto auto; align-items:center; gap:10px; padding:5px 2px; border-bottom:1px solid rgba(10,169,184,.1); cursor:pointer; border-radius:2px; transition:background .15s; }
.comp-row:last-child{ border-bottom:0; }
.comp-row.active{ background:rgba(31,229,216,.1); }
.comp-dot{ width:11px; height:11px; border-radius:2px; }
.comp-lab{ font-family:var(--hud); font-weight:600; font-size:13px; letter-spacing:.04em; color:var(--ink); text-transform:uppercase; }
.comp-pct{ font-family:var(--mono); font-weight:700; font-size:14px; color:#eafffe; }
.comp-val{ font-family:var(--mono); font-size:12px; color:var(--ink-dim); min-width:58px; text-align:right; }
.canvas[data-theme="light"] .comp-pct{ color:#0d2a2f; }

/* per-category holdings detail (revealed on slice hover) */
.comp-tip{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(4,11,16,.97), rgba(4,9,13,.99));
  border:1px solid rgba(31,229,216,.4); border-radius:5px; padding:14px 15px; display:flex; flex-direction:column; gap:9px;
  opacity:0; transform:scale(.98); pointer-events:none; transition:opacity .16s, transform .16s; }
.comp-tip.show{ opacity:1; transform:scale(1); }
.cd-head{ display:flex; align-items:center; gap:9px; border-bottom:1px solid; padding-bottom:9px; }
.cd-dot{ width:12px; height:12px; border-radius:3px; flex:none; }
.cd-cat{ font-family:var(--display); font-weight:700; font-size:15px; letter-spacing:.12em; color:var(--ink); text-transform:uppercase; }
.cd-tot{ font-family:var(--mono); font-weight:700; font-size:17px; color:#eafffe; margin-left:auto; }
.cd-sub{ display:flex; align-items:center; justify-content:space-between; font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--ink-faint); text-transform:uppercase; }
.cd-agg{ font-weight:700; font-size:13px; }
.cd-cols{ display:grid; grid-template-columns:1fr auto auto auto; gap:12px; font-family:var(--hud); font-weight:600; font-size:10px; letter-spacing:.14em; color:var(--ink-faint); text-transform:uppercase; padding-top:4px; }
.cd-cols span:nth-child(2){ min-width:74px; text-align:right; }
.cd-cols span:nth-child(3){ min-width:54px; text-align:right; }
.cd-cols span:nth-child(4){ min-width:64px; text-align:right; }
.cd-list{ display:flex; flex-direction:column; gap:0; overflow-y:auto; flex:1; }
.cd-row{ display:grid; grid-template-columns:1fr auto auto auto; gap:12px; align-items:center; padding:7px 0; border-bottom:1px solid rgba(10,169,184,.1); }
.cd-row:last-child{ border-bottom:0; }
.cd-name{ font-family:var(--hud); font-weight:500; font-size:13px; letter-spacing:.02em; color:var(--ink); }
.cd-val{ font-family:var(--mono); font-size:13px; color:#dffefe; min-width:74px; text-align:right; }
.cd-pnl{ font-family:var(--mono); font-weight:700; font-size:13px; min-width:54px; text-align:right; }
.cd-pv{ font-family:var(--mono); font-size:12px; min-width:64px; text-align:right; }
.cd-up,.up.cd-pnl,.up.cd-pv,.up.cd-agg,.cd-pnl.up,.cd-pv.up,.cd-agg.up{ color:var(--go); }
.cd-pnl.dn,.cd-pv.dn,.cd-agg.dn{ color:var(--risk); }
.cd-pnl.flat,.cd-pv.flat,.cd-agg.flat{ color:var(--ink-dim); }
.cd-empty{ font-family:var(--mono); font-size:12px; color:var(--ink-faint); padding:10px 0; }
.canvas[data-theme="light"] .comp-tip{ background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(238,245,247,.99)); }
.canvas[data-theme="light"] .cd-tot,.canvas[data-theme="light"] .cd-val{ color:#0d2a2f; }

.ledg-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; flex:none; }
.ledg-card{ border:1px solid rgba(10,169,184,.24); border-radius:4px; padding:13px 16px; background:rgba(8,22,28,.45); }
.lc-k{ font-family:var(--hud); font-weight:600; font-size:11px; letter-spacing:.2em; color:var(--ink-faint); text-transform:uppercase; }
.lc-v{ font-family:var(--mono); font-weight:700; font-size:25px; color:#eafffe; margin:5px 0 3px; }
.lc-v.up{ color:var(--go); } .lc-v.dn{ color:var(--risk); }
.lc-sub{ font-family:var(--mono); font-size:11px; letter-spacing:.04em; color:var(--ink-dim); }

.ledg-foot{ display:flex; align-items:center; gap:22px; flex:none; border-top:1px solid rgba(10,169,184,.18); padding-top:14px; }
.ledg-db{ display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; letter-spacing:.14em; color:var(--ink-dim); text-transform:uppercase; white-space:nowrap; }
.db-dot{ width:7px; height:7px; border-radius:50%; background:var(--go); box-shadow:0 0 8px var(--go); animation:pulseDot 1.8s ease-in-out infinite; }
.ledg-next{ font-family:var(--mono); font-size:11px; letter-spacing:.14em; color:var(--glow); text-transform:uppercase; white-space:nowrap; }
.ledg-note{ font-family:var(--body); font-size:12px; color:var(--ink-faint); margin-left:auto; text-align:right; max-width:620px; }

.canvas[data-theme="light"] .ledger-fs{ background:linear-gradient(180deg, rgba(255,255,255,.97), rgba(235,244,246,.98)); box-shadow:0 0 40px rgba(40,70,75,.25); }
.canvas[data-theme="light"] .ledg-card,
.canvas[data-theme="light"] .unit-chip,
.canvas[data-theme="light"] .mode-chip,
.canvas[data-theme="light"] .ledg-close{ background:rgba(255,255,255,.74); }
.canvas[data-theme="light"] .lc-v{ color:#0d2a2f; }
.canvas[data-theme="light"] .ledger-btn{ background:rgba(15,179,168,.12); }

/* ============================================================
   PANELS
   ============================================================ */
.panel{
  position:absolute; z-index:20;
  padding:14px 16px 16px;
  display:flex; flex-direction:column;
  background:
    linear-gradient(180deg, rgba(10,30,36,.42), rgba(6,16,22,.30));
  border:1px solid rgba(10,169,184,.30);
  border-radius:4px;
  backdrop-filter:blur(2px);
  box-shadow:
    inset 0 0 26px rgba(10,169,184,.10),
    0 0 0 1px rgba(0,0,0,.4);
}
/* corner brackets ⌐ ¬ */
.panel::before,.panel::after{
  content:""; position:absolute; width:18px; height:18px; pointer-events:none;
  border-color:var(--glow); border-style:solid; border-width:0;
  filter:drop-shadow(0 0 4px rgba(31,229,216,.7));
}
.panel::before{ top:-1px; left:-1px;  border-top-width:2px; border-left-width:2px; }
.panel::after{ bottom:-1px; right:-1px; border-bottom-width:2px; border-right-width:2px; }

/* panel positions (clock layout around the core) */
.panel-macro    { left:506px;  top:50px;  width:908px; height:200px; }
.panel-macro    { left:506px;  top:94px;  width:908px; height:178px; }
.panel-sentiment{ left:26px;   top:96px;  width:452px; height:268px; }
.panel-cosmic   { left:560px;  top:818px; width:800px; height:178px; }
.panel-stocks   { left:1442px; top:96px;  width:452px; height:520px; }
.panel-metals   { left:1388px; top:628px; width:506px; height:362px; }
.panel-signal   { left:26px;   top:376px; width:506px; height:620px; }

/* gold treatment for metals desk only */
.panel-metals{ border-color:rgba(201,162,75,.40); box-shadow:inset 0 0 26px rgba(201,162,75,.12),0 0 0 1px rgba(0,0,0,.4); }
.panel-metals::before,.panel-metals::after{ border-color:var(--gold); filter:drop-shadow(0 0 4px rgba(201,162,75,.7)); }

/* signal board carries weight — brighter */
.panel-signal{ border-color:rgba(31,229,216,.5); box-shadow:inset 0 0 34px rgba(31,229,216,.14),0 0 30px rgba(31,229,216,.10); }

/* ---------- panel header ---------- */
.p-head{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.p-clock{
  font-family:var(--display); font-weight:700; font-size:12px; letter-spacing:.12em;
  color:var(--bg); background:var(--glow); border-radius:3px; padding:2px 7px;
  box-shadow:0 0 12px rgba(31,229,216,.55);
}
.panel-metals .p-clock{ background:var(--gold); box-shadow:0 0 12px rgba(201,162,75,.55); }
.p-title{
  font-family:var(--display); font-weight:600; font-size:14px; letter-spacing:.24em;
  color:var(--ink); text-transform:uppercase;
}
.p-sub{
  font-family:var(--hud); font-weight:500; font-size:12px; letter-spacing:.16em;
  color:var(--ink-dim); text-transform:uppercase; margin-left:auto;
  display:flex; align-items:center; gap:7px;
}
.live-dot{ width:7px; height:7px; border-radius:50%; background:var(--go); box-shadow:0 0 8px var(--go); animation:pulseDot 1.8s ease-in-out infinite; }
.live-dot.static{ background:var(--ink-faint); box-shadow:none; animation:none; }

/* ---- truthful feed status ---- */
.feed{ display:inline-flex; align-items:center; gap:7px; }
.feed .live-dot{ background:var(--ink-faint); box-shadow:none; animation:none; }
.feed[data-state="live"]  .live-dot{ background:var(--go);   box-shadow:0 0 8px var(--go);  animation:pulseDot 1.8s ease-in-out infinite; }
.feed[data-state="sim"]   .live-dot{ background:var(--watch);box-shadow:0 0 6px rgba(245,182,66,.5); }
.feed[data-state="stale"] .live-dot{ background:var(--risk); box-shadow:0 0 8px var(--risk); animation:pulseDot 1s ease-in-out infinite; }
.feed[data-state="manual"].live-dot, .feed[data-state="manual"] .live-dot{ background:var(--ink-faint); box-shadow:none; }
.feed-state{ font-weight:700; letter-spacing:.1em; }
.feed[data-state="live"]  .feed-state{ color:var(--go); }
.feed[data-state="sim"]   .feed-state{ color:var(--watch); }
.feed[data-state="stale"] .feed-state{ color:var(--risk); }
.feed[data-state="manual"] .feed-state{ color:var(--ink-dim); }
.feed-ago{ color:var(--ink-faint); }

/* per-row source pips (mixed-feed desks) */
.fx-row[data-feed], .top-row[data-feed]{ position:relative; padding-left:16px; }
.fx-row[data-feed]::before, .top-row[data-feed]::before{ content:""; position:absolute; left:3px; top:50%; transform:translateY(-50%);
  width:6px; height:6px; border-radius:50%; background:var(--ink-faint); }
[data-feed][data-state="live"]::before{ background:var(--go); box-shadow:0 0 6px var(--go); }
[data-feed][data-state="sim"]::before{ background:var(--watch); }
[data-feed][data-state="stale"]::before{ background:var(--risk); box-shadow:0 0 6px var(--risk); }

/* value flash on real update */
@keyframes flashUp{ 0%{ color:var(--go); text-shadow:0 0 12px rgba(61,240,122,.8); } 100%{ } }
.flash{ animation:flashUp .7s ease-out; }
@keyframes pulseDot{ 0%,100%{ opacity:1; transform:scale(1) } 50%{ opacity:.35; transform:scale(.7) } }

.p-divider{ height:1px; background:linear-gradient(90deg, transparent, rgba(10,169,184,.5), transparent); margin:0 0 12px; flex:none; }

/* scrollable desk body */
.desk-scroll{ flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; margin-right:-6px; padding-right:6px; }
.desk-scroll::-webkit-scrollbar{ width:5px; }
.desk-scroll::-webkit-scrollbar-track{ background:rgba(10,169,184,.06); border-radius:3px; }
.desk-scroll::-webkit-scrollbar-thumb{ background:rgba(31,229,216,.35); border-radius:3px; }
.desk-scroll::-webkit-scrollbar-thumb:hover{ background:rgba(31,229,216,.6); }
.desk-scroll{ scrollbar-width:thin; scrollbar-color:rgba(31,229,216,.35) rgba(10,169,184,.06); }

/* ============================================================
   GENERIC HUD ATOMS
   ============================================================ */
.mono{ font-family:var(--mono); font-variant-numeric:tabular-nums; }
.hud{ font-family:var(--hud); }

/* clickable instruments / indicators → external sources */
.clickable{ cursor:pointer; transition:border-color .16s, box-shadow .16s, background .16s; position:relative; }
.tile.clickable:hover, .sig-cell.clickable:hover{ border-color:rgba(31,229,216,.65); box-shadow:0 0 16px rgba(31,229,216,.2), inset 0 0 14px rgba(31,229,216,.08); }
.fx-row.clickable:hover, .top-row.clickable:hover, .chip.clickable:hover{ background:rgba(31,229,216,.08); border-color:rgba(31,229,216,.4); }
.tile.inzone.clickable:hover{ border-color:rgba(61,240,122,.85); box-shadow:0 0 16px rgba(61,240,122,.28); }
.clickable::after{ content:"↗"; position:absolute; top:5px; right:7px; font-family:var(--mono); font-size:11px;
  color:var(--glow); opacity:0; transition:opacity .16s; pointer-events:none; }
.tile.clickable:hover::after, .sig-cell.clickable:hover::after, .fx-row.clickable:hover::after,
.top-row.clickable:hover::after, .chip.clickable:hover::after{ opacity:.8; }
.fx-row.clickable::after, .top-row.clickable::after{ top:50%; transform:translateY(-50%); right:4px; }

/* tile (used by stocks / macro / metals) */
.tile{
  position:relative; border:1px solid rgba(10,169,184,.26);
  background:linear-gradient(180deg, rgba(8,22,28,.55), rgba(6,14,18,.35));
  border-radius:3px; padding:9px 10px; overflow:hidden;
}
.tile .t-name{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.1em; color:var(--ink); }
.tile .t-val{ font-family:var(--mono); font-weight:600; font-size:16px; color:#dffefe; letter-spacing:-.01em; }
.tile .t-sub{ font-family:var(--mono); font-size:11.5px; color:var(--ink-dim); letter-spacing:.02em; }
.tile.inzone{ border-color:rgba(61,240,122,.75); box-shadow:0 0 18px rgba(61,240,122,.22), inset 0 0 14px rgba(61,240,122,.10); }
.tile.inzone .t-name{ color:#caffd9; }
.tile.tripped{ border-color:rgba(255,92,92,.8); box-shadow:0 0 20px rgba(255,92,92,.28), inset 0 0 16px rgba(255,92,92,.12); animation:trippedPulse 2.4s ease-in-out infinite; }
.tile.tripped .t-sub{ color:var(--risk); font-weight:600; }
@keyframes trippedPulse{ 0%,100%{ box-shadow:0 0 20px rgba(255,92,92,.28), inset 0 0 16px rgba(255,92,92,.12); } 50%{ box-shadow:0 0 30px rgba(255,92,92,.45), inset 0 0 20px rgba(255,92,92,.18); } }

/* fill bar — distance to buy-zone */
.fill{ position:relative; height:6px; border-radius:3px; background:rgba(10,169,184,.16); overflow:hidden; margin-top:8px; }
.fill > i{ position:absolute; left:0; top:0; bottom:0; border-radius:3px;
  background:linear-gradient(90deg, rgba(31,229,216,.4), var(--glow));
  box-shadow:0 0 10px rgba(31,229,216,.6); transition:width .8s ease; }
.fill.go > i{ background:linear-gradient(90deg, rgba(61,240,122,.4), var(--go)); box-shadow:0 0 10px rgba(61,240,122,.6); }
.fill .zone-mark{ position:absolute; top:-2px; bottom:-2px; width:2px; background:rgba(255,255,255,.55); }

/* readouts: label / value rows */
.kv{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.kv .k{ font-family:var(--hud); font-weight:500; font-size:12.5px; letter-spacing:.06em; color:var(--ink-dim); text-transform:uppercase; }
.kv .v{ font-family:var(--mono); font-weight:600; font-size:14px; color:#e6ffff; }

.delta-up{ color:var(--go) !important; }
.delta-dn{ color:var(--risk) !important; }
.tag{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; padding:1px 6px; border-radius:2px; text-transform:uppercase; }
.tag.go{ color:var(--go); border:1px solid rgba(61,240,122,.5); background:rgba(61,240,122,.08); }
.tag.watch{ color:var(--watch); border:1px solid rgba(245,182,66,.5); background:rgba(245,182,66,.08); }
.tag.risk{ color:var(--risk); border:1px solid rgba(255,92,92,.5); background:rgba(255,92,92,.08); }

/* svg gauges inherit glow */
svg .glowstroke{ filter:drop-shadow(0 0 5px rgba(31,229,216,.55)); }
.sweep{ transform-box:fill-box; transform-origin:center; animation:sweepRot 4.2s linear infinite; }
@keyframes sweepRot{ from{ transform:rotate(0) } to{ transform:rotate(360deg) } }

/* ============================================================
   CALENDAR STRIP  +  WAVEFORM
   ============================================================ */
/* exchanges ribbon (sliding FX / index ticker, below calendar — ends before the toolbar) */
.fx-ticker{ position:absolute; z-index:25; top:54px; left:30px; right:534px; height:36px;
  display:flex; align-items:stretch; overflow:hidden;
  border:1px solid rgba(10,169,184,.28); border-radius:3px;
  background:linear-gradient(180deg, rgba(8,22,28,.55), rgba(6,12,16,.35)); }
.fxt-lead{ display:flex; align-items:center; gap:8px; padding:0 14px; flex:none;
  font-family:var(--display); font-weight:700; font-size:11px; letter-spacing:.18em; color:var(--glow); text-transform:uppercase;
  border-right:1px solid rgba(10,169,184,.3); background:rgba(31,229,216,.06); }
.fxt-lead .fxt-num{ font-family:var(--display); font-weight:700; font-size:11px; color:var(--bg); background:var(--glow); border-radius:2px; padding:1px 5px; }
.fxt-track-wrap{ flex:1; overflow:hidden; position:relative;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent); mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent); }
.fxt-track{ display:inline-flex; align-items:center; white-space:nowrap; will-change:transform; animation:fxtScroll 60s linear infinite; }
.fx-ticker:hover .fxt-track{ animation-play-state:paused; }
@keyframes fxtScroll{ from{ transform:translateX(0) } to{ transform:translateX(-50%) } }
.fxt-cell{ display:inline-flex; align-items:center; gap:8px; padding:0 22px; text-decoration:none; white-space:nowrap; }
.fxt-name{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.06em; color:var(--ink); }
.fxt-val{ font-family:var(--mono); font-weight:600; font-size:14px; color:#e6ffff; }
.fxt-chg{ font-family:var(--mono); font-size:11px; }
.fxt-chg.up{ color:var(--go); } .fxt-chg.dn{ color:var(--risk); }
.fxt-dot{ color:var(--line-dim); padding:0 2px; }
.canvas[data-theme="light"] .fxt-val{ color:#0d2a2f; }

.calendar-strip{
  position:absolute; z-index:25; top:14px; left:30px; right:30px; height:34px;
  display:flex; align-items:center; gap:0;
  border:1px solid rgba(10,169,184,.28); border-radius:3px;
  background:linear-gradient(180deg, rgba(8,22,28,.5), rgba(6,12,16,.3));
  padding:0 8px; overflow:hidden;
}
.cal-day{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%;
  border-right:1px solid rgba(10,169,184,.12); position:relative; }
.cal-month{ flex:none; display:flex; align-items:center; gap:7px; padding:0 14px 0 4px; height:100%; border-right:1px solid rgba(10,169,184,.3); }
.cm-mon{ font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.14em; color:var(--glow); text-shadow:0 0 10px rgba(31,229,216,.5); }
.cm-yr{ font-family:var(--mono); font-weight:500; font-size:12px; color:var(--ink-dim); letter-spacing:.08em; }
.cal-day:last-child{ border-right:0; }
.cal-dow{ font-family:var(--mono); font-size:10px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; }
.cal-num{ font-family:var(--display); font-weight:600; font-size:13px; color:var(--ink-dim); line-height:1; }
.cal-day.today .cal-num{ color:var(--bg); }
.cal-day.today{ background:rgba(31,229,216,.16); }
.cal-day.today .cal-num{ background:var(--glow); padding:1px 6px; border-radius:2px; box-shadow:0 0 12px rgba(31,229,216,.6); }
.cal-day.flag{ overflow:hidden; }
.cal-day.flag .cal-num{ font-weight:700; }
.cal-day.flag::before{ content:""; position:absolute; inset:0; z-index:-1; }
.cal-day.flag::after{ content:""; position:absolute; top:0; left:0; right:0; height:3px; }
/* amber = macro event · gold = metals date · red = de-risk date */
.cal-day.flag.amber{ background:rgba(245,182,66,.14); }
.cal-day.flag.amber::after{ background:var(--watch); box-shadow:0 0 8px var(--watch); }
.cal-day.flag.amber .cal-num{ color:var(--watch); }
.cal-day.flag.risk{ background:rgba(255,92,92,.15); }
.cal-day.flag.risk::after{ background:var(--risk); box-shadow:0 0 8px var(--risk); }
.cal-day.flag.risk .cal-num{ color:var(--risk); }
.cal-day.flag.gold{ background:rgba(201,162,75,.16); }
.cal-day.flag.gold::after{ background:var(--gold); box-shadow:0 0 8px var(--gold); }
.cal-day.flag.gold .cal-num{ color:#e3c876; }

.waveform-bar{
  position:absolute; z-index:25; bottom:14px; left:30px; right:30px; height:30px;
  display:flex; align-items:center; gap:14px;
  border:1px solid rgba(10,169,184,.28); border-radius:3px;
  background:linear-gradient(180deg, rgba(8,22,28,.5), rgba(6,12,16,.3));
  padding:0 16px;
}
.wave-label{ font-family:var(--display); font-weight:600; font-size:11px; letter-spacing:.2em; color:var(--ink-dim); text-transform:uppercase; white-space:nowrap; }
.wave-svg{ flex:1; height:20px; display:flex; align-items:center; }
.wave-clock{ font-family:var(--mono); font-size:12px; color:var(--glow); letter-spacing:.08em; white-space:nowrap; text-shadow:0 0 8px rgba(31,229,216,.5); }

/* upper live-news ribbon */
.news-bar{ position:absolute; z-index:25; bottom:48px; left:30px; right:30px; height:30px;
  display:flex; align-items:center; gap:12px; padding:0 16px;
  border:1px solid rgba(10,169,184,.28); border-radius:3px;
  background:linear-gradient(180deg, rgba(8,22,28,.5), rgba(6,12,16,.3)); }
.news-refresh{ font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; color:var(--ink-dim); text-transform:uppercase;
  background:rgba(31,229,216,.08); border:1px solid rgba(31,229,216,.35); border-radius:3px; padding:4px 10px; cursor:pointer; white-space:nowrap; transition:all .16s; }
.news-refresh:hover{ color:var(--glow); border-color:rgba(31,229,216,.7); box-shadow:0 0 10px rgba(31,229,216,.3); }
.news-refresh.spinning{ animation:refreshSpin .6s linear 2; }
@keyframes refreshSpin{ from{ transform:rotate(0) } to{ transform:rotate(360deg) } }
.news-status{ display:flex; align-items:center; gap:7px; font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; color:var(--ink-dim); text-transform:uppercase; white-space:nowrap; cursor:help; padding:3px 9px; border:1px solid rgba(10,169,184,.3); border-radius:3px; }
.news-status[data-on="1"] .ds-dot{ background:var(--go); box-shadow:0 0 8px var(--go); animation:pulseDot 1.8s ease-in-out infinite; }

/* live-status hover detail panel */
.ds-tip{ position:absolute; z-index:90; right:30px; bottom:84px; width:420px; display:none;
  background:linear-gradient(180deg, rgba(4,11,16,.98), rgba(4,9,13,.99)); border:1px solid rgba(31,229,216,.45); border-radius:5px;
  padding:12px 14px; box-shadow:0 0 40px rgba(0,0,0,.6); }
.ds-tip-h{ font-family:var(--display); font-weight:700; font-size:11px; letter-spacing:.16em; color:var(--glow); text-transform:uppercase; margin-bottom:8px; }
.ds-tip-f{ font-family:var(--mono); font-size:9.5px; color:var(--ink-faint); margin-top:8px; border-top:1px solid rgba(10,169,184,.2); padding-top:6px; }
.ds-row{ display:grid; grid-template-columns:14px 78px 1fr auto auto; align-items:center; gap:8px; padding:3px 0; }
.ds-row .dsd{ width:8px; height:8px; border-radius:50%; }
.dsd.live{ background:var(--go); box-shadow:0 0 6px var(--go); } .dsd.sim{ background:var(--watch); } .dsd.stale{ background:var(--risk); } .dsd.manual{ background:var(--ink-faint); }
.ds-k{ font-family:var(--mono); font-size:11px; color:var(--ink); text-transform:uppercase; }
.ds-src{ font-family:var(--body); font-size:10.5px; color:var(--ink-dim); }
.ds-st{ font-family:var(--mono); font-weight:700; font-size:9.5px; }
.ds-st.live{ color:var(--go); } .ds-st.sim{ color:var(--watch); } .ds-st.stale{ color:var(--risk); } .ds-st.manual{ color:var(--ink-dim); }
.ds-ago{ font-family:var(--mono); font-size:9.5px; color:var(--ink-faint); min-width:26px; text-align:right; }
.wave-read{ font-family:var(--mono); font-size:12px; color:var(--glow); letter-spacing:.05em; white-space:nowrap; text-shadow:0 0 8px rgba(31,229,216,.5); }
.news-sep{ width:1px; align-self:stretch; margin:6px 4px; background:linear-gradient(180deg,transparent,rgba(10,169,184,.5),transparent); }
.news-tag{ font-family:var(--display); font-weight:700; font-size:10.5px; letter-spacing:.16em; color:var(--ink-faint); text-transform:uppercase; white-space:nowrap; }
.news-tag.on{ color:var(--risk); text-shadow:0 0 8px rgba(255,92,92,.5); }
.news-ticker{ flex:1; overflow:hidden; position:relative; -webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent); mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent); }
.news-track{ display:inline-flex; align-items:center; gap:0; white-space:nowrap; will-change:transform; animation:newsScroll 80s linear infinite; }
.news-ticker:hover .news-track{ animation-play-state:paused; }
@keyframes newsScroll{ from{ transform:translateX(0) } to{ transform:translateX(-50%) } }
.news-item{ font-family:var(--body); font-size:12.5px; color:var(--ink); text-decoration:none; padding:0 4px; }
.news-item:hover{ color:var(--glow); }
.news-item b{ font-family:var(--mono); font-weight:600; font-size:11px; color:var(--ink-dim); letter-spacing:.04em; text-transform:uppercase; margin-right:5px; }
.news-item.up b{ color:var(--go); } .news-item.dn b{ color:var(--risk); }
.news-item.news-dim{ color:var(--ink-faint); font-style:italic; }
.news-pop{ position:absolute; z-index:95; width:350px; display:none; background:linear-gradient(180deg,rgba(4,11,16,.98),rgba(4,9,13,.99));
  border:1px solid rgba(31,229,216,.45); border-radius:5px; padding:11px 13px; box-shadow:0 0 30px rgba(0,0,0,.6); pointer-events:none; }
.np-src{ font-family:var(--mono); font-size:10px; letter-spacing:.1em; color:var(--glow); text-transform:uppercase; margin-bottom:5px; }
.np-title{ font-family:var(--body); font-weight:600; font-size:13.5px; line-height:1.35; color:var(--ink); }
.np-desc{ font-family:var(--body); font-size:12px; line-height:1.4; color:var(--ink-dim); margin-top:6px; }
.np-foot{ font-family:var(--mono); font-size:9px; letter-spacing:.1em; color:var(--ink-faint); text-transform:uppercase; margin-top:8px; }
.tab-exp.spinning{ animation:refreshSpin .5s linear 2; }
.news-dot{ color:var(--line-dim); padding:0 14px; }
.canvas[data-theme="light"] .news-item{ color:var(--ink); }

/* newswire board (replaces old signal board) — two columns */
.news-board{ flex:1 1 auto; min-height:0; overflow:hidden auto; display:grid; grid-template-columns:1fr 1fr; grid-auto-rows:minmax(0, auto); align-content:start; gap:7px 12px; padding-right:4px; }
.nb-empty{ grid-column:1/-1; font-family:var(--mono); font-size:12px; color:var(--ink-faint); font-style:italic; padding:14px 2px; }
.nb-item{ display:flex; flex-direction:column; gap:3px; padding:6px 9px; border:1px solid rgba(10,169,184,.16); border-radius:3px;
  background:rgba(8,22,28,.4); text-decoration:none; transition:all .15s; min-height:0; overflow:hidden; }
.nb-item:hover{ border-color:rgba(31,229,216,.5); background:rgba(31,229,216,.06); }
.nb-meta{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.nb-src{ font-family:var(--mono); font-weight:600; font-size:10px; letter-spacing:.08em; color:var(--ink-dim); text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.nb-src.up{ color:var(--go); } .nb-src.dn{ color:var(--risk); }
.nb-ago{ font-family:var(--mono); font-size:9.5px; color:var(--ink-faint); flex:none; }
.nb-title{ font-family:var(--body); font-size:12px; line-height:1.3; color:var(--ink); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.nb-summary-line{ display:block; font-family:var(--body); font-size:11px; line-height:1.35; color:var(--ink-dim); margin-top:2px; }
.nb-summary{ grid-column:1/-1; display:flex; flex-wrap:wrap; gap:6px; margin-bottom:2px; }
.news-board.news-insider,
.news-board.news-whale,
.news-board.news-analyst,
.news-board.news-board{ grid-template-columns:1fr; gap:8px; }
.news-board.news-insider .nb-title,
.news-board.news-whale .nb-title,
.news-board.news-analyst .nb-title{ -webkit-line-clamp:3; }
.news-board.news-insider .nb-item,
.news-board.news-whale .sig-cell,
.news-board.news-analyst .sig-cell,
.news-board.news-board .sig-cell{ min-height:0; }
.news-board::-webkit-scrollbar{ width:8px; }
.news-board::-webkit-scrollbar-thumb{ background:rgba(31,229,216,.22); border-radius:8px; }
.news-board::-webkit-scrollbar-track{ background:transparent; }
.board-summary .insider-chip{ min-height:30px; }
.board-grid{ display:grid; grid-template-columns:1.15fr 1fr; gap:8px; }
.board-lead{ display:flex; flex-direction:column; gap:10px; min-height:0; }
.board-lane{ display:flex; flex-direction:column; gap:8px; min-height:0; }
.board-lane-body{ display:flex; flex-direction:column; gap:2px; }
.board-kicker{ font-family:var(--body); font-size:12px; line-height:1.45; color:var(--ink); }
.board-theses{ display:flex; flex-direction:column; gap:7px; }
.board-thesis{ display:grid; grid-template-columns:34px minmax(0,1fr); gap:8px; padding:8px 9px; border:1px solid rgba(10,169,184,.14); border-radius:3px; background:rgba(6,14,18,.42); }
.board-thesis.go{ border-color:rgba(61,240,122,.28); }
.board-thesis.risk{ border-color:rgba(255,92,92,.24); }
.board-thesis-rank{ font-family:var(--display); font-size:18px; color:var(--glow); }
.board-thesis-copy{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.board-thesis-title{ font-family:var(--body); font-size:12.5px; line-height:1.4; color:var(--ink); }
.board-thesis-meta{ font-family:var(--mono); font-size:10px; color:var(--ink-faint); letter-spacing:.08em; text-transform:uppercase; }
.board-chip.fresh{ border-color:rgba(61,240,122,.32); color:#cffff0; }
.board-chip.stale{ border-color:rgba(255,92,92,.32); color:#ffd7d7; }
.board-chip.down{ border-color:rgba(245,182,66,.32); color:#f7dfab; }
.whale-promoted{ border-color:rgba(201,162,75,.28); box-shadow:inset 0 0 18px rgba(201,162,75,.08); }

@media (max-width: 1600px){
  .board-grid{ grid-template-columns:1fr; }
}

/* ============================================================
   REACTOR CORE
   ============================================================ */
.reactor{
  position:absolute; z-index:30;
  left:705px; top:278px; width:510px; height:510px;
}
.reactor svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.reactor .r-center{
  position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center;
  pointer-events:none;
}
.regime{
  font-family:var(--display); font-weight:900; letter-spacing:.1em;
  font-size:34px; line-height:1; color:var(--watch); white-space:nowrap; margin:1px 0;
  text-shadow:0 0 18px rgba(245,182,66,.6), 0 0 46px rgba(245,182,66,.3);
  animation:regimePulse 3s ease-in-out infinite;
}
@keyframes regimePulse{ 0%,100%{ opacity:1; filter:brightness(1) } 50%{ opacity:.86; filter:brightness(1.25) } }
.regime-cap{ font-family:var(--hud); font-weight:600; font-size:9.5px; letter-spacing:.3em; color:var(--ink-dim); text-transform:uppercase; margin-bottom:4px; white-space:nowrap; }
.core-rule{ width:54px; height:1px; margin:9px 0 0; background:linear-gradient(90deg,transparent,rgba(31,229,216,.7),transparent); }
.synth-cap{ font-family:var(--mono); font-size:10px; letter-spacing:.28em; color:var(--glow); text-transform:uppercase; margin-bottom:4px; }
.nav-val{ font-family:var(--mono); font-weight:700; font-size:20px; color:#eafffe; margin-top:9px; letter-spacing:-.01em; text-shadow:0 0 14px rgba(31,229,216,.35); }
.nav-cap{ font-family:var(--hud); font-weight:600; font-size:8.5px; letter-spacing:.24em; color:var(--ink-faint); text-transform:uppercase; margin-top:2px; white-space:nowrap; }
.nav-delta{ font-family:var(--mono); font-weight:600; font-size:12px; margin-top:3px; }
.cash-line{ display:flex; align-items:center; gap:7px; margin-top:8px; white-space:nowrap; font-size:11px; }
.cash-line .cap::after{ content:"·"; margin-left:7px; color:var(--ink-faint); }

/* signal accuracy readout (center) */
.acc-line{ display:inline-flex; align-items:center; gap:7px; margin-top:8px; white-space:nowrap; cursor:pointer;
  padding:2px 4px; border-radius:3px; transition:color .16s; }
.acc-line:hover{ color:var(--glow); }
.acc-line:hover .cap{ color:var(--ink-dim); }
.acc-line .cap{ font-family:var(--hud); font-weight:600; font-size:9.5px; letter-spacing:.18em; color:var(--ink-faint); text-transform:uppercase; }
.acc-line .cap::after{ content:"·"; margin-left:7px; color:var(--ink-faint); }
.acc-line .val{ font-family:var(--mono); font-weight:700; font-size:14px; }
.acc-trend{ font-family:var(--mono); font-size:12px; color:var(--ink-dim); }
.synth-summary{ font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; color:var(--ink-dim); text-transform:uppercase; margin-top:10px; }
.synth-score{ font-family:var(--display); font-size:26px; line-height:1; margin-top:8px; text-shadow:0 0 18px rgba(31,229,216,.28); }
.synth-score-cap{ font-family:var(--mono); font-size:9.5px; letter-spacing:.22em; color:var(--ink-faint); text-transform:uppercase; margin-top:4px; }
.synth-theses{ display:flex; flex-direction:column; gap:6px; width:300px; margin-top:12px; }
.synth-thesis{ display:grid; grid-template-columns:32px minmax(0,1fr); gap:8px; align-items:flex-start; padding:7px 8px; border:1px solid rgba(10,169,184,.14); border-radius:3px; background:rgba(6,14,18,.42); }
.synth-thesis.go{ border-color:rgba(61,240,122,.26); }
.synth-thesis.risk{ border-color:rgba(255,92,92,.22); }
.synth-thesis-rank{ font-family:var(--display); font-size:16px; color:var(--glow); line-height:1; }
.synth-thesis-copy{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.synth-thesis-title{ font-family:var(--body); font-size:11.5px; line-height:1.35; color:var(--ink); }
.synth-thesis-meta{ font-family:var(--mono); font-size:9px; color:var(--ink-faint); letter-spacing:.08em; text-transform:uppercase; }
.synth-empty{ font-family:var(--mono); font-size:10.5px; color:var(--ink-faint); }
.conviction-row{ display:flex; align-items:center; gap:8px; margin-top:12px; }
.conv-ring{ width:56px; height:56px; border-radius:50%; border:1px solid rgba(10,169,184,.2); background:rgba(6,14,18,.45); display:flex; flex-direction:column; align-items:center; justify-content:center; }
.conv-ring.on{ border-color:rgba(31,229,216,.45); box-shadow:0 0 14px rgba(31,229,216,.16); }
.conv-k{ font-family:var(--mono); font-size:10px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; }
.conv-v{ font-family:var(--display); font-size:16px; color:#eafffe; line-height:1.1; }
.synth-footline{ font-family:var(--mono); font-size:9.5px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; margin-top:10px; }

/* signal track-record overlay */
.sig-rec-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; flex:none; }
.sig-rec-spark{ flex:none; border:1px solid rgba(10,169,184,.2); border-radius:4px; padding:12px 14px; background:rgba(8,22,28,.4); }
.srs-cap{ display:flex; align-items:center; justify-content:space-between; font-family:var(--hud); font-weight:600; font-size:11px; letter-spacing:.18em; color:var(--ink-dim); text-transform:uppercase; margin-bottom:6px; }
.srs-cap span{ font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; color:var(--ink-faint); }
.sig-spark{ display:block; }
.sig-rec-list{ flex:1 1 auto; min-height:0; overflow-y:auto; border:1px solid rgba(10,169,184,.18); border-radius:4px; }
.sr-row{ display:grid; grid-template-columns:96px 80px 64px 1fr 1fr 92px 90px; align-items:center; gap:10px; padding:8px 14px; border-bottom:1px solid rgba(10,169,184,.1); }
.sr-row:last-child{ border-bottom:0; }
.sr-hd{ position:sticky; top:0; background:rgba(6,16,22,.96); font-family:var(--hud); font-weight:600; font-size:10.5px; letter-spacing:.16em; color:var(--ink-faint); text-transform:uppercase; }
.sr-date{ font-family:var(--mono); font-size:12px; color:var(--ink-dim); }
.sr-tk{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.06em; color:var(--ink); }
.sr-dir{ font-family:var(--mono); font-weight:700; font-size:11px; letter-spacing:.06em; padding:2px 7px; border-radius:2px; text-align:center; }
.sr-dir.buy{ color:var(--go); border:1px solid rgba(61,240,122,.5); }
.sr-dir.sell{ color:var(--risk); border:1px solid rgba(255,92,92,.5); }
.sr-dir.hold{ color:var(--watch); border:1px solid rgba(245,182,66,.5); }
.sr-px{ font-family:var(--mono); font-size:12.5px; color:#dffefe; text-align:right; }
.sr-mv{ font-family:var(--mono); font-weight:600; font-size:13px; text-align:right; }
.sr-mv.up{ color:var(--go); } .sr-mv.dn{ color:var(--risk); }
.sr-res{ font-family:var(--mono); font-weight:700; font-size:11px; letter-spacing:.1em; text-align:center; padding:2px 6px; border-radius:2px; text-transform:uppercase; }
.sr-res.win{ color:var(--go); background:rgba(61,240,122,.1); }
.sr-res.loss{ color:var(--risk); background:rgba(255,92,92,.1); }
.sr-res.open{ color:var(--glow); background:rgba(31,229,216,.1); }

/* analyst toplist + compact call panels */
.an-topbar{ display:flex; flex-direction:column; gap:8px; margin-top:14px; }
.an-toplist{ display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:8px; }
.an-card{ border:1px solid rgba(10,169,184,.18); border-radius:4px; padding:8px 10px; background:rgba(8,22,28,.35); }
.an-handle{ font-family:var(--display); font-size:12px; font-weight:700; color:var(--ink); letter-spacing:.04em; margin-bottom:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.an-meta{ display:flex; flex-wrap:wrap; gap:6px 8px; font-family:var(--mono); font-size:10.5px; color:var(--ink-faint); }
.an-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:12px; }
.an-panel{ min-width:0; border:1px solid rgba(10,169,184,.18); border-radius:4px; padding:10px 12px; background:rgba(8,22,28,.3); }
.an-list{ display:flex; flex-direction:column; gap:5px; }
.an-row{ display:grid; grid-template-columns:90px 82px 62px 1fr 76px 72px; align-items:start; gap:8px; padding:5px 0; border-bottom:1px solid rgba(10,169,184,.08); }
.an-row:last-child{ border-bottom:0; }
.an-when,.an-asset,.an-res{ font-family:var(--mono); font-size:10.5px; color:var(--ink-dim); }
.an-asset{ color:var(--ink); font-weight:600; }
.an-dir{ font-family:var(--mono); font-weight:700; font-size:10.5px; letter-spacing:.06em; text-align:center; padding:2px 6px; border-radius:2px; }
.an-dir.buy{ color:var(--go); border:1px solid rgba(61,240,122,.45); }
.an-dir.sell{ color:var(--risk); border:1px solid rgba(255,92,92,.45); }
.an-dir.hold{ color:var(--watch); border:1px solid rgba(245,182,66,.45); }
.an-q{ font-family:var(--body); font-size:11px; color:var(--ink-faint); line-height:1.25; overflow:hidden; }
.an-tag{ font-family:var(--mono); font-size:10px; color:var(--glow); text-transform:uppercase; letter-spacing:.12em; text-align:right; }
.canvas[data-theme="light"] .an-card,.canvas[data-theme="light"] .an-panel{ background:rgba(255,255,255,.65); border-color:rgba(13,42,47,.12); }
.canvas[data-theme="light"] .an-handle,.canvas[data-theme="light"] .an-asset{ color:#0d2a2f; }
.canvas[data-theme="light"] .an-q,.canvas[data-theme="light"] .an-when,.canvas[data-theme="light"] .an-res{ color:#35545a; }

.canvas[data-theme="light"] .sr-px{ color:#0d2a2f; }
.canvas[data-theme="light"] .sr-hd{ background:rgba(240,246,247,.97); }
.cash-line .cap{ font-family:var(--hud); font-weight:600; font-size:10.5px; letter-spacing:.26em; color:var(--ink-faint); text-transform:uppercase; }
.cash-line .val{ font-family:var(--mono); font-weight:700; font-size:14px; color:var(--glow); text-shadow:0 0 10px rgba(31,229,216,.4); }

@media (max-width: 1500px){
  .an-toplist{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .an-grid{ grid-template-columns:1fr; }
  .an-row{ grid-template-columns:84px 76px 60px 1fr 66px 66px; }
}

/* astrology context caption ring — rendered via SVG textPath, styled here */
.ctx-text{ font-family:var(--hud); font-weight:500; font-size:13px; letter-spacing:.16em; fill:var(--ink-dim); text-transform:uppercase; }
.brand-arc{ font-family:var(--display); font-weight:700; font-size:13px; letter-spacing:.2em; fill:var(--glow); text-transform:uppercase; filter:drop-shadow(0 0 6px rgba(31,229,216,.5)); }
/* cosmic compact horizontal layout (wide-short bottom slot) */
.cosmic-row{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; align-items:stretch; height:100%; min-height:0; }
.cz-tile{ border:1px solid rgba(10,169,184,.22); border-radius:4px; background:rgba(8,22,28,.4); padding:9px 11px; display:flex; flex-direction:column; gap:7px; min-height:0; overflow:hidden; }
.cz-cap{ font-family:var(--hud); font-weight:600; font-size:9.5px; letter-spacing:.2em; color:var(--ink-faint); text-transform:uppercase; }
.cz-moon{ display:flex; align-items:center; gap:10px; }
.cz-moon-ico{ width:40px; height:40px; flex:none; }
.cz-val{ font-family:var(--display); font-weight:600; font-size:12px; letter-spacing:.04em; color:var(--ink); }
.cz-sub{ font-family:var(--mono); font-size:10px; color:var(--ink-dim); margin-top:2px; }
.cz-note{ font-family:var(--mono); font-size:9px; color:var(--ink-faint); margin-top:auto; }
.cz-dates{ display:flex; flex-direction:column; gap:4px; }
.cz-date{ display:grid; grid-template-columns:9px 48px 1fr; align-items:center; gap:8px; }
.cz-dot{ width:7px; height:7px; border-radius:50%; background:var(--glow); box-shadow:0 0 6px rgba(31,229,216,.5); }
.cz-dot.amber{ background:var(--watch); box-shadow:0 0 6px var(--watch); }
.cz-dot.gold{ background:var(--gold); box-shadow:0 0 6px var(--gold); }
.cz-d{ font-family:var(--mono); font-weight:600; font-size:11px; color:#dffefe; }
.cz-l{ font-family:var(--hud); font-weight:500; font-size:11px; color:var(--ink-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cz-banner{ display:flex; flex-direction:column; gap:1px; font-family:var(--display); font-weight:700; font-size:12px; letter-spacing:.06em; color:var(--watch); text-transform:uppercase;
  border:1px solid rgba(245,182,66,.45); background:rgba(245,182,66,.07); border-radius:3px; padding:6px 9px; }
.cz-banner span{ font-family:var(--mono); font-weight:500; font-size:9px; letter-spacing:.1em; color:var(--ink-dim); }
.cz-insider{ display:flex; align-items:center; gap:7px; margin-top:auto; font-family:var(--mono); font-size:10px; letter-spacing:.03em; color:var(--ink-dim); text-transform:uppercase; }

/* spokes */
.spokes{ position:absolute; inset:0; z-index:10; pointer-events:none; }
.spoke{ fill:none; stroke-linecap:round; }
.flow{ animation:flow 1.6s linear infinite; }
@keyframes flow{ to{ stroke-dashoffset:-40; } }
.flow-in{ animation:flowIn 1.6s linear infinite; }
@keyframes flowIn{ to{ stroke-dashoffset:40; } }

/* flaring spoke when a threshold trips */
.spoke.flare{ animation:flareGlow 1.1s ease-in-out infinite; }
@keyframes flareGlow{ 0%,100%{ opacity:.55 } 50%{ opacity:1 } }

.node{ filter:drop-shadow(0 0 5px rgba(31,229,216,.7)); }

/* timeline (cosmic) */
.timeline{ position:relative; height:2px; background:linear-gradient(90deg,transparent,rgba(10,169,184,.5),transparent); margin-top:30px; }
.tl-pt{ position:absolute; top:50%; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; }
.tl-dot{ width:9px; height:9px; border-radius:50%; border:1.5px solid var(--glow); background:var(--bg); box-shadow:0 0 8px rgba(31,229,216,.5); }
.tl-pt.amber .tl-dot{ border-color:var(--watch); box-shadow:0 0 8px var(--watch); }
.tl-pt.gold .tl-dot{ border-color:var(--gold); box-shadow:0 0 8px var(--gold); }
.tl-date{ position:absolute; top:12px; font-family:var(--mono); font-size:10.5px; color:var(--ink-dim); white-space:nowrap; letter-spacing:.04em; }
.tl-lab{ position:absolute; bottom:12px; font-family:var(--hud); font-weight:500; font-size:11px; color:var(--ink-dim); white-space:nowrap; text-transform:uppercase; letter-spacing:.06em; }

/* signal rows */
.sig-cell{ border:1px solid rgba(10,169,184,.22); background:linear-gradient(180deg,rgba(8,22,28,.5),rgba(6,14,18,.3)); border-radius:3px; padding:7px 9px; }
.sig-cell .sig-name{ display:block; }
.sig-cell .sig-call{ margin-top:3px; display:block; }
.insider-chip{ display:flex; align-items:center; gap:9px; padding:3px 10px; border:1px solid rgba(61,240,122,.3); border-radius:3px; background:rgba(61,240,122,.05); font-family:var(--mono); font-size:11px; letter-spacing:.03em; color:var(--ink-dim); text-transform:uppercase; white-space:normal; flex-wrap:wrap; }
.insider-lead{ display:flex; flex-direction:column; gap:8px; margin:0 0 10px; }
.insider-lead-line{ font-family:var(--display); font-size:15px; color:#eafffe; letter-spacing:.02em; line-height:1.35; }
.insider-lead-meta{ display:flex; flex-wrap:wrap; gap:6px; }
.insider-grid .nb-item{ min-height:100px; }
.sig-row{ display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:start; gap:6px 12px; padding:7px 0; border-bottom:1px solid rgba(10,169,184,.12); }
.sig-row:last-child{ border-bottom:0; }
.sig-name{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.05em; color:var(--ink); }
.sig-call{ grid-column:1/2; font-family:var(--hud); font-weight:500; font-size:12px; letter-spacing:.04em; color:var(--ink-dim); text-transform:none; line-height:1.35; }
.sig-row-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.ip-dim{ line-height:1.35; text-align:right; }

.whale-signal .nb-title,
.whale-watch,
.whale-action,
.analyst-consensus,
.analyst-card{ padding:10px 11px; }
.whale-keyline{ font-family:var(--body); font-size:12px; line-height:1.45; color:var(--ink); margin-top:4px; }
.whale-list{ display:flex; flex-direction:column; gap:2px; margin-top:4px; }
.whale-grid{ grid-template-columns:1fr; }
.whale-metrics{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.whale-chip{ min-height:88px; }
.whale-bar{ height:6px; border-radius:999px; background:rgba(255,255,255,.06); overflow:hidden; margin:8px 0 6px; }
.whale-bar span{ display:block; height:100%; border-radius:999px; box-shadow:0 0 10px rgba(255,255,255,.12); }
.whale-val{ font-family:var(--mono); font-size:11.5px; color:var(--ink); }

.analyst-grid{ grid-template-columns:1fr; }
.analyst-card{ display:flex; flex-direction:column; gap:8px; }
.analyst-top10-card{ padding:11px 12px; gap:9px; }
.analyst-top10-head{ display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:start; gap:10px; }
.analyst-rank{ font-family:var(--display); font-size:18px; color:var(--glow); min-width:34px; }
.analyst-id{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.analyst-source{ font-family:var(--mono); font-size:10px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; }
.analyst-score{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.analyst-score-tight{ flex-wrap:wrap; }
.analyst-rate{ font-family:var(--display); font-size:18px; color:#eafffe; }
.analyst-focus,
.analyst-mini,
.analyst-row-mini,
.analyst-consensus-grid{ display:flex; flex-wrap:wrap; gap:6px; }
.analyst-focus-tight .insider-chip{ min-height:30px; }
.analyst-mini,
.analyst-row-mini{ margin-top:2px; }
.analyst-bar{ height:6px; border-radius:999px; background:rgba(255,255,255,.06); overflow:hidden; }
.analyst-bar span{ display:block; height:100%; border-radius:999px; }
.analyst-calls{ display:grid; grid-template-columns:1fr; gap:8px; }
.analyst-top10-lines{ gap:7px; }
.analyst-section-label{ font-family:var(--mono); font-size:10px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:4px; display:block; }
.analyst-card-simple{ gap:10px; }
.analyst-calls-simple{ gap:6px; }
.analyst-line{ display:block; font-family:var(--body); font-size:12px; line-height:1.45; color:var(--ink); padding:7px 9px; border:1px solid rgba(10,169,184,.14); border-radius:3px; background:rgba(6,14,18,.42); }
.analyst-line.go{ border-color:rgba(61,240,122,.26); color:#dfffe9; }
.analyst-line.risk{ border-color:rgba(255,92,92,.22); color:#ffe1e1; }
.analyst-line-muted{ color:var(--ink-dim); }
.analyst-lead-card{ padding:10px 11px; }

@media (max-width: 1600px){
  .whale-metrics{ grid-template-columns:1fr; }
}
.sig-banner{
  grid-column:1/-1; margin-top:8px; display:flex; align-items:center; justify-content:center; gap:12px;
  font-family:var(--display); font-weight:700; font-size:15px; letter-spacing:.18em;
  color:var(--watch); border:1px solid rgba(245,182,66,.5); background:rgba(245,182,66,.07);
  border-radius:3px; padding:8px; text-transform:uppercase;
  box-shadow:inset 0 0 18px rgba(245,182,66,.12);
}

.quarantine{ font-family:var(--mono); font-size:11px; letter-spacing:.05em; color:var(--ink-dim);
  border:1px dashed rgba(10,169,184,.4); border-radius:3px; padding:5px 9px; text-transform:uppercase; }

/* small EQ bar group */
.eq{ display:flex; align-items:flex-end; gap:2px; height:26px; }
.eq > b{ width:3px; background:linear-gradient(180deg,var(--glow),rgba(10,169,184,.25)); border-radius:1px; box-shadow:0 0 5px rgba(31,229,216,.4); }

/* ratio chip between metal tiles */
.panel-macro .tile{ padding:6px 9px; }
.gs-line{ display:flex; align-items:center; justify-content:space-between; width:66%; margin-top:9px; padding:5px 11px;
  border:1px solid rgba(201,162,75,.32); border-radius:3px; background:rgba(201,162,75,.05); }
.gs-line .gs-k{ font-family:var(--hud); font-weight:600; font-size:10px; letter-spacing:.16em; color:var(--gold); text-transform:uppercase; }
.gs-line .gs-v{ font-family:var(--mono); font-weight:700; font-size:13px; color:#f3e2b6; }
.ratio{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
  border:1px solid rgba(201,162,75,.35); border-radius:3px; padding:6px 4px; background:rgba(201,162,75,.05); }
.ratio .rk{ font-family:var(--hud); font-size:9.5px; letter-spacing:.1em; color:var(--gold); text-transform:uppercase; }
.ratio .rv{ font-family:var(--mono); font-weight:600; font-size:15px; color:#f3e2b6; }

/* ---------- exchanges desk: fx + index rows ---------- */
.fx-row{ display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:12px;
  padding:5px 4px; border-bottom:1px solid rgba(10,169,184,.12); }
.fx-row:last-child{ border-bottom:0; }
.fx-name{ font-family:var(--display); font-weight:600; font-size:14px; letter-spacing:.07em; color:var(--ink); }
.fx-val{ font-family:var(--mono); font-weight:600; font-size:15px; color:#e6ffff; }
.fx-row .tag{ white-space:nowrap; min-width:62px; text-align:center; }

/* ---------- stocks desk: tabs + watchlist + themes ---------- */
.tabbar{ display:flex; align-items:center; gap:8px; margin-bottom:12px; }
.tab{ font-family:var(--display); font-weight:600; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-dim); background:rgba(8,22,28,.5); border:1px solid rgba(10,169,184,.28);
  border-radius:3px; padding:6px 12px; cursor:pointer; transition:all .18s; }
.tab:hover{ color:var(--ink); border-color:rgba(31,229,216,.5); }
.tab.active{ color:var(--bg); background:var(--glow); border-color:var(--glow); box-shadow:0 0 12px rgba(31,229,216,.45); }
.tab-exp{ margin-left:auto; font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--glow); background:rgba(31,229,216,.07); border:1px solid rgba(31,229,216,.4);
  border-radius:3px; padding:6px 11px; cursor:pointer; transition:all .18s; }
.tab-exp:hover{ background:rgba(31,229,216,.18); box-shadow:0 0 12px rgba(31,229,216,.35); }

/* 3-tab stocks desk: compact tabs */
.panel-stocks .tabbar{ gap:5px; }
.panel-stocks .tab{ padding:6px 8px; font-size:10.5px; letter-spacing:.06em; }
.panel-stocks .tab-exp{ padding:6px 8px; font-size:10px; letter-spacing:.04em; }

/* watchlist rows */
.wl-list{ display:flex; flex-direction:column; }
.wl-row{ display:grid; grid-template-columns:74px 38px 1fr auto; align-items:center; gap:9px;
  padding:4px 6px; border-bottom:1px solid rgba(10,169,184,.08); }
.wl-row:last-child{ border-bottom:0; }
.wl-tk{ font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.04em; color:var(--ink); display:flex; align-items:center; gap:4px; }
.wl-held{ color:var(--go); font-size:8px; font-style:normal; }
.wl-type{ font-family:var(--mono); font-size:9px; letter-spacing:.08em; text-align:center; padding:2px 0; border-radius:2px; border:1px solid; }
.wl-type.t-stock{ color:var(--glow); border-color:rgba(31,229,216,.4); }
.wl-type.t-etf{ color:#5BC8FF; border-color:rgba(91,200,255,.4); }
.wl-type.t-bond{ color:#B79CFF; border-color:rgba(183,156,255,.4); }
.wl-type.t-metal{ color:var(--gold); border-color:rgba(201,162,75,.45); }
.wl-name{ font-family:var(--hud); font-weight:500; font-size:12px; color:var(--ink-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.wl-px{ font-family:var(--mono); font-weight:600; font-size:13px; color:#dffefe; text-align:right; }
.wl-prox{ font-family:var(--mono); font-size:11px; color:var(--ink-faint); min-width:34px; text-align:right; }
.wl-row .wl-px{ min-width:64px; }

/* buy/sell zone sections */
.zone-sec{ margin-bottom:14px; }
.zone-hd{ display:flex; align-items:center; justify-content:space-between; font-family:var(--display); font-weight:700; font-size:12px; letter-spacing:.16em; text-transform:uppercase; padding:7px 9px; border-radius:3px; margin-bottom:4px; }
.zone-hd.buy{ color:var(--go); background:rgba(61,240,122,.1); border:1px solid rgba(61,240,122,.4); }
.zone-hd.sell{ color:var(--risk); background:rgba(255,92,92,.1); border:1px solid rgba(255,92,92,.4); }
.zone-ct{ font-family:var(--mono); font-size:12px; }
.zone-flag{ font-family:var(--mono); font-weight:700; font-size:9.5px; letter-spacing:.08em; padding:2px 6px; border-radius:2px; margin-left:8px; }
.zone-flag.buy{ color:var(--go); background:rgba(61,240,122,.14); }
.zone-flag.sell{ color:var(--risk); background:rgba(255,92,92,.14); }
.zone-empty{ font-family:var(--mono); font-size:11px; color:var(--ink-faint); padding:8px 9px; }
.zone-sec .wl-row{ grid-template-columns:74px 38px 1fr auto auto; }

/* holdings */
.hold-summary{ display:flex; align-items:center; gap:10px; padding:9px 11px; margin-bottom:12px; border-radius:3px;
  background:rgba(31,229,216,.08); border:1px solid rgba(31,229,216,.35);
  font-family:var(--hud); font-weight:600; font-size:12px; letter-spacing:.14em; color:var(--ink-dim); text-transform:uppercase; }
.hold-summary .hs-val{ font-family:var(--mono); font-weight:700; font-size:16px; color:#eafffe; margin-left:auto; }
.hold-alloc{ display:grid; grid-template-columns:126px 1fr; gap:14px; align-items:center; margin-bottom:12px; padding:10px 11px;
  border-radius:4px; background:linear-gradient(180deg, rgba(8,22,28,.52), rgba(6,14,18,.34)); border:1px solid rgba(10,169,184,.24); }
.hold-donut-wrap{ display:flex; align-items:center; justify-content:center; }
.hold-donut{ --alloc-bg:conic-gradient(rgba(10,169,184,.2) 0deg 360deg); width:102px; height:102px; border-radius:50%;
  background:var(--alloc-bg); display:flex; align-items:center; justify-content:center;
  box-shadow:0 0 18px rgba(31,229,216,.10), inset 0 0 18px rgba(0,0,0,.22); }
.hold-donut::after{ content:""; width:1px; height:1px; }
.hold-donut-core{ width:58px; height:58px; border-radius:50%; background:rgba(5,11,16,.94); border:1px solid rgba(31,229,216,.22);
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:6px; box-shadow:inset 0 0 14px rgba(31,229,216,.08); }
.hd-k{ font-family:var(--mono); font-size:9px; letter-spacing:.14em; color:var(--ink-faint); text-transform:uppercase; }
.hd-v{ font-family:var(--mono); font-weight:700; font-size:11px; color:#eafffe; margin-top:3px; }
.hold-alloc-legend{ display:grid; grid-template-columns:1fr 1fr; gap:7px 12px; min-width:0; }
.hold-alloc-row{ display:grid; grid-template-columns:10px 1fr auto auto; align-items:center; gap:8px; min-width:0; }
.har-dot{ width:8px; height:8px; border-radius:50%; box-shadow:0 0 7px currentColor; }
.har-name{ font-family:var(--hud); font-weight:600; font-size:11.5px; letter-spacing:.08em; color:var(--ink); text-transform:uppercase; }
.har-pct,.har-val{ font-family:var(--mono); font-size:11.5px; color:var(--ink-dim); white-space:nowrap; }
.har-val{ color:#dffefe; }
.hold-sec{ margin-bottom:11px; }
.hold-hd{ display:flex; align-items:center; justify-content:space-between; font-family:var(--display); font-weight:600; font-size:11px; letter-spacing:.18em; color:var(--ink-faint); text-transform:uppercase; padding:4px 2px; border-bottom:1px solid rgba(10,169,184,.2); margin-bottom:3px; }
.hold-tot{ font-family:var(--mono); font-weight:600; color:var(--ink-dim); }
.hold-row{ display:grid; grid-template-columns:1fr auto 56px; align-items:center; gap:10px; padding:6px 2px; border-bottom:1px solid rgba(10,169,184,.08); }
.hold-row:last-child{ border-bottom:0; }
.hold-name{ font-family:var(--hud); font-weight:500; font-size:12.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hold-note{ font-family:var(--mono); font-size:10.5px; color:var(--ink-faint); display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; text-align:right; }
.asset-chip{ display:inline-flex; align-items:center; padding:2px 6px; border-radius:999px; border:1px solid rgba(10,169,184,.2); background:rgba(10,169,184,.08); }
.hold-val{ font-family:var(--mono); font-size:13px; color:#dffefe; text-align:right; }
.hold-pnl{ font-family:var(--mono); font-weight:700; font-size:12.5px; text-align:right; }
.hold-pnl.up{ color:var(--go); } .hold-pnl.dn{ color:var(--risk); } .hold-pnl.flat{ color:var(--ink-dim); }
.bank-row{ grid-template-columns:minmax(0,1fr) minmax(0,1.7fr) auto; }
.canvas[data-theme="light"] .wl-px, .canvas[data-theme="light"] .hold-val, .canvas[data-theme="light"] .hs-val{ color:#0d2a2f; }
.canvas[data-theme="light"] .hd-v, .canvas[data-theme="light"] .har-val{ color:#0d2a2f; }

.top-row{ display:grid; grid-template-columns:30px 1fr auto auto; align-items:center; gap:12px;
  padding:9px 4px; border-bottom:1px solid rgba(10,169,184,.12); }
.top-row .rk{ font-family:var(--mono); font-size:12px; color:var(--ink-faint); }
.top-row .t-val{ font-family:var(--mono); font-weight:600; font-size:14px; color:#e6ffff; }

.themes-ov{ position:absolute; inset:0; z-index:5; border-radius:4px; padding:14px 16px 16px;
  background:linear-gradient(180deg, rgba(6,16,22,.96), rgba(5,11,16,.98));
  border:1px solid rgba(31,229,216,.45); box-shadow:inset 0 0 30px rgba(31,229,216,.12);
  opacity:0; transform:scale(.97); transition:opacity .2s, transform .2s; display:flex; flex-direction:column; gap:12px; }
.themes-ov.open{ opacity:1; transform:scale(1); }

/* full-screen thematic overlay */
.themes-fs{ position:absolute; z-index:60; top:58px; left:30px; right:30px; bottom:72px;
  background:linear-gradient(180deg, rgba(6,16,22,.975), rgba(5,10,15,.985));
  border:1px solid rgba(31,229,216,.45); border-radius:5px; padding:24px 28px 26px;
  box-shadow:inset 0 0 60px rgba(31,229,216,.10), 0 0 50px rgba(0,0,0,.6);
  backdrop-filter:blur(5px); display:flex; flex-direction:column; gap:22px;
  opacity:0; transform:scale(.985); transition:opacity .22s, transform .22s; }
.themes-fs.open{ opacity:1; transform:scale(1); }
.themes-fs-head{ display:flex; align-items:center; gap:20px; border-bottom:1px solid rgba(10,169,184,.25); padding-bottom:16px; }
.themes-fs-head .ttl{ font-family:var(--display); font-weight:700; font-size:24px; letter-spacing:.22em; color:var(--glow); text-transform:uppercase; text-shadow:0 0 18px rgba(31,229,216,.5); }
.themes-fs-head .fs-sub{ font-family:var(--mono); font-size:13px; letter-spacing:.16em; color:var(--ink-dim); text-transform:uppercase; }
.themes-grid{ flex:1; display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:1fr; gap:18px; }

.theme-card{ border:1px solid rgba(10,169,184,.24); border-radius:4px; padding:11px 12px; background:rgba(8,22,28,.4); }
.theme-name{ font-family:var(--display); font-weight:700; font-size:13px; letter-spacing:.18em; color:var(--ink); text-transform:uppercase; margin-bottom:9px;
  display:flex; align-items:center; gap:8px; }
.theme-name::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--glow); box-shadow:0 0 7px var(--glow); }
.theme-stocks{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.theme-card.lg{ padding:18px 20px; display:flex; flex-direction:column; background:rgba(8,22,28,.5); }
.theme-card.lg .theme-name{ font-size:17px; letter-spacing:.2em; margin-bottom:16px; }
.theme-card.lg .theme-name::before{ width:8px; height:8px; }
.theme-card.lg .theme-stocks{ gap:11px; align-content:start; flex:1; }

.chip{ display:flex; align-items:center; gap:7px; padding:6px 9px; border:1px solid rgba(10,169,184,.2);
  border-radius:3px; background:rgba(6,14,18,.5); }
.chip .ch-t{ font-family:var(--display); font-weight:600; font-size:12px; letter-spacing:.06em; color:var(--ink); }
.chip .ch-p{ font-family:var(--mono); font-size:12px; color:#dffefe; margin-left:auto; }
.chip .ch-d{ font-family:var(--mono); font-size:11px; }
.theme-card.lg .chip{ padding:11px 13px; }
.theme-card.lg .chip .ch-t{ font-size:15px; }
.theme-card.lg .chip .ch-p{ font-size:14px; }
.theme-card.lg .chip .ch-d{ font-size:12px; }
.ov-close{ font-family:var(--mono); font-size:13px; color:var(--ink-dim); background:rgba(10,169,184,.1);
  border:1px solid rgba(10,169,184,.35); border-radius:3px; cursor:pointer; transition:all .18s; }
.themes-fs-head .ov-close{ margin-left:auto; height:auto; padding:9px 18px; font-family:var(--display); font-weight:600; font-size:13px; letter-spacing:.14em; }
.ov-close:hover{ color:var(--risk); border-color:rgba(255,92,92,.5); background:rgba(255,92,92,.1); }

/* ============================================================
   LIGHT THEME (daytime) — surroundings go light, the reactor
   stays a dark glowing focal core.
   ============================================================ */
.canvas[data-theme="light"]{
  --bg:#dde6e9; --bg2:#ccd9dd;
  --glow:#0fb3a8; --line:#0a8a97; --line-dim:#6a9aa1;
  --ink:#0d2a2f; --ink-dim:#33585e; --ink-faint:#5e8086;
  --go:#0f9a50; --watch:#b9790c; --risk:#d23a3a; --gold:#8a6e22;
  background:#dde6e9; color:var(--ink);
}
.canvas[data-theme="light"] .bg-radial{ background:radial-gradient(1050px 1050px at 50% 49%, rgba(15,179,168,.12), transparent 60%); }
.canvas[data-theme="light"] .bg-hex{ opacity:.08; }
.canvas[data-theme="light"] .bg-grid{ opacity:.15; }
.canvas[data-theme="light"] .bg-vignette{ box-shadow:inset 0 0 200px 40px rgba(120,150,155,.22);
  background:radial-gradient(1400px 900px at 50% 50%, transparent 58%, rgba(150,175,180,.32)); }
.canvas[data-theme="light"] .bg-scan{ opacity:.1; }

.canvas[data-theme="light"] .panel{ background:linear-gradient(180deg, rgba(255,255,255,.82), rgba(236,243,245,.7));
  border-color:rgba(10,138,151,.42); box-shadow:inset 0 0 20px rgba(10,138,151,.06), 0 2px 12px rgba(40,70,75,.12); }
.canvas[data-theme="light"] .panel-signal{ background:linear-gradient(180deg, rgba(255,255,255,.9), rgba(234,245,246,.8)); box-shadow:0 0 18px rgba(15,179,168,.12); }
.canvas[data-theme="light"] .panel-metals{ background:linear-gradient(180deg, rgba(255,253,247,.85), rgba(244,240,230,.72)); border-color:rgba(138,110,34,.4); }
.canvas[data-theme="light"] .tile{ background:linear-gradient(180deg, rgba(255,255,255,.72), rgba(235,243,245,.6)); border-color:rgba(10,138,151,.3); }
.canvas[data-theme="light"] .calendar-strip,
.canvas[data-theme="light"] .waveform-bar{ background:rgba(255,255,255,.74); border-color:rgba(10,138,151,.35); }

/* near-white values → dark, scoped to panels & overlays (reactor untouched) */
.canvas[data-theme="light"] .panel .t-val,
.canvas[data-theme="light"] .panel .kv .v,
.canvas[data-theme="light"] .fx-val,
.canvas[data-theme="light"] .top-row .t-val,
.canvas[data-theme="light"] .chip .ch-p{ color:var(--ink) !important; }
.canvas[data-theme="light"] .panel-metals [data-f="px"]{ color:#6f5512 !important; }
.canvas[data-theme="light"] .panel svg text{ fill:var(--ink) !important; }
.canvas[data-theme="light"] .panel-metals svg text{ fill:#6f5512 !important; }
.canvas[data-theme="light"] .ratio .rv{ color:#6f5512; }
.canvas[data-theme="light"] .p-clock{ color:#fff; }
.canvas[data-theme="light"] .cal-day.today .cal-num{ color:#fff; }

.canvas[data-theme="light"] .themes-fs{ background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(235,244,246,.97)); border-color:rgba(10,138,151,.42); box-shadow:0 0 40px rgba(40,70,75,.25); }
.canvas[data-theme="light"] .theme-card,
.canvas[data-theme="light"] .theme-card.lg,
.canvas[data-theme="light"] .chip{ background:rgba(255,255,255,.72); border-color:rgba(10,138,151,.26); }
.canvas[data-theme="light"] .data-status,
.canvas[data-theme="light"] .theme-toggle,
.canvas[data-theme="light"] .tab,
.canvas[data-theme="light"] .ov-close{ background:rgba(255,255,255,.74); }
.canvas[data-theme="light"] .tab-exp{ background:rgba(15,179,168,.12); }
.canvas[data-theme="light"] .sig-cell,
.canvas[data-theme="light"] .top-row,
.canvas[data-theme="light"] .fx-row{ }
/* keep the reactor core readable: a soft dark plate behind it */
.canvas[data-theme="light"] .reactor::after{ content:""; position:absolute; inset:64px; border-radius:50%; z-index:-1;
  background:radial-gradient(circle, rgba(10,22,28,.55), rgba(10,22,28,.25) 55%, transparent 72%); }
