@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--wd:#2dc48a;--wd-d:#1a9e6c;--wd-dd:#0f6e56;--wd-l:#e6f9f2;--wd-ll:#f0fdf9;--orange:#ff8c42;--orange-l:#fff3eb;--blue:#4e9cff;--blue-l:#ebf3ff;--red:#ff4d6d;--red-l:#ffeaed;--purple:#9b72ff;--purple-l:#f2edff;--amber:#f59e0b;--amber-l:#fffbeb;--text-primary:#1a1a2e;--text-secondary:#374151;--text-muted:#6b7280;--text-light:#9ca3af;--border:#e5e7eb;--border-l:#f3f4f6;--bg:#f4f6f9;--bg-card:#fff;--side-w:210px;--radius:10px;--radius-sm:7px;--font:"Plus Jakarta Sans", sans-serif;--mono:"JetBrains Mono", monospace;--shadow:0 1px 3px #0000000f;--shadow-md:0 4px 12px #00000014}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.shell{height:100vh;display:flex;overflow:hidden}.sidebar{width:var(--side-w);background:var(--wd);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.sidebar-brand{border-bottom:1px solid #ffffff26;flex-shrink:0;padding:18px 16px 16px}.sidebar-brand-row{align-items:center;gap:10px;display:flex}.sidebar-brand-icon{flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.sidebar-brand-name{color:#fff;letter-spacing:-.3px;font-size:16px;font-weight:800}.sidebar-brand-sub{color:#fff;opacity:.55;letter-spacing:2px;text-transform:uppercase;font-size:8px}.sidebar-nav{flex:1;padding:10px 0;overflow-y:auto}.sidebar-nav::-webkit-scrollbar{width:0}.nav-group-label{color:#ffffff73;letter-spacing:1.2px;text-transform:uppercase;padding:10px 16px 3px;font-size:9px;font-weight:600}.nav-item{color:#ffffffbf;cursor:pointer;align-items:center;gap:9px;padding:8px 16px;font-size:12.5px;text-decoration:none;transition:all .12s;display:flex}.nav-item:hover{color:#fff;background:#ffffff1a}.nav-item.active{color:#fff;background:#fff3;font-weight:600}.nav-item svg{opacity:.85;flex-shrink:0}.nav-item.active svg{opacity:1}.nav-badge{color:#fff;background:#ffffff40;border-radius:10px;margin-left:auto;padding:1px 6px;font-size:9px;font-weight:700}.nav-badge.warn{background:var(--orange)}.sidebar-user{border-top:1px solid #ffffff26;flex-shrink:0;align-items:center;gap:10px;padding:12px 16px;display:flex}.sidebar-avatar{color:#fff;background:#fff3;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:10px;font-weight:700;display:flex}.sidebar-user-name{color:#fff;font-size:12px;font-weight:600}.sidebar-user-role{color:#fff9;font-size:10px}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.topbar{background:var(--bg-card);border-bottom:.5px solid var(--border);box-shadow:var(--shadow);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 22px;display:flex}.topbar-left{align-items:center;gap:10px;display:flex}.topbar-back{border:.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:30px;height:30px;color:var(--text-muted);background:0 0;justify-content:center;align-items:center;transition:all .12s;display:flex}.topbar-back:hover{background:var(--bg);color:var(--text-primary)}.topbar-title{color:var(--text-primary);font-size:15px;font-weight:700}.topbar-crumb{color:var(--text-light);margin-top:1px;font-size:11px}.topbar-breadcrumb{align-items:center;gap:5px;display:flex}.topbar-breadcrumb-sep{color:var(--border);font-size:13px}.topbar-breadcrumb-link{color:var(--text-light);cursor:pointer;font-size:12px}.topbar-breadcrumb-link:hover{color:var(--wd)}.topbar-breadcrumb-current{color:var(--text-primary);font-size:14px;font-weight:700}.topbar-actions{align-items:center;gap:8px;display:flex}.btn{border-radius:var(--radius-sm);cursor:pointer;font-size:12.5px;font-weight:500;font-family:var(--font);white-space:nowrap;border:none;align-items:center;gap:6px;padding:7px 14px;transition:all .12s;display:inline-flex}.btn-primary{background:var(--wd);color:#fff}.btn-primary:hover{background:var(--wd-d)}.btn-outline{color:var(--text-muted);border:.5px solid var(--border);background:#fff}.btn-outline:hover{background:var(--bg);color:var(--text-primary)}.btn-icon{border:.5px solid var(--border);width:32px;height:32px;color:var(--text-muted);background:#fff;justify-content:center;padding:0}.btn-icon:hover{background:var(--bg);color:var(--text-primary)}.btn-sm{padding:5px 10px;font-size:11.5px}.btn-danger{background:var(--red-l);color:var(--red);border:none}.page-scroll{flex:1;padding:20px 22px;overflow-y:auto}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;display:grid}.kpi-card{background:var(--bg-card);border-radius:var(--radius);border:.5px solid var(--border);box-shadow:var(--shadow);padding:14px 16px}.kpi-top{justify-content:space-between;align-items:flex-start;margin-bottom:10px;display:flex}.kpi-icon{border-radius:9px;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.kpi-icon.g{background:var(--wd-l);color:var(--wd)}.kpi-icon.o{background:var(--orange-l);color:var(--orange)}.kpi-icon.b{background:var(--blue-l);color:var(--blue)}.kpi-icon.p{background:var(--purple-l);color:var(--purple)}.kpi-icon.r{background:var(--red-l);color:var(--red)}.kpi-tag{border-radius:6px;padding:2px 8px;font-size:10px;font-weight:600}.kpi-tag.up{background:var(--wd-l);color:var(--wd-d)}.kpi-tag.down{background:var(--red-l);color:#c24}.kpi-tag.neu{background:var(--border-l);color:var(--text-muted)}.kpi-tag.warn{background:var(--orange-l);color:#c50}.kpi-val{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;line-height:1}.kpi-label{color:var(--text-light);margin-top:3px;font-size:11px}.card{background:var(--bg-card);border-radius:var(--radius);border:.5px solid var(--border);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}.card-header{border-bottom:.5px solid var(--border-l);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.card-title{color:var(--text-primary);font-size:13px;font-weight:600}.card-subtitle{color:var(--text-light);margin-top:1px;font-size:11px}.card-header-actions{gap:6px;display:flex}.card-body{padding:16px 18px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{color:var(--text-light);text-align:left;border-bottom:.5px solid var(--border);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;background:#fafafa;padding:10px 16px;font-size:10.5px;font-weight:600}td{color:var(--text-secondary);border-bottom:.5px solid var(--border-l);white-space:nowrap;padding:11px 16px;font-size:12.5px}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#fafafa}.badge{white-space:nowrap;border-radius:6px;align-items:center;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.badge-g{background:var(--wd-l);color:var(--wd-d)}.badge-o{background:var(--orange-l);color:#b35900}.badge-r{background:var(--red-l);color:#c24}.badge-b{background:var(--blue-l);color:#1a5fcc}.badge-p{background:var(--purple-l);color:#5b2ecc}.badge-gray{background:var(--border-l);color:var(--text-muted)}.badge-amber{background:var(--amber-l);color:#b45309}.coef-pill{font-size:11.5px;font-weight:700;font-family:var(--mono);border-radius:20px;align-items:center;padding:2px 9px;display:inline-flex}.coef-ok{background:var(--wd-l);color:var(--wd-d)}.coef-warn{background:var(--orange-l);color:#b35900}.coef-alert{background:var(--red-l);color:#c24}.mono{font-family:var(--mono);font-size:11.5px;font-weight:600}.detail-hero{background:var(--bg-card);border-radius:var(--radius);border:.5px solid var(--border);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:20px;margin-bottom:14px;padding:18px;display:flex}.detail-hero-left{align-items:center;gap:16px;display:flex}.moto-avatar{background:var(--wd-l);width:52px;height:52px;color:var(--wd);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.moto-plate{color:var(--text-primary);font-size:20px;font-weight:800;font-family:var(--mono);letter-spacing:1px}.moto-driver{color:var(--text-muted);margin-top:3px;font-size:12.5px}.moto-badges{gap:6px;margin-top:8px;display:flex}.detail-hero-stats{flex-shrink:0;align-items:center;gap:10px;display:flex}.stat-box{text-align:center;background:var(--bg);border-radius:var(--radius-sm);padding:10px 16px}.stat-box-val{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.stat-box-lbl{color:var(--text-light);margin-top:2px;font-size:10px}.index-hero{background:var(--wd);color:#fff;border-radius:var(--radius-sm);text-align:center;padding:10px 18px}.index-hero-val{font-size:20px;font-weight:800;font-family:var(--mono)}.index-hero-lbl{opacity:.75;letter-spacing:1px;text-transform:uppercase;margin-top:2px;font-size:9px}.tabs{background:var(--bg-card);border-radius:var(--radius);border:.5px solid var(--border);box-shadow:var(--shadow);margin-bottom:14px;display:flex;overflow:hidden}.tab-item{color:var(--text-muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:11px 18px;font-size:12.5px;font-weight:500;transition:all .12s;display:flex}.tab-item:hover{color:var(--text-primary);background:#fafafa}.tab-item.active{color:var(--wd);border-bottom-color:var(--wd);font-weight:600}.tab-badge-count{background:var(--orange-l);color:var(--orange);border-radius:8px;padding:1px 5px;font-size:9.5px;font-weight:700}.grid-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.info-row{border-bottom:.5px solid var(--border-l);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.info-row:last-child{border-bottom:none}.info-label{color:var(--text-light);font-size:11.5px}.info-value{color:var(--text-secondary);font-size:12.5px;font-weight:500}.progress{background:var(--border-l);border-radius:3px;height:6px;margin-top:6px;overflow:hidden}.progress-fill{border-radius:3px;height:100%;transition:width .3s}.progress-g{background:var(--wd)}.progress-o{background:var(--orange)}.progress-r{background:var(--red)}.traccar-dot{vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.traccar-dot.online{background:var(--wd)}.traccar-dot.offline{background:var(--orange)}.search-wrap{border-bottom:.5px solid var(--border-l);align-items:center;gap:8px;padding:10px 16px;display:flex}.search-input{color:var(--text-primary);font-size:12.5px;font-family:var(--font);background:0 0;border:none;outline:none;flex:1}.search-input::placeholder{color:var(--text-light)}.empty-state{color:var(--text-light);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:48px 20px;display:flex}.loading{justify-content:center;align-items:center;padding:48px;display:flex}.spinner{border:2.5px solid var(--border);border-top-color:var(--wd);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.2s forwards fadeIn}

@media (max-width: 768px) {
  .shell { flex-direction: column; }
  .sidebar {
    width: 75vw;
    max-width: 260px;
    height: 100vh;
    position: fixed;
    top: 0; left: -100%;
    z-index: 1000;
    transition: left 0.25s ease;
    box-shadow: 4px 0 20px rgba(0,0,0,0.2);
  }
  .sidebar.open { left: 0; }
  .sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.4);
    z-index: 999;
  }
  .sidebar-overlay.open { display: block; }
  .main { width: 100%; }
  .topbar { padding: 12px 14px; }
  .topbar-menu-btn {
    display: flex;
    width: 32px; height: 32px;
    border: 0.5px solid var(--border);
    border-radius: var(--radius-sm);
    align-items: center; justify-content: center;
    cursor: pointer; background: transparent;
    margin-right: 8px;
  }
  .kpi-grid { grid-template-columns: 1fr 1fr; }
  .grid-2 { grid-template-columns: 1fr; }
  .page-scroll { padding: 14px; }
  .detail-hero { flex-direction: column; align-items: flex-start; }
  .detail-hero-stats { flex-wrap: wrap; }
  .topbar-crumb { display: none; }
}
@media (max-width: 480px) {
  .kpi-grid { grid-template-columns: 1fr; }
  .tabs { overflow-x: auto; }
  .tab-item { padding: 10px 12px; font-size: 12px; }
}
.topbar-menu-btn { display: none; }
