:root,:root[data-theme=dark]{--bg:#0a0a0a;--bg-deep:#060606;--panel:#101010;--panel-alt:#0d0d0d;--surface:#141414;--grid-gap-bg:#1e1e1e;--border:#2b2b2b;--line:#1a1a1a;--accent:#ff4713;--accent-bright:#ff7043;--text:#f4f2ee;--text-dim:#8b8580;--text-dimmer:#635e59;--text-faint:#403c39;--ok:#4ea87a;--warn:#e0a13a;--crit:#e5484d;--blue:#5aa9d6;--model:#6a93b8;--accent-tint:#ff47131f;--accent-tint-strong:#ff471338;--accent-tint-faint:#ff471309;--accent-edge:#ff47132e;--accent-label:#ff471373;--ok-tint:#4ea87a24;--warn-tint:#e0a13a24;--crit-tint:#e5484d21;--crit-edge:#e5484d4d;--blue-tint:#5aa9d626;--model-tint:#6a93b829;--dim-tint:#8b85801f;--shadow:none;--font:"Share Tech Mono", "Courier New", monospace}:root[data-theme=light]{--bg:#f4f2ee;--bg-deep:#e7e3db;--panel:#fff;--panel-alt:#fbfaf7;--surface:#f6f4f0;--grid-gap-bg:#ddd7cd;--border:#d5cec3;--line:#e9e5dd;--accent:#d63a0c;--accent-bright:#b02f08;--text:#17150f;--text-dim:#5c564d;--text-dimmer:#837c71;--text-faint:#a9a196;--ok:#2c7a4f;--warn:#8f5d10;--crit:#bd242b;--blue:#2a6d94;--model:#426687;--accent-tint:#d63a0c1a;--accent-tint-strong:#d63a0c2e;--accent-tint-faint:#d63a0c0d;--accent-edge:#d63a0c47;--accent-label:#d63a0cb3;--ok-tint:#2c7a4f1f;--warn-tint:#8f5d101f;--crit-tint:#bd242b1a;--crit-edge:#bd242b59;--blue-tint:#2a6d941f;--model-tint:#4266871f;--dim-tint:#5c564d1a;--shadow:0 1px 2px #17150f0f;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:var(--line)}::-webkit-scrollbar-thumb{background:var(--border)}.topbar{background:var(--panel-alt);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;padding:10px 20px;display:flex;position:sticky;top:0}.logo{color:var(--accent);letter-spacing:2px;text-transform:uppercase;font-size:13px;font-weight:500}.logo b,.logo span{color:var(--accent-bright);font-weight:500}.sys-status{color:var(--text-dim);align-items:center;gap:16px;font-size:11px;display:flex}.dot{background:var(--ok);border-radius:50%;width:8px;height:8px;margin-right:5px;animation:2s infinite blink;display:inline-block}.dot.warn{background:var(--warn)}.dot.crit{background:var(--crit)}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}.clock{color:var(--accent);letter-spacing:1px;font-size:12px}.kpi-row{background:var(--grid-gap-bg);gap:1px;display:grid}.kpi-row.cols-4{grid-template-columns:repeat(4,1fr)}.kpi-row.cols-5{grid-template-columns:repeat(5,1fr)}.kpi{background:var(--panel-alt);border-bottom:1px solid var(--grid-gap-bg);padding:12px 16px}.kpi-label{color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;margin-bottom:4px;font-size:9px}.kpi-val{font-size:24px;font-weight:500;line-height:1}.kpi-sub{margin-top:3px;font-size:9px}.kpi-up,.green{color:var(--ok)}.kpi-warn,.yellow{color:var(--warn)}.kpi-val.kpi-up{color:var(--text)}.kpi-val.kpi-warn{color:var(--warn)}.kpi-val.red,.red{color:var(--crit)}.blue{color:var(--blue)}.muted{color:var(--text-dimmer)}.content-grid{background:var(--grid-gap-bg);grid-template-columns:2fr 1fr;gap:1px;display:grid}.right-col,.left-col{background:var(--grid-gap-bg);flex-direction:column;gap:1px;display:flex}.bottom-grid{background:var(--grid-gap-bg);grid-template-columns:1fr 1fr;gap:1px;display:grid}.panel{background:var(--panel);padding:14px 18px}.panel-title{color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:10px;display:flex}.panel-title span{color:var(--text-faint);font-size:9px}.map-area,.map-wrap{background:var(--bg-deep);border:1px solid var(--border);position:relative;overflow:hidden}.map-area{height:230px}.grid-lines{opacity:.15;position:absolute;inset:0}.drone-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;transition:left 80ms linear,top 80ms linear;position:absolute;transform:translate(-50%,-50%)}.drone-dot:after{content:"";border:1px solid var(--accent);opacity:.5;border-radius:50%;animation:2s infinite ripple;position:absolute;inset:-4px}.drone-dot.inactive{background:var(--text-dimmer)}.drone-dot.inactive:after{display:none}.drone-dot.charging,.drone-dot.returning{background:var(--warn)}.drone-dot.charging:after,.drone-dot.returning:after{border-color:var(--warn)}@keyframes ripple{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(2.5)}}.zone{border:1px solid var(--accent-edge);background:var(--accent-tint-faint);border-radius:4px;position:absolute}.zone-label{color:var(--accent-label);letter-spacing:1px;font-size:8px;position:absolute;top:3px;left:5px}.map-legend{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.leg-item{color:var(--text-dim);align-items:center;gap:5px;font-size:9px;display:flex}.leg-dot{border-radius:50%;width:8px;height:8px}.fleet-list,.alert-list,.log{overflow-y:auto}.fleet-list{max-height:220px}.fleet-item{border-bottom:1px solid var(--line);grid-template-columns:30px 1fr auto;align-items:center;gap:8px;padding:8px 0;font-size:11px;display:grid}.fleet-id{color:var(--accent);font-size:10px}.fleet-name{color:var(--text)}.fleet-status,.badge{letter-spacing:1px;white-space:nowrap;border-radius:2px;padding:2px 7px;font-size:9px}.s-active,.ba{background:var(--ok-tint);color:var(--ok)}.s-charging,.bc{background:var(--warn-tint);color:var(--warn)}.s-idle,.bi{background:var(--dim-tint);color:var(--text-dim)}.s-maintenance{background:var(--crit-tint);color:var(--crit)}.bd{background:var(--blue-tint);color:var(--blue)}.batt,.batt-wrap{align-items:center;gap:4px;display:flex}.batt-wrap{gap:5px;margin-top:5px}.batt-bar,.batt-bg{background:var(--border);border-radius:2px;width:36px;height:4px;overflow:hidden}.batt-bg{flex:1}.batt-fill,.batt-f{border-radius:2px;height:100%}.log{max-height:150px;font-size:10px}.log-item,.alert-item{border-bottom:1px solid var(--line);gap:8px;padding:5px 0;font-size:10px;display:flex}.log-time,.at{color:var(--text-faint);min-width:44px}.log-msg,.am{color:var(--text-dim)}.log-msg.alert,.am.warn{color:var(--warn)}.log-msg.ok,.am.ok{color:var(--ok)}.am.crit{color:var(--crit)}.alert-list{max-height:160px}.unit-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.unit-card{background:var(--surface);border:1px solid var(--border);border-radius:3px;padding:10px}.unit-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.uid{color:var(--accent);letter-spacing:1px;font-size:10px}.unit-name{color:var(--text);margin-bottom:6px;font-size:11px}.mini-stat{color:var(--text-dim);justify-content:space-between;margin-bottom:3px;font-size:9px;display:flex}.mini-val{color:var(--text)}.sensor-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sensor-card{background:var(--surface);border:1px solid var(--border);border-radius:3px;padding:9px}.sname{color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;margin-bottom:4px;font-size:9px}.sval{font-size:18px;font-weight:500}.sunit{color:var(--text-dim);margin-left:3px;font-size:9px}.sbar{background:var(--border);border-radius:2px;height:3px;margin-top:6px;overflow:hidden}.sbar-f{border-radius:2px;height:100%}.trend{margin-top:3px;font-size:9px}.report-section{background:var(--panel-alt);padding:14px 16px}.report-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.report-type{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:3px;padding:8px 10px;transition:border .15s}.report-type:hover{border-color:var(--accent)}.report-type.sel{border-color:var(--accent);background:var(--accent-tint)}.rt-name{color:var(--text);margin-bottom:2px;font-size:10px}.rt-desc{color:var(--text-dim);font-size:9px}.gen-btn{background:var(--accent-tint);border:1px solid var(--accent);width:100%;color:var(--accent);letter-spacing:2px;text-transform:uppercase;cursor:pointer;border-radius:2px;padding:9px;font-family:inherit;font-size:10px;transition:background .15s}.gen-btn:hover{background:var(--accent-tint-strong)}.gen-btn:disabled{opacity:.4;cursor:not-allowed}.recent-reports{margin-top:10px}.rr-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:5px 0;font-size:9px;display:flex}.rr-name{color:var(--text)}.rr-date{color:var(--text-faint)}.rr-dl{color:var(--accent);cursor:pointer;text-decoration:none}.rr-dl:hover{color:var(--accent-bright)}.progress-bar{background:var(--border);border-radius:2px;width:100%;height:3px;margin:8px 0;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .1s linear}.gen-status{color:var(--text-dim);text-align:center;min-height:14px;margin-top:4px;font-size:9px}.triage-list{flex-direction:column;gap:8px;max-height:260px;display:flex;overflow-y:auto}.triage-item{background:var(--surface);border:1px solid var(--border);border-radius:3px;padding:10px}.triage-item.sev-critical{border-color:var(--crit)}.triage-item.sev-warning{border-color:var(--warn)}.triage-head{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:10px;display:flex}.triage-sev{letter-spacing:1px;text-transform:uppercase;border-radius:2px;padding:2px 7px;font-size:9px}.triage-sev.critical{background:var(--crit-tint);color:var(--crit)}.triage-sev.warning{background:var(--warn-tint);color:var(--warn)}.triage-msg{color:var(--text);margin-bottom:4px;font-size:11px}.triage-meta{color:var(--text-dim);margin-bottom:8px;font-size:9px}.triage-actions{gap:8px;display:flex}.triage-btn{letter-spacing:1px;text-transform:uppercase;cursor:pointer;border-radius:2px;flex:1;padding:6px;font-family:inherit;font-size:9px;transition:opacity .15s}.triage-btn:hover{opacity:.8}.triage-btn.confirm{background:var(--accent-tint);border:1px solid var(--accent);color:var(--accent-bright)}.triage-btn.dismiss{background:var(--dim-tint);border:1px solid var(--border);color:var(--text-dim)}.triage-status{letter-spacing:1px;text-transform:uppercase;border-radius:2px;padding:3px 8px;font-size:9px;display:inline-block}.triage-status.confirmed{background:var(--ok-tint);color:var(--ok)}.triage-status.dismissed{background:var(--dim-tint);color:var(--text-dim)}.chart-wrap{height:110px;position:relative}.site-link{color:var(--accent);letter-spacing:1px;font-size:11px;text-decoration:none}.site-link:hover{color:var(--accent-bright)}.auth-loading{height:100%;color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;justify-content:center;align-items:center;font-size:11px;display:flex}.login-screen{background:var(--bg-deep);justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:4px;width:320px;padding:28px 26px;display:flex}.login-logo{margin-bottom:4px}.login-sub{color:var(--text-dim);letter-spacing:1px;margin-bottom:18px;font-size:10px}.login-label{color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;margin-top:12px;margin-bottom:5px;font-size:9px}.login-input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:2px;padding:9px 10px;font-family:inherit;font-size:12px}.login-input:focus{border-color:var(--accent);outline:none}.login-error{color:var(--crit);background:var(--crit-tint);border:1px solid var(--crit-edge);border-radius:2px;margin-top:12px;padding:8px 10px;font-size:10px}.login-btn{margin-top:20px}.logout-btn{border:1px solid var(--border);color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:2px;padding:5px 10px;font-family:inherit;font-size:9px;transition:border-color .15s,color .15s}.logout-btn:hover{border-color:var(--accent);color:var(--accent)}.flow-head{justify-content:space-between;align-items:baseline;padding:18px 20px 0;display:flex}.eyebrow{letter-spacing:3px;text-transform:uppercase;color:var(--accent);font-size:9px}.h1{letter-spacing:1px;text-transform:uppercase;margin-top:6px;font-size:20px}.divider{background:var(--grid-gap-bg);height:1px}.stepper{background:var(--grid-gap-bg);gap:1px;margin:16px 0 1px;display:flex}.step{background:var(--panel-alt);flex:1;align-items:center;gap:10px;padding:10px 14px;display:flex}.step-n{letter-spacing:1px;color:var(--text-faint);font-size:10px}.step.done .step-n,.step.active .step-n{color:var(--accent)}.step-l{letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dimmer);font-size:10px}.step.active .step-l{color:var(--text)}.step.done .step-l{color:var(--text-dim)}.dropzone{border:1px dashed var(--border);background:var(--panel-alt);text-align:center;cursor:pointer;border-radius:3px;padding:34px}.dropzone:hover{border-color:var(--accent)}.dz-main{color:var(--text-dim);font-size:12px}.dz-sub{color:var(--text-faint);letter-spacing:1px;margin-top:7px;font-size:9px}.imgrow{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px;display:grid}.imgcard{background:var(--surface);border:1px solid var(--border);border-radius:3px;overflow:hidden}.imgcard .cap{letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);padding:7px 9px;font-size:9px}.meta-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.field{flex-direction:column;gap:5px;display:flex}.field label{letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);font-size:9px}.field input,.field select,.field textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:2px;width:100%;padding:8px 9px;font-family:inherit;font-size:12px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:none}.hint{color:var(--text-faint);font-size:9px}.src-row{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:6px 0;font-size:10px;display:flex}.src-k{color:var(--text-dim)}.src-v{color:var(--text)}.src-v.orange{color:var(--accent)}.src-status{letter-spacing:1px;text-transform:uppercase;white-space:nowrap;border-radius:2px;height:fit-content;padding:2px 7px;font-size:9px}.candidate-row{text-align:left;background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;border-radius:2px;margin-top:6px;padding:7px 9px;font-family:inherit;font-size:10px;transition:border-color .15s,background .15s;display:block}.candidate-row:hover{border-color:var(--accent)}.candidate-row.chosen{border-color:var(--accent);background:var(--accent-tint)}.candidate-input{background:var(--surface);border:1px solid var(--border);min-width:0;color:var(--text);border-radius:2px;flex:1;padding:6px 8px;font-family:inherit;font-size:11px}.candidate-input:focus{border-color:var(--accent);outline:none}.linklike{font-family:inherit;font-size:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.linklike:hover{color:var(--accent-bright)}.src-status.ok{background:var(--ok-tint);color:var(--ok)}.src-status.pend{background:var(--warn-tint);color:var(--warn)}.src-status.model{background:var(--model-tint);color:var(--model)}.modelled-block{border-left:2px solid var(--model);margin:8px 0 4px;padding-left:10px}.modelled-block .src-v.headline{color:var(--model);font-size:12px}@media (width<=1100px){.meta-grid{grid-template-columns:repeat(2,1fr)}.imgrow{grid-template-columns:1fr}}.nav-link{color:var(--accent);border:1px solid var(--border);letter-spacing:1px;padding:2px 10px;text-decoration:none}.nav-link:hover{border-color:var(--accent);background:var(--accent-tint)}.theme-btn{border:1px solid var(--border);color:var(--text-dim);font-family:var(--font);cursor:pointer;background:0 0;border-radius:2px;padding:3px 8px;font-size:12px;line-height:1}.theme-btn:hover{color:var(--accent);border-color:var(--accent)}.bench-error{border:1px solid var(--crit);background:var(--crit-tint);color:var(--crit);border-radius:3px;padding:10px 12px;font-size:11px;line-height:1.6}.bench-warn{border:1px solid var(--warn);background:var(--warn-tint);color:var(--warn);border-radius:3px;padding:10px 12px;font-size:11px;line-height:1.6}.verdict-row{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}@media (width<=780px){.verdict-row{grid-template-columns:repeat(2,1fr)}}.verdict-btn{text-align:left;background:var(--surface);border:1px solid var(--border);cursor:pointer;font-family:var(--font);color:var(--text);box-shadow:var(--shadow);border-radius:3px;flex-direction:column;gap:4px;padding:10px;display:flex}.verdict-btn:hover:not(:disabled){border-color:var(--accent)}.verdict-btn:disabled{opacity:.45;cursor:not-allowed}.verdict-btn.selected{border-color:var(--accent);background:var(--accent-tint)}.verdict-label{color:var(--text);letter-spacing:1px;font-size:12px}.verdict-btn.selected .verdict-label{color:var(--accent-bright)}.verdict-hint{color:var(--text-dim);font-size:9px;line-height:1.5}.bench-note{resize:vertical;background:var(--surface);border:1px solid var(--border);width:100%;min-height:64px;color:var(--text);font-family:var(--font);border-radius:3px;padding:9px 10px;font-size:11px;line-height:1.6}.bench-note::placeholder{color:var(--text-faint)}.bench-note:focus{border-color:var(--accent);outline:none}.bench-note:disabled{opacity:.45}.verdict-actions{flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;display:flex}.verdict-actions .gen-btn{width:auto;padding:8px 18px}.verdict-actions .gen-btn:disabled{opacity:.4;cursor:not-allowed}.test-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,2fr) 70px 78px 110px auto;align-items:center;gap:10px;padding:7px 0;font-size:10px;display:grid}.test-row.with-owner{grid-template-columns:minmax(0,2fr) 70px 78px 110px minmax(0,1fr) auto}.test-file{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.test-pct{text-align:right}.test-risk{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px}.test-verdict{color:var(--ok)}.test-verdict.pending{color:var(--text-faint);font-style:italic}.test-who,.test-when{color:var(--text-dimmer);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.test-when{text-align:right}.unit-card,.sensor-card,.triage-item,.imgcard{box-shadow:var(--shadow)}.login-theme-btn{position:fixed;top:16px;right:16px}
