:root {
  --bg:#070b14; --panel:#0d1524; --panel2:#0a111f; --border:#1c2942;
  --text:#dce6f8; --dim:#8496b4; --accent:#4cc2ff; --ok:#3fd68f; --warn:#ffb454;
  --bad:#ff6b6b; --bull:#3fd68f; --bear:#ff6b6b;
}
* { box-sizing:border-box; margin:0; padding:0; }
body {
  background: radial-gradient(1100px 520px at 85% -12%, #101d3a 0%, var(--bg) 55%);
  color:var(--text); font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  min-height:100vh; padding:18px 22px 60px;
}
header { display:flex; flex-wrap:wrap; align-items:baseline; gap:14px; margin-bottom:16px; }
h1 { font-size:1.4rem; letter-spacing:.3px; }
h1 span { color:var(--accent); }
.sub { color:var(--dim); font-size:.82rem; }
.coverage { display:inline-block; margin-top:5px; color:var(--dim); font-size:.74rem; }
.live { display:inline-flex; align-items:center; gap:6px; font-size:.75rem; color:var(--ok); }
.live i { width:8px; height:8px; border-radius:50%; background:var(--ok); animation:pulse 1.6s infinite; }
.live.err, .live.err i { color:var(--bad); background:var(--bad); animation:none; }
.controls { display:flex; align-items:center; gap:9px; color:var(--dim); font-size:.75rem; }
.controls button { background:#122036; color:var(--text); border:1px solid var(--border); border-radius:8px; padding:6px 10px; cursor:pointer; }
.controls button:disabled { opacity:.55; cursor:wait; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.25} }
nav { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px; }
nav button {
  background:transparent; border:1px solid var(--border); color:var(--dim);
  padding:7px 14px; border-radius:999px; cursor:pointer; font-size:.8rem; transition:all .15s;
}
nav button:hover { color:var(--text); border-color:var(--accent); }
nav button.active { background:var(--accent); border-color:var(--accent); color:#04121f; font-weight:600; }
nav button.refreshing::after { content:" · refreshing…"; font-size:.65rem; opacity:.75; }
.tab-bar { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px; margin-bottom:16px; }
.tab-bar nav { flex:1; margin-bottom:0; }
#copy-tab-link { background:transparent; border:1px solid transparent; border-radius:999px;
  color:var(--dim); cursor:pointer; font-size:.72rem; padding:7px 10px; white-space:nowrap; }
#copy-tab-link:hover, #copy-tab-link:focus-visible { color:var(--text); border-color:var(--accent); }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:14px; }
.card {
  background:linear-gradient(180deg,var(--panel) 0%,var(--panel2) 100%);
  border:1px solid var(--border); border-radius:14px; padding:16px 18px;
  box-shadow:0 8px 24px rgba(0,0,0,.3);
}
.card.full-width { grid-column:1 / -1; }
.card > table { display:block; overflow-x:auto; }
.card h2 { font-size:.74rem; text-transform:uppercase; letter-spacing:1.2px; color:var(--dim);
  margin-bottom:12px; display:flex; justify-content:space-between; align-items:baseline; }
.card h2 b { color:var(--text); font-size:1.05rem; font-weight:600; letter-spacing:0; text-transform:none;
  font-variant-numeric:tabular-nums; }
.big { font-size:1.7rem; font-weight:700; font-variant-numeric:tabular-nums; letter-spacing:.5px; }
.big small { font-size:.85rem; color:var(--dim); font-weight:400; }
.chg { font-size:.85rem; font-weight:600; }
.up { color:var(--ok); } .down { color:var(--bad); } .flat { color:var(--dim); }
.bar { height:8px; border-radius:6px; background:#152238; overflow:hidden; margin:8px 0 6px; }
.bar i { display:block; height:100%; border-radius:6px;
  background:linear-gradient(90deg,var(--accent),#7a8cff); }
.row { display:flex; justify-content:space-between; font-size:.8rem; color:var(--dim); gap:8px; }
.row b { color:var(--text); font-variant-numeric:tabular-nums; text-align:right; }
table { width:100%; border-collapse:collapse; font-size:.78rem; }
th { text-align:left; color:var(--dim); font-weight:500; font-size:.7rem; text-transform:uppercase;
  letter-spacing:1px; padding:4px 6px 8px; }
td { padding:5px 6px; border-top:1px solid var(--border); font-variant-numeric:tabular-nums; }
tr.total td { font-weight:700; border-top:2px solid var(--accent); }
td.name { color:var(--text); max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
td.method { color:var(--dim); max-width:360px; white-space:normal; line-height:1.35; }
.awaiting { color:var(--warn); font-size:1rem; font-weight:650; margin:18px 0 6px; }
#grid-dev table th, #grid-dev table td { white-space:nowrap; }
.sig { font-weight:700; padding:1px 8px; border-radius:999px; font-size:.7rem; }
.sig.bullish { color:#04121f; background:var(--bull); }
.sig.bearish { color:#1a0505; background:var(--bear); }
.sig.leaning-bullish { color:var(--bull); background:#122c35; }
.sig.leaning-bearish { color:var(--bear); background:#321c29; }
.sig.neutral { color:var(--dim); background:#1a2440; }
.sig.insufficient_coverage { color:var(--warn); background:#2a2116; }
.jev-hint { margin-bottom:8px; }
.chips { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.chip { font-size:.75rem; padding:5px 10px; border-radius:999px; background:#141f38;
  border:1px solid var(--border); font-variant-numeric:tabular-nums; }
footer { margin-top:26px; color:var(--dim); font-size:.72rem; text-align:center; line-height:1.7; }
svg.spark { width:100%; height:64px; display:block; }
.chartwrap { position:relative; touch-action:pan-y; }
.chartwrap .tip { position:absolute; display:none; pointer-events:none; z-index:3; max-width:240px;
  padding:6px 8px; border:1px solid var(--border); border-radius:7px; background:#080e19;
  color:var(--text); font-size:.72rem; line-height:1.45; box-shadow:0 5px 16px rgba(0,0,0,.45); white-space:nowrap; }
.chartwrap .crosshair { position:absolute; display:none; pointer-events:none; z-index:2; top:0; bottom:0;
  width:1px; background:rgba(220,230,248,.5); }
.chartwrap .baritem { padding:2px 0; border-radius:5px; }
.chartwrap .baritem.hover { background:rgba(255,255,255,.06); }
.chartwrap .baritem.hover .bar i { filter:brightness(1.35); box-shadow:0 0 0 1px rgba(255,255,255,.55); }
.news-item { padding:10px 4px; border-top:1px solid var(--border); }
.news-item:first-of-type { border-top:none; }
.news-item a { color:var(--text); text-decoration:none; font-size:.84rem; line-height:1.45; }
.news-item a:hover { color:var(--accent); }
.news-item .meta { font-size:.7rem; color:var(--dim); margin-top:3px; display:flex; gap:10px; flex-wrap:wrap; }
.src { padding:1px 7px; border-radius:999px; font-size:.65rem; border:1px solid var(--border);
  background:#122036; color:var(--accent); }
.newbadge { color:var(--accent); font-size:.7rem; font-weight:700; letter-spacing:.5px;
  text-transform:uppercase; white-space:nowrap; }
.jev-box { background:#0d1a30; border:1px solid var(--border); border-radius:12px; padding:14px 16px;
  font-size:.86rem; line-height:1.65; }
.jev-box .who { font-size:.7rem; color:var(--accent); letter-spacing:1px; text-transform:uppercase; margin-bottom:8px; }
.gauge { display:flex; align-items:center; gap:18px; }
.gauge .val { font-size:2.3rem; font-weight:800; font-variant-numeric:tabular-nums; }
.gauge .cls { font-size:.95rem; }
.v2-gauge { align-items:baseline; justify-content:space-between; flex-wrap:wrap; }
.v2-gauge .val { font-size:1.65rem; }
.pillar-list { margin-top:12px; }
.pillar { padding:3px 0; }
.pillar .bar { height:5px; margin-top:4px; }
.v2-commentary { border-top:1px solid var(--border); margin-top:10px; padding-top:10px; line-height:1.5; }
.sent-meter { height:14px; border-radius:8px; margin:10px 0 4px;
  background:linear-gradient(90deg,var(--bear) 0%,#8b8b8b 50%,var(--bull) 100%);
  position:relative; }
.sent-meter i { position:absolute; top:-4px; width:4px; height:22px; background:#fff;
  border-radius:2px; box-shadow:0 0 8px rgba(255,255,255,.6); transform:translateX(-2px); }
.grouplist .row { padding:4px 0; }
.hidden { display:none; }
.tag { font-size:.66rem; color:var(--dim); border:1px solid var(--border); border-radius:6px;
  padding:2px 6px; margin-left:8px; }
@media (max-width:720px) { body { padding:14px 12px 50px; } .grid { grid-template-columns:1fr; } }
