.num { text-align: right !important; font-variant-numeric: tabular-nums; white-space: nowrap; }
.neg { color: #cc0f35; }
.muted { color: #7a7a7a; }
.nowrap { white-space: nowrap; }
.table-wrap { overflow-x: auto; }
.table td, .table th { vertical-align: middle; }
.table.is-narrow td, .table.is-narrow th { font-size: 0.875rem; }
.columns > .column > .box:only-child { height: 100%; }
.kpi { display: flex; flex-direction: column; }
.kpi .heading { margin-bottom: 0.25rem; }
.kpi .is-size-7 { margin-top: auto; }
.schedule { display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; }
.kpi .title { font-variant-numeric: tabular-nums; }
.chart { width: 100%; height: 260px; display: block; }
.chart text { font-size: 11px; fill: #7a7a7a; }
.chart .grid { stroke: #ededed; }
.legend { display: flex; gap: 1rem; font-size: 0.8rem; flex-wrap: wrap; }
.legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 4px; }
.chart-tip { position: fixed; pointer-events: none; background: rgba(20, 22, 26, 0.92); color: #fff; padding: 6px 8px; border-radius: 4px; font-size: 12px; z-index: 50; white-space: nowrap; }
#toast { position: fixed; right: 1rem; bottom: 1rem; z-index: 100; max-width: 420px; }
.filters .field { margin-bottom: 0; }
.filters { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: flex-end; margin-bottom: 1rem; }
.planned small { display: block; color: #7a7a7a; }
tr.excluded td { opacity: 0.45; }
tr.excluded td:first-child { opacity: 1; }

.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: #f5f5f5; }
.login-box { width: min(380px, 92vw); }
