*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,a{touch-action:manipulation}:root{--bg: #0f172a;--surface: #1e293b;--surface2: #1a2332;--surface3: #253348;--surface-glow: rgba(62,106,161,.08);--border: #334155;--border-subtle: rgba(51,65,85,.5);--primary: #233e72;--primary-dark: #1e2f47;--primary-light: #304c74;--primary-400: #4a7fbb;--primary-300: #7fa6d6;--accent: #f3d042;--green: #22c55e;--green-bg: rgba(34,197,94,.12);--yellow: #f59e0b;--yellow-bg: rgba(245,158,11,.12);--red: #ef4444;--red-bg: rgba(239,68,68,.12);--blue: #3e6aa1;--blue-bg: rgba(62,106,161,.12);--text: #f1f5f9;--muted: #94a3b8;--muted-light: #64748b;--radius: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--shadow-sm: 0 1px 2px rgba(0,0,0,.06), 0 1px 3px rgba(0,0,0,.1);--shadow-md: 0 4px 12px rgba(0,0,0,.15), 0 2px 4px rgba(0,0,0,.06);--shadow-lg: 0 10px 25px rgba(0,0,0,.2), 0 4px 10px rgba(0,0,0,.1);--shadow-xl: 0 20px 25px rgba(0,0,0,.15), 0 8px 10px rgba(0,0,0,.1);--transition-fast: .15s ease;--transition-base: .25s ease}html,body{overflow-x:clip}body{background:radial-gradient(circle at 100% 0%,rgba(48,76,116,.22),transparent 34%),linear-gradient(135deg,#0a0f1d,#0f172a 40%,#152236);color:var(--text);font-family:var(--font);font-size:14px;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:block;max-width:100%}button,input,select,textarea{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(243,208,66,.55);outline-offset:2px}code{font-size:12px;overflow-wrap:anywhere}::selection{background:#233e72;color:#fff}.auth-body{display:flex;align-items:center;justify-content:center;padding:32px 16px}.auth-wrap{width:100%;max-width:420px}.login-box{background:#1e293bd9;backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl),0 0 80px #233e7226;padding:40px;position:relative;overflow:hidden}.login-box:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--primary) 0%,var(--accent) 50%,var(--primary) 100%)}.login-box .logo,header .brand{display:flex;align-items:center;gap:12px}.login-box .logo{margin-bottom:28px}.logo-mark{width:60px;height:60px;object-fit:cover;border-radius:16px;flex-shrink:0}.login-box h1,header .brand h1{font-size:22px;font-weight:800;letter-spacing:-.5px;color:var(--text)}.login-tabs{display:flex;gap:4px;margin-bottom:24px}.login-tab{flex:1;padding:9px;border:none;background:transparent;color:var(--muted);border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;transition:var(--transition-fast)}.login-tab.active{background:var(--accent);color:var(--primary-dark);box-shadow:0 2px 8px #f3d0424d}.login-form{display:flex;flex-direction:column;gap:14px}.login-form input,input,select,textarea{background:var(--surface3);border:1px solid var(--border);border-radius:12px;color:var(--text);padding:12px 16px;font-size:14px;outline:none;transition:var(--transition-fast);width:100%}.login-form input:focus,input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #f3d04226}.login-error{background:var(--red-bg);border:1px solid rgba(239,68,68,.3);border-radius:10px;padding:10px 14px;color:var(--red);font-size:13px;display:none}#admin-create-error{margin-bottom:14px}.login-hint,.auth-note{font-size:12px;color:var(--muted);text-align:center}header{position:sticky;top:0;z-index:1000;isolation:isolate;border-bottom:1px solid var(--border);padding:16px 28px;min-height:68px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;box-shadow:0 8px 30px #00000029}header:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:#1e293bbf;backdrop-filter:blur(12px)}.header-main{display:flex;align-items:center;justify-content:space-between;gap:16px}header .brand{min-width:0}header .brand img{width:52px;height:52px}header .brand h1{font-size:19px}header .brand span{font-size:13px;color:var(--muted);font-weight:500}.menu-toggle,.sidebar-close{display:none;align-items:center;justify-content:center;gap:4px;background:var(--surface3);color:var(--text);border:1px solid var(--border);border-radius:12px;cursor:pointer}.menu-toggle{position:relative;z-index:1;width:56px;height:56px;min-width:56px;padding:0;flex-direction:column;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none}.menu-toggle span{width:18px;height:2px;background:currentColor;border-radius:999px;pointer-events:none}.sidebar-close{margin:0 auto 10px 20px;padding:12px 16px;min-height:44px;font-size:12px;font-weight:700;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none}.sidebar-close span{pointer-events:none}.sidebar-overlay{position:fixed;inset:0;border:none;background:#0f172aa8;opacity:0;pointer-events:none;transition:opacity var(--transition-base);z-index:1090}.header-right,.status-pills{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-pills[hidden]{display:none}.header-right{justify-content:flex-end}.pill{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:12px;font-weight:500;background:var(--surface3);border:1px solid var(--border)}.pill .dot{width:8px;height:8px;border-radius:50%}.pill.online .dot{background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse 2s infinite}.pill.offline .dot{background:var(--red)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.app-body{display:flex;min-height:calc(100dvh - var(--header-h, 68px));min-width:0}nav.sidebar{position:sticky;top:var(--header-h, 68px);height:calc(100dvh - var(--header-h, 68px));align-self:flex-start;width:240px;flex-shrink:0;background:linear-gradient(180deg,#1e293b,#172033);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 0;gap:2px;overflow-y:auto}nav.sidebar.auth-pending{visibility:hidden}nav.sidebar a{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--muted);text-decoration:none;font-weight:500;border-radius:0 10px 10px 0;margin-right:12px;transition:color var(--transition-fast),background var(--transition-fast)}nav.sidebar a:hover{color:var(--text);background:var(--surface3)}nav.sidebar a.active{color:#fff;background:linear-gradient(90deg,#f3d04226,#f3d04214);border-left:3px solid var(--accent);padding-left:17px;font-weight:600}nav.sidebar a svg{width:18px;height:18px;flex-shrink:0}.sidebar-logout{margin:auto 12px 0;flex-shrink:0}nav.sidebar .section-label{font-size:10px;font-weight:700;letter-spacing:.1em;color:var(--muted-light);padding:18px 20px 4px;text-transform:uppercase}.notif-badge{display:none;background:var(--red);color:#fff;border-radius:10px;padding:1px 6px;font-size:11px;margin-left:4px}main{flex:1;min-width:0;width:100%;max-width:1680px;margin:0 auto;overflow-y:auto;padding:24px 28px;display:flex;flex-direction:column;gap:24px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-md)}.compact-card{padding:12px}.card-title{font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.01em;margin-bottom:16px;display:flex;align-items:center;gap:8px}.page-heading,.card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.page-heading{margin-bottom:-4px}.page-heading h2,.card-heading h3{color:var(--text);font-size:24px;line-height:1.15;letter-spacing:-.03em}.card-heading h3{font-size:17px;letter-spacing:-.015em}.card-heading+.form-grid,.card-heading+.table-wrap,.card-heading+.page-toolbar,.card-heading+.stack-list{margin-top:18px}.page-subtitle{color:var(--muted);margin-top:8px;line-height:1.5}.eyebrow{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.12em;line-height:1;margin-bottom:9px;text-transform:uppercase}.required{color:var(--red)}.vehicle-tabs{display:flex;align-self:flex-start;gap:4px;padding:4px;background:var(--surface3);border:1px solid var(--border);border-radius:12px}.vehicle-tabs[hidden]{display:none}.vehicle-tab{min-width:110px;padding:10px 18px;color:var(--muted);background:transparent;border:0;border-radius:9px;cursor:pointer;font-size:13px;font-weight:700;transition:var(--transition-fast)}.vehicle-tab:hover{color:var(--text);background:#ffffff0a}.vehicle-tab.active{color:var(--primary-dark);background:var(--accent);box-shadow:0 3px 10px #f3d04233}.service-view-tabs{margin:18px 0}.vehicle-panel[hidden]{display:none}.vehicle-panel,.analytics-results{display:flex;flex-direction:column;gap:24px;min-width:0}.analytics-results[hidden]{display:none}.table-empty{color:var(--muted);text-align:center}.page-toolbar .card-title{margin-bottom:0}.card-title-lg{font-size:20px;letter-spacing:-.02em}.history-legend{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:10px}.history-legend[hidden]{display:none}.history-legend-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-light);margin-right:2px}.history-legend-chip{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:6px 12px;background:var(--surface3);color:var(--muted);border:1px solid var(--border);border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.history-legend-chip:hover{color:var(--text);border-color:var(--primary-400)}.history-legend-chip.active{color:var(--text);border-color:var(--accent);background:#f3d0421a}.history-arrow svg{width:15px;height:15px;fill:#cbd5e1e6;stroke:#0f172abf;stroke-width:1.5;stroke-linejoin:round}.history-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.notif-filter{width:auto;min-width:170px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-md);transition:transform var(--transition-fast),border-color var(--transition-fast)}.stat-card:hover{transform:translateY(-2px);border-color:var(--primary-400)}.stat-card .value{font-size:28px;font-weight:800}.stat-card .label{font-size:12px;color:var(--muted);margin-top:4px;font-weight:500}.stat-card.accent-green .value{color:var(--green)}.stat-card.accent-blue .value{color:var(--accent)}.stat-card.accent-purple .value{color:var(--primary-300)}.usage-kpis{margin-top:18px}.usage-vehicle-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin-top:18px}.usage-vehicle-card{display:flex;align-items:center;gap:12px;width:100%;min-height:94px;padding:16px;text-align:left;color:var(--text);background:var(--surface3);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.usage-vehicle-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow-sm)}.usage-vehicle-card.selected{background:#f3d04214;border-color:var(--accent);box-shadow:0 0 0 2px #f3d0421f}.usage-vehicle-card-icon{display:grid;place-items:center;width:42px;height:42px;flex-shrink:0;background:var(--surface);border-radius:12px;font-size:22px}.usage-vehicle-card-main{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.usage-vehicle-card-title{font-weight:700;overflow-wrap:anywhere}.usage-vehicle-card-status{width:fit-content;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:700}.usage-vehicle-card-status.available{color:var(--green);background:var(--green-bg)}.usage-vehicle-card-status.own{color:var(--accent);background:#f3d0421f}.usage-vehicle-card-status.busy{color:var(--red);background:var(--red-bg)}.usage-vehicle-card-meta{color:var(--muted);font-size:11px;overflow-wrap:anywhere}.usage-vehicle-card-chevron{color:var(--muted);font-size:26px;line-height:1}.followup-search{display:flex;gap:8px;margin:18px 0}.followup-search input{min-width:0;flex:1}.followup-filters{display:grid;grid-template-columns:minmax(180px,1.5fr) repeat(5,minmax(120px,1fr)) auto;align-items:end;gap:12px;margin:18px 0 16px}.followup-filters .inline-actions{padding-bottom:1px}.usage-history-filters{display:grid;grid-template-columns:minmax(180px,1.5fr) repeat(4,minmax(130px,1fr)) auto;align-items:end;gap:12px;margin-bottom:16px}.usage-history-filters .inline-actions{padding-bottom:1px}.calendar-toolbar{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}.calendar-toolbar[hidden]{display:none}.calendar-toolbar .field{min-width:200px}.calendar-nav{display:flex;align-items:center;gap:10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));gap:10px;overflow-x:auto}.calendar-grid[hidden],#usage-history-list-view[hidden]{display:none!important}.calendar-grid.all-vehicles{display:block}.calendar-all-table th{white-space:nowrap}.calendar-all-vehicle{font-weight:700;white-space:nowrap}.calendar-all-cell{vertical-align:top;min-width:150px}.calendar-all-blocks{display:flex;flex-direction:column;gap:6px}.calendar-day{background:var(--surface3);border:1px solid var(--border);border-radius:10px;padding:10px;min-height:120px;display:flex;flex-direction:column;gap:8px}.calendar-day-header{font-weight:700;font-size:13px}.calendar-block{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:8px 10px;font-size:12px}.calendar-block>summary{cursor:pointer;list-style:none}.calendar-block>summary::-webkit-details-marker{display:none}.calendar-block-title{font-weight:700;margin-bottom:2px}.calendar-block-meta{color:var(--muted)}.calendar-block-actions{margin-top:6px}.calendar-block-actions .inline-actions{gap:4px}.calendar-block-actions .btn-xs{padding:3px 7px;font-size:10px}.usage-camera-button{margin-top:8px}.usage-report-heading{margin-top:20px}.followup-item{padding:12px;background:var(--surface3);border:1px solid var(--border);border-radius:10px}.followup-item .list-meta{font-size:14px;line-height:1.4}.followup-item .followup-text{margin-top:8px;font-size:16px;line-height:1.45;overflow-wrap:anywhere}.attachment-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.attachment-button{display:inline-flex;align-items:center;gap:5px}.usage-vehicle-stats{margin-top:20px}.odo-handoff{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:18px 0;padding:12px 16px;background:var(--surface3);border:1px solid var(--border);border-radius:12px;box-shadow:inset 3px 0 0 var(--accent)}.odo-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-light)}.odo-value{font-size:30px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.odo-unit{margin-left:5px;font-size:13px;font-weight:600;color:var(--muted)}.usage-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.usage-action-tile{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:10px;min-height:78px;padding:14px;background:var(--surface3);color:var(--text);border:1px solid var(--border);border-radius:12px;font-size:13px;font-weight:600;text-align:left;cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.usage-action-tile:hover{border-color:var(--accent);background:#f3d0420f}.usage-action-tile svg{width:20px;height:20px;color:var(--accent)}.field-hint.invalid{color:var(--red)}.usage-fuel-receipt{margin-top:18px}.field-hint{color:var(--muted);font-size:11px;line-height:1.4}.usage-maintenance-warnings{display:grid;gap:8px;margin:18px 0}.usage-maintenance-warning{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:9px;font-size:12px;font-weight:600;line-height:1.35}.usage-maintenance-warning.warning{color:var(--yellow);background:var(--yellow-bg);border:1px solid rgba(245,158,11,.35)}.usage-maintenance-warning.danger{color:var(--red);background:var(--red-bg);border:1px solid rgba(239,68,68,.35)}.table-wrap{overflow-x:auto;border-radius:var(--radius);-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse}table.min-w-720{min-width:720px}table.min-w-760{min-width:760px}table.min-w-820{min-width:820px}table.min-w-840{min-width:840px}table.min-w-900{min-width:900px}table.min-w-980{min-width:980px}th{text-align:left;font-size:11px;font-weight:700;color:var(--muted-light);text-transform:uppercase;letter-spacing:.07em;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface3)}td{padding:10px 14px;border-bottom:1px solid var(--border-subtle);vertical-align:middle;font-size:13px}tr:last-child td{border-bottom:none}tr:hover td{background:#3e6aa10a}.action-cell{min-width:170px}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700}.badge.green{background:var(--green-bg);color:var(--green)}.badge.red{background:var(--red-bg);color:var(--red)}.badge.blue{background:var(--blue-bg);color:var(--blue)}.badge.yellow{background:var(--yellow-bg);color:var(--yellow)}.badge.gray{background:#64748b26;color:var(--muted)}.swatch{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:middle;margin-right:6px;border:1px solid rgba(255,255,255,.85);box-shadow:0 0 0 1px #0000004d}.muted-inline{color:var(--muted)}.center-note{color:var(--muted);font-size:13px;text-align:center;padding:12px 0;display:block}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-inline{flex-direction:row;align-items:center;gap:6px;margin:0}.field-inline label{white-space:nowrap}label{font-size:12px;font-weight:600;color:var(--muted)}.input-compact{width:90px}input[type=color]{padding:4px;height:40px;cursor:pointer;border-radius:8px}textarea{resize:vertical;min-height:96px}input[type=date],input[type=datetime-local],input[type=time],input[type=month]{-webkit-appearance:none;appearance:none;min-width:0;max-width:100%}.field{min-width:0}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{filter:invert(.6) sepia(.2) hue-rotate(180deg);cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 20px;border-radius:10px;font-size:13px;font-weight:600;min-height:40px;border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast)}.btn:focus-visible{transform:none}.btn:hover{opacity:.9;transform:translateY(-1px)}.btn:active{transform:scale(.97) translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.is-loading{position:relative}.btn.is-loading:before{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:button-spin .7s linear infinite}@keyframes button-spin{to{transform:rotate(360deg)}}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);color:#fff;box-shadow:0 2px 8px #233e724d}.btn-danger{background:var(--red);color:#fff;box-shadow:0 2px 8px #ef444433}.btn-ghost{background:var(--surface3);color:var(--text);border:1px solid var(--border)}.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}.btn-xs{padding:4px 10px;font-size:11px;border-radius:8px}.page-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}.toolbar-group{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;flex:1 1 280px;min-width:0}.toolbar-group>.field{flex:1 1 180px;min-width:170px}.toolbar-group.compact{flex:0 1 auto}.inline-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.centered-actions,.card>.inline-actions{justify-content:flex-end}.centered-actions{margin-top:18px}.pagination-row{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.stack-list{display:flex;flex-direction:column;gap:8px}.list-row,.zone-result-item,.device-item{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:12px 16px;background:var(--surface3);border-radius:10px;border:1px solid var(--border)}.list-row.unread{background:#3e6aa114;border-color:var(--accent)}.notification-row{cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.notification-row:hover,.notification-row:focus-visible{border-color:var(--accent);outline:none}.list-main{flex:1;min-width:0}.list-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:600}.list-meta{font-size:11px;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}.list-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.list-side .list-meta{margin-top:0;text-align:right}#usage-history .list-title{font-size:15px}#usage-history .list-meta{font-size:14px;line-height:1.4}.usage-history-details{display:grid;gap:4px;margin-top:8px;color:var(--muted);font-size:14px;line-height:1.4}.usage-history-detail{overflow-wrap:anywhere}.list-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.page-note{font-size:13px;color:var(--muted);margin-bottom:16px;line-height:1.5}.reveal-box{display:none;margin-top:14px;background:var(--green-bg);border:1px solid rgba(34,197,94,.25);border-radius:10px;padding:14px}.metric-highlight{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.metric-highlight .value{font-size:24px;font-weight:700;color:var(--accent)}.metric-highlight .label{color:var(--muted);font-size:13px}.toggle-control{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer;user-select:none}.toggle-control input[type=checkbox]{width:auto;accent-color:var(--accent)}.date-presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px}.history-actions{margin-top:16px}.history-filter-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px}.history-filter-row .history-actions{margin-top:0}#map,#history-map{border:1px solid var(--border);border-radius:var(--radius-lg);z-index:0}#map,#history-map{height:650px}#live-map-card:fullscreen{width:100vw;height:100dvh;max-width:none;border-radius:0;display:flex;flex-direction:column;overflow:hidden}#live-map-card:fullscreen #map{flex:1;min-height:0;height:auto}.history-map-shell{position:relative;min-height:650px}.history-map-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:linear-gradient(135deg,#0f172afa,#1e293bf5 55%,#152236fa);z-index:5;transition:opacity var(--transition-base),visibility var(--transition-base)}.history-map-shell[data-state=ready] .history-map-loading,.history-map-shell[data-state=idle] .history-map-loading{opacity:0;visibility:hidden;pointer-events:none}.history-map-shell[data-state=ready] #history-map,.history-map-shell[data-state=idle] #history-map{opacity:1}.history-map-shell[data-state=loading] #history-map,.history-map-shell[data-state=empty] #history-map,.history-map-shell[data-state=error] #history-map{opacity:0;pointer-events:none}.history-map-spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(148,163,184,.28);border-top-color:var(--accent);animation:history-spin .8s linear infinite}.history-map-loading-text{max-width:320px;text-align:center;color:var(--text);font-size:13px;font-weight:600;line-height:1.45}@keyframes history-spin{to{transform:rotate(360deg)}}.map-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:8px}.map-actions{display:flex;gap:8px;margin-left:auto}#btn-map-fullscreen{gap:10px}.map-mode-toggle{display:flex;gap:4px;background:var(--surface3);border-radius:10px;padding:4px}.map-mode-btn{padding:7px 16px;border:none;background:transparent;color:var(--muted);border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;transition:var(--transition-fast)}.map-mode-btn.active{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);color:#fff}#zone-controls{display:none;align-items:center;gap:8px;flex-wrap:wrap}#zone-controls.show{display:flex}#zone-hint{font-size:12px;color:var(--yellow);background:var(--yellow-bg);border:1px solid rgba(245,158,11,.25);border-radius:8px;padding:5px 12px}#zone-results{margin-top:12px}.zone-dist{font-size:12px;font-weight:700;color:var(--accent)}.device-item .dev-id{font-weight:600}.device-item .dev-meta{font-size:11px;color:var(--muted)}.notif-icon{font-size:18px;line-height:1}#log-container,#frames-container{background:#0a0f1d;border:1px solid var(--border);border-radius:var(--radius-lg);overflow-y:auto;padding:14px}#log-container{height:420px;font-family:JetBrains Mono,Fira Code,Cascadia Code,monospace;font-size:12px}#frames-container{height:300px;font-family:JetBrains Mono,monospace;font-size:11px;color:#a3e635}.log-entry{padding:2px 0;display:flex;gap:12px}.log-time,.frame-entry .ft{color:var(--muted-light);flex-shrink:0}.log-warn .log-msg{color:var(--yellow)}.log-error .log-msg{color:var(--red)}.log-success .log-msg{color:var(--green)}#toast{position:fixed;top:calc(var(--header-h, 68px) + 16px);right:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 22px;font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);transform:translateY(-80px);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s;z-index:1400;max-width:340px}#toast.show{transform:translateY(0);opacity:1}.btn[hidden]{display:none}#toast.success{border-left:4px solid var(--green)}#toast.error{border-left:4px solid var(--red)}#toast.warn{border-left:4px solid var(--yellow)}.modal-bg{display:none;position:fixed;inset:0;background:#0f172abf;backdrop-filter:blur(4px);z-index:1300;align-items:center;justify-content:center}.modal-bg.open{display:flex}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:32px;width:480px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl)}.infringement-provider-tabs{display:flex;gap:4px;margin:18px 0}.infringement-provider-tabs .vehicle-tab{min-width:90px}.infringement-actions{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-top:16px}.infringement-filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-left:auto}.infringement-filters .field{min-width:240px}.infringement-filters .btn.active{color:var(--primary-dark);background:var(--accent)}.infringement-message{margin-top:16px;padding:10px 12px;border-radius:9px;font-size:13px}.infringement-message.error{background:var(--red-bg);color:var(--red)}.infringement-message.warn{background:var(--yellow-bg);color:var(--yellow)}.infringement-message.info{background:var(--blue-bg);color:var(--primary-300)}.infringement-message.success{background:var(--green-bg);color:var(--green)}.infringement-summary{margin-top:18px;color:var(--muted);font-size:13px;font-weight:600}.infringement-kpis,.infringement-vehicle-stats{margin-top:14px}.infringement-vehicle-stats .list-meta{margin:0 0 8px}.infringement-results{margin-top:12px}.modal h2{font-size:18px;font-weight:700;margin-bottom:20px;color:var(--text)}#usage-note-modal .field+.field,#usage-problem-modal .field+.field{margin-top:16px}.modal-footer{display:flex;justify-content:center;gap:10px;margin-top:24px}.assignment-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;cursor:pointer}.assignment-option input{accent-color:var(--accent)}#assignment-vehicles .assignment-option{display:grid;grid-template-columns:1fr 28px minmax(0,180px) 1fr;gap:10px}#assignment-vehicles .assignment-option input{grid-column:2;justify-self:center}#assignment-vehicles .assignment-option span{grid-column:3;min-width:0;text-align:left}.vehicle-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;max-height:240px;overflow-y:auto;padding:4px}.vehicle-picker .assignment-option{padding:8px 10px;font-size:13px}.vehicle-picker .assignment-option:has(input:checked){border-color:var(--accent);background:#3e6aa114}.alert-banner{border-radius:10px;padding:12px 16px;font-size:13px;display:flex;align-items:center;gap:10px}.alert-banner.speed{background:var(--red-bg);border:1px solid rgba(239,68,68,.25);color:var(--red)}.alert-banner.geofence,.alert-banner.service{background:var(--yellow-bg);border:1px solid rgba(245,158,11,.25);color:var(--yellow)}.alert-banner.idle{background:#64748b1a;border:1px solid rgba(100,116,139,.25);color:var(--muted)}.alert-banner.usage{background:var(--green-bg);border:1px solid rgba(34,197,94,.25);color:var(--green)}.alert-banner.odometer{background:var(--red-bg);border:1px solid rgba(239,68,68,.25);color:var(--red)}.alert-close{margin-left:auto;background:none;border:none;cursor:pointer;color:inherit;font-size:16px;padding:10px;min-width:40px;min-height:40px}#alerts-container{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}.admin-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}.map-popup,.history-popup{min-width:0;max-width:240px;line-height:1.45}.map-popup__title,.history-popup__title{font-size:14px;font-weight:700}.map-popup__muted,.history-popup__meta{color:#475569;font-size:12px}.history-popup__event{font-size:10px;font-weight:800;letter-spacing:.08em;color:#64748b;text-transform:uppercase;margin-bottom:6px}.history-point-label{background:transparent;border:none;box-shadow:none;color:#0f172a;font-size:9px;font-weight:800;line-height:1;margin:0;padding:0;pointer-events:none;text-align:center;white-space:nowrap;text-shadow:-1px -1px 0 rgba(255,255,255,.95),1px -1px 0 rgba(255,255,255,.95),-1px 1px 0 rgba(255,255,255,.95),1px 1px 0 rgba(255,255,255,.95),0 0 4px rgba(255,255,255,.9)}.history-point-label.leaflet-tooltip-top:before,.history-point-label.leaflet-tooltip-bottom:before,.history-point-label.leaflet-tooltip-left:before,.history-point-label.leaflet-tooltip-right:before{display:none}#gf-polygon-points{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px}#new-key-value{display:block;word-break:break-all}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0a0f1d}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--primary-400)}@media(max-width:1023px){header:before{backdrop-filter:none;background:#1a2437}header{position:fixed;inset:0 0 auto;width:100%}.app-body{margin-top:var(--header-h, 68px)}.menu-toggle,.sidebar-close{display:inline-flex}.header-main,.header-right{width:100%}.header-right{justify-content:space-between}body.nav-open{overflow:hidden}body.nav-open .sidebar-overlay{opacity:1;pointer-events:auto}.app-body{min-height:auto}nav.sidebar{position:fixed;inset:0 0 0 auto;width:min(82vw,320px);height:100dvh;z-index:1100;transform:translate(100%);transition:transform var(--transition-base);will-change:transform;box-shadow:var(--shadow-xl);padding:20px 0 24px}body.nav-open nav.sidebar{transform:translate(0)}nav.sidebar a{margin:0 12px;border-radius:10px}nav.sidebar .section-label{padding-top:12px}main{padding:20px}#map,#history-map{height:520px}.history-map-shell{min-height:520px}}@media(max-width:767px){.auth-body{padding:20px 12px}.auth-wrap{max-width:100%}.login-box{padding:24px 18px;border-radius:20px}.login-box .logo{margin-bottom:22px;align-items:flex-start}.logo-mark{width:52px;height:52px;border-radius:14px}header{padding:14px}header .brand img{width:44px;height:44px}header .brand h1{font-size:18px}header .brand span{font-size:10px}.header-right,.status-pills{width:100%}.header-right{flex-direction:column;align-items:stretch}.status-pills{flex-direction:column;align-items:stretch;gap:8px}.pill{justify-content:center}#logout-btn{width:auto;justify-content:center;text-align:center}main{padding:16px 14px;gap:16px;width:100%;max-width:100%;overflow-x:hidden}.card,.stat-card{padding:18px}.compact-card{padding:12px}.page-heading h2{font-size:21px}.page-subtitle{font-size:13px}.vehicle-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0}.vehicle-tab{min-width:0;width:100%;padding-inline:8px}.page-heading>div,.card-heading>div,.vehicle-panel,.vehicle-panel .card,.form-grid,.page-toolbar,.toolbar-group,.usage-vehicle-cards,.usage-history-filters{min-width:0;max-width:100%}.followup-filters{min-width:0;max-width:100%}.usage-vehicle-cards{grid-template-columns:minmax(0,1fr)}.vehicle-panel .table-wrap{width:100%;max-width:100%}.history-filter-row,.usage-history-filters,.followup-filters{grid-template-columns:1fr}.usage-action-grid{grid-template-columns:minmax(0,1fr)}.stat-grid,.form-grid{grid-template-columns:1fr}.page-toolbar,.toolbar-group,.inline-actions,.map-toolbar,.modal-footer,.admin-form-actions{flex-direction:column;align-items:stretch}.toolbar-group{flex-basis:100%}.toolbar-group>.field,.field{width:100%}.toolbar-group>.field{flex:0 1 auto;min-width:0}.field-inline{flex-wrap:wrap;align-items:flex-start}.field-inline label{white-space:normal}.input-compact{width:100%!important}.inline-actions>.btn,.inline-actions>select,.list-actions>.btn,.list-actions>select,.modal-footer>.btn,.admin-form-actions>.btn{width:100%}.map-mode-toggle{width:100%}.map-mode-btn{flex:1 1 50%}.map-actions{width:100%;margin-left:0}.map-actions .btn{flex:1}#zone-controls{width:100%}.list-row,.zone-result-item,.device-item,.alert-banner{flex-direction:column;align-items:stretch}.list-side,.list-actions{align-items:stretch;justify-content:flex-start}.list-side .list-meta{text-align:left}.pagination-row{justify-content:flex-start}th,td{padding:10px 12px}#map,#history-map{height:380px}.history-map-shell{min-height:380px}#gf-map{height:260px!important}#log-container{height:320px}#frames-container{height:240px}#toast{left:12px;right:12px;max-width:none;transform:translateY(-80px)}#toast.show{transform:translateY(0)}.modal{width:min(96vw,480px);padding:20px 16px}}@media(max-width:480px){.login-box{padding:20px 14px}.login-tabs{flex-direction:column}.card,.stat-card{padding:16px}.compact-card{padding:10px}.btn-sm,.btn-xs{min-height:40px;padding-inline:12px}.header-main{gap:12px}#map,#history-map{height:340px}.history-map-shell{min-height:340px}}
