:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17233c;background:#f4f6fa;font-synthesis:none;--blue:#4165ed;--muted:#7b879e;--border:#e7ebf3;--navy:#111c32;--orange:#f3a445;--green:#22b690;--violet:#9474ed}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer;border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:8px;padding:11px 17px;font-size:12px;font-weight:650;transition:background .15s}button:hover{filter:brightness(.96)}button:disabled{opacity:.45;cursor:default}.secondary{color:#4d5c77;background:#fff;border:1px solid #dfe5f0}.danger{background:#fff1f1;border-color:#f4cdcd;color:#bc5050}.full{width:100%}a{color:inherit;text-decoration:none}input,select{width:100%;height:40px;border:1px solid #dfe5f0;border-radius:7px;padding:0 11px;background:#fff;color:#27354d;font-size:12px}input[type=file]{height:auto;min-height:42px;padding:10px;max-width:100%}label{display:flex;flex-direction:column;gap:8px;font-size:11px;font-weight:600;color:#65738e}h1,h2,p{margin:0}h1{font-size:29px;letter-spacing:-1px;font-weight:720;line-height:1.25}h2{font-size:15px;letter-spacing:-.25px;font-weight:700}p{color:var(--muted);font-size:12px;line-height:1.7}.hint{font-size:11px;line-height:1.65;color:#8993a6}.eyebrow{font-size:9px;font-weight:750;letter-spacing:1.7px;color:#6f85cd;margin-bottom:8px}.sidebar{width:224px;position:fixed;inset:0 auto 0 0;background:var(--navy);color:#98a6c1;padding:34px 24px;z-index:10;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:11px;letter-spacing:2px;line-height:1.65}.brand b{font-size:13px;letter-spacing:2px}.logo{width:39px;height:39px;border-radius:11px;background:#4165ed;display:flex;align-items:center;justify-content:center;position:relative;color:#fff;font-weight:800;font-size:14px;letter-spacing:-1px}.logo>span{position:absolute;right:4px;top:2px;font-size:11px}.nav-label{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;margin:50px 12px 15px;color:#657795}nav{display:grid;gap:8px}nav a{display:flex;gap:12px;align-items:center;padding:13px 12px;font-size:12px;border-radius:8px}nav a>span:first-child{font-size:17px;width:17px;color:#8195b8}nav a:hover,nav a.active{background:#233352;color:#fff}nav a.active>span:first-child{color:#82a2ff}.sidebar-bottom{margin-top:auto;border-top:1px solid #26344d;padding:24px 7px 0}.sidebar-bottom small{font-size:10px;color:#607494}.server-indicator{display:flex;align-items:center;gap:7px;font-size:11px;margin-bottom:10px}i{display:inline-block}.server-indicator i{width:6px;height:6px;border-radius:50%;background:#8c98af}.shell{margin-left:224px}.topbar{height:72px;border-bottom:1px solid var(--border);background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 36px}.breadcrumb{font-size:11px;color:#93a0b5}.breadcrumb span{margin:0 12px;color:#c2cad8}.breadcrumb b{color:#5b6984;font-weight:550}.top-actions{display:flex;gap:15px;align-items:center}.top-actions select{width:65px;height:31px;font-size:10px}.user-chip{font-size:11px;color:#65738d}.icon-button{border:0;color:#7e8ba2;background:none;padding:8px;font-size:10px}main{max-width:1600px;padding:32px 36px 0;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:23px}.page-heading p{margin-top:8px;max-width:590px}.heading-actions{display:flex;gap:12px;align-items:center}.heading-actions button{white-space:nowrap}.status-pill,.chip{font-size:10px;white-space:nowrap;background:#eef2ff;border:1px solid #e3e9ff;color:#647be1;padding:6px 10px;border-radius:6px}.status-pill.ready{background:#e9f8f2;color:#299476;border-color:#d4eee3}.status-pill.error{background:#fff1ec;color:#c57548;border-color:#f8ddce}.notice{background:#eef2ff;border:1px solid #dfe6fa;color:#667cb6;border-radius:8px;font-size:11px;padding:12px 16px;line-height:1.6;margin-bottom:23px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:23px}.metrics article{position:relative;background:#fff;border:1px solid var(--border);border-radius:11px;padding:18px 20px;overflow:hidden}.metric-label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:#6f7e98}.metric-icon{font-size:16px;padding:7px;background:#f0f3ff;border-radius:7px}.blue{color:var(--blue)}.violet{color:var(--violet)}.orange{color:var(--orange)}.green{color:var(--green)}.metric-icon.orange{background:#fff5e9}.metric-icon.violet{background:#f4f0ff}.metric-icon.green{background:#ebf9f5}.metrics strong{display:block;font-size:34px;font-weight:750;margin:10px 0 7px;letter-spacing:-1.5px;line-height:1}.metrics small{font-size:9px;color:#9aa5b8;line-height:1.6;display:block;min-height:28px}.metric-accent{position:absolute;bottom:0;left:0;width:100%;height:2px;background:currentColor;opacity:.55}.panel{background:#fff;border:1px solid var(--border);border-radius:11px;padding:21px;min-width:0;margin-bottom:23px}.panel-head{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-head p{margin-top:6px}.step-badge{font-size:10px;background:#f0f3fa;color:#9da9bc;padding:5px 7px;border-radius:5px}.monitor-grid{display:grid;grid-template-columns:minmax(0,2.35fr) minmax(245px,1fr);gap:23px}.monitor-panel{padding-bottom:16px}.video-stage{position:relative;background:#101d32;border-radius:8px;overflow:hidden}.video-stage canvas{display:block;width:100%;height:auto;cursor:crosshair}.video-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:11px;pointer-events:none;color:#e2e9f7;padding:40px;text-align:center}.video-empty b{font-size:15px}.video-empty>span:last-child{color:#8498bc;font-size:10px;line-height:1.6;max-width:290px}.empty-camera{font-size:40px;color:#6284cd}.video-overlay{position:absolute;bottom:0;left:0;right:0;padding:10px 14px;background:linear-gradient(transparent,#0a152a);display:flex;justify-content:space-between;color:#a6b6d5;font-size:9px;pointer-events:none}.monitor-footer{display:flex;gap:18px;font-size:9px;color:#8796ad;padding:14px 0;border-bottom:1px solid #edf0f6}.monitor-footer>span{display:flex;align-items:center;gap:6px}.legend{height:7px;width:7px;border-radius:2px;background:currentColor}.capture-toolbar{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}.capture-toolbar>span{font-size:10px;color:#8292ab}.source-tabs{display:flex;gap:8px;margin-bottom:20px}.source-tabs button{flex:1;padding:8px;font-size:10px}.source-tabs .selected{background:#eef2ff;color:var(--blue);border-color:#dbe4ff}.sources-panel label{margin-bottom:14px}.sources-panel .full{margin:0 0 14px}.supported-sources{display:flex;flex-wrap:wrap;gap:8px;font-size:8px;color:#6c7d9d;margin-bottom:10px}.sources-panel p{margin-bottom:18px}.source-info{display:grid;grid-template-columns:1fr 1fr;gap:11px;font-size:10px;border-top:1px solid var(--border);padding-top:17px;margin-top:18px}.source-info span{color:#8c9ab2}.source-info b{text-align:right;font-weight:550}.sources-panel .source-info+p{margin:17px 0 0;font-size:9px}.file-drop{padding:15px;border:1px dashed #cbd6f4;border-radius:8px;text-align:center;background:#f8faff}.file-drop>span{font-size:23px;color:var(--blue)}.file-drop input{font-size:10px}.analysis-grid{display:grid;grid-template-columns:2fr 1fr;gap:23px}.trend-panel{min-height:290px}.chart-empty{height:200px;display:flex;align-items:center;justify-content:center;color:#a6b2c5;font-size:11px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 49px,#f1f3f8 50px);border-bottom:1px solid #edf0f6}.trend-chart{height:200px;display:flex;align-items:end;gap:3px;border-bottom:1px solid #edf0f6;position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent 49px,#f1f3f8 50px);overflow:auto;padding:0 10px}.trend-bar{min-width:5px;max-width:42px;flex:1;border-radius:4px 4px 0 0;background:linear-gradient(#537cf5,#aec5fa)}.chart-labels{display:flex;justify-content:space-between;font-size:9px;color:#9da9bc;margin-top:10px}.donut-wrap{display:flex;justify-content:center;margin:10px 0 18px}.donut{width:148px;height:148px;border-radius:50%;background:#edf1f8;display:grid;place-items:center;position:relative}.donut>div{width:114px;height:114px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px}.donut b{font-size:25px;letter-spacing:-1px}.donut span{font-size:9px;color:#9faac0}.composition-item{display:flex;align-items:center;gap:7px;font-size:10px;padding:6px 0;color:#71819d}.composition-item>span{flex:1}.composition-item>b{font-weight:650;color:#44526b}.composition-item>small{min-width:34px;text-align:right;color:#a2adc0}.triple-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:23px}.mini-icon{color:#a5b6d0;font-size:18px}.bar-row{margin-bottom:15px}.bar-label{display:flex;justify-content:space-between;font-size:10px;color:#7889a6;margin-bottom:7px}.bar-track{height:6px;border-radius:5px;background:#f0f3f9}.bar-fill{height:100%;border-radius:5px;background:var(--blue)}.bar-empty{font-size:11px;color:#a1aec3;min-height:80px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.7}.triple-grid .hint{font-size:9px}.filters{display:flex;gap:12px;align-items:end;margin-bottom:20px;flex-wrap:wrap}.filters label{flex:1;min-width:160px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:10px;text-align:left;white-space:nowrap}th{font-size:9px;color:#8c9bb3;background:#f6f8fc;padding:12px 10px;font-weight:550}td{padding:14px 10px;color:#647493;border-bottom:1px solid #eef1f7}td .plate{font-family:monospace;background:#f4f6fa;border:1px solid #dfe5ef;border-radius:4px;padding:4px 6px;font-size:10px;color:#40506b}.empty-row{text-align:center;padding:32px;white-space:normal;color:#a5b0c5}.calibration-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.calibration-controls button{font-size:10px}.calibration-controls>span{font-size:10px;color:#738ab4}.lane-list{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.lane-tag{background:#fff6e9;color:#b9863e;border-radius:5px;font-size:10px;padding:7px 10px}.settings-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.checkbox-label{display:flex;flex-direction:row;align-items:center;font-weight:450;font-size:11px}.checkbox-label input{width:14px;height:14px}.settings-bottom{display:flex;gap:22px;justify-content:space-between;align-items:center;margin-top:18px;border-top:1px solid var(--border);padding-top:18px}.settings-bottom p{max-width:680px;font-size:10px}.settings-bottom button{white-space:nowrap}.import-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:15px 0}.import-controls input{max-width:280px}.import-controls select{width:150px}.import-controls span{font-size:11px}.legacy-panel summary{font-size:12px;color:#7184a4;cursor:pointer}footer{font-size:9px;color:#a6b0c2;display:flex;justify-content:space-between;gap:20px;padding:0 0 22px}section[id]{scroll-margin-top:20px}[hidden]{display:none!important}
.login-page{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh;background:#fff}.login-visual{background:radial-gradient(ellipse at 70% 55%,#223b70,var(--navy) 70%);color:#fff;display:flex;flex-direction:column;padding:42px 55px;position:relative;overflow:hidden}.login-message{margin:auto 0;max-width:560px;padding:45px 0}.login-message .eyebrow{color:#6c91eb}.login-message h1{font-size:44px;letter-spacing:-1.8px;max-width:420px;line-height:1.2}.login-message p{color:#96a9cd;font-size:13px;margin-top:18px;max-width:410px}.login-visual>small{font-size:10px;color:#637b9d}.login-form-side{display:flex;flex-direction:column;padding:32px 48px;align-items:center}.login-top{width:100%;display:flex;justify-content:flex-end}.login-top select{width:70px}.login-form-side form{max-width:345px;width:100%;margin:auto; padding:40px 0}.form-icon{width:45px;height:45px;background:#eff3ff;color:var(--blue);display:grid;place-items:center;font-size:25px;border-radius:12px;margin-bottom:24px}.login-form-side h2{font-size:28px;margin:8px 0 12px;letter-spacing:-.8px}.login-form-side form>p{margin-bottom:27px}.login-form-side label{margin-bottom:18px}.login-form-side input{height:46px;font-size:13px}.login-form-side form>button{margin-top:6px;height:46px}.login-form-side form>small{display:block;font-size:10px;color:#a0adc1;line-height:1.8}.login-form-side #login-status{font-size:11px;margin:16px 0;color:#c16e52}.login-bottom{font-size:10px;color:#9aa7bf;text-align:center}.login-features{display:flex;flex-wrap:wrap;gap:10px;font-size:9px;color:#a5b8db;margin-top:25px}.login-features span{border:1px solid #334974;border-radius:20px;padding:7px 12px}.road-art{margin:35px 0 0;height:220px;position:relative;border:1px solid #304873;border-radius:14px;background:linear-gradient(130deg,#172744,#203c6a);overflow:hidden;transform:perspective(700px) rotateX(12deg) rotateZ(-4deg)}.road-lane{width:33.33%;height:100%;border-right:2px dashed #3d5889;float:left}.scan-line{position:absolute;top:48%;width:100%;height:2px;background:#618cf7;box-shadow:0 0 20px #729bf4}.car{position:absolute;width:38px;height:57px;border-radius:8px;border:1px solid #527ff0;background:#2f539f;color:#9dbbff;display:grid;place-items:center;font-size:22px;box-shadow:0 0 0 7px #3d67b722}.car-one{left:14%;top:28%}.car-two{left:47%;top:53%;background:#a07339;border-color:#e7a954;color:#ffe1b5}.car-three{left:80%;top:15%}.art-tag{position:absolute;bottom:14px;left:15px;font-size:8px;color:#8da8d5;letter-spacing:1px}
@media(min-width:1450px){main{padding-left:46px;padding-right:46px}.monitor-grid{grid-template-columns:2.6fr 1fr}}@media(max-width:1150px){.sidebar{width:190px;padding:28px 16px}.shell{margin-left:190px}main{padding:25px 24px 0}.topbar{padding:0 24px}.metrics{gap:12px}.metrics article{padding:15px}.monitor-grid{grid-template-columns:minmax(0,1.8fr) minmax(230px,1fr)}.heading-actions{flex-direction:column;align-items:end}.triple-grid{gap:16px}.login-visual{padding:36px}.login-message h1{font-size:37px}}@media(max-width:900px){.sidebar{width:70px;padding:22px 12px}.sidebar .brand>span:last-child,.nav-label,nav a>span:last-child,.sidebar-bottom{display:none}.sidebar .brand{justify-content:center}nav{margin-top:40px}nav a{justify-content:center;padding:12px}.shell{margin-left:70px}.metrics{grid-template-columns:repeat(2,1fr)}.monitor-grid,.analysis-grid{grid-template-columns:1fr}.sources-panel{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px}.sources-panel .panel-head,.sources-panel .source-tabs,.sources-panel>.source-info,.sources-panel>.hint{grid-column:1/-1}.sources-panel .source-tabs{margin-bottom:6px}.triple-grid{grid-template-columns:1fr 1fr}.triple-grid>article:last-child{grid-column:1/-1}.settings-grid{grid-template-columns:1fr 1fr}.login-page{grid-template-columns:1fr 1fr}.login-message h1{font-size:30px}.login-form-side{padding:25px}.login-visual{padding:30px}.road-art{height:190px}}@media(max-width:600px){.sidebar{position:relative;width:100%;height:64px;padding:12px 20px;flex-direction:row;justify-content:space-between;align-items:center}.sidebar .brand>span:last-child{display:block;font-size:8px;line-height:1.4}.sidebar .brand b{font-size:9px}.sidebar .logo{width:32px;height:32px;font-size:12px}nav{display:flex;margin:0;gap:3px}nav a{padding:7px}nav a:nth-child(n+4){display:none}.shell{margin-left:0}.topbar{height:51px;padding:0 17px}.breadcrumb{font-size:9px}.breadcrumb span{margin:0 5px}.top-actions{gap:5px}.user-chip{max-width:65px;overflow:hidden;text-overflow:ellipsis;font-size:9px}.icon-button{font-size:9px}.top-actions select{width:52px}main{padding:24px 16px 0}.page-heading{align-items:start;gap:10px}.page-heading h1{font-size:23px;letter-spacing:-.65px}.page-heading p{font-size:10px}.page-heading .eyebrow{font-size:8px}.heading-actions{gap:8px}.heading-actions button{font-size:9px;padding:8px 10px}.status-pill{font-size:8px;padding:5px 7px}.notice{font-size:10px;padding:11px}.metrics{gap:10px}.metrics article{padding:13px}.metric-label{font-size:9px;gap:3px}.metric-icon{padding:5px;font-size:13px}.metrics strong{font-size:28px}.metrics small{font-size:8px}.panel{padding:16px;margin-bottom:17px}.monitor-grid,.analysis-grid,.triple-grid{display:block}.panel-head h2{font-size:13px}.monitor-footer{font-size:7px;gap:10px}.capture-toolbar button{font-size:10px;padding:10px}.video-empty{gap:7px;padding:15px}.video-empty b{font-size:12px}.video-empty>span:last-child{font-size:8px;max-width:220px}.empty-camera{font-size:28px}.sources-panel{display:block}.source-tabs{margin-top:15px}.settings-grid{gap:12px}.calibration-controls{gap:6px}.calibration-controls button{font-size:9px;padding:8px}.settings-bottom{display:block}.settings-bottom button{width:100%;margin-top:15px}.filters label{min-width:130px}.filters{gap:10px}footer{display:block;line-height:1.8}.login-page{display:block}.login-visual{padding:22px;min-height:170px}.login-visual .brand{font-size:8px}.login-visual .brand b{font-size:10px}.login-message{padding:25px 0 0;margin:0}.login-message h1{font-size:25px;max-width:300px}.login-message p,.road-art,.login-features,.login-visual>small{display:none}.login-form-side{padding:20px 28px}.login-form-side form{padding:20px 0 40px}.login-top{margin-bottom:0}.form-icon{width:35px;height:35px;margin-bottom:15px}.login-form-side h2{font-size:24px}.login-bottom{padding-bottom:15px}}

.lane-tag input{max-width:150px;height:28px;font-size:10px;background:#fffaf2;border-color:#f3e1c5}

.geo-subtitle{font-size:9px;font-weight:600;color:#9aa8bf;margin:5px 0 10px}

@media(max-width:600px){button{min-height:40px}}
.jobs-panel{margin:24px 0}.jobs-create-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.job-create{padding:20px;background:#f8faff;border:1px solid #e6ebf5;border-radius:14px}.job-create h3{margin:0 0 18px}.job-create label{display:block;margin-bottom:14px}.job-create .checkbox-label{display:flex}.job-create button{width:100%}.job-create p[role=status]{font-size:13px;line-height:1.5}.classes-code{font:12px/1.7 monospace;word-break:break-word;background:#eef2ff;padding:12px;border-radius:8px;margin:12px 0}.jobs-list-head{margin-top:28px}.job-list{display:grid;gap:12px}.job-card{border:1px solid #e4e9f2;border-radius:12px;padding:16px}.job-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.job-card h4{margin:0;overflow-wrap:anywhere}.job-card p{font-size:13px;color:#64748b;margin:10px 0}.job-files{display:flex;gap:10px;flex-wrap:wrap}.job-files a{font-size:12px;background:#edf2ff;color:#4165ed;padding:8px 12px;border-radius:8px;text-decoration:none}.job-card progress,.job-create progress{width:100%;height:8px;margin:12px 0;accent-color:#4165ed}.mail-settings{border-top:1px solid #e4e9f2;margin-top:24px;padding-top:20px}.mail-settings summary{cursor:pointer;font-weight:600}.mail-settings button{margin:12px 10px 0 0}#training-options[hidden]{display:none}@media(max-width:760px){.jobs-create-grid{grid-template-columns:1fr}.job-card-head{align-items:flex-start;flex-wrap:wrap}.job-create{padding:16px}}
.job-create .settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:600px){.sidebar{padding:12px 16px}.sidebar .brand>span:last-child{display:none}nav{gap:2px}nav a:nth-child(n+4){display:flex}nav a{min-width:40px;min-height:40px;padding:7px}}

[hidden]{display:none!important}.safety-logo{width:48px;height:48px;object-fit:contain;flex-shrink:0;border-radius:8px}.safety-banner{width:100%;background:#052043;line-height:0}.safety-banner img{display:block;width:100%;height:auto;object-fit:contain}.login-page{flex-wrap:wrap}.login-page>.safety-banner{grid-column:1/-1;flex:0 0 100%}.training-metrics{margin:24px 0}.training-chart{width:100%;height:auto;max-height:290px}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0;font-size:12px}.training-chart text{font:12px sans-serif;fill:#69758c}.training-chart line{stroke:#dbe1eb}.training-chart polyline{fill:none;stroke-width:2.5}.training-chart circle{stroke:#fff;stroke-width:1.5}body[data-page="home"] .page-heading .heading-actions{display:flex}#training-upload .job-create{border:0;padding:0}#task-summary{margin-top:18px}#task-results{margin-top:18px}@media(max-width:650px){.safety-logo{width:40px;height:40px}.login-page{display:block}.safety-banner{margin:0}.training-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar nav{justify-content:space-between}}
body[data-page="training"] .analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#training-quality,#training-loss{min-width:0}@media(max-width:900px){body[data-page="training"] .analysis-grid{grid-template-columns:1fr}}

body:not([data-page]):not(.login-page) main{visibility:hidden}

#overview-metrics.without-ocr{grid-template-columns:repeat(3,minmax(0,1fr))}#distribution-metrics.without-ocr{grid-template-columns:repeat(2,minmax(0,1fr))}.optional-features{margin-top:18px}.optional-features summary{cursor:pointer;font-weight:600}.optional-features .checkbox-label{margin-top:14px}@media(max-width:680px){#overview-metrics.without-ocr,#distribution-metrics.without-ocr{grid-template-columns:1fr}}
/* Compact proportional Road Safety banner on platform and login pages. */
.safety-banner{display:flex;justify-content:center;align-items:center;padding:6px 16px;box-sizing:border-box}.safety-banner img{width:auto;max-width:100%;height:80px;object-fit:contain}@media(max-width:650px){.safety-banner{padding:4px 10px}.safety-banner img{height:56px}}

.road-art.traffic-photo{transform:none;height:auto;aspect-ratio:375/166;background:#07172f;box-shadow:0 12px 36px 8px #020b1dcc;border-color:#304365}.traffic-photo>img{display:block;width:100%;height:100%;object-fit:cover;filter:brightness(.68) saturate(.8) blur(.35px)}.traffic-photo .photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,#03112618 25%,#020b1de0 100%);pointer-events:none}.traffic-photo .art-tag{color:#d3def2;font-size:9px;text-shadow:0 1px 6px #000}@media(max-width:600px){.road-art.traffic-photo{display:block;margin-top:20px;max-width:375px}.login-message{padding-bottom:8px}}

/* Full-height road photo behind the login introduction. */
.login-visual{isolation:isolate;background:#07172f}.login-visual::before{content:"";position:absolute;inset:-3px;background:url('/assets/traffic-road.jpg') center center/cover no-repeat;filter:blur(1px) saturate(.75);z-index:-2}.login-visual::after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(3,13,31,.91),rgba(5,20,43,.66) 55%,rgba(2,9,23,.91));z-index:-1}.login-message p{color:#c3cfe2}.login-message .eyebrow{color:#a6bfff}.login-features{color:#d4def0}.login-features span{background:#07172f80;border-color:#8499bc66}.login-visual>small{color:#b0bfd5}

.login-visual::before{z-index:-3}.login-background-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-2;filter:saturate(.8);pointer-events:none}.login-visual::after{background:linear-gradient(135deg,rgba(3,13,31,.82),rgba(5,20,43,.53) 55%,rgba(2,9,23,.86))}.login-demo-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 18px;color:#c5d4e9;font-size:10px}.login-demo-controls button{background:#07172f99;border:1px solid #8499bc66;color:#e8effb;padding:6px 10px;font-size:10px;border-radius:8px}.login-demo-controls button:focus-visible{outline:2px solid #f8df33;outline-offset:3px}@media(max-width:600px){.login-demo-controls{margin:14px 0 0;font-size:9px}.login-demo-controls button{font-size:9px}}
/* More comfortable spacing for login headings, including mobile. */
.login-message h1{letter-spacing:.01em;line-height:1.3;font-weight:700}.login-form-side h2{letter-spacing:.005em;line-height:1.3;font-weight:700}

/* Tight banner framing, readable type and a full-label navigation drawer. */
body:not(.login-page) .safety-banner{display:block;padding:0;aspect-ratio:8/1;overflow:hidden;line-height:0}body:not(.login-page) .safety-banner img{display:block;width:100%;max-width:none;height:100%;object-fit:cover;object-position:center}
body:not(.login-page) .shell{margin-left:0}body:not(.login-page) .sidebar{position:fixed;inset:0 auto 0 0;width:min(290px,85vw);height:100dvh;z-index:1002;padding:26px 22px;display:flex;flex-direction:column;align-items:stretch;transform:translateX(-100%);transition:transform .2s ease;overflow-y:auto}body.menu-open .sidebar{transform:translateX(0)}body.menu-open{overflow:hidden}.menu-backdrop{position:fixed;inset:0;background:#07172f80;z-index:1001}.menu-close{position:absolute;top:12px;right:12px;background:transparent;border:0;font-size:28px;line-height:1;padding:6px;color:#cbd7eb}.menu-brand{display:flex;align-items:center;gap:14px;flex-shrink:0}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;background:#eff3fc;border:1px solid #dde5f2;padding:10px}.menu-toggle span{display:block;width:22px;height:2px;background:#263b62;border-radius:2px}body:not(.login-page) .sidebar .brand>span:last-child,body:not(.login-page) .sidebar .nav-label,body:not(.login-page) .sidebar nav a>span:last-child,body:not(.login-page) .sidebar .sidebar-bottom{display:block}body:not(.login-page) .sidebar .brand{justify-content:flex-start}body:not(.login-page) .sidebar nav{display:grid;margin-top:0;gap:9px}body:not(.login-page) .sidebar nav a{display:flex;justify-content:flex-start;padding:14px 12px;font-size:16px}body:not(.login-page) .sidebar nav a:nth-child(n+4){display:flex}body:not(.login-page) .sidebar .nav-label{margin:32px 12px 16px;font-size:12px}body:not(.login-page) .sidebar .sidebar-bottom{margin-top:auto;padding-top:22px}.topbar{gap:20px}
body:not(.login-page) p,body:not(.login-page) .hint{font-size:15px;line-height:1.65}body:not(.login-page) label{font-size:14px}body:not(.login-page) input,body:not(.login-page) select{font-size:16px;min-height:44px}body:not(.login-page) button{font-size:14px}body:not(.login-page) .metric-label{font-size:15px;line-height:1.5}body:not(.login-page) .metrics small{font-size:13px;line-height:1.6;display:block}body:not(.login-page) .panel h2{font-size:20px;letter-spacing:0;line-height:1.35}body:not(.login-page) h3{font-size:17px}body:not(.login-page) .eyebrow{font-size:11px}body:not(.login-page) .status-pill,body:not(.login-page) .chip{font-size:12px}body:not(.login-page) .notice{font-size:14px}body:not(.login-page) .breadcrumb,body:not(.login-page) .user-chip{font-size:13px}body:not(.login-page) th,body:not(.login-page) td{font-size:14px}body:not(.login-page) .top-actions{gap:10px}body:not(.login-page) .top-actions select{width:70px}body:not(.login-page) .top-actions .icon-button{font-size:13px}
@media(max-width:650px){body:not(.login-page) .topbar{height:72px;padding:10px 16px;gap:10px}body:not(.login-page) .breadcrumb{display:none}body:not(.login-page) .top-actions{margin-left:auto;gap:7px}body:not(.login-page) .top-actions .user-chip{display:none}body:not(.login-page) .top-actions select{width:64px}body:not(.login-page) .safety-logo{width:42px;height:42px}body:not(.login-page) .menu-brand{gap:10px}body:not(.login-page) .page-heading{flex-wrap:wrap;gap:16px}body:not(.login-page) .page-heading>div:first-child{width:100%}body:not(.login-page) .page-heading h1{font-size:27px;letter-spacing:0;line-height:1.3}body:not(.login-page) .heading-actions{width:100%;flex-direction:row;justify-content:space-between;align-items:center}body:not(.login-page) .heading-actions button{font-size:13px;padding:11px 14px}body:not(.login-page) .metrics article{padding:20px}body:not(.login-page) .metrics strong{font-size:36px}body:not(.login-page) .capture-toolbar button,body:not(.login-page) .calibration-controls button{font-size:13px}body:not(.login-page) .panel{padding:20px}body:not(.login-page) .video-empty b{font-size:16px}body:not(.login-page) .video-empty>span:last-child{font-size:13px}body:not(.login-page) .monitor-footer{font-size:11px;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){body:not(.login-page) .sidebar{transition:none}}

/* Keep the MediaStream video rendered for Safari; canvas shows the preview. */
.video-stage{position:relative}.capture-source-video{position:absolute;left:0;top:0;width:2px;height:2px;opacity:.01;pointer-events:none}#capture-status{display:block;font-size:14px;line-height:1.6;flex-basis:100%}

.logs-panel .table-scroll{max-height:340px;overflow:auto}.logs-panel thead th{position:sticky;top:0;background:#f5f7fc;z-index:1}.logs-panel select{max-width:100%;min-height:44px}.logs-panel td{vertical-align:top}

.training-live{background:#111827;color:#e8edf8;border-radius:20px;padding:24px;margin:22px 0}.training-live h2{margin:0 0 16px}.training-live .tp-state{color:#75d6bc}.tp-card{background:#1e293b;border-radius:18px;padding:22px;margin:16px 0}.tp-card p{margin:0 0 12px}.tp-card p:last-child{margin-bottom:0}.training-live .tp-muted{color:#b4c0d5;font-size:14px}.tp-card h3{margin:0 0 14px}.tp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.tp-grid .tp-card{margin:0;min-width:0}.tp-grid strong{display:block;margin-top:12px;font-size:25px;overflow-wrap:anywhere}.training-live progress{display:block;width:100%;height:14px;margin:18px 0;accent-color:#75d6bc}.training-live pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 monospace;max-height:280px;overflow:auto}.training-live .tp-state[data-state="failed"],.training-live .tp-state[data-state="interrupted"]{color:#ffadaf}@media(max-width:760px){.training-live{padding:18px}.tp-grid{grid-template-columns:1fr}.tp-card{padding:18px}.tp-grid strong{font-size:23px}}
