:root { --brand:#1d4ed8; }
* { font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
.nav-item.active { background:#1d4ed8; color:#fff; }
.nav-item.active i { color:#fff; }
table.dt { border-collapse: collapse; width:100%; font-size:13px; }
table.dt th { position:sticky; top:0; background:#1e293b; color:#fff; padding:8px 10px; text-align:left; white-space:nowrap; z-index:1; }
table.dt td { padding:7px 10px; border-bottom:1px solid #e2e8f0; vertical-align:top; }
table.dt tbody tr:hover { background:#eff6ff; }
.num { text-align:right; font-variant-numeric: tabular-nums; white-space:nowrap; }
.scroll-x { overflow:auto; max-height: calc(100vh - 230px); }
.badge { display:inline-block; padding:2px 8px; border-radius:9999px; font-size:11px; font-weight:600; }
.badge-green{background:#dcfce7;color:#166534}.badge-amber{background:#fef3c7;color:#92400e}
.badge-blue{background:#dbeafe;color:#1e40af}.badge-gray{background:#e2e8f0;color:#475569}
.kpi { transition: transform .15s; }
.kpi:hover { transform: translateY(-2px); }
.line-clamp-3 { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.kcard.opacity-40 { opacity:.4; }
/* đảm bảo tailwind không purge các class màu động của kanban */
