:root{--bg: #0f1420;--surface: #171d2c;--surface-2: #1f2739;--border: #2a3448;--text: #e8ecf5;--muted: #94a3b8;--accent: #3b82f6;--ok: #22c55e;--warn: #f59e0b;--danger: #ef4444;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 Segoe UI,system-ui,-apple-system,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.brand{font-size:20px;font-weight:700;padding:6px 10px 18px;letter-spacing:-.5px}.brand span{color:var(--accent)}.nav-link{padding:10px 12px;border-radius:var(--radius);color:var(--muted);font-weight:500}.nav-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-link.active{background:var(--accent);color:#fff}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding-top:14px;font-size:13px;color:var(--muted)}.main{padding:28px 32px;overflow-x:auto}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;flex-wrap:wrap}h1{font-size:24px;margin:0}h2{font-size:17px;margin:0 0 14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:18px}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.6px}.stat-value{font-size:26px;font-weight:700;margin-top:6px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.6px}tbody tr:hover{background:var(--surface-2)}.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.badge.ok{background:#22c55e24;color:var(--ok);border-color:#22c55e59}.badge.warn{background:#f59e0b24;color:var(--warn);border-color:#f59e0b59}.badge.danger{background:#ef444424;color:var(--danger);border-color:#ef444459}.badge.info{background:#3b82f624;color:var(--accent);border-color:#3b82f659}label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}input,select,textarea{width:100%;padding:9px 11px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.field{margin-bottom:14px}button{padding:9px 16px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer}button:hover:not(:disabled){filter:brightness(1.1)}button:disabled{opacity:.55;cursor:not-allowed}button.secondary{background:transparent;color:var(--text);border-color:var(--border)}button.danger{background:var(--danger);border-color:var(--danger)}.alert{padding:11px 14px;border-radius:8px;margin-bottom:14px;font-size:14px}.alert.error{background:#ef44441f;color:#fca5a5;border:1px solid rgba(239,68,68,.35)}.alert.success{background:#22c55e1f;color:#86efac;border:1px solid rgba(34,197,94,.35)}.muted{color:var(--muted)}.small{font-size:13px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}.toolbar .field{margin-bottom:0;min-width:160px}.login-shell{display:grid;place-items:center;min-height:100vh;padding:20px}.login-card{width:100%;max-width:380px}.map-frame{width:100%;height:320px;border:0;border-radius:var(--radius);background:var(--surface-2)}.timeline{list-style:none;margin:0;padding:0}.timeline li{padding:9px 0 9px 16px;border-left:2px solid var(--border);position:relative}.timeline li:before{content:"";position:absolute;left:-5px;top:15px;width:8px;height:8px;border-radius:50%;background:var(--muted)}.timeline li.inside:before{background:var(--ok)}.timeline li.outside:before{background:var(--danger)}
