*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0f1117;--bg2:#1a1d27;--bg3:#22263a;
  --border:#2e3250;--text:#e2e4f0;--text2:#8b90b0;
  --blue:#4f7cff;--blue2:#3a64e8;--green:#22c55e;
  --red:#ef4444;--amber:#f59e0b;--purple:#a855f7;
  --radius:8px;--radius-lg:12px;
}
body{background:var(--bg);color:var(--text);font-family:system-ui,sans-serif;font-size:14px;line-height:1.6}

/* Layout */
.layout{display:flex;min-height:100vh}
.sidebar{width:220px;background:var(--bg2);border-right:1px solid var(--border);padding:16px 0;display:flex;flex-direction:column;position:fixed;height:100vh;overflow-y:auto}
.sidebar-logo{padding:8px 20px 20px;font-size:18px;font-weight:700;color:var(--blue);border-bottom:1px solid var(--border);margin-bottom:12px}
.sidebar-logo span{color:var(--text2);font-size:11px;font-weight:400;display:block}
.nav-section{padding:16px 20px 6px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text2)}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 20px;cursor:pointer;color:var(--text2);border-left:3px solid transparent;transition:all .15s;font-size:13px;text-decoration:none}
.nav-item:hover{background:var(--bg3);color:var(--text)}
.nav-item.active{background:rgba(79,124,255,.12);color:var(--blue);border-left-color:var(--blue)}
.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border);margin-top:auto}
.sidebar-user{font-size:12px;color:var(--text2);margin-bottom:8px}
.sidebar-user strong{color:var(--text)}
.main{margin-left:220px;flex:1;padding:24px;min-height:100vh}

/* Typography */
.page-title{font-size:22px;font-weight:600;margin-bottom:6px}
.page-sub{color:var(--text2);margin-bottom:24px;font-size:13px}

/* Cards */
.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:20px}
.card-title{font-size:13px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px}

/* Stat grid */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.stat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px}
.stat-val{font-size:28px;font-weight:700;line-height:1}
.stat-lbl{color:var(--text2);font-size:12px;margin-top:6px}
.stat-card.blue .stat-val{color:var(--blue)}
.stat-card.green .stat-val{color:var(--green)}
.stat-card.amber .stat-val{color:var(--amber)}
.stat-card.purple .stat-val{color:var(--purple)}

/* Table */
.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}
table{width:100%;border-collapse:collapse}
th{background:var(--bg3);padding:10px 14px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text2);font-weight:600;white-space:nowrap}
td{padding:11px 14px;border-top:1px solid var(--border);vertical-align:middle;font-size:13px}
tr:hover td{background:rgba(255,255,255,.02)}

/* Badges */
.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}
.badge-car{background:rgba(79,124,255,.2);color:#7ba4ff}
.badge-track{background:rgba(34,197,94,.2);color:#4ade80}
.badge-other{background:rgba(139,90,176,.2);color:#c084fc}
.badge-traffic{background:rgba(245,158,11,.2);color:#fbbf24}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius);border:none;cursor:pointer;font-size:13px;font-weight:500;transition:all .15s;text-decoration:none}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue2)}
.btn-danger{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.btn-danger:hover{background:rgba(239,68,68,.25)}
.btn-ghost{background:var(--bg3);color:var(--text);border:1px solid var(--border)}
.btn-ghost:hover{background:var(--border)}
.btn-success{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}
.btn-amber{background:rgba(245,158,11,.15);color:var(--amber);border:1px solid rgba(245,158,11,.3)}
.btn-sm{padding:4px 10px;font-size:12px}
.btn-xs{padding:2px 7px;font-size:11px}

/* Forms */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group.full{grid-column:1/-1}
label{font-size:12px;font-weight:500;color:var(--text2)}
input,select,textarea{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:9px 12px;color:var(--text);font-size:13px;outline:none;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--blue)}
textarea{resize:vertical;min-height:80px}
select option{background:var(--bg3)}

/* Alerts */
.alert{padding:12px 16px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;display:flex;align-items:flex-start;gap:8px}
.alert-success{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.3);color:#4ade80}
.alert-error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#f87171}
.alert-info{background:rgba(79,124,255,.1);border:1px solid rgba(79,124,255,.3);color:#7ba4ff}
.alert-warn{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.3);color:#fbbf24}

/* Toolbar */
.toolbar{display:flex;gap:12px;margin-bottom:16px;align-items:center;flex-wrap:wrap}
.search-input{flex:1;min-width:200px}

/* Upload zone */
.upload-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:40px;text-align:center;cursor:pointer;transition:all .2s}
.upload-zone:hover{border-color:var(--blue);background:rgba(79,124,255,.05)}
.upload-icon{font-size:36px;margin-bottom:12px}

/* Progress */
.progress{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden;margin-top:8px}
.progress-bar{height:100%;background:var(--blue);border-radius:3px;transition:width .3s}

/* Status */
.status-ok{color:var(--green)}
.status-warn{color:var(--amber)}
.status-err{color:var(--red)}

/* Modal */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.open{display:flex}
.modal{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;width:600px;max-height:90vh;overflow-y:auto}
.modal-title{font-size:17px;font-weight:600;margin-bottom:20px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}

@media(max-width:900px){.stat-grid{grid-template-columns:1fr 1fr}}
