/* Dashboard-specific styles (loaded after site.css) · v2 */
.app-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:14px;margin:26px 0 14px}
.app-head .sub{color:var(--muted);font-size:13.5px;margin-top:6px;max-width:560px}
.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.controls select{background:var(--chip);border:1px solid var(--border);color:var(--txt);padding:9px 12px;border-radius:10px;font-size:12.5px;font-weight:600;cursor:pointer}
.controls .toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none}
.controls .toggle input{accent-color:var(--accent);width:15px;height:15px}
.status{font-size:12px;color:var(--muted);margin-bottom:16px;display:flex;align-items:center;gap:8px}
.status .sd{width:8px;height:8px;border-radius:50%;background:var(--neutral);flex:none;box-shadow:0 0 8px currentColor}
.grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;align-items:start}
@media(max-width:900px){.grid{grid-template-columns:1fr}}
.card{margin-bottom:20px}
.card h2{font-size:12.5px;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.card h2 small{font-weight:500;text-transform:none;letter-spacing:0;font-size:11px;text-align:right;color:var(--faint)}

.metric{padding:10px 0;border-top:1px solid var(--border)}
.metric:first-of-type{border-top:none}
.metric .top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.metric .name{font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.metric .hint{font-size:10.5px;color:var(--faint);margin-top:3px}
.badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 5px;border-radius:5px}
.badge.live{background:#0d2f1c;color:#5fe08f}.badge.proxy{background:#2f280d;color:#e0c95f}
.mval{text-align:right;min-width:92px}
.mval .z{font-variant-numeric:tabular-nums;font-weight:700;font-size:14.5px}
.mval .raw{font-size:10.5px;color:var(--faint);margin-top:2px}
.bar{height:5px;border-radius:4px;background:#26324a;margin-top:7px;position:relative;overflow:hidden}
.bar i{position:absolute;top:0;bottom:0;left:50%;width:1px;background:#4a5670;z-index:2}
.bar b{position:absolute;top:0;bottom:0;border-radius:4px}

.score-wrap{text-align:center;padding:6px 0 2px}
.gauge{width:210px;max-width:100%;height:126px;margin:0 auto 4px}
.score-num{font-size:52px;font-weight:800;letter-spacing:-2px}
.score-lbl{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px}
.trend{display:inline-flex;align-items:center;gap:8px;font-size:20px;font-weight:800;margin:12px 0 3px}
.trend .tdot{width:10px;height:10px;border-radius:50%}
.conf{color:var(--muted);font-size:12.5px}.conf b{color:var(--txt)}
.signals{margin-top:16px;display:flex;flex-wrap:wrap;gap:7px}
.chip{background:var(--chip);border:1px solid var(--border);padding:6px 11px;border-radius:20px;font-size:12px;font-weight:600}
.chip.bull{border-color:#1c5232;color:#7ee6a1}.chip.bear{border-color:#5b1f1f;color:#f7a3a3}.chip.div{border-color:#274b7a;color:#8fc4ff}
.analysis{margin-top:16px}
.qrow{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-top:1px solid var(--border);font-size:12.5px}
.qrow .ans{font-weight:700;font-size:11px;padding:3px 9px;border-radius:12px;background:var(--chip)}
.yes{color:var(--bull)}.no{color:var(--bear)}.neu{color:var(--neutral)}

.chartbox{width:100%;overflow-x:auto}
svg.chart{display:block;width:100%;height:auto}
.legend{display:flex;gap:16px;font-size:11px;color:var(--muted);margin-top:8px;flex-wrap:wrap}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:14px;height:3px;border-radius:2px;display:inline-block}
table.bt{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}
table.bt th,table.bt td{padding:7px 8px;text-align:right;border-bottom:1px solid var(--border)}
table.bt th{color:var(--muted);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.5px}
table.bt td:first-child,table.bt th:first-child{text-align:left}
.kpis{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}
.kpi{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:10px 13px;flex:1;min-width:108px}
.kpi .k{font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.5px}
.kpi .v{font-size:17px;font-weight:700;margin-top:3px;font-variant-numeric:tabular-nums}
.mnote{color:var(--faint);font-size:10.5px;margin-top:12px;line-height:1.6;text-align:center}
.banner{background:linear-gradient(90deg,rgba(59,130,246,.12),rgba(34,211,166,.08));border:1px solid #223148;
  border-radius:12px;padding:12px 16px;font-size:12.5px;color:#b9c6dc;margin-bottom:18px;display:flex;gap:10px;align-items:center}
.banner a{color:var(--accent2);font-weight:700}

/* ---- market strip ---- */
.mkt{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:2px 0 14px}
.mkt-price{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.mkt-asof{font-size:11px;font-weight:500;color:var(--faint);letter-spacing:.3px;margin-left:6px}
.mkt-sources{display:flex;gap:6px;flex-wrap:wrap}
.mkt-sources .src{font-size:10px;font-weight:700;text-transform:capitalize;letter-spacing:.3px;padding:3px 9px;border-radius:20px;border:1px solid var(--border);display:flex;align-items:center;gap:5px}
.mkt-sources .src::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--bear)}
.mkt-sources .src.on{color:#8fe6b3;border-color:#1c5232}
.mkt-sources .src.on::before{background:var(--bull);box-shadow:0 0 6px var(--bull)}
.mkt-sources .src.off{color:var(--faint)}

/* ---- premium touches ---- */
.gauge{filter:drop-shadow(0 6px 18px rgba(0,0,0,.35))}
.score-num{font-variant-numeric:tabular-nums}
.trend{text-shadow:0 0 20px currentColor}
.card{transition:border-color .2s}
.chip{transition:transform .12s}
.chip:hover{transform:translateY(-1px)}

/* ---- skeleton loading shimmer ---- */
.card.skel .metric,.card.skel .kpi,.card.skel table.bt,.card.skel .signals,.card.skel .analysis,
.card.skel .score-wrap,.card.skel .chartbox{position:relative;opacity:.5}
.card.skel::after{content:"";position:absolute;inset:0;border-radius:var(--radius);pointer-events:none;
  background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.05) 50%,transparent 80%);
  background-size:200% 100%;animation:shimmer 1.3s infinite}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
