:root{--ink:#182d47;--muted:#64758b;--blue:#234f8c;--blue-light:#edf3fc;--border:#dfe5ed;--canvas:#f4f6f9;--red:#c2443c;--amber:#a86b12;--green:#36775d;--radius:12px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-size:16px;background:var(--canvas);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--blue)}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #769bc8;outline-offset:3px}button{color:inherit}button,select{touch-action:manipulation}button{transition:background .15s,border-color .15s}button:hover:not(:disabled){filter:brightness(.96)}[hidden]{display:none!important}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:24px}.brand{display:flex;align-items:center;gap:11px;color:var(--ink);font-size:23px;font-weight:720;letter-spacing:-.7px;text-decoration:none;white-space:nowrap}.brandmark{height:36px;width:36px;background:var(--blue);border-radius:9px;display:grid;place-items:center}.brandmark svg{width:28px;stroke:#fff;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.brand-divider{height:23px;width:1px;background:var(--border);margin:0 9px}.console-label{font-size:14px;font-weight:450;color:var(--muted);letter-spacing:0}.top-actions{display:flex;align-items:center;gap:22px}.local-tag{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}.local-tag span{width:6px;height:6px;border-radius:50%;background:var(--green)}.avatar{width:33px;height:33px;display:grid;place-items:center;font-size:12px;font-weight:650;border-radius:50%;background:#e8edf5}.button{background:white;border:1px solid #d1dbe7;border-radius:7px;min-height:37px;padding:8px 13px;font-size:14px;font-weight:550;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:10px}.button.subtle{border-color:transparent;background:transparent}.button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.button.danger{color:var(--red);background:#fff7f6;border-color:#efd0cc}.icon-button{background:transparent;border:0;border-radius:5px;width:34px;height:34px;font-size:25px;display:grid;place-items:center}.tiny-dot,.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#8090a4}.tiny-dot{margin-right:6px}.dot.high{background:var(--red)}.dot.moderate{background:#cb902e}.dot.unknown{background:#96a4b2}.dot.normal{background:var(--green)}
main{max-width:1550px;margin:auto;padding:28px 38px 0}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.breadcrumb{font-size:12px;color:#77869a;margin-bottom:15px}.breadcrumb span{color:#b3bdca;margin:0 8px}h1{font-size:29px;font-weight:650;letter-spacing:-.85px;line-height:1.2;margin:0 0 9px}.subheading{font-size:14px;color:var(--muted);margin:0}.mode-switch{display:flex;background:#e8edf3;border:1px solid #e0e6ee;border-radius:8px;padding:4px;flex-shrink:0}.mode-switch button{border:0;background:transparent;color:var(--muted);border-radius:5px;min-height:36px;padding:8px 14px;font-size:14px;font-weight:550}.mode-switch button.active{background:white;color:var(--ink);box-shadow:0 1px 3px #14263814}.source-notice{min-height:43px;padding:10px 14px;display:flex;align-items:center;gap:10px;background:#f4f0e7;border:1px solid #e8dfca;border-radius:7px;color:#756344;font-size:13px}.source-notice.live{background:#eef4fc;border-color:#d5e1f1;color:#42648a}.notice-icon{flex-shrink:0;display:inline-grid;place-items:center;width:15px;height:15px;border:1px solid currentColor;border-radius:50%;font-size:10px;font-weight:700}.source-notice button{border:0;background:transparent;margin-left:auto;white-space:nowrap;font-size:13px;font-weight:600}.metrics{display:grid;grid-template-columns:repeat(4,1fr);padding:25px 0 24px}.metrics>div{border-right:1px solid var(--border);padding:0 25px}.metrics>div:first-child{padding-left:2px}.metrics>div:last-child{border:0}.metric-label{font-size:13px;color:var(--muted)}.metrics>div>div{display:flex;align-items:baseline;gap:13px;margin-top:7px}.metrics strong{font-size:31px;letter-spacing:-.8px;font-weight:620;font-variant-numeric:tabular-nums}.metrics strong small{font-size:18px;color:#95a1b1;font-weight:400;margin-left:4px}.metrics>div>div>span{font-size:12px;color:#8491a2}.workbench{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(335px,1fr);gap:20px}.panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px}.panel-heading h2,h2{font-size:16px;letter-spacing:-.25px;font-weight:650;margin:0}.panel-heading p{font-size:12px;color:var(--muted);margin:6px 0 0}.outline-badge{font-size:11px;border:1px solid #cfd9e6;padding:5px 7px;border-radius:4px;color:var(--muted);white-space:nowrap}.map-container{position:relative;background:#e9eef2;overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}#map{width:100%;display:block;min-height:355px;max-height:460px}.map-label{font-size:13px;fill:#8593a3;font-weight:500}.place-label{fill:#8b9c90;font-size:16px;font-weight:600;letter-spacing:.3px}.highway-label{fill:#6d7c92;font-size:13px;font-weight:650}.map-pin{cursor:pointer}.map-pin text{font-size:15px;font-weight:650;fill:#fff;pointer-events:none}.pin-label{fill:var(--ink)!important;font-size:12px!important;font-weight:600!important}.map-tools{position:absolute;left:18px;top:18px;background:white;display:flex;flex-direction:column;border:1px solid #d3dde7;border-radius:7px;box-shadow:0 3px 10px #34425e0d;overflow:hidden}.map-tools button{border:0;background:white;width:32px;height:31px;font-size:21px;color:#62768f}.map-tools button+button{border-top:1px solid var(--border)}.map-north{position:absolute;right:20px;top:18px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:700;color:#70839b}.map-north span{font-size:27px}.map-bottom{position:absolute;left:16px;bottom:35px;display:flex;gap:14px;align-items:center;background:#ffffffef;padding:10px 12px;border:1px solid #e1e5eb;border-radius:6px;font-size:11px;color:#637187}.map-bottom span{display:flex;gap:6px;align-items:center}.map-disclaimer{position:absolute;bottom:9px;right:12px;font-size:10px;color:#68798e;background:#ffffffb3;border-radius:3px;padding:4px 6px}.map-footer{display:flex;align-items:center;gap:9px;padding:13px 20px;font-size:12px;color:var(--muted)}.route-line{width:24px;border-top:2px dashed #5a7fb9}.map-footer button{margin-left:auto;border:0;background:transparent;font-size:12px;font-weight:550;color:var(--blue)}.count-badge{font-size:12px;padding:2px 6px;background:#eef1f6;color:#61738a;border-radius:4px;margin-left:5px}.queue-panel{display:flex;flex-direction:column}.queue-filter{display:flex;gap:4px;padding:0 20px 13px;border-bottom:1px solid var(--border);align-items:center}.queue-filter button{border:0;background:transparent;padding:6px 9px;border-radius:5px;font-size:12px;color:var(--muted)}.queue-filter button.active{background:var(--blue-light);color:var(--blue);font-weight:600}.queue-filter>span{margin-left:auto;font-size:11px;color:#8592a3}.queue-list{flex:1;min-height:285px;overflow:auto;max-height:430px}.queue-item{padding:18px 22px 17px;border:0;border-bottom:1px solid #edf0f4;background:white;display:block;width:100%;text-align:left;position:relative}.queue-item:hover{background:#f9fbfe}.queue-item.selected{background:#f6f9fe}.queue-item.selected:before{content:'';position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:0 2px 2px 0;background:#3f6ca6}.queue-item-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.impact-tag{font-size:11px;font-weight:600;color:var(--red);display:flex;gap:7px;align-items:center}.impact-tag.moderate{color:var(--amber)}.queue-item-top time{font-size:11px;color:#94a0b0}.queue-item h3{font-size:16px;font-weight:600;margin:10px 0 5px;letter-spacing:-.15px}.queue-item .road{font-size:12px;color:var(--muted);margin:0 0 12px}.queue-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:#6c7b8e}.queue-meta .status-chip{margin-left:auto}.status-chip{font-size:10px;font-weight:550;padding:4px 7px;border-radius:4px;background:#eef2f7;color:#6b7d92;white-space:nowrap}.status-chip.review{background:#fbefdf;color:#9b6a22}.status-chip.assigned{background:#eaf1fb;color:#4d6c95}.queue-footnote{padding:14px 19px;display:flex;align-items:center;gap:8px;color:#8390a0;font-size:11px;line-height:1.5;border-top:1px solid var(--border)}.empty-state{padding:50px 28px;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}.empty-state svg{width:42px;height:42px;stroke:#a4b6cd;fill:none;stroke-width:1.3}.empty-state h3{font-size:15px;color:var(--ink);margin-bottom:5px}.empty-state p{max-width:240px;margin:0 auto}.signal-panel{margin-top:20px}.signal-panel .panel-heading{padding-bottom:10px}.small-badge{font-size:10px;font-weight:500;letter-spacing:0;padding:4px 7px;border-radius:4px;background:#f0f3f7;color:#7d8ba0;margin-left:8px;vertical-align:middle}.chart-actions{display:flex;gap:5px}.signal-body{display:flex;min-height:188px}.chart-wrap{position:relative;flex:1;min-width:0;padding:5px 12px 0 20px}#chart{width:100%;height:190px;display:block}.chart-empty{position:absolute;left:0;right:0;top:60px;text-align:center;color:#8997a9;font-size:14px}.signal-reading{width:196px;flex-shrink:0;padding:24px 22px;border-left:1px solid #edf0f4;margin:10px 0 16px}.signal-reading>span:first-child{font-size:12px;color:var(--muted)}.signal-reading strong{font-size:38px;display:block;letter-spacing:-1px;font-weight:600;margin:5px 0 10px;font-variant-numeric:tabular-nums}.signal-reading strong small{font-size:16px;color:#93a0af;margin-left:6px;font-weight:400}.status-label{font-size:12px;color:var(--red)}.status-label.green{color:var(--green)}.status-label.amber{color:var(--amber)}.status-label.gray{color:var(--muted)}.signal-reading p{font-size:11px;line-height:1.55;color:#8a96a5;margin:10px 0 0}.signal-footer{padding:12px 22px;border-top:1px solid #edf0f4;display:flex;align-items:center;gap:22px;font-size:11px;color:#78879a}.signal-footer>span{display:flex;align-items:center;gap:6px}.signal-footer>span:last-child{margin-left:auto}.line-key{width:15px;border-top:2px solid var(--blue)}.line-key.amber{border-color:#c7923f;border-top-style:dashed}.line-key.red{border-color:#c96c66;border-top-style:dashed}.prototype-controls{display:flex;align-items:center;gap:18px;margin-top:20px;padding:20px 22px;flex-wrap:wrap}.prototype-controls>div:first-child{margin-right:auto}.prototype-controls h2{font-size:14px}.prototype-controls p{font-size:12px;color:var(--muted);max-width:300px;line-height:1.5;margin:5px 0 0}label{font-size:12px;font-weight:550;color:var(--muted);display:flex;flex-direction:column;gap:7px}input,select,textarea{border:1px solid #d5dfea;border-radius:6px;padding:9px 10px;background:#fff;color:var(--ink);font-size:14px;min-height:38px;max-width:100%}#device-id{width:100px}#pass-status{width:100%;font-size:12px;color:var(--muted)}.app-footer{display:flex;justify-content:space-between;gap:15px;padding:23px 0;font-size:11px;color:#92a0b1}.app-footer>span:first-child{color:#7b8ca2}.app-footer span span{margin:0 8px;color:#c2cad4}.app-footer button{border:0;background:transparent;color:#7b8ca2;font-size:11px}.error-banner{background:#fff1ef;color:#a43a35;padding:12px;border-radius:6px;font-size:14px;margin-top:14px}
dialog{color:var(--ink);background:white;border:1px solid #dce4ef;padding:0;box-shadow:0 20px 100px #12223824}dialog::backdrop{background:#142c4857;backdrop-filter:blur(2px)}.detail-dialog{width:min(530px,100%);max-width:100%;height:100dvh;max-height:100dvh;margin:0 0 0 auto;border:0;border-left:1px solid var(--border);overflow-y:auto}.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:20px 26px 5px}.eyebrow{font-size:12px;color:var(--muted)}#detail-content{padding:5px 28px 32px}.detail-title{font-size:25px;letter-spacing:-.7px;margin:9px 0 8px}.detail-subtitle{font-size:13px;color:var(--muted);line-height:1.65}.detail-provenance{font-size:12px;color:#806537;background:#faf4e9;border:1px solid #eddfc7;border-radius:6px;padding:11px;margin:20px 0}.detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:5px 0 22px;border-bottom:1px solid var(--border)}.detail-stats strong{font-size:24px;font-weight:600;display:block;margin-bottom:7px}.detail-stats span{font-size:11px;color:var(--muted)}.detail-section{padding:20px 0;border-bottom:1px solid var(--border)}.detail-section h3{font-size:14px;margin:0 0 12px}.detail-section p{font-size:13px;color:var(--muted);line-height:1.65}.detail-wave{width:100%;height:105px;display:block;background:#f8fafc;border:1px solid #e6edf5;border-radius:6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.detail-section textarea{width:100%;resize:vertical;min-height:80px}.form-actions{display:flex;gap:10px;align-items:center;margin-top:12px}.fine-print{font-size:11px!important;line-height:1.6;color:#8491a1!important}.brief-buttons{display:flex;gap:8px;flex-wrap:wrap}.brief-text{white-space:pre-wrap;font-size:13px;line-height:1.65;color:#5b6f87;padding:14px;background:#f6f9fc;border-radius:7px;margin:12px 0 0}.brief-kind{font-size:11px;color:#8a7452;margin:10px 0}.timeline{padding:0;list-style:none}.timeline li{padding:0 0 16px 16px;position:relative;border-left:1px solid #dee6ee;font-size:12px;color:#65788d;line-height:1.6;overflow-wrap:anywhere}.timeline li:before{content:'';width:5px;height:5px;background:#93a9c2;border-radius:50%;position:absolute;left:-3px;top:6px}.timeline time{display:block;font-size:10px;color:#9aa6b5;margin-bottom:4px}.modal{width:min(600px,calc(100% - 28px));border-radius:14px;padding:24px 28px;max-height:90dvh}.modal.wide{width:min(780px,calc(100% - 28px))}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.modal h2{font-size:21px;letter-spacing:-.5px}.modal p{font-size:14px;color:var(--muted);line-height:1.65}.modal h3{font-size:14px;margin:0 0 5px}.setup-steps{margin-top:24px}.setup-steps>div{display:flex;gap:16px;margin-bottom:22px}.setup-steps>div>b{width:25px;height:25px;border-radius:50%;background:#edf2f9;color:var(--blue);flex-shrink:0;display:grid;place-items:center;font-size:12px}.setup-steps p{margin:0 0 10px}.setup-steps code,.info-box code{font-size:12px;overflow-wrap:anywhere}.token-row{display:flex;gap:8px;align-items:center;margin:10px 0;flex-wrap:wrap}.token-row code{background:#eff3f7;border-radius:5px;padding:8px}.info-box{background:#f3f6fa;border:1px solid #e1e8f0;border-radius:8px;padding:16px;margin:18px 0}.info-box p:last-child{margin-bottom:0}.connection-box{font-size:13px;color:var(--muted);padding:10px 0}.guide-list{padding-left:22px;font-size:14px;color:var(--muted);line-height:1.75}.guide-list li{margin-bottom:16px;padding-left:6px}.guide-list strong{color:var(--ink)}.source-list{padding-left:20px;font-size:14px}.source-list li{margin:15px 0}.source-list p{font-size:12px;margin:5px 0}.fleet-table{width:100%;border-collapse:collapse;font-size:13px}.fleet-table td,.fleet-table th{padding:9px;border-bottom:1px solid var(--border);text-align:left}.fleet-table th{font-size:12px;color:var(--muted);font-weight:500}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:min(570px,90%);background:var(--ink);color:white;padding:13px 19px;border-radius:8px;box-shadow:0 4px 20px #12203424;font-size:14px;line-height:1.5;z-index:1000}
@media(min-width:1450px){#map{max-height:465px}.queue-item{padding-top:24px;padding-bottom:23px}}@media(max-width:1100px){main{padding:24px 24px 0}.topbar{padding:0 24px}.console-label,.brand-divider{display:none}.metrics>div>div{display:block}.metrics>div>div>span{display:block;margin-top:4px}.workbench{grid-template-columns:minmax(0,1.3fr) minmax(305px,1fr)}.panel-heading{padding:16px}.outline-badge{font-size:10px}.queue-item{padding:16px}.queue-meta{flex-wrap:wrap}.queue-meta .status-chip{margin-left:0}.map-bottom{gap:8px;font-size:10px;padding:8px}.map-footer{padding:12px;font-size:11px}.map-footer button{font-size:11px}.source-notice{font-size:12px}.metrics>div{padding:0 16px}}
@media(max-width:800px){.topbar{height:68px;padding:0 18px}.top-actions{gap:8px}.local-tag,.avatar{display:none}.brand{font-size:21px}main{padding:23px 16px 0}.page-heading{align-items:flex-start;flex-direction:column;gap:20px}h1{font-size:27px}.breadcrumb{margin-bottom:12px}.mode-switch{width:100%}.mode-switch button{flex:1}.source-notice{align-items:flex-start;line-height:1.6}.source-notice .notice-icon{margin-top:3px}.source-notice button{font-size:11px}.metrics{grid-template-columns:repeat(2,1fr);gap:20px;padding:22px 0}.metrics>div:nth-child(odd){padding-left:0}.metrics>div:nth-child(even){border:0}.metrics strong{font-size:28px}.metrics>div>div{display:flex;flex-wrap:wrap;gap:8px}.metrics>div>div>span{font-size:10px}.workbench{grid-template-columns:1fr}.queue-list{min-height:0;max-height:440px}.queue-item{padding:18px}.queue-meta .status-chip{margin-left:auto}.map-container #map{min-height:320px;max-height:none}.map-footer{padding:14px 16px}.signal-body{display:block}.signal-reading{width:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 20px;border-left:0;border-top:1px solid #edf0f4;margin:0}.signal-reading strong{font-size:27px;margin:0}.signal-reading p{display:none}.signal-footer{gap:12px;flex-wrap:wrap;padding:13px 16px;font-size:10px}.signal-footer>span:last-child{margin-left:0;width:100%}.signal-panel .panel-heading{align-items:flex-start}.chart-actions{flex-direction:column}.chart-actions .button{font-size:12px;min-height:30px;padding:6px 9px}.small-badge{display:block;width:max-content;margin:8px 0 0}.chart-wrap{padding:0 8px}.app-footer{flex-wrap:wrap;font-size:10px}.prototype-controls{gap:12px;padding:16px}.prototype-controls>div:first-child{width:100%}.modal{padding:20px}.top-actions .button{font-size:12px}.detail-dialog{width:min(530px,100%)}.queue-filter>span{font-size:10px}.form-row{grid-template-columns:1fr}.metric-label{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* Working labels stay readable during a projected demonstration. */
.metric-label,.mode-switch button,.subheading,.queue-filter button,.queue-item .road,.queue-meta,.prototype-controls p,label{font-size:14px}
.status-chip,.impact-tag,.queue-item-top time,.queue-filter>span,.queue-footnote,.outline-badge,.map-footer,.map-footer button,.signal-footer,.signal-reading>span:first-child,.status-label,.detail-stats span,.fine-print{font-size:12px}
.panel-heading p,.source-notice,.detail-section p,.timeline li{font-size:13px}
.queue-item{padding-top:20px;padding-bottom:20px}
.detail-section .button{margin-top:8px}
@media(max-width:1100px){.queue-meta{font-size:12px}.queue-filter>span{font-size:11px}.queue-item{padding:16px}.outline-badge{font-size:11px}}
@media(max-width:800px){.metric-label{font-size:13px}.source-notice{font-size:12px}.queue-meta{font-size:13px}.signal-footer{font-size:11px}.map-footer,.map-footer button{font-size:11px}.prototype-controls p{font-size:13px}}
