/* ═══════════════════════════════════════════════════════════════════════════
   Public Annual Snapshot Dashboard — dedicated styles
   Supplements public-dashboard.css (shared primitives already present:
   pub-dash-section, pub-section-label base, pub-section-desc,
   pub-kpi-bar-wrap/bar, hover lift).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Section label accent colors ─────────────────────────────────────────── */
.pub-section-label--enrollment { color: #0eaaa4; }
.pub-section-label--workforce  { color: #c97a00; }
.pub-section-label--geographic { color: #7d5df0; }

/* ── Section wrapper → card top-border accent via CSS custom property ────── */
.pub-dash-section--enrollment { --section-accent: #0eaaa4; }
.pub-dash-section--workforce  { --section-accent: #c97a00; }
.pub-dash-section--geographic { --section-accent: #7d5df0; }

.pub-dash-section .pub-card--chart {
    border-top: 3px solid var(--section-accent, transparent);
}

/* ── Staggered KPI entrance animation ───────────────────────────────────── */
@keyframes snapKpiIn {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

.pub-kpi-grid .pub-kpi:nth-child(1) { animation: snapKpiIn .35s ease both .05s; }
.pub-kpi-grid .pub-kpi:nth-child(2) { animation: snapKpiIn .35s ease both .10s; }
.pub-kpi-grid .pub-kpi:nth-child(3) { animation: snapKpiIn .35s ease both .15s; }
.pub-kpi-grid .pub-kpi:nth-child(4) { animation: snapKpiIn .35s ease both .20s; }

/* ── Wide chart canvas floor ─────────────────────────────────────────────── */
.pub-card--wide .pub-chart-canvas--geographic,
.pub-card--wide .pub-chart-canvas--trend {
    min-height: 320px;
}

/* ── Section label icons — hide ::before dot when .pub-label-icon present ── */
.pub-section-label--enrollment::before,
.pub-section-label--workforce::before,
.pub-section-label--geographic::before {
    display: none;
}

/* ── Data-pill year dot — live status pulse ──────────────────────────────── */
@keyframes snapPillPulse {
    0%, 100% { opacity: 1;  transform: scale(1); }
    50%       { opacity: .5; transform: scale(.8); }
}

.pub-data-pill-dot {
    animation: snapPillPulse 2.4s ease-in-out infinite;
}
