.spinner { display:inline-block; width:14px; height:14px; border:2px solid #cbd5e1;
  border-top-color:#1d4ed8; border-radius:50%; animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

table.dataTable thead th {
  position: sticky; top:0; background:#f8fafc; font-weight:600;
  font-size:0.78rem; text-transform: uppercase; letter-spacing: 0.04em;
  color:#475569; border-bottom:1px solid #e2e8f0; cursor: pointer;
}
table.dataTable tbody td { font-size:0.85rem; }
table.dataTable.compact tbody tr:hover { background:#f1f5f9; }
table.dataTable .trend-Up { background:#dcfce7; color:#166534; font-weight:600; }
table.dataTable .trend-Down { background:#fee2e2; color:#991b1b; font-weight:600; }
table.dataTable .trend-Sideways { background:#f1f5f9; color:#475569; font-weight:600; }

.kpi-card { background:#fff; border:1px solid #e2e8f0; border-radius:8px; padding:12px 16px; }
.kpi-label { font-size:0.7rem; color:#64748b; text-transform:uppercase; letter-spacing:0.05em; }
.kpi-value { font-size:1.4rem; font-weight:600; }

.bar-row { display:flex; align-items:center; gap:6px; font-size:0.8rem; }
.bar-track { flex:1; height:8px; background:#e2e8f0; border-radius:4px; overflow:hidden; }
.bar-fill  { height:100%; background:#1d4ed8; }

.heat-cell {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:6px 4px; border-radius:4px; font-size:0.7rem; color:#fff; min-height:54px;
}
.heat-cell .sym { font-weight:600; font-size:0.78rem; }
.heat-cell .pct { font-size:0.66rem; opacity:0.9; }

.scan-list { background:#fff; border:1px solid #e2e8f0; border-radius:8px; max-height: 70vh; overflow-y: auto; }
.scan-cat { padding: 8px 12px; font-size:0.7rem; color:#64748b; text-transform:uppercase;
            letter-spacing:0.05em; font-weight:600; border-top:1px solid #f1f5f9; }
.scan-cat:first-child { border-top: none; }
.scan-item { display:block; padding:6px 12px; font-size:0.85rem; color:#475569;
             border-left:3px solid transparent; }
.scan-item:hover { background:#f8fafc; color:#1d4ed8; }
.scan-item.active { background:#eff6ff; color:#1d4ed8; border-left-color:#1d4ed8; font-weight:600; }
