:root{--sbg-blue:#06f;--sbg-blue-deep:#0047b3;--sbg-blue-soft:#e8f0ff;--sbg-gold:#ffb800;--sbg-gold-deep:#d99700;--sbg-gold-soft:#fff4d6;--bg:#f7f8fa;--surface:#fff;--surface-2:#fafbfc;--surface-hover:#f3f5f8;--border:#e5e8ec;--border-strong:#d4d8de;--ink-1:#0a0e1a;--ink-2:#4a5160;--ink-3:#8189a0;--ink-4:#b0b6c4;--pos:#00a86b;--pos-soft:#e6f7f0;--neg:#e54848;--neg-soft:#fdebeb;--warn:#ff9500;--warn-soft:#fff3e0;--c1:#06f;--c2:#00a86b;--c3:#ffb800;--c4:#8b5cf6;--c5:#ec4899;--c6:#06b6d4;--c7:#f97316;--c8:#64748b;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--shadow-sm:0 1px 2px #0a0e1a0a;--shadow-md:0 4px 12px #0a0e1a0f;--shadow-lg:0 12px 32px #0a0e1a14;--sidebar-w:240px;--topbar-h:60px;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-num:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-display:"Inter", -apple-system, system-ui, sans-serif}[data-theme=dark]{--bg:#0b0e15;--surface:#141823;--surface-2:#1a1f2c;--surface-hover:#1e2330;--border:#262b38;--border-strong:#353a48;--ink-1:#f1f3f7;--ink-2:#b0b6c4;--ink-3:#7a8195;--ink-4:#525968;--sbg-blue-soft:#0d2547;--sbg-gold-soft:#3a2a08;--pos-soft:#0c2a1f;--neg-soft:#2e1414;--warn-soft:#2e2008}*{box-sizing:border-box}html,body{font-family:var(--font-ui);color:var(--ink-1);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:13px;line-height:1.5}button{font-family:inherit;font-size:inherit;cursor:pointer;color:inherit;background:0 0;border:none}.num{font-family:var(--font-num);font-feature-settings:"tnum"}.app{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-brand{border-bottom:1px solid var(--border);height:var(--topbar-h);align-items:center;gap:10px;padding:16px 20px;display:flex}.brand-logo{background:linear-gradient(135deg, var(--sbg-blue), var(--sbg-blue-deep));color:#fff;border-radius:8px;flex-shrink:0;place-items:center;width:30px;height:30px;display:grid}.brand-name{letter-spacing:-.01em;font-size:14px;font-weight:700}.brand-name .sub{color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:500;display:block}.nav-section{padding:16px 12px 8px}.nav-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:0 8px 8px;font-size:10px;font-weight:600}.nav-item{border-radius:var(--r-md);color:var(--ink-2);cursor:pointer;text-align:left;align-items:center;gap:10px;width:100%;padding:8px 10px;font-weight:500;transition:background .12s,color .12s;display:flex}.nav-item:hover{background:var(--surface-hover);color:var(--ink-1)}.nav-item.active{background:var(--sbg-blue-soft);color:var(--sbg-blue)}.nav-item .nav-icon{flex-shrink:0;width:16px;height:16px}.nav-item .badge{background:var(--surface-2);color:var(--ink-3);border-radius:4px;margin-left:auto;padding:2px 6px;font-size:10px;font-weight:600}.nav-item.active .badge{background:var(--sbg-blue);color:#fff}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding:12px}.user-card{border-radius:var(--r-md);align-items:center;gap:10px;padding:8px;display:flex}.avatar{color:#fff;background:linear-gradient(135deg,#f59e0b,#ef4444);border-radius:50%;place-items:center;width:30px;height:30px;font-size:12px;font-weight:600;display:grid}.user-meta{flex:1;min-width:0}.user-name{font-size:12px;font-weight:600}.user-role{color:var(--ink-3);font-size:11px}.main{min-width:0}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:1px solid var(--border);z-index:5;align-items:center;gap:16px;padding:0 24px;display:flex;position:sticky;top:0}.crumbs{color:var(--ink-3);align-items:center;gap:8px;font-size:12px;display:flex}.crumbs .here{color:var(--ink-1);font-weight:600}.topbar-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.search{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--ink-3);align-items:center;gap:8px;width:240px;padding:6px 10px;font-size:12px;display:flex}.search input{color:var(--ink-1);font-family:inherit;font-size:inherit;background:0 0;border:none;outline:none;flex:1}.search kbd{font-family:var(--font-num);background:var(--surface);border:1px solid var(--border);color:var(--ink-3);border-radius:4px;padding:2px 6px;font-size:10px}.btn{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--ink-1);align-items:center;gap:6px;padding:7px 12px;font-size:12px;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn.primary{background:var(--ink-1);color:var(--surface);border-color:var(--ink-1)}.btn.primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn.icon{justify-content:center;width:30px;height:30px;padding:7px}.btn.subtle{border-color:#0000}.btn.subtle:hover{background:var(--surface-hover)}.refresh-pill{background:var(--pos-soft);color:var(--pos);border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 8px;font-size:11px;font-weight:600;display:inline-flex}.refresh-dot{background:var(--pos);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.page{max-width:1600px;margin:0 auto;padding:20px 24px 80px}.page-header{align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-title{letter-spacing:-.02em;margin:0 0 4px;font-size:22px;font-weight:700}.page-subtitle{color:var(--ink-3);margin:0;font-size:13px}.page-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.filter-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;padding:10px 12px;display:flex}.filter-label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;padding-right:4px;font-size:11px;font-weight:600}.filter{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;color:var(--ink-1);align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:500;display:inline-flex}.filter:hover{border-color:var(--border-strong)}.filter.active{background:var(--sbg-blue-soft);border-color:var(--sbg-blue);color:var(--sbg-blue)}.filter .chev{color:var(--ink-3)}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);gap:2px;padding:2px;display:inline-flex}.seg button{color:var(--ink-2);border-radius:6px;padding:4px 10px;font-size:11px;font-weight:600}.seg button.active{background:var(--surface);color:var(--ink-1);box-shadow:var(--shadow-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.card-pad{padding:16px}.card-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:14px 16px;display:flex}.card-title{margin:0;font-size:13px;font-weight:600}.card-subtitle{color:var(--ink-3);margin:2px 0 0;font-size:11px}.card-actions{gap:4px;margin-left:auto;display:flex}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;position:relative;overflow:hidden}.kpi-label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.kpi-value{font-size:28px;font-weight:700;font-family:var(--font-num);letter-spacing:-.02em;color:var(--ink-1);line-height:1}.kpi-value .unit{color:var(--ink-3);margin-left:2px;font-size:16px;font-weight:500}.kpi-meta{align-items:center;gap:8px;margin-top:10px;font-size:11px;display:flex}.delta{font-weight:600;font-family:var(--font-num);border-radius:4px;align-items:center;gap:2px;padding:2px 6px;font-size:11px;display:inline-flex}.delta.pos{background:var(--pos-soft);color:var(--pos)}.delta.neg{background:var(--neg-soft);color:var(--neg)}.delta.flat{background:var(--surface-hover);color:var(--ink-3)}.kpi-vs{color:var(--ink-3)}.kpi-spark{height:32px;margin-top:10px}.kpi.status-pos{box-shadow:inset 3px 0 0 var(--pos)}.kpi.status-neg{box-shadow:inset 3px 0 0 var(--neg)}.kpi.status-warn{box-shadow:inset 3px 0 0 var(--warn)}.tbl{border-collapse:collapse;width:100%;font-size:12px}.tbl th{text-align:left;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap;padding:10px 12px;font-size:11px;font-weight:600;position:sticky;top:0}.tbl th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tbl th.sortable:hover{color:var(--ink-1)}.tbl th .sort-arrow{color:var(--ink-4);margin-left:4px;font-size:9px}.tbl th.sorted .sort-arrow{color:var(--sbg-blue)}.tbl td{border-bottom:1px solid var(--border);color:var(--ink-1);vertical-align:middle;padding:10px 12px}.tbl tr:hover td{background:var(--surface-2)}.tbl tr:last-child td{border-bottom:none}.tbl .right{text-align:right;font-family:var(--font-num);font-feature-settings:"tnum"}.tbl .center{text-align:center}.tbl tfoot td{background:var(--surface-2);border-top:2px solid var(--border-strong);border-bottom:none;font-weight:700}.heat-bar{font-family:var(--font-num);text-align:right;border-radius:4px;min-width:44px;padding:2px 6px;font-size:11px;font-weight:600;display:inline-block;position:relative}.chart-wrap{padding:8px 12px 12px}.legend{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:14px;font-size:11px;display:flex}.legend-dot{vertical-align:0;border-radius:2px;width:8px;height:8px;margin-right:6px;display:inline-block}.legend-item{align-items:center;display:inline-flex}.tooltip{background:var(--ink-1);color:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-lg);border:1px solid var(--ink-2);padding:8px 10px;font-size:11px}.tooltip .tt-label{color:var(--ink-4);margin-bottom:4px;font-weight:600}.tooltip .tt-row{justify-content:space-between;gap:12px;display:flex}.tooltip .tt-row .num{color:var(--surface);font-weight:600}.grid{gap:12px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-5{grid-template-columns:repeat(5,1fr)}.grid-6{grid-template-columns:repeat(6,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}@media (max-width:1280px){.grid-5,.grid-6{grid-template-columns:repeat(3,1fr)}}.hub-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);cursor:pointer;text-align:left;flex-direction:column;gap:10px;width:100%;padding:18px;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.hub-tile:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-2px)}.hub-tile-icon{border-radius:10px;flex-shrink:0;place-items:center;width:36px;height:36px;display:grid}.hub-tile-name{letter-spacing:-.01em;margin:0;font-size:14px;font-weight:700}.hub-tile-desc{color:var(--ink-3);margin:0;font-size:12px;line-height:1.5}.hub-tile-stat{border-top:1px dashed var(--border);font-family:var(--font-num);align-items:baseline;gap:6px;margin-top:auto;padding-top:8px;display:flex}.hub-tile-stat .val{font-size:16px;font-weight:700}.hub-tile-stat .label{color:var(--ink-3);font-size:11px;font-family:var(--font-ui)}.state-pill{background:var(--surface-2);color:var(--ink-2);font-size:10px;font-weight:700;font-family:var(--font-num);border-radius:4px;align-items:center;padding:2px 7px;display:inline-flex}.state-pill.NSW{color:#0052cc;background:#e8f0ff}.state-pill.VIC{color:#6b3fc7;background:#ede8ff}.state-pill.QLD{color:#c05621;background:#fff0e8}.state-pill.SA{color:#b03060;background:#fde8ee}.state-pill.WA{color:#946800;background:#fff7d6}.state-pill.TAS{color:#1f7a4d;background:#e6f5ee}.state-pill.ACT{color:#1d6986;background:#e8f3f7}[data-theme=dark] .state-pill{color:var(--ink-2);background:#1e2330}.tag{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border);border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.tag.pos{background:var(--pos-soft);color:var(--pos);border-color:#0000}.tag.neg{background:var(--neg-soft);color:var(--neg);border-color:#0000}.tag.warn{background:var(--warn-soft);color:var(--warn);border-color:#0000}.progress{background:var(--surface-hover);border-radius:999px;height:6px;position:relative;overflow:hidden}.progress-fill{background:var(--sbg-blue);border-radius:999px;height:100%;transition:width .4s}.progress-fill.pos{background:var(--pos)}.progress-fill.warn{background:var(--warn)}.progress-fill.neg{background:var(--neg)}.cal{grid-template-columns:repeat(7,1fr);gap:4px;font-size:11px;display:grid}.cal-head{text-align:center;color:var(--ink-3);text-transform:uppercase;padding:4px;font-size:10px;font-weight:600}.cal-cell{aspect-ratio:1.2;border-radius:var(--r-sm);background:var(--surface-2);cursor:pointer;border:1px solid #0000;flex-direction:column;gap:2px;padding:6px;transition:transform .12s;display:flex}.cal-cell:hover{border-color:var(--border-strong);transform:scale(1.05)}.cal-cell.empty{cursor:default;background:0 0}.cal-cell.empty:hover{border-color:#0000;transform:none}.cal-day{color:var(--ink-3);font-size:10px;font-weight:600}.cal-num{font-size:14px;font-weight:700;font-family:var(--font-num);margin-top:auto}.drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0a0e1a66;animation:.2s fade-in;position:fixed;inset:0}.drawer{background:var(--surface);border-left:1px solid var(--border);z-index:101;width:480px;max-width:90vw;box-shadow:var(--shadow-lg);flex-direction:column;animation:.24s cubic-bezier(.2,.8,.2,1) slide-in;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:16px 20px;display:flex}.drawer-body{flex:1;padding:20px;overflow-y:auto}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}.row{align-items:center;display:flex}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.flex-1{flex:1}.text-muted{color:var(--ink-3)}.text-num{font-family:var(--font-num)}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.recharts-cartesian-axis-tick-value{fill:var(--ink-3);font-size:10px}.recharts-cartesian-grid line{stroke:var(--border)}.recharts-default-tooltip{background:var(--ink-1)!important;border-radius:var(--r-md)!important;box-shadow:var(--shadow-lg)!important;border:none!important}.recharts-tooltip-label{color:var(--ink-4)!important;font-size:11px!important}.recharts-tooltip-item{color:var(--surface)!important;font-size:12px!important}
