:root{--bg:#f4f6f8;--card:#fff;--ink:#1b2733;--mute:#66758a;--pri:#0f4c81;--ok:#1f8f4e;--warn:#c77700;--bad:#c0392b;--line:#e1e6ec}
@media(prefers-color-scheme:dark){:root{--bg:#10161d;--card:#18212b;--ink:#e6edf3;--mute:#8b9bb0;--pri:#4a9be0;--line:#273443}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 system-ui,sans-serif;padding-bottom:72px}
header{position:sticky;top:0;z-index:500;background:var(--pri);color:#fff;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;font-weight:600}
main{padding:12px 16px;max-width:900px;margin:0 auto}
nav{position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--line);display:flex;z-index:500}
nav a{flex:1;text-align:center;padding:10px 4px;color:var(--mute);text-decoration:none;font-size:12px}nav a.on{color:var(--pri);font-weight:700}
nav a b{display:block;font-size:20px;font-weight:400}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin:0 0 10px}
.row{display:flex;gap:8px;align-items:center;justify-content:space-between}
.mute{color:var(--mute);font-size:13px}
.pill{font-size:11px;padding:2px 8px;border-radius:99px;background:var(--line);color:var(--ink)}
.pill.ok{background:#d6f1e1;color:#146c3a}.pill.warn{background:#fdebc8;color:#8a5200}.pill.bad{background:#f8d7d3;color:#8d2a1f}
header .pill{background:rgba(255,255,255,.2);color:#fff}
button,.btn{border:0;border-radius:10px;padding:12px 16px;font:inherit;font-weight:600;background:var(--pri);color:#fff;cursor:pointer;min-height:44px}
button.sec{background:var(--line);color:var(--ink)}button.ok{background:var(--ok)}button.bad{background:var(--bad)}button.sm{padding:6px 10px;min-height:32px;font-size:14px}
button:disabled{opacity:.5}
input,select,textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--card);color:var(--ink);margin:4px 0 10px}
label{font-size:13px;color:var(--mute)}
h2{margin:6px 0 10px;font-size:20px}h3{margin:14px 0 6px;font-size:15px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em}
.map{height:260px;border-radius:12px;margin-bottom:10px;z-index:0}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left}th{color:var(--mute);font-weight:600}
td.n,th.n{text-align:right}.scroll{overflow-x:auto}
.seq{width:28px;height:28px;border-radius:50%;background:var(--pri);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;flex:none}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.kpi b{font-size:22px;display:block}
.login{max-width:360px;margin:12vh auto}
.photos img{width:80px;height:80px;object-fit:cover;border-radius:8px;margin:0 6px 6px 0}
.drag{cursor:grab;touch-action:none;user-select:none;padding:10px 6px;margin:-6px 0 -6px -6px;color:var(--mute);font-size:20px;line-height:1}
.dragging{position:relative;z-index:5;box-shadow:0 6px 18px rgba(0,0,0,.25);opacity:.95}
.modal{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:16px}
.modal .card{width:100%;max-width:380px;margin:0}
