*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{min-height:100dvh;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--color-bg,#0b0b0f);color:var(--color-fg,#f4f4f6)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--color-accent,#a855f7);outline-offset:2px}.skip-link{position:absolute;left:-999px;top:0;padding:8px 12px;background:var(--color-accent,#a855f7);color:#fff;z-index:10}.skip-link:focus{left:8px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;border-bottom:1px solid var(--color-border,#26262e)}.app-brand{font-weight:700;letter-spacing:.02em}.app-main{padding:20px;max-width:1120px;margin:0 auto;width:100%}.app-footer{padding:20px;text-align:center;opacity:.6}.offline-banner{padding:8px 16px;text-align:center;background:#7a2e2e;color:#fff}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:12px;gap:12px}.kpi-card{display:flex;flex-direction:column;gap:4px}.kpi-value{font-size:1.5rem;font-weight:700}.kpi-label{font-size:.85rem;opacity:.8}.kpi-delta.up{color:#5bd68a}.kpi-delta.down{color:#ff8a8a}.data-table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:.9rem}table.data-table caption{text-align:left;padding:6px 0;opacity:.8}table.data-table td,table.data-table th{padding:8px 10px;border-bottom:1px solid var(--color-border,#26262e);text-align:right}table.data-table td:first-child,table.data-table th:first-child{text-align:left}.chart-svg{width:100%;height:auto;display:block}.chart-bar{fill:var(--color-accent,#a855f7)}.filters-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:16px}.section{margin-block:24px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.login-card{max-width:380px;margin:48px auto}.login-card h1{font-size:1.35rem;margin:0 0 8px}.login-lead{color:var(--color-text-muted,#9a9aa6);font-size:.9rem;margin:0 0 20px}.login-alert{color:#ffb4b4;font-size:.85rem;margin:12px 0 0}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.login-divider{color:var(--color-text-muted,#9a9aa6);font-size:.8rem;text-align:center;margin:20px 0 12px}.login-social{display:grid;grid-gap:8px;gap:8px}