:root{--bg:#f4f6f9;--card:#fff;--text:#1d2533;--muted:#6b7686;--line:#e2e6ec;--accent:#1f6feb;--accent-ink:#fff;--accent-soft:#e3edfd;
--ok:#1a7f37;--ok-bg:#e6f4ea;--warn:#9a6700;--warn-bg:#fff4d6;--bad:#c62828;--bad-bg:#fdecea}
@media (prefers-color-scheme:dark){:root{--bg:#0f1318;--card:#171c23;--text:#e6e9ee;--muted:#8b95a3;--line:#2a313b;
--accent:#4c8dff;--accent-soft:#16253d;--ok:#5cc97a;--ok-bg:#16301f;--warn:#e3b341;--warn-bg:#33290f;--bad:#ff6b6b;--bad-bg:#3a1a1a}}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
.hidden{display:none!important}a{color:var(--accent);cursor:pointer;text-decoration:none}
header{display:flex;align-items:center;gap:20px;padding:0 20px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:500;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:8px;padding:14px 0}.dot{width:12px;height:12px;border-radius:50%;background:var(--accent)}
nav{display:flex;gap:2px;flex:1;overflow-x:auto}nav a{padding:16px 12px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
nav a.active{color:var(--text);border-bottom-color:var(--accent)}.user{color:var(--muted)}
main{padding:20px;max-width:1400px;margin:0 auto}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:12px}
.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:14px}
.toolbar label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
input,select,textarea{font:inherit;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text)}
button{font:inherit;padding:7px 13px;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.danger{color:var(--bad)}
button:hover{filter:brightness(.97)}
table{width:100%;border-collapse:collapse}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:12px;color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--card)}
tr.del td{opacity:.45;text-decoration:line-through}
.tag{display:inline-block;padding:1px 8px;border-radius:20px;font-size:12px;font-weight:600;margin:1px 2px 1px 0}
.tag.in{background:var(--ok-bg);color:var(--ok)}.tag.out{background:var(--line);color:var(--text)}
.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.bad{background:var(--bad-bg);color:var(--bad)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}.stat b{font-size:28px;display:block}
.grid-emp{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.emp{border:1px solid var(--line);border-radius:8px;padding:12px;display:flex;gap:10px;align-items:center}
.led{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:none}.led.on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}
.scroll{overflow:auto;max-height:70vh}
.report td,.report th{padding:5px 6px;text-align:center;font-size:12px}.report td:first-child,.report th:first-child{text-align:left;white-space:nowrap}
.report .we{background:var(--bg)}
.report .tr{background:var(--accent-soft)}.report sup{color:var(--accent);font-weight:700;margin-left:1px}
.tag.trasf{background:var(--accent-soft);color:var(--accent)}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center}.login form{width:360px}
label{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:13px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.err{color:var(--bad);min-height:1em}
dialog{border:none;border-radius:12px;padding:0;background:var(--card);color:var(--text);width:min(560px,94vw)}
dialog form{padding:20px}dialog::backdrop{background:rgba(0,0,0,.4)}.actions{display:flex;justify-content:flex-end;gap:8px}
.chk{flex-direction:row;align-items:center;gap:8px}
#map{height:280px;border-radius:8px;margin-bottom:10px}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:10px 18px;border-radius:8px;opacity:0;transition:.3s;pointer-events:none;z-index:9999}
#toast.show{opacity:1}
.code{font:600 20px ui-monospace,monospace;letter-spacing:3px}
@media(max-width:700px){main{padding:12px}header{gap:4px;padding:0 12px}.user{display:none}}
