/* ── Guide nav link (accent, like support) ── */
.guide-link{color:var(--accent)!important;font-weight:600;position:relative;}
.guide-link::after{content:'';position:absolute;top:2px;right:-6px;width:5px;height:5px;background:var(--accent);border-radius:50%;animation:guide-dot 3s ease infinite;}
@keyframes guide-dot{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.3;transform:scale(.6);}}

/* ── Guide CTA widget ── */
.guide-cta{display:flex;align-items:center;gap:14px;padding:14px 18px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--bg-1)),var(--bg-1));border:1px solid color-mix(in srgb,var(--accent) 20%,var(--border-subtle));border-radius:12px;margin-bottom:12px;text-decoration:none;transition:border-color .2s,box-shadow .2s;cursor:pointer;}
.guide-cta:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);}
.guide-cta-icon{font-size:28px;flex-shrink:0;}
.guide-cta-body{flex:1;min-width:0;}
.guide-cta-title{font-size:12px;font-weight:700;color:var(--text-0);margin-bottom:2px;}
.guide-cta-desc{font-size:11px;color:var(--text-2);line-height:1.4;}
.guide-cta-btn{flex-shrink:0;padding:6px 16px;border-radius:6px;background:var(--accent);color:#fff;font-weight:700;font-size:11px;text-decoration:none;letter-spacing:.3px;white-space:nowrap;}
@media(max-width:768px){.guide-cta{flex-wrap:wrap;gap:10px;}.guide-cta-btn{width:100%;text-align:center;}}

/* ── Dashboard grid ── */
*, *::before, *::after { box-sizing:border-box; }
.dash { max-width:1200px; margin:0 auto; padding:20px 24px 48px; overflow-x:hidden; width:100%; box-sizing:border-box; }
.dash-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:12px; }
.dash-wide { grid-template-columns:1fr 1fr; }
.dash-triple { grid-template-columns:1fr 1fr 1fr; }

/* ── Panel base ── */
.pnl {
  background:var(--bg-1); border:1px solid var(--border); border-radius:12px;
  padding:16px 20px; box-shadow:var(--card-shadow);
}
[data-theme="dark"] .pnl { border-color:transparent; }
.pnl-r, .pnl-o, .pnl-y, .pnl-g, .pnl-b { /* no colored borders */ }
.pnl-h { display:flex; align-items:baseline; gap:6px; margin-bottom:2px; }
.pnl-v { font-size:24px; font-weight:700; color:var(--text-0); line-height:1;
          font-variant-numeric:tabular-nums; letter-spacing:-0.03em; }
.pnl-u { font-size:11px; color:var(--text-3); }
.pnl-l { font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:0.6px;
          margin-top:2px; font-weight:600; }
.pnl-sub { font-size:11px; color:var(--text-2); margin-top:3px; line-height:1.4; }
.pnl-badge { display:inline-block; font-size:9px; font-weight:500; padding:2px 8px;
              border-radius:6px; margin-right:4px; background:var(--bg-2); color:var(--text-1); }
.pnl-badge-r { color:var(--red); }
.pnl-badge-o { color:var(--orange); }
.pnl-badge-y { color:var(--yellow); }
.pnl-badge-g { color:var(--green); }
.pnl-badge-b { color:var(--accent); }

/* ── CTI hero ── */
.cti-hero { display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:center;
            padding:20px 24px; margin-bottom:12px; }
.cti-ring-wrap { position:relative; width:100px; height:100px; }
.cti-svg { width:100%; height:100%; }
.cti-arc { transition: stroke-dasharray 0.6s ease; }
.cti-arc-green { stroke:var(--accent); }
.cti-arc-yellow { stroke:var(--accent); }
.cti-arc-orange { stroke:var(--accent); }
.cti-arc-red { stroke:var(--red); }
.cti-num { position:absolute; top:50%; left:50%; transform:translate(-50%,-55%);
           font-size:28px; font-weight:800; color:var(--text-0); font-variant-numeric:tabular-nums; }
.cti-denom { position:absolute; top:50%; left:50%; transform:translate(-50%,55%);
             font-size:11px; color:var(--text-3); }
.cti-detail { display:flex; flex-direction:column; gap:4px; }
.cti-bar-row { display:flex; align-items:center; gap:12px; }
.cti-bar-label { font-size:11px; color:var(--text-3); width:60px; text-align:right; }
.cti-bar-track { flex:1; height:6px; background:var(--bg-hover); border-radius:8px; overflow:hidden; }
.cti-bar-fill { height:100%; border-radius:8px; transition:width .4s ease; }
.cti-bar-fill-sec { background:var(--accent); }
.cti-bar-fill-fimi { background:var(--accent); opacity:.7; }
.cti-bar-fill-hyb { background:var(--accent); opacity:.5; }
.cti-bar-fill-eco { background:var(--accent); opacity:.35; }
.cti-bar-val { font-size:11px; color:var(--text-3); width:30px; font-variant-numeric:tabular-nums; }
.cti-trend { font-size:11px; margin-top:4px; }
.cti-explainer { font-size:11px; color:var(--text-2); margin-top:6px; padding:6px 8px;
                 background:var(--bg-hover); border-radius:8px; line-height:1.4; }

/* ── GPS jam zone bars ── */
.jam-bar { display:flex; align-items:center; gap:4px; margin:2px 0; }
.jam-bar-name { font-size:11px; color:var(--text-3); width:75px; text-align:right;
                overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.jam-bar-track { flex:1; height:5px; background:var(--bg-hover); border-radius:8px; overflow:hidden; }
.jam-bar-fill { height:100%; border-radius:8px; }
.jam-bar-fill-high { background:var(--accent); }
.jam-bar-fill-med { background:var(--accent); opacity:.55; }
.jam-bar-fill-low { background:var(--accent); opacity:.3; }
.jam-bar-val { font-size:8px; color:var(--text-3); width:28px; font-variant-numeric:tabular-nums; }

/* ── Energy mini ── */
.energy-row { display:flex; align-items:center; gap:6px; font-size:11px; margin:2px 0; }
.energy-name { color:var(--text-3); width:50px; }
.energy-val { font-weight:600; font-variant-numeric:tabular-nums; }
.energy-imp { color:var(--red); }
.energy-exp { color:var(--green); }
.energy-bar { flex:1; height:4px; background:var(--bg-hover); border-radius:8px; position:relative; }
.energy-bar-mid { position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--border-subtle); }
.energy-bar-fill { position:absolute; top:0; bottom:0; border-radius:8px; }

/* ── Embassy flags ── */
.embassy-grid { display:flex; gap:12px; flex-wrap:wrap; margin-top:4px; }
.embassy-item { display:flex; align-items:center; gap:4px; font-size:11px; }
.embassy-dot { width:7px; height:7px; border-radius:50%; }
.emb-normal { background:var(--green); }
.emb-caution { background:var(--yellow); }
.emb-warning { background:var(--orange); }
.emb-danger { background:var(--red); }

/* ── Narrative bars ── */
.narr-row { display:flex; align-items:center; gap:6px; margin:2px 0; }
.narr-code { font-size:11px; font-weight:700; width:20px; color:var(--text-3); }
.narr-bar { flex:1; height:6px; background:var(--bg-hover); border-radius:8px; overflow:hidden; }
.narr-fill { height:100%; border-radius:8px; }
.narr-cnt { font-size:11px; color:var(--text-3); width:24px; font-variant-numeric:tabular-nums; text-align:right; }

/* ── Signal volume legend ── */
.vol-legend { display:flex; gap:12px; flex-wrap:wrap; margin-top:4px; }
.vol-leg { font-size:8px; display:flex; align-items:center; gap:6px; color:var(--text-3); }
.vol-dot { width:6px; height:6px; border-radius:50%; }

/* ── Data sources panel ── */
.src-panel { margin-bottom:12px; }
.src-panel-head { display:flex; align-items:center; gap:8px; margin-bottom:8px; cursor:pointer; user-select:none; }
.src-panel-head:hover .src-panel-title { color:var(--text-0); }
.src-panel-title { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3); transition:color .12s; }
.src-panel-summary { display:flex; gap:6px; align-items:center; margin-left:auto; }
.src-pill { font-size:10px; font-weight:600; padding:2px 8px; border-radius:8px; display:inline-flex; align-items:center; gap:4px; }
.src-pill-ok { background:var(--green-soft); color:var(--green); }
.src-pill-warn { background:var(--orange-soft); color:var(--orange); }
.src-pill-err { background:var(--red-soft); color:var(--red); }
.src-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:6px; }
.src-card {
  background:var(--bg-1); border-radius:10px; padding:10px 12px;
  display:flex; align-items:flex-start; gap:10px;
  border:1px solid transparent; transition:border-color .12s;
  box-shadow:var(--card-shadow);
}
.src-card:hover { border-color:var(--bg-hover); }
.src-card-stale { border-color:var(--red-soft); }
.src-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; margin-top:3px; }
.src-dot-live { background:var(--green); box-shadow:0 0 4px var(--green); }
.src-dot-recent { background:var(--yellow); }
.src-dot-stale { background:var(--red); animation:src-pulse 2s ease-in-out infinite; }
@keyframes src-pulse { 0%,100%{opacity:1;} 50%{opacity:.4;} }
.src-info { flex:1; min-width:0; }
.src-name { font-size:11px; font-weight:600; color:var(--text-0); display:flex; align-items:center; gap:4px; }
.src-desc { font-size:9px; color:var(--text-3); line-height:1.3; margin-top:1px; }
.src-meta { display:flex; align-items:center; gap:6px; margin-top:3px; }
.src-age { font-size:10px; font-variant-numeric:tabular-nums; }
.src-age-ok { color:var(--green); }
.src-age-warn { color:var(--orange); }
.src-age-stale { color:var(--red); }
.src-time { font-size:9px; color:var(--text-3); }
.src-bar { flex:1; height:3px; background:var(--bg-2); border-radius:2px; overflow:hidden; max-width:60px; }
.src-bar-fill { height:100%; border-radius:2px; transition:width .3s; }
.src-bar-fill-ok { background:var(--green); }
.src-bar-fill-warn { background:var(--orange); }
.src-bar-fill-stale { background:var(--red); }
.src-toggle { font-size:10px; color:var(--text-3); background:none; border:none; cursor:pointer; padding:2px 6px;
              border-radius:6px; font-family:inherit; transition:all .12s; }
.src-toggle:hover { background:var(--bg-2); color:var(--text-1); }
@media (max-width:500px) {
  .src-grid { grid-template-columns:1fr 1fr; }
  .src-card { padding:8px 10px; gap:6px; }
}

/* ── Charts ── */
.charts-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.chart-pnl { padding:12px 14px; }
.chart-pnl h3 { margin:0 0 8px; font-size:11px; text-transform:uppercase; letter-spacing:0.6px;
                 color:var(--text-3); font-weight:700; }
.chart-wrap { position:relative; height:150px; width:100%; overflow:hidden; }
.chart-range { display:flex; gap:2px; margin-left:auto; }
.range-btn { font-size:11px; padding:2px 10px; border:none; border-radius:6px;
             background:transparent; color:var(--text-3); cursor:pointer; font-family:inherit;
             min-width:32px; text-align:center; transition:background .12s, color .12s; }
.range-btn:hover { background:var(--bg-hover); color:var(--text-1); }
.range-btn.active { background:var(--bg-2); color:var(--text-0); }

/* ── Indicators table ── */
.ind-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.ind-compact { width:100%; min-width:0; }
.ind-compact th { font-size:11px; text-transform:uppercase; letter-spacing:0.5px; color:var(--text-3);
                  font-weight:600; text-align:left; padding:4px 6px; border-bottom:1px solid var(--border-subtle); }
.ind-compact td { font-size:11px; padding:4px 6px; border-bottom:1px solid var(--border-subtle);
                  color:var(--text-2); vertical-align:top; }
.ind-compact tr:last-child td { border-bottom:none; }
.ind-finding { max-width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ind-quiet-btn { font-size:11px; color:var(--text-3); background:none; border:none; cursor:pointer;
                 padding:4px 6px; font-family:inherit; }
.ind-quiet-btn:hover { color:var(--text-1); }

/* ── Date nav (compact) ── */
.date-row { display:flex; align-items:center; gap:12px; margin-bottom:12px; min-width:0; overflow:hidden; }
.date-label { font-size:11px; color:var(--text-2); display:flex; align-items:center; gap:4px; }
.date-chips { display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; min-width:0; flex:1; }
.date-chips::-webkit-scrollbar { display:none; }
.date-chip { font-size:11px; padding:3px 8px; border-radius:6px; border:none;
             color:var(--text-3); text-decoration:none; white-space:nowrap; background:transparent; }
.date-chip:hover { background:var(--bg-2); color:var(--text-0); }
.date-chip.active { background:var(--bg-2); color:var(--text-0); font-weight:600; }

/* ── Responsive ── */
@media (max-width:900px) {
  .dash-grid { grid-template-columns:1fr 1fr; }
  .dash-wide, .dash-triple, .charts-row { grid-template-columns:1fr; }
  .cti-hero { grid-template-columns:1fr; justify-items:center; text-align:center; }
}
@media (max-width:500px) {
  html, body { overflow-x:hidden; }
  .dash { padding:8px 10px 24px; }
  .dash-grid { grid-template-columns:1fr; }
  .charts-row { grid-template-columns:1fr; }
  .pnl-v { font-size:20px; }
  .pnl { max-width:100vw; }
  .ind-finding { max-width:140px; }
  .cti-hero { gap:10px; padding:10px 12px; }
  .sat-site-grid { grid-template-columns:1fr 1fr !important; }
}

/* ── Origin story ── */
.origin {
  margin:0 0 16px; padding:20px 24px 18px;
  border-radius:12px; background:var(--bg-1);
  border-left:3px solid var(--accent);
  box-shadow:var(--card-shadow);
  position:relative;
}
.origin::before {
  content:'\201C'; position:absolute; top:10px; left:16px;
  font-family:'Source Serif 4',Georgia,serif; font-size:28px;
  color:var(--accent); opacity:.25; line-height:1; pointer-events:none;
}
.origin-body {
  font-family:'Source Serif 4',Georgia,'Times New Roman',serif;
  font-size:13.5px; line-height:1.75; color:var(--text-2);
  padding-left:18px;
}
.origin-body p { margin:0 0 10px; }
.origin-body p:last-child { margin-bottom:0; }
.origin-lead { color:var(--text-0); }
.origin-body em { font-style:italic; color:var(--text-1); }
.origin-punch { color:var(--accent); font-weight:600; }
.origin-foot {
  font-size:11px; color:var(--text-3); letter-spacing:.02em;
  margin-top:14px; padding-top:0;
  font-family:'Inter',-apple-system,system-ui,sans-serif;
  font-style:normal;
}
@media (max-width:600px) {
  .origin { padding:18px 18px 16px; max-width:none; }
  .origin::before { font-size:24px; top:10px; left:12px; }
  .origin-body { font-size:13px; padding-left:14px; }
}
.pod-play{width:32px;height:32px;border-radius:50%;border:none;background:var(--text-0);color:var(--bg-0);
  cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;padding:0;}
.pod-play:hover{opacity:.8;}
.pod-play.playing{animation:pod-pulse 2s ease infinite;}
@keyframes pod-pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.15);}50%{box-shadow:0 0 0 6px rgba(255,255,255,0);}}
.pod-progress-track{width:100%;height:4px;background:var(--bg-2);border-radius:2px;margin-top:10px;cursor:pointer;position:relative;}
.pod-progress-fill{height:100%;background:var(--text-2);border-radius:2px;width:0;transition:width .3s linear;pointer-events:none;}
.pod-speed{display:flex;gap:2px;flex-shrink:0;}
.pod-speed-btn{font-size:10px;padding:2px 6px;border:none;border-radius:4px;background:transparent;
  color:var(--text-3);cursor:pointer;font-family:inherit;font-variant-numeric:tabular-nums;transition:all .12s;}
.pod-speed-btn:hover{background:var(--bg-2);color:var(--text-1);}
.pod-speed-btn.active{background:var(--bg-2);color:var(--text-0);font-weight:600;}
.pod-play{width:32px;height:32px;border-radius:50%;border:none;background:var(--text-0);color:var(--bg-0);
  cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;padding:0;}
.pod-play:hover{opacity:.8;}
.pod-play.playing{animation:pod-pulse 2s ease infinite;}
@keyframes pod-pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.15);}50%{box-shadow:0 0 0 6px rgba(255,255,255,0);}}
.pod-progress-track{width:100%;height:4px;background:var(--bg-2);border-radius:2px;margin-top:10px;cursor:pointer;position:relative;}
.pod-progress-fill{height:100%;background:var(--text-2);border-radius:2px;width:0;transition:width .3s linear;pointer-events:none;}
.pod-speed{display:flex;gap:2px;flex-shrink:0;}
.pod-speed-btn{font-size:10px;padding:2px 6px;border:none;border-radius:4px;background:transparent;
  color:var(--text-3);cursor:pointer;font-family:inherit;font-variant-numeric:tabular-nums;transition:all .12s;}
.pod-speed-btn:hover{background:var(--bg-2);color:var(--text-1);}
.pod-speed-btn.active{background:var(--bg-2);color:var(--text-0);font-weight:600;}
