:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color-scheme:dark;--bg:#0b1018;--side:#101722;--card:#141c28;--card2:#192230;--stroke:#293342;--text:#eaf0f8;--muted:#8e9bad;--subtle:#667487;--accent:#f67434;--accent2:#ffa44e;--positive:#40c69a;--negative:#ff6d70;--blue:#5da9f6;--shadow:0 18px 45px rgba(0,0,0,.12)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.hidden{display:none!important}body.light{color-scheme:light;--bg:#f4f6fa;--side:#fff;--card:#fff;--card2:#f7f9fc;--stroke:#e4e8ef;--text:#172336;--muted:#637286;--subtle:#8894a5;--shadow:0 12px 30px rgba(23,38,59,.05)}
.app{min-height:100vh;display:flex}.sidebar{width:252px;flex-shrink:0;background:var(--side);border-right:1px solid var(--stroke);padding:28px 17px 18px;display:flex;flex-direction:column;position:sticky;height:100vh;top:0;z-index:40}.brandmark{display:flex;align-items:center;gap:12px;padding:1px 10px 31px}.brand-icon{width:39px;height:39px;border-radius:12px;background:linear-gradient(145deg,#ff9b4e,#ec6029);color:#fff;font-size:23px;font-weight:900;display:grid;place-items:center;letter-spacing:-4px;box-shadow:0 9px 24px rgba(245,109,49,.22)}.brand-dot{color:#252e39}.brandmark b{display:block;font-size:15px;font-weight:850;letter-spacing:1.3px}.brandmark small{font-size:8px;letter-spacing:1.4px;display:block;color:var(--muted);font-weight:700;margin-top:5px}.nav-label{font-size:10px;font-weight:800;letter-spacing:1.5px;color:var(--subtle);margin:18px 14px 13px}nav{display:flex;flex-direction:column;gap:5px}.navbtn{display:flex;align-items:center;gap:13px;padding:13px 12px;color:var(--muted);border:1px solid transparent;border-radius:11px;background:transparent;text-align:left;font-size:12px;font-weight:640;transition:.15s}.navbtn:hover{color:var(--text);background:var(--card2)}.navbtn.active{background:rgba(246,116,52,.105);border-color:rgba(246,116,52,.16);color:var(--accent);font-weight:800}.ni{font-size:20px;width:20px;text-align:center;font-weight:400}.side-bottom{margin-top:auto}.source-status{display:flex;gap:11px;align-items:flex-start;background:var(--card);border:1px solid var(--stroke);border-radius:12px;padding:14px 12px;margin:0 3px 15px}.source-status b,.source-status small{display:block;font-size:11px}.source-status small{color:var(--muted);margin-top:5px;line-height:1.4;font-size:10px}.pulse{width:9px;height:9px;flex-shrink:0;background:var(--subtle);border-radius:100%;margin-top:3px;box-shadow:0 0 0 4px rgba(136,148,165,.12)}.pulse.ok{background:var(--positive);box-shadow:0 0 0 4px rgba(64,198,154,.13)}.pulse.warn{background:var(--accent2);box-shadow:0 0 0 4px rgba(255,164,78,.12)}.sidebar-profile{border-top:1px solid var(--stroke);padding:17px 2px 0;display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;border-radius:10px;background:#284455;display:grid;place-items:center;color:#c6efef;font-weight:800}.profile-names{flex:1;min-width:0}.profile-names b,.profile-names small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile-names b{font-size:11px}.profile-names small{font-size:10px;color:var(--muted);margin-top:3px}.icon-button{background:transparent;border:0;color:var(--muted);padding:9px;font-size:21px;border-radius:8px}.icon-button:hover,.light-switch:hover{background:var(--card2)}.workspace{flex:1;min-width:0}.topbar{height:76px;border-bottom:1px solid var(--stroke);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.breadcrumb{font-size:10px;font-weight:750;color:var(--subtle);letter-spacing:1.2px}.breadcrumb span{padding:0 13px;color:var(--stroke)}.breadcrumb b{color:var(--text)}.top-actions{display:flex;gap:23px;align-items:center}.read-time{color:var(--muted);font-size:11px}.light-switch{border:1px solid var(--stroke);background:var(--card);border-radius:10px;color:var(--muted);font-size:17px;width:37px;height:37px}.facility-badge{font-size:10px;font-weight:900;letter-spacing:1px;border:1px solid rgba(246,116,52,.27);background:rgba(246,116,52,.07);color:var(--accent);padding:10px 13px;border-radius:9px}.main-shell{max-width:1720px;margin:0 auto;padding:35px 38px 24px}.heading-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:16px}.eyebrow{font-size:10px;color:var(--accent);font-weight:900;letter-spacing:2px;display:flex;align-items:center;gap:8px}.orange-slash{width:4px;height:13px;background:var(--accent);transform:skew(-20deg);display:inline-block}h1{font-size:30px;font-weight:860;letter-spacing:-1px;margin:10px 0 5px}.title-dot{color:var(--accent)}.heading-row p{margin:0;color:var(--muted);font-size:12px}.mode-badge{font-size:10px;font-weight:850;letter-spacing:1px;padding:10px 13px;background:rgba(64,198,154,.08);color:var(--positive);border:1px solid rgba(64,198,154,.2);border-radius:100px;white-space:nowrap}.mode-badge.preview{background:rgba(255,164,78,.10);border-color:rgba(255,164,78,.23);color:var(--accent2)}.filterbar{border:1px solid var(--stroke);background:var(--card);padding:15px 18px 17px;border-radius:14px;margin-bottom:20px}.filter-title{font-size:11px;letter-spacing:.4px;color:var(--text);font-weight:800;margin-bottom:13px}.filter-title span{font-size:19px;color:var(--accent);vertical-align:middle;margin-right:7px}.filters{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.filters label{display:flex;flex-direction:column;gap:7px;color:var(--subtle);font-size:9px;font-weight:850;letter-spacing:.9px}.filters input,.filters select{color:var(--text);background:var(--bg);border:1px solid var(--stroke);border-radius:9px;min-height:38px;padding:0 9px;font-size:11px;width:100%;outline:none}.filters input:focus,.filters select:focus{border-color:var(--accent)}.filters select{cursor:pointer}.filters input::-webkit-calendar-picker-indicator{filter:grayscale(1);opacity:.6}.message-banner{padding:13px 17px;border-radius:12px;color:#f7ba84;background:rgba(246,116,52,.09);border:1px solid rgba(246,116,52,.25);font-size:12px;margin-bottom:18px;line-height:1.6}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.metric{background:var(--card);border:1px solid var(--stroke);border-radius:14px;padding:20px 19px;position:relative;min-height:149px;overflow:hidden}.metric:before{content:"";position:absolute;right:0;top:0;width:110px;height:110px;border-radius:100%;background:radial-gradient(circle,rgba(246,116,52,.08),transparent 65%);transform:translate(44px,-44px)}.metric .m-label{font-size:11px;color:var(--muted);font-weight:650}.metric .m-value{font-size:30px;letter-spacing:-1px;font-weight:830;margin:13px 0 7px}.metric .m-note{color:var(--subtle);font-size:10px}.metric .m-icon{position:absolute;right:18px;top:17px;color:var(--accent);font-size:19px;background:rgba(246,116,52,.11);border-radius:8px;width:31px;height:31px;display:grid;place-items:center}.metric.positive .m-icon{color:var(--positive);background:rgba(64,198,154,.10)}.metric.blue .m-icon{color:var(--blue);background:rgba(93,169,246,.10)}.metric.warn .m-icon{color:var(--accent2);background:rgba(255,164,78,.10)}.panel-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:18px;margin-bottom:18px}.panel-grid.equal{grid-template-columns:1fr 1fr}.panel{background:var(--card);border:1px solid var(--stroke);border-radius:14px;padding:20px;min-width:0}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:17px}.panel h3{font-size:13px;font-weight:850;margin:0 0 7px}.panel .sub{font-size:11px;color:var(--muted);margin:0;line-height:1.55}.panel-pill{font-size:9px;color:var(--muted);border:1px solid var(--stroke);border-radius:100px;padding:7px 9px;white-space:nowrap}.chart-wrap{height:240px;position:relative}.chart-wrap svg{width:100%;height:100%;overflow:visible}.empty-chart{height:100%;display:flex;justify-content:center;align-items:center;color:var(--subtle);font-size:12px}.zone-row{margin-bottom:17px}.zone-row:last-child{margin:0}.zone-row-top{display:flex;justify-content:space-between;font-size:11px;margin-bottom:9px}.zone-row-top b{font-size:11px}.zone-row-top span{color:var(--muted)}.track{width:100%;height:8px;border-radius:100px;background:var(--bg);overflow:hidden}.track span{display:block;height:100%;background:linear-gradient(90deg,#f16632,#ffac55);border-radius:100px}.minor-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--stroke)}.minor-stats b,.minor-stats small{display:block}.minor-stats b{font-size:21px}.minor-stats small{font-size:10px;color:var(--muted);margin-top:4px}.mini-list{display:flex;flex-direction:column;gap:13px}.mini-row{display:flex;align-items:center;gap:12px}.mini-row .bar-name{width:94px;flex:none;color:var(--muted);font-size:11px}.mini-row .track{flex:1}.mini-row .n{width:64px;text-align:right;font-size:11px;font-weight:800}.table-shell{overflow:auto;border-radius:11px;border:1px solid var(--stroke)}table{width:100%;border-collapse:collapse;white-space:nowrap}th{color:var(--subtle);font-size:10px;text-transform:uppercase;letter-spacing:.85px;text-align:left;font-weight:850;background:var(--card2)}th,td{padding:13px 16px;border-bottom:1px solid var(--stroke)}td{color:var(--muted);font-size:11px}tbody tr:last-child td{border:0}tbody tr:hover{background:rgba(128,144,160,.06)}td strong{color:var(--text);font-size:11px}.number{text-align:right;font-variant-numeric:tabular-nums}.orange{color:var(--accent)!important}.good{color:var(--positive)!important}.bad{color:var(--negative)!important}.label-chip{display:inline-block;background:var(--card2);border:1px solid var(--stroke);padding:5px 8px;border-radius:6px;font-size:10px}.label-chip.warn{border-color:rgba(255,164,78,.25);color:var(--accent2);background:rgba(255,164,78,.09)}.label-chip.good{border-color:rgba(64,198,154,.25);background:rgba(64,198,154,.08)}.street-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.street-card{border:1px solid var(--stroke);background:var(--card);border-radius:12px;padding:17px;text-align:left;color:var(--text);transition:.15s}.street-card:hover{transform:translateY(-2px);border-color:rgba(246,116,52,.55)}.street-card .street-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.street-card strong{font-size:12px}.street-card small{font-size:9px;color:var(--muted)}.street-card .street-pkg{font-size:26px;font-weight:850;letter-spacing:-.6px;margin:11px 0}.street-card .street-pkg span{font-size:10px;font-weight:500;color:var(--muted)}.street-card .street-foot{display:flex;justify-content:space-between;margin-top:13px;color:var(--muted);font-size:10px}.street-card.empty-street{opacity:.75}.street-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.street-card.overcapacity{border-color:rgba(255,109,112,.52)}.street-card.overcapacity .street-foot span:last-child{color:var(--negative);font-weight:800}.small-btn{border:1px solid var(--stroke);background:var(--card2);color:var(--text);padding:9px 12px;border-radius:9px;font-weight:750;font-size:11px}.small-btn:hover{border-color:var(--accent)}.small-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.section-title{display:flex;justify-content:space-between;align-items:center;margin:24px 0 13px}.section-title h3{margin:0;font-size:14px}.section-title p{font-size:11px;color:var(--muted);margin:4px 0}.empty{padding:60px 20px;text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--stroke);border-radius:14px}.empty-orb{font-size:34px;color:var(--accent);margin-bottom:14px}.footnote{margin-top:14px;font-size:10px;color:var(--subtle);line-height:1.7}.footer{border-top:1px solid var(--stroke);display:flex;justify-content:space-between;gap:15px;color:var(--subtle);font-size:10px;padding:25px 1px 0;margin-top:25px}.status-line{display:flex;gap:10px;align-items:center;margin:13px 0;padding:11px 12px;background:var(--card2);border-radius:9px;color:var(--muted);font-size:11px}.status-line b{color:var(--text)}.report-hero{border-radius:15px;border:1px solid rgba(246,116,52,.32);padding:25px;background:radial-gradient(ellipse at right top,rgba(255,143,73,.18),transparent 45%),linear-gradient(120deg,var(--card),var(--card2));margin-bottom:17px}.report-hero h2{font-size:23px;margin:6px 0 9px}.report-hero p{font-size:12px;color:var(--muted);max-width:700px;line-height:1.6}.quality-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:20px}.quality-item{background:var(--card);border:1px solid var(--stroke);border-radius:12px;padding:16px}.quality-item b{display:block;font-size:22px;margin-bottom:7px}.quality-item span{font-size:11px;color:var(--muted)}.toast{position:fixed;bottom:25px;right:25px;z-index:100;padding:13px 18px;background:#253749;color:#fff;border:1px solid #3f556c;border-radius:11px;box-shadow:var(--shadow);max-width:350px}.gate{min-height:100vh;display:grid;place-items:center;padding:26px;background:radial-gradient(ellipse at 80% 10%,rgba(246,116,52,.17),transparent 40%),radial-gradient(ellipse at 10% 90%,rgba(71,125,167,.15),transparent 45%),#0a1019}.gate-card{position:relative;overflow:hidden;background:#111a26;border:1px solid #273747;border-radius:23px;max-width:460px;width:100%;padding:38px 38px 30px;box-shadow:0 40px 100px #0005}.gate-brand{padding:0 0 42px}.gate-decoration{position:absolute;width:220px;height:220px;border:1px solid rgba(246,116,52,.12);transform:rotate(30deg);right:-155px;top:-50px;border-radius:45px}.gate h1{font-size:32px;color:#edf2f8;line-height:1.13;letter-spacing:-1.2px}.gate h1 em{font-style:normal;color:#ff9954}.gate p{line-height:1.65;color:#93a3b5;font-size:12px;margin:17px 0 28px}.gate label{display:block;color:#b6c2d2;font-size:11px;font-weight:700;margin:17px 0 8px}.gate input{display:block;border:1px solid #344454;border-radius:10px;padding:13px 15px;background:#0d1520;color:#f4f8fd;width:100%;outline:none}.gate input:focus{border-color:#f67434}.primary-button{width:100%;margin-top:25px;padding:14px 17px;border-radius:10px;border:0;background:linear-gradient(100deg,#e95e29,#ff9251);color:#fff;font-weight:800;display:flex;justify-content:space-between}.gate-footer{display:block;color:#748397;text-align:center;font-size:10px;line-height:1.7;margin-top:30px}.login-error{font-size:11px;color:#ff8b8f;margin-top:11px;line-height:1.5}.mobile-menu{display:none}
@media(max-width:1300px){.filters{grid-template-columns:repeat(4,minmax(0,1fr))}.street-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1020px){.sidebar{width:220px}.main-shell{padding:25px 20px}.topbar{padding:0 20px}.panel-grid{grid-template-columns:1fr}.street-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.sidebar{position:fixed;left:-280px;transition:left .2s;width:250px}.sidebar.open{left:0;box-shadow:0 0 0 100vmax rgba(0,0,0,.55)}.mobile-menu{display:block}.topbar{height:64px}.breadcrumb{font-size:9px}.read-time{display:none}.top-actions{gap:7px}.facility-badge{font-size:9px}.main-shell{padding:24px 14px}.heading-row h1{font-size:25px}.mode-badge{font-size:9px}.filterbar{padding:12px}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid{gap:9px}.metric{padding:15px;min-height:124px}.metric .m-value{font-size:25px}.metric .m-icon{right:10px;top:10px}.metric .m-label{font-size:10px}.street-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.footer{flex-direction:column;gap:5px}.quality-grid{grid-template-columns:1fr 1fr}.gate-card{padding:30px 24px}.gate h1{font-size:28px}}@media(max-width:430px){.street-grid{grid-template-columns:1fr 1fr;gap:8px}.street-card{padding:12px}.facility-badge{padding:9px}.breadcrumb span{padding:0 4px}}
@media print{.sidebar,.topbar,.filterbar,.heading-row,.actions,.footer,.mode-badge,.message-banner{display:none!important}.workspace,.main-shell{width:100%;padding:0!important}.panel,.metric,.report-hero{background:#fff!important;color:#111!important;border-color:#ddd!important}.metric-grid{grid-template-columns:repeat(4,1fr)}.panel-grid{grid-template-columns:1fr 1fr}body{background:white;color:#111}td,th,.sub{color:#333!important}#pageContent{display:block}}
