@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap");:root{--bg:#1a2535;--bg2:#1e2d42;--bg3:#243450;--bg4:#2a3d5e;--border:#2e4060;--border2:#3a516e;--text:#e2ecf6;--text2:#9dbbd8;--text3:#5d7fa0;--blue:#3b82f6;--blue2:#60a5fa;--green:#22c55e;--red:#ef4444;--orange:#f97316;--yellow:#f59e0b;--purple:#a855f7;--cyan:#06b6d4;--indigo:#6366f1;--rgb-hi:255,255,255;--rgb-lo:15,23,42}:root[data-theme=light]{--bg:#f4f6f9;--bg2:#fff;--bg3:#eef1f5;--bg4:#e2e8f0;--border:#dde3ec;--border2:#c7d0dd;--text:#1a2333;--text2:#334155;--text3:#64748b;--blue:#1d4ed8;--blue2:#2563eb;--green:#15803d;--red:#b91c1c;--orange:#c2410c;--yellow:#b45309;--purple:#7e22ce;--cyan:#0e7490;--indigo:#4338ca;--rgb-hi:15,23,42;--rgb-lo:241,245,249}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text)}*{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{display:none}input,select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;font-family:inherit;font-size:13px;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,130,246,.12)}input::-moz-placeholder{color:var(--text3)}input::placeholder{color:var(--text3)}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;color:var(--text3);font-weight:800;font-size:10px;letter-spacing:1.5px;background:var(--bg3);text-transform:uppercase}td,th{padding:11px 16px;border-bottom:1px solid var(--border)}td{color:var(--text2)}tr:hover td{background:var(--bg3)}.btn{border:none;border-radius:8px;padding:8px 16px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .15s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(59,130,246,.3)}.btn-primary:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px rgba(59,130,246,.4)}.btn-danger{background:rgba(239,68,68,.12);color:var(--red);border:1px solid rgba(239,68,68,.25)}.btn-danger:hover{background:rgba(239,68,68,.2)}.btn-ghost{background:var(--bg3);color:var(--text2);border:1px solid var(--border)}.btn-ghost:hover{border-color:var(--border2);color:var(--text);background:var(--bg4)}.btn-success{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.25)}.btn-success:hover{background:rgba(34,197,94,.2)}.btn-warning{background:rgba(245,158,11,.12);color:var(--yellow);border:1px solid rgba(245,158,11,.25)}.card{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:16px;transition:border-color .15s}.card:hover{border-color:var(--border2)}.stat-card{background:linear-gradient(135deg,var(--bg2) 0,var(--bg3) 100%);border:1px solid var(--border);border-radius:14px;padding:18px 20px}.badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;display:inline-block;letter-spacing:.5px}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(6px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}.modal-box{background:var(--bg2);border:1px solid var(--border);border-radius:18px;padding:28px;width:100%;max-width:540px;max-height:82vh;overflow-y:auto;box-shadow:0 24px 64px rgba(0,0,0,.6)}.status-active{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.2)}.status-pause{background:rgba(245,158,11,.12);color:var(--yellow);border:1px solid rgba(245,158,11,.2)}.status-off{background:rgba(93,127,160,.15);color:var(--text3);border:1px solid var(--border)}.status-sos{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3);animation:pulse-border 1.5s infinite}.progress-track{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .4s ease}.gradient-text{background:linear-gradient(135deg,var(--blue2),var(--cyan));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@keyframes pulse-border{0%,to{border-color:rgba(239,68,68,.3)}50%{border-color:rgba(239,68,68,.8)}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-in .3s ease both}.leaflet-container{z-index:1}