/* BI Dashboard — extends design-system */
.report-dashboard{
  margin-top:var(--space-8,32px);padding:var(--space-6,24px);
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg,16px);
  box-shadow:var(--shadow-sm);
  animation:dashIn .5s cubic-bezier(0.16,1,0.3,1) both;
}
@keyframes dashIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.dash-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}
.dash-head h2{font-size:var(--text-lg,18px);font-weight:600;color:var(--text-primary);letter-spacing:-0.02em}
.dash-head p{font-size:var(--text-sm,14px);color:var(--text-muted);margin-top:var(--space-1)}
.dash-live{
  display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs,12px);
  color:var(--pass-soft);font-family:var(--font-mono);padding:4px 10px;
  border:1px solid var(--pass-border);border-radius:var(--radius-full);background:var(--pass-bg);
}
.dash-live-dot{width:5px;height:5px;border-radius:50%;background:var(--pass);animation:dashPulse 1.8s ease-in-out infinite}
@keyframes dashPulse{0%,100%{opacity:1}50%{opacity:.45}}
.dash-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin-bottom:var(--space-4)}
.dash-kpi{padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface);min-width:0}
.dash-kpi-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:var(--space-2);font-weight:500}
.dash-kpi-value{font-size:var(--text-2xl,28px);font-weight:600;font-family:var(--font-mono);color:var(--text-primary);line-height:1.1;letter-spacing:-0.02em}
.dash-kpi-value.pass{color:var(--pass-soft)}.dash-kpi-value.warn{color:var(--warn-soft)}.dash-kpi-value.error{color:var(--error-soft)}
.dash-kpi-sub{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-1)}
.dash-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:var(--space-3);margin-bottom:var(--space-3)}
.dash-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
.dash-panel{padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface);min-height:260px;display:flex;flex-direction:column}
.dash-panel-title{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-3);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}
.dash-panel-title span{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono)}
.dash-chart-wrap{position:relative;flex:1;min-height:200px;display:flex;align-items:center;justify-content:center}
.dash-chart-wrap canvas{max-height:240px}
.dash-issues{margin-top:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface)}
.dash-issues h3{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-3)}
.dash-issue-list{display:flex;flex-direction:column;gap:var(--space-2)}
.dash-issue-item{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);align-items:start;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);border:1px solid var(--border)}
.dash-issue-item.err{background:var(--error-bg);border-color:var(--error-border)}
.dash-issue-item.warn{background:var(--warn-bg);border-color:var(--warn-border)}
.dash-issue-pill{font-size:0.625rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-full);font-family:var(--font-mono);text-transform:uppercase}
.dash-issue-pill.err{background:var(--error);color:#fff}
.dash-issue-pill.warn{background:var(--warn);color:#1c1917}
.dash-issue-cat{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap}
@media(max-width:960px){.dash-kpis{grid-template-columns:repeat(2,1fr)}.dash-grid,.dash-grid-2{grid-template-columns:1fr}.dash-panel{min-height:220px}}
