
:root{
 --bg:#f5f7fb;--surface:#fff;--surface2:#f8fafc;--line:#e5eaf0;--text:#17212f;--muted:#667085;
 --primary:#146c94;--primary2:#0b8ab5;--nav:#102f49;--nav2:#174a6b;
 --green:#15803d;--greenbg:#eaf8ef;--red:#c62828;--redbg:#fff0f0;
 --amber:#a16207;--amberbg:#fff7df;--blue:#1d4ed8;--bluebg:#eef4ff;--purple:#7c3aed;--purplebg:#f3edff;
 --shadow:0 5px 20px rgba(16,47,73,.07);--radius:12px;
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}
a{color:inherit}.app{min-height:100vh}.top{height:68px;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}
.toplogo{font-size:24px;font-weight:850;letter-spacing:.3px;color:var(--nav)}.toplogo span{color:#12a6d8}.user{display:flex;align-items:center;gap:12px;color:#344054}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--bluebg);color:var(--blue);font-weight:800}.user a{color:var(--primary);text-decoration:none;font-weight:700}
.layout{display:flex}.side{width:250px;background:var(--nav);color:#dce9f3;min-height:calc(100vh - 68px);padding:14px 11px;position:fixed;top:68px;bottom:0;overflow:auto;z-index:10}.side h5{font-size:10px;color:#8eb0c6;letter-spacing:1.2px;margin:19px 10px 8px}.side a{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:9px;color:#dce9f3;text-decoration:none;margin:2px 0;font-weight:600}.side a:hover,.side a.active{background:var(--nav2);color:#fff}.navicon{width:20px;text-align:center;font-size:16px}
.content{margin-left:250px;padding:28px;width:calc(100% - 250px);max-width:1700px}.title{font-size:27px;font-weight:850;letter-spacing:-.4px}.subtitle{color:var(--muted);margin:5px 0 22px}
.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.actions{display:flex;gap:8px;flex-wrap:wrap}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden}.cardtop{display:flex;justify-content:space-between;align-items:center}.iconbox{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;font-size:20px}.ico-blue{background:var(--bluebg);color:var(--blue)}.ico-green{background:var(--greenbg);color:var(--green)}.ico-amber{background:var(--amberbg);color:var(--amber)}.ico-purple{background:var(--purplebg);color:var(--purple)}.num{font-size:29px;font-weight:850;margin-top:12px}.label{color:var(--muted);margin-top:3px;font-weight:600}.trend{font-size:11px;margin-top:9px;color:var(--muted)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-top:18px;padding:19px;box-shadow:var(--shadow)}.panel h3{margin:0 0 14px;font-size:16px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.toolbar input,.toolbar select,.form input,.form select,.form textarea{padding:10px 11px;border:1px solid #d7dee7;border-radius:8px;background:#fff;font:inherit;min-height:40px}.toolbar input{min-width:230px}
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:8px;background:var(--primary);color:#fff;text-decoration:none;border:1px solid transparent;font-weight:750;cursor:pointer}.btn:hover{filter:brightness(.96)}.btn.light{background:#eef4f8;color:#28536d;border-color:#dce7ee}.btn.green{background:var(--green)}.btn.red{background:var(--red)}
.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:9px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:11px 12px;border-bottom:1px solid #edf1f5;text-align:left;white-space:nowrap}th{background:#f8fafc;font-size:11px;text-transform:uppercase;letter-spacing:.45px;color:#667085}tr:hover td{background:#fbfdff}
.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:30px;background:var(--greenbg);color:var(--green);font-size:11px;font-weight:800}.badge.off{background:var(--redbg);color:var(--red)}.badge.warn{background:var(--amberbg);color:var(--amber)}.badge.blue{background:var(--bluebg);color:var(--blue)}.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.map{height:430px;border-radius:11px;background:linear-gradient(135deg,#e4f0df,#eef2f4 50%,#dcecf4);position:relative;overflow:hidden;border:1px solid #d7e1e7}.road{position:absolute;background:#fff;border:1px solid #cbd5dc;transform:rotate(-18deg);width:120%;height:45px;top:48%;left:-10%;box-shadow:0 0 0 9px rgba(255,255,255,.35)}.pin{position:absolute;width:17px;height:17px;border-radius:50%;background:#e03d3d;border:3px solid white;box-shadow:0 2px 8px #0005}.pin:after{content:"";position:absolute;left:4px;top:4px;width:3px;height:3px;background:white;border-radius:50%}.p1{left:30%;top:35%}.p2{left:62%;top:55%}.p3{left:48%;top:72%}
.statrow{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f5}.notice,.ok,.danger{padding:11px;border-radius:8px;margin-bottom:9px}.notice{background:var(--amberbg);color:#765300;border-left:4px solid #d79b19}.ok{background:var(--greenbg);color:#146b36;border-left:4px solid var(--green)}.danger{background:var(--redbg);color:#9f2323;border-left:4px solid var(--red)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#59697a;margin:0 0 14px}.legend span{display:inline-flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.green{background:var(--green)}.dot.red{background:var(--red)}.dot.amber{background:#d79b19}.dot.blue{background:var(--blue)}
.form label{display:block;font-size:12px;font-weight:800;color:#475467;margin:0 0 6px}.form .field{margin-bottom:13px}.form textarea{width:100%;min-height:90px}.form input,.form select{width:100%}
.sectiontitle{font-weight:800;margin:22px 0 10px}.empty{padding:30px;text-align:center;color:var(--muted)}
.loginbg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 15% 20%,#1a89b6 0,#0b4771 35%,#0b2d45 100%)}.loginbox{width:420px;background:#fff;border-radius:17px;padding:36px;box-shadow:0 25px 70px #0005}.logo{font-size:35px;font-weight:850;color:#0b4771}.logo span{color:#12a6d8}.tag{color:#718096;margin:6px 0 25px}.loginbox label{display:block;font-weight:750;margin:13px 0 6px}.loginbox input{width:100%;padding:12px;border:1px solid #d5dee8;border-radius:8px;font:inherit}.loginbox button{width:100%;padding:12px;margin-top:20px;border:0;border-radius:8px;background:#0b6f9f;color:#fff;font-weight:850;cursor:pointer}.demo{margin-top:18px;background:#f5f8fb;padding:12px;border-radius:8px;font-size:12px;line-height:1.7}.err{padding:9px;background:#fff0f0;color:#a82020;border-radius:7px}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.grid2,.grid3{grid-template-columns:1fr 1fr}.side{width:215px}.content{margin-left:215px;width:calc(100% - 215px)}}
@media(max-width:700px){.side{display:none}.content{margin-left:0;width:100%;padding:15px}.cards,.grid2,.grid3{grid-template-columns:1fr}.top{padding:0 13px}.user span{display:none}.title{font-size:23px}.toolbar input{min-width:160px}.map{height:330px}}

/* AI Fleet Intelligence visual system */
.blink{animation:sonikBlink 1s infinite}.blink-slow{animation:sonikBlink 2s infinite}
@keyframes sonikBlink{0%,45%{opacity:1}55%,100%{opacity:.35}}
.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.module-card{border:1px solid #e5e7eb;border-radius:16px;padding:20px;background:#fff;box-shadow:0 4px 16px rgba(15,23,42,.05)}
.module-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(15,23,42,.10);transition:.2s}
.module-icon{font-size:30px;margin-bottom:8px}.danger{background:#fee2e2!important;color:#991b1b!important}.warn{background:#fef3c7!important;color:#92400e!important}
.ico-red{background:#fee2e2}.ico-purple{background:#ede9fe}.ico-blue{background:#dbeafe}.ico-green{background:#dcfce7}.ico-amber{background:#fef3c7}
