/* EduTrack Part 3 dashboard presentation layer. Visual-only: existing data, IDs, handlers and calculations are unchanged. */
.dashboard-grid,.kpi-grid,.dpc-kpi-grid,.doo-kpi-grid,.dto-kpi-grid,.ddmo-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:var(--et-space-4)!important;margin-bottom:var(--et-space-6)!important}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}.kpi-tile,.stat-card{position:relative;overflow:hidden;border:1px solid var(--et-color-border)!important;border-radius:var(--et-radius-md)!important;background:var(--et-color-surface)!important;box-shadow:var(--et-shadow-sm)!important;padding:var(--et-space-5)!important;min-height:126px;transition:transform var(--et-duration-fast) var(--et-ease-out),box-shadow var(--et-duration-fast) ease,border-color var(--et-duration-fast) ease!important}.kpi-tile::after,.stat-card::after{content:'';position:absolute;inset:auto 0 0;height:3px;background:var(--et-color-primary);opacity:.75}.kpi-tile:hover,.stat-card:hover{transform:translateY(-2px);box-shadow:var(--et-shadow-md)!important;border-color:#c5d3e3!important}.kpi-tile .kpi-num,.stat-card .stat-value{font-family:var(--et-font-mono)!important;font-size:clamp(1.45rem,3vw,2rem)!important;line-height:1.1!important;font-weight:700!important;color:var(--et-color-text)!important}.kpi-tile .kpi-label,.stat-card .stat-label{margin-top:var(--et-space-2)!important;color:var(--et-color-text-muted)!important;font-size:.76rem!important;font-weight:700!important;letter-spacing:.02em}.stat-card .stat-icon{width:40px!important;height:40px!important;border-radius:var(--et-radius-sm)!important;margin-bottom:var(--et-space-3)}.kpi-tile.blue::after,.stat-card.blue::after{background:var(--et-color-info)}.kpi-tile.gold::after,.stat-card.gold::after{background:var(--et-color-accent)}.kpi-tile.green::after,.stat-card.green::after{background:var(--et-color-success)}.kpi-tile.red::after,.stat-card.red::after{background:var(--et-color-danger)}.kpi-tile.teal::after,.stat-card.teal::after{background:var(--et-color-primary)}
.card{border:1px solid var(--et-color-border)!important;border-radius:var(--et-radius-md)!important;background:var(--et-color-surface)!important;box-shadow:var(--et-shadow-sm)!important}.card:hover{box-shadow:var(--et-shadow-md)!important}.card-header{padding:var(--et-space-5) var(--et-space-6)!important;border-bottom:1px solid var(--et-color-border)!important}.card-header h2,.card-header h3{font-family:var(--et-font-display)!important;color:var(--et-color-text)!important;letter-spacing:-.015em}.card-header p{color:var(--et-color-text-muted)!important}.card-body{padding:var(--et-space-6)!important}.page-title{display:flex;align-items:center;gap:var(--et-space-3);font-family:var(--et-font-display)!important;font-weight:700!important}.announcement{border:1px solid #c7e4e7!important;border-left:4px solid var(--et-color-primary)!important;border-radius:var(--et-radius-sm)!important;background:#f0fbfc!important;color:var(--et-color-text-secondary)!important;padding:var(--et-space-4) var(--et-space-5)!important;line-height:1.5!important;margin-bottom:var(--et-space-6)!important}.alert,.alert-success,.alert-danger,.alert-info,.alert-warning{border-radius:var(--et-radius-sm)!important;padding:var(--et-space-4) var(--et-space-5)!important;line-height:1.5!important}.tbl-wrap,.table-wrap{border:1px solid var(--et-color-border);border-radius:var(--et-radius-sm);overflow:auto;background:var(--et-color-surface)}.tbl-wrap table,.table-wrap table{min-width:620px}.tbl-wrap th,.table-wrap th{background:#f8fafc!important;color:var(--et-color-text-secondary)!important;font-size:.72rem!important;letter-spacing:.04em;text-transform:uppercase}.tbl-wrap td,.table-wrap td{color:var(--et-color-text-secondary)}.quick-actions,.quick-action-grid,.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:var(--et-space-3)}.quick-actions>* ,.quick-action-grid>*,.action-grid>*{min-height:var(--et-touch-target);border:1px solid var(--et-color-border)!important;border-radius:var(--et-radius-sm)!important;background:var(--et-color-surface)!important;transition:border-color var(--et-duration-fast) ease,background-color var(--et-duration-fast) ease,transform var(--et-duration-fast) var(--et-ease-out)!important}.quick-actions>*:hover,.quick-action-grid>*:hover,.action-grid>*:hover{border-color:var(--et-color-primary)!important;background:rgba(14,124,134,.05)!important;transform:translateY(-1px)}.empty-state,.empty-state-card,.no-data,.loading-state,.error-state{border:1px dashed var(--et-color-border);border-radius:var(--et-radius-md);background:var(--et-color-surface);padding:var(--et-space-8);text-align:center;color:var(--et-color-text-muted);line-height:1.55}.empty-state h3,.empty-state-card h3,.no-data h3{font-family:var(--et-font-display);color:var(--et-color-text);margin-bottom:var(--et-space-2)}.loading-state{background:linear-gradient(90deg,#fff 25%,#f4f7fb 50%,#fff 75%);background-size:200% 100%;animation:et-dashboard-shimmer 1.4s ease-in-out infinite}@keyframes et-dashboard-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}.error-state{border-color:#f1c7c3;background:#fff8f7;color:#8b342b}.dashboard-chart,.chart-card,.chart-container{min-width:0;overflow:hidden;border-radius:var(--et-radius-md)}canvas{max-width:100%}@media(max-width:700px){.dashboard-grid,.kpi-grid,.dpc-kpi-grid,.doo-kpi-grid,.dto-kpi-grid,.ddmo-kpi-grid{grid-template-columns:1fr 1fr!important;gap:var(--et-space-3)!important}.kpi-tile,.stat-card{min-height:112px!important;padding:var(--et-space-4)!important}.kpi-tile .kpi-num,.stat-card .stat-value{font-size:1.35rem!important}.card-header,.card-body{padding:var(--et-space-4)!important}.quick-actions,.quick-action-grid,.action-grid{grid-template-columns:1fr!important}.tbl-wrap table,.table-wrap table{min-width:560px}}@media(max-width:380px){.dashboard-grid,.kpi-grid,.dpc-kpi-grid,.doo-kpi-grid,.dto-kpi-grid,.ddmo-kpi-grid{grid-template-columns:1fr!important}.kpi-tile,.stat-card{min-height:104px!important}.announcement{padding:var(--et-space-3) var(--et-space-4)!important}}@media(prefers-reduced-motion:reduce){.kpi-tile,.stat-card,.quick-actions>*,.quick-action-grid>*,.action-grid>*{transition:none!important}.loading-state{animation:none}}
