:root{--bg: #0b1116;--panel: #131c24;--border: #223140;--text: #e6edf3;--muted: #8b9bab;--accent: #4fc3f7;--ok: #66bb6a;--warn: #ffb300;--alert: #ef5350;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}.layout{display:grid;grid-template-columns:340px 1fr;height:100%}@media(max-width:900px){.layout{grid-template-columns:1fr;grid-template-rows:auto 1fr}}.panel{background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:16px}.panel h1{font-size:16px;margin:0 0 16px}.panel h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px}.panel section{border-top:1px solid var(--border);padding-top:14px;margin-top:14px}.panel section:first-of-type{border-top:none;margin-top:0;padding-top:0}label{display:block;margin-bottom:10px;color:var(--muted)}label .value{color:var(--text);font-weight:600;float:right}input[type=range]{width:100%;margin-top:4px;accent-color:var(--accent)}input[type=number]{width:100%;margin-top:4px;padding:6px 8px;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text)}.checkbox{display:flex;align-items:center;gap:8px}.checkbox input{accent-color:var(--accent)}button{background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer;font-size:13px;padding:7px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button.active{background:var(--accent);border-color:var(--accent);color:#06121a;font-weight:600}.buttons{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.hint{color:var(--muted);font-size:12px;line-height:1.45;margin:8px 0 12px}.error{background:#ef535026;border:1px solid var(--alert);border-radius:4px;color:var(--alert);padding:8px 10px}.stats{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin:0}.stats dt{color:var(--muted)}.stats dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.status-running{color:var(--ok)}.status-paused{color:var(--warn)}.status-failed{color:var(--alert)}.tractors{width:100%;border-collapse:collapse;font-size:12px}.tractors td{padding:4px 6px 4px 0;border-bottom:1px solid var(--border)}.tractors .state{color:var(--muted)}.ok{color:var(--ok)}.alert{color:var(--alert)}.muted{color:var(--muted)}.stage{display:grid;grid-template-rows:1fr 200px;overflow:hidden}.map-container{position:relative;overflow:hidden;background:#0b1a26}.map-warning{position:absolute;top:12px;left:12px;background:#ffb300e6;color:#201400;font-size:12px;font-weight:600;padding:5px 10px;border-radius:4px}.placeholder{display:grid;place-items:center;color:var(--muted);padding:24px;text-align:center}.log{border-top:1px solid var(--border);overflow-y:auto;padding:10px 16px}.log h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px}.log ul{list-style:none;margin:0;padding:0;font-size:12px}.log li{display:grid;grid-template-columns:70px 110px 1fr;gap:10px;padding:2px 0;border-bottom:1px solid rgba(34,49,64,.5)}.log .time{color:var(--muted);font-variant-numeric:tabular-nums}.log .ref{color:var(--accent)}.log .transition{color:var(--muted)}.log strong{color:var(--text)}code{background:var(--panel);border-radius:3px;padding:1px 5px}.login{max-width:460px;margin:12vh auto;padding:24px;background:var(--panel);border:1px solid var(--border);border-radius:8px}.login input,.correction input,.correction textarea{width:100%;padding:8px 10px;margin-bottom:10px;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-family:inherit;font-size:13px}.admin{display:flex;flex-direction:column;height:100%}.admin header{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.admin header h1{font-size:15px;margin:0 auto 0 0}.admin nav{display:flex;gap:6px}.split{display:grid;grid-template-columns:minmax(420px,1fr) minmax(380px,1fr);gap:1px;background:var(--border);flex:1;overflow:hidden}@media(max-width:1100px){.split{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.list,.detail{background:var(--bg);overflow:auto;padding:14px 16px}.list.wide{flex:1}.list table,.list.wide table{width:100%;border-collapse:collapse;font-size:13px}.list th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:6px 8px 6px 0;border-bottom:1px solid var(--border)}.list td{padding:6px 8px 6px 0;border-bottom:1px solid rgba(34,49,64,.6)}.list tbody tr{cursor:pointer}.list tbody tr:hover{background:#4fc3f712}.list tbody tr.selected{background:#4fc3f724}.list tbody tr.review td:first-child{border-left:3px solid var(--warn);padding-left:6px}.badge{background:var(--border);border-radius:3px;color:var(--muted);font-size:10px;margin-left:6px;padding:1px 5px}.ident-confirmed{color:var(--ok)}.ident-conflict{color:var(--alert);font-weight:600}.ident-unidentified{color:var(--warn)}.ident-qr_only,.ident-external_only{color:var(--accent)}.sev-error{color:var(--alert);font-weight:600}.sev-warning{color:var(--warn)}.sev-info{color:var(--muted)}.details{color:var(--muted);font-size:11px;max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline{list-style:none;margin:0;padding:0 0 0 6px}.tl{display:grid;grid-template-columns:88px 16px 1fr;align-items:start;gap:8px;padding:6px 0;border-left:1px solid var(--border);margin-left:88px}.tl-time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;margin-left:-88px}.tl-dot{width:9px;height:9px;border-radius:50%;margin-top:4px;margin-left:-5px;background:var(--muted)}.tl-qr .tl-dot{background:var(--accent)}.tl-coupling .tl-dot{background:#ab47bc}.tl-gnss .tl-dot{background:#78909c}.tl-control .tl-dot{background:var(--warn)}.tl-external .tl-dot{background:#26a69a}.tl-decision .tl-dot{background:var(--ok)}.tl-correction .tl-dot{background:var(--alert)}.tl-deposit .tl-dot{background:#ff7043}.tl-head{display:flex;gap:8px;align-items:baseline}.tl-label{color:var(--accent);font-size:12px}.tl-details{display:flex;flex-wrap:wrap;gap:4px 14px;margin:3px 0 0;font-size:11px;color:var(--muted)}.tl-details div{display:flex;gap:4px}.tl-details dt{opacity:.7}.tl-details dd{margin:0;color:var(--text)}.tl-event{color:var(--muted);font-size:10px}.correction{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.detail h2{font-size:15px;margin:0 0 10px}.detail h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 0 8px}
