@import"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,300..700,0..1,-50..200&display=swap";:root{--primary: #003ec7;--primary-container: #0052ff;--primary-fixed: #dde1ff;--primary-fixed-dim: #b7c4ff;--surface-tint: #004ced;--on-primary: #ffffff;--on-primary-fixed: #001452;--on-primary-container:#dfe3ff;--inverse-primary: #b7c4ff;--background: #f7f9fb;--surface: #f7f9fb;--surface-bright: #f7f9fb;--surface-dim: #d8dadc;--surface-container-lowest: #ffffff;--surface-container-low: #f2f4f6;--surface-container: #eceef0;--surface-container-high: #e6e8ea;--surface-container-highest:#e0e3e5;--surface-variant: #e0e3e5;--outline-variant: #c3c5d9;--outline: #737688;--on-background: #191c1e;--on-surface: #191c1e;--on-surface-variant: #434656;--inverse-surface: #2d3133;--inverse-on-surface: #eff1f3;--error: #ba1a1a;--error-container: #ffdad6;--on-error: #ffffff;--on-error-container:#93000a;--secondary: #565e74;--secondary-container: #dae2fd;--secondary-fixed: #dae2fd;--secondary-fixed-dim: #bec6e0;--on-secondary: #ffffff;--on-secondary-fixed: #131b2e;--tertiary: #952200;--tertiary-container: #bf3003;--tertiary-fixed: #ffdbd2;--tertiary-fixed-dim: #ffb4a1;--on-tertiary: #ffffff;--on-tertiary-container:#ffddd5;--success: #16a34a;--success-bg: #dcfce7;--warning: #f59e0b;--warning-bg: #fef3c7;--state-moving: #00c853;--state-idle: #ffab00;--state-parked: #ff3b30;--state-towing: #ff1744;--state-offline: #64748b;--state-moving-bg: rgba(0, 200, 83, .14);--state-idle-bg: rgba(255, 171, 0, .16);--state-parked-bg: rgba(255, 59, 48, .14);--state-towing-bg: rgba(255, 23, 68, .2);--state-offline-bg: rgba(100, 116, 139, .14);--state-moving-border: rgba(0, 200, 83, .35);--state-idle-border: rgba(255, 171, 0, .35);--state-parked-border: rgba(255, 59, 48, .35);--state-towing-border: rgba(255, 23, 68, .5);--state-offline-border:rgba(100, 116, 139, .3);--sidebar-w: 256px;--topbar-h: 64px;--container-max: 1280px;--gutter: 2rem;--base: 8px;--radius: .25rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-full:9999px;--shadow: 0 1px 2px rgba(15, 23, 42, .06);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);--shadow-level-1: 0 4px 20px rgba(0, 0, 0, .04);--shadow-level-2: 0 12px 40px rgba(0, 0, 0, .08);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "Hanken Grotesk", "Inter", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;--bg: var(--background);--surface-2: var(--surface-container-low);--surface-3: var(--surface-container);--border: var(--outline-variant);--border-bright: var(--outline);--text: var(--on-background);--text-muted: var(--on-surface-variant);--text-dim: var(--outline);--text-light: #94a3b8;--blue: var(--primary);--blue-bright: var(--primary-container);--blue-dim: rgba(0, 62, 199, .1);--blue-glow: rgba(0, 62, 199, .2);--blue-bg: rgba(0, 62, 199, .1);--green: var(--success);--green-dim: rgba(22, 163, 74, .1);--green-bg: rgba(22, 163, 74, .1);--amber: var(--warning);--amber-dim: rgba(245, 158, 11, .12);--amber-bg: rgba(245, 158, 11, .12);--red: #ef4444;--red-dim: rgba(239, 68, 68, .1);--red-bg: rgba(239, 68, 68, .1);--slate: #94a3b8;--slate-bg: rgba(148, 163, 184, .1);--slate-dim: rgba(148, 163, 184, .08);--sidebar-bg: var(--surface-container-lowest);--sidebar-text: var(--on-background);--sidebar-text-muted: var(--on-surface-variant);--sidebar-active-bg: var(--primary-container);--sidebar-hover-bg: var(--surface-container)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);background:var(--background);color:var(--on-background);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:light}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--outline)}code,pre{font-family:var(--font-mono)}input,select,textarea,button{font-family:var(--font)}button{cursor:pointer}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-container)}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:22px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.material-symbols-outlined.fill{font-variation-settings:"FILL" 1,"wght" 500}.text-display-lg{font-family:var(--font-display);font-weight:700;font-size:48px;line-height:56px;letter-spacing:-.02em}.text-display-lg-mobile{font-family:var(--font-display);font-weight:700;font-size:36px;line-height:44px;letter-spacing:-.02em}.text-headline-md{font-family:var(--font-display);font-weight:600;font-size:32px;line-height:40px;letter-spacing:-.01em}.text-headline-sm{font-family:var(--font-display);font-weight:600;font-size:24px;line-height:32px}.text-body-lg{font-family:var(--font-body);font-weight:400;font-size:18px;line-height:28px}.text-body-md{font-family:var(--font-body);font-weight:400;font-size:16px;line-height:24px}.text-body-sm{font-family:var(--font-body);font-weight:400;font-size:14px;line-height:20px}.text-label-md{font-family:var(--font-body);font-weight:600;font-size:14px;line-height:20px;letter-spacing:.05em}.text-label-sm{font-family:var(--font-body);font-weight:500;font-size:12px;line-height:16px}.glass-card{background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);box-shadow:var(--shadow-level-1)}.sidebar{width:var(--sidebar-w);flex-shrink:0;height:100%;background:var(--sidebar-bg);color:var(--sidebar-text);border-right:1px solid var(--outline-variant);display:flex;flex-direction:column;overflow:hidden;padding:24px 16px;gap:4px}.sidebar__logo{display:flex;align-items:center;gap:12px;padding:4px 8px 18px}.sidebar__logo-mark{width:40px;height:40px;background:var(--primary);border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;font-family:var(--font-display);font-weight:800;font-size:20px}.sidebar__logo-mark .material-symbols-outlined{font-size:22px;font-variation-settings:"FILL" 1}.sidebar__brand{font-family:var(--font-display);font-weight:800;font-size:20px;letter-spacing:-.01em;color:var(--primary);line-height:1.1}.sidebar__company{font-size:11px;font-weight:500;color:var(--on-surface-variant);letter-spacing:.02em;line-height:1.2;margin-top:3px}.sidebar__nav{flex:1;padding:4px 0;display:flex;flex-direction:column;gap:4px;overflow-y:auto}.sidebar__section-label{display:none}.sidebar__link{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--radius-lg);text-decoration:none;color:var(--on-surface-variant);font-size:14px;font-weight:500;letter-spacing:.01em;transition:background .18s ease,color .18s ease,transform .18s ease}.sidebar__link:hover{background:var(--surface-container);color:var(--on-background)}.sidebar__link--active{background:var(--primary-container);color:var(--on-primary);font-weight:700;transform:translate(4px);box-shadow:var(--shadow-level-1)}.sidebar__link--active:hover{background:var(--primary-container);color:var(--on-primary)}.sidebar__link-icon{display:flex;align-items:center;flex-shrink:0}.sidebar__link-icon .material-symbols-outlined{font-size:22px}.sidebar__link--active .sidebar__link-icon .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 500}.sidebar__link-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__badge{min-width:20px;height:20px;background:var(--primary);color:#fff;font-size:10px;font-weight:700;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;padding:0 6px;flex-shrink:0}.sidebar__footer{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;gap:12px}.sidebar__cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;background:var(--primary);color:#fff;border:0;border-radius:var(--radius-lg);font-family:var(--font-body);font-weight:600;font-size:14px;letter-spacing:.02em;cursor:pointer;transition:opacity .15s,transform .15s;box-shadow:var(--shadow-level-1)}.sidebar__cta:hover{opacity:.92;transform:translateY(-1px)}.sidebar__cta .material-symbols-outlined{font-size:20px}.sidebar__divider{border-top:1px solid var(--outline-variant);margin:4px 0}.sidebar__user-bar{display:flex;align-items:center;gap:10px;padding:6px 8px}.sidebar__avatar{width:34px;height:34px;border-radius:50%;background:var(--surface-container-high);color:var(--on-surface-variant);font-size:12px;font-weight:700;letter-spacing:.04em;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar__user-info{min-width:0;flex:1}.sidebar__user-name{font-size:12.5px;font-weight:600;color:var(--on-background);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}.sidebar__user-role{font-size:11px;color:var(--on-surface-variant);line-height:1.25}.sidebar__logout{width:34px;height:34px;border-radius:var(--radius-lg);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-surface-variant);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .13s,color .13s}.sidebar__logout .material-symbols-outlined{font-size:18px}.sidebar__logout:hover{background:var(--surface-container);color:var(--on-background)}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:1px solid rgba(195,198,215,.5);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;padding:0 24px;flex-shrink:0;z-index:50}.topbar__left{flex-shrink:0;min-width:140px}.topbar__title{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--on-background);letter-spacing:-.01em}.topbar__center{flex:1;max-width:480px}.topbar__search{display:flex;align-items:center;gap:10px;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-xl);padding:0 14px;height:40px;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}.topbar__search:focus-within{border-color:var(--primary);box-shadow:0 0 0 4px #003ec71a}.topbar__search-icon{color:var(--on-surface-variant);display:flex;align-items:center;flex-shrink:0}.topbar__search-icon .material-symbols-outlined{font-size:20px}.topbar__search-input{flex:1;background:transparent;border:none;outline:none;font-size:14px;color:var(--on-background);min-width:0}.topbar__search-input::placeholder{color:var(--outline)}.topbar__kbd{font-family:var(--font-mono);font-size:11px;color:var(--on-surface-variant);background:var(--surface);border:1px solid var(--outline-variant);border-radius:4px;padding:2px 6px;flex-shrink:0;-webkit-user-select:none;user-select:none}.topbar__right{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}.topbar__company-btn{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--radius-xl);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-surface-variant);font-size:13px;font-weight:500;box-shadow:var(--shadow-sm);transition:background .13s,color .13s;white-space:nowrap}.topbar__company-btn:hover{background:var(--surface-container-low);color:var(--on-background)}.topbar__company-dot{width:8px;height:8px;border-radius:50%;background:var(--success);flex-shrink:0}.topbar__icon-btn{width:38px;height:38px;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--on-surface-variant);display:flex;align-items:center;justify-content:center;position:relative;transition:background .13s,color .13s}.topbar__icon-btn .material-symbols-outlined{font-size:22px}.topbar__icon-btn:hover{background:var(--surface-container);color:var(--on-background)}.topbar__notif-dot{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--error);border:2px solid var(--surface)}.topbar__status{display:flex;align-items:center;gap:6px;padding:5px 11px;border-radius:99px;font-size:12px;font-weight:600;border:1px solid transparent}.topbar__status--connected{background:var(--success-bg);border-color:#16a34a33;color:#166534}.topbar__status--disconnected{background:var(--warning-bg);border-color:#f59e0b40;color:#92400e}.topbar__status--unavailable{background:var(--surface-container);border-color:var(--outline-variant);color:var(--on-surface-variant)}.topbar__status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.topbar__status--connected .topbar__status-dot{animation:topbar-pulse 2.2s ease-in-out infinite}@keyframes topbar-pulse{0%,to{opacity:1}50%{opacity:.4}}.topbar__status-label{white-space:nowrap}.toast-stack{position:fixed;top:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:1000;max-width:360px}.toast{padding:12px 16px;border-radius:8px;color:#fff;font-size:14px;box-shadow:0 4px 12px #00000026;animation:toast-in .2s ease-out}.toast--success{background:var(--green, #10b981)}.toast--error{background:var(--red, #ef4444)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.maint-page{max-width:1100px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:24px}.maint-page__header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px}.maint-page__title{font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.maint-page__subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}.maint-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;display:flex;flex-direction:column;gap:16px}.maint-form__title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:4px}.maint-form__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.maint-form__field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.maint-form__field--full{grid-column:1 / -1}.maint-form__field--checkbox{flex-direction:row;align-items:center;gap:8px;text-transform:none;font-size:13px;font-weight:500;letter-spacing:0;color:var(--text);cursor:pointer;padding-top:20px}.maint-form__field input[type=text],.maint-form__field input[type=number],.maint-form__field input[type=date],.maint-form__field select,.maint-form__field textarea{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:13px;color:var(--text);font-family:var(--font);outline:none;transition:border-color .15s}.maint-form__field input:focus,.maint-form__field select:focus,.maint-form__field textarea:focus{border-color:var(--blue)}.maint-form__field textarea{resize:vertical;min-height:72px}.maint-form__error{font-size:13px;color:var(--red)}.maint-form__actions{display:flex;gap:10px}.maint-btn{display:inline-flex;align-items:center;padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:background .15s,border-color .15s}.maint-btn:hover:not(:disabled){background:var(--surface-2)}.maint-btn:disabled{opacity:.5;cursor:not-allowed}.maint-btn--primary{background:var(--blue);color:#fff;border-color:var(--blue)}.maint-btn--primary:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.maint-btn--danger-sm{padding:4px 10px;font-size:12px;color:var(--red);border-color:transparent;background:var(--surface-2)}.maint-btn--danger-sm:hover{background:var(--red-bg);border-color:var(--red)}.maint-table-wrapper{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}.maint-table{width:100%;border-collapse:collapse;font-size:13px}.maint-table th{background:var(--surface-2);padding:10px 14px;text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}.maint-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap}.maint-table tbody tr:last-child td{border-bottom:none}.maint-table tbody tr:hover td{background:var(--surface-2)}.maint-code{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);padding:2px 6px;border-radius:4px;color:var(--blue)}.maint-muted{color:var(--text-muted)}.maint-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;letter-spacing:.04em}.maint-badge--green{background:var(--green-bg);color:var(--green)}.maint-badge--amber{background:var(--amber-bg);color:var(--amber)}.maint-badge--slate{background:var(--slate-bg);color:var(--slate)}.maint-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-muted);font-size:14px;text-align:center}.maint-placeholder--error{color:var(--red);background:var(--red-bg);border-color:var(--red)}.maint-spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:maint-spin .7s linear infinite;flex-shrink:0}@keyframes maint-spin{to{transform:rotate(360deg)}}.maint-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:-1px}.maint-tab-btn{background:transparent;border:none;border-bottom:2px solid transparent;padding:10px 16px;font-size:14px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s}.maint-tab-btn:hover{color:var(--text)}.maint-tab-btn--active{color:var(--blue);border-bottom-color:var(--blue)}.maint-tab-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.maint-tab-header__count{font-size:13px;color:var(--text-muted)}.maint-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 16px}.maint-filter{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted)}.maint-filter input,.maint-filter select{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 10px;color:var(--text);font-size:13px;font-family:inherit;min-width:140px}.maint-filter input:focus,.maint-filter select:focus{outline:none;border-color:var(--blue)}.maint-badge--red{background:var(--red-bg);color:var(--red)}.maint-text-red{color:var(--red);font-weight:500}.maint-btn--primary-sm{background:var(--blue);color:#fff;font-size:12px;padding:4px 10px;border:none}.maint-btn--primary-sm:hover{filter:brightness(1.1)}.maint-actions-cell{display:flex;gap:4px;justify-content:flex-end}.maint-form__hint{color:var(--text-muted);font-size:11px;margin-top:2px}.maint-row--red td{background:color-mix(in srgb,var(--red) 12%,transparent)}.maint-row--amber td{background:color-mix(in srgb,var(--amber) 12%,transparent)}.maint-row--red:hover td,.maint-row--amber:hover td{background:color-mix(in srgb,currentColor 0%,transparent)}.maint-row--red:hover td{background:color-mix(in srgb,var(--red) 18%,transparent)}.maint-row--amber:hover td{background:color-mix(in srgb,var(--amber) 18%,transparent)}.cpm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172aa6;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.cpm-card{background:#0f172a;border:1px solid #334155;border-radius:10px;padding:24px;width:100%;max-width:640px;max-height:90vh;overflow-y:auto;color:#e2e8f0;box-shadow:0 10px 30px #00000080}.cpm-title{margin:0;font-size:18px;font-weight:600}.cpm-subtitle{margin:4px 0 16px;color:#94a3b8;font-size:13px}.cpm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.cpm-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#cbd5e1}.cpm-field--full{margin-top:12px}.cpm-field--checkbox{flex-direction:row;align-items:center;gap:8px;align-self:end}.cpm-field input,.cpm-field textarea{background:#1e293b;border:1px solid #334155;border-radius:6px;padding:8px 10px;color:#e2e8f0;font-size:13px;font-family:inherit}.cpm-field input:focus,.cpm-field textarea:focus{outline:none;border-color:#3b82f6}.cpm-hint{color:#64748b;font-size:11px;margin-top:2px}.cpm-error{color:#f87171;margin:12px 0 0;font-size:13px}.cpm-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}@media (max-width: 600px){.cpm-grid{grid-template-columns:1fr}}.db{display:flex;flex-direction:column;gap:20px;max-width:1440px;padding:28px 32px 48px}.db-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.db-card__hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px 16px;border-bottom:1px solid var(--border)}.db-card__title{font-size:14px;font-weight:600;color:var(--text);letter-spacing:-.01em}.db-card__sub{font-size:11.5px;color:var(--text-muted);margin-top:2px}.db-toggle{display:flex;background:var(--surface-2);border:1px solid var(--border-bright);border-radius:var(--radius);overflow:hidden;flex-shrink:0}.db-toggle__btn{padding:5px 12px;font-size:12px;font-weight:500;color:var(--text-muted);background:transparent;border:none;transition:background .13s,color .13s;font-family:var(--font-mono)}.db-toggle__btn:hover{color:var(--text);background:var(--surface-3)}.db-toggle__btn--on{background:var(--blue-dim);color:var(--blue-bright)}.db-chart{padding:12px 16px 18px;height:160px;display:flex;align-items:stretch}.db-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 960px){.db-row{grid-template-columns:1fr}}.db-card--half{min-height:280px;display:flex;flex-direction:column}.db-card--half .db-card__hd{flex-shrink:0}.db-tbl-wrap{overflow-x:auto;flex:1}.db-tbl{width:100%;border-collapse:collapse;font-size:12.5px}.db-tbl th{background:var(--surface-2);padding:8px 16px;text-align:left;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);white-space:nowrap}.db-tbl td{padding:9px 16px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.db-tbl tbody tr:last-child td{border-bottom:none}.db-tbl tbody tr:hover td{background:var(--surface-2)}.db-code{font-family:var(--font-mono);font-size:11.5px;color:var(--blue-bright);background:var(--blue-dim);padding:2px 7px;border-radius:5px;letter-spacing:.02em}.db-clamp{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.db-muted{color:var(--text-muted);font-size:12px}.db-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.db-dot--green{background:var(--green)}.db-dot--amber{background:var(--amber)}.db-dot--red{background:var(--red);box-shadow:0 0 0 3px var(--red-dim)}.db-dot--gray{background:var(--text-dim)}.db-pill{display:inline-flex;align-items:center;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.02em}.db-pill--amber{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(251,191,36,.2)}.db-live-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:db-pulse 2s ease-in-out infinite;flex-shrink:0}@keyframes db-pulse{0%,to{box-shadow:0 0 #34d39966}50%{box-shadow:0 0 0 5px #34d39900}}.db-feed{flex:1;overflow-y:auto;padding:4px 0}.db-feed__row{display:flex;align-items:center;gap:10px;padding:7px 18px;border-bottom:1px solid var(--border);font-size:12.5px;transition:background .1s}.db-feed__row:last-child{border-bottom:none}.db-feed__row:hover{background:var(--surface-2)}.db-feed__imei{font-family:var(--font-mono);font-size:11.5px;color:var(--blue-bright);flex:1}.db-feed__speed{font-variant-numeric:tabular-nums;color:var(--text-muted);font-size:12px;min-width:52px;text-align:right}.db-feed__time{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);min-width:72px;text-align:right}.db-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 24px;color:var(--text-muted);font-size:13px}.db-empty__ico{font-size:22px;color:var(--text-dim)}.dash-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-bottom:28px}@media (max-width: 1100px){.dash-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.dash-stats{grid-template-columns:1fr;gap:14px}}.dash-stat{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:16px;padding:24px;min-height:168px;border-radius:var(--radius-2xl);background:var(--surface-container-lowest);border:1px solid var(--surface-container);box-shadow:var(--shadow-level-1);overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.dash-stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-level-2)}.dash-stat__head{display:flex;justify-content:space-between;align-items:flex-start;position:relative;z-index:2}.dash-stat__foot{position:relative;z-index:2}.dash-stat__icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-lg);background:var(--secondary-container);color:var(--primary)}.dash-stat__icon .material-symbols-outlined{font-size:22px}.dash-stat__chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-full);font-size:11px;font-weight:700;letter-spacing:.02em;background:#ba1a1a1a;color:var(--error)}.dash-stat__label{font-family:var(--font-body);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant)}.dash-stat__value{font-family:var(--font-display);font-weight:700;font-size:44px;line-height:1.04;letter-spacing:-.02em;color:var(--on-background);font-variant-numeric:tabular-nums;margin-top:6px}.dash-stat--total .dash-stat__icon{background:var(--secondary-container);color:var(--primary)}.dash-stat--moving{background:var(--primary);border-color:transparent;color:var(--on-primary)}.dash-stat--moving .dash-stat__icon{background:#fff3;color:#fff}.dash-stat--moving .dash-stat__label{color:#ffffffd1}.dash-stat--moving .dash-stat__value{color:#fff}.dash-stat__blob{position:absolute;top:-28px;right:-28px;width:160px;height:160px;background:#ffffff24;border-radius:50%;filter:blur(22px);z-index:1;pointer-events:none}.dash-stat--idle .dash-stat__icon{background:var(--surface-container);color:var(--on-surface-variant)}.dash-stat--alert{background:var(--error-container);border-color:#ba1a1a33}.dash-stat--alert .dash-stat__icon{background:#ba1a1a1a;color:var(--error)}.dash-stat--alert .dash-stat__label{color:var(--on-error-container)}.dash-stat--alert .dash-stat__value{color:var(--error)}@media (max-width: 640px){.dash-stat__value{font-size:36px}.dash-stat{min-height:148px;padding:20px}}@media (prefers-reduced-motion: reduce){.dash-stat:hover{transform:none}}.db-tbl__row--red td{background:color-mix(in srgb,var(--red) 12%,transparent)}.db-tbl__row--amber td{background:color-mix(in srgb,var(--amber) 12%,transparent)}.db-text-red{color:var(--red);font-weight:500}.gps-map-panel{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg)}.gps-map-panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.gps-map-panel__title{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text)}.gps-map-panel__subtitle{margin-top:4px;color:var(--text-muted);font-size:11.5px}.gps-map-panel__legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gps-map-panel__legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted)}.gps-map-panel__legend-dot{width:9px;height:9px;border-radius:999px;display:inline-block;box-shadow:0 1px 2px #0f172a40}.gps-map-panel__legend-dot--moving{background:var(--state-moving)}.gps-map-panel__legend-dot--idle{background:var(--state-idle)}.gps-map-panel__legend-dot--parked{background:var(--state-parked)}.gps-map-panel__legend-dot--towing{background:var(--state-towing)}.gps-map-panel__legend-dot--offline{background:var(--state-offline)}.gps-map-panel__map{flex:1;width:100%;min-height:0;overflow:hidden;background:#1e1f29}.gps-map-panel__fallback{display:flex;align-items:center;justify-content:center;flex:1;min-height:320px;background:var(--surface-2);color:var(--text-muted);font-weight:500;font-size:13px}.gm-vehicle-info{--gm-accent: #64748b;min-width:184px;padding:2px 2px 0;font-size:12px;line-height:1.45;color:#1e293b}.gm-vehicle-info__head{display:flex;align-items:center;gap:7px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid rgba(15,23,42,.08)}.gm-vehicle-info__dot{width:9px;height:9px;flex:none;border-radius:999px;background:var(--gm-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--gm-accent) 22%,transparent)}.gm-vehicle-info__plate{font-size:14px;font-weight:700;letter-spacing:.02em;color:#0f172a}.gm-vehicle-info__pill{margin-left:auto;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:700;white-space:nowrap;color:var(--gm-accent);background:color-mix(in srgb,var(--gm-accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--gm-accent) 38%,transparent)}.gm-vehicle-info__rows{display:grid;gap:4px;margin:0}.gm-vehicle-info__rows>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.gm-vehicle-info__rows dt{color:#64748b;font-size:11.5px}.gm-vehicle-info__rows dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;color:#0f172a}@media (max-width: 768px){.gps-map-panel__map{min-height:320px}}.metrics-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);transition:box-shadow .15s ease,transform .15s ease;border-left:4px solid transparent}.metrics-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.metrics-card__label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.metrics-card__value{font-size:32px;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums}.metrics-card__sublabel{font-size:11px;color:var(--text-light)}.metrics-card--success{border-left-color:var(--green);background:linear-gradient(to right,var(--green-bg),var(--surface))}.metrics-card--danger{border-left-color:var(--red);background:linear-gradient(to right,var(--red-bg),var(--surface))}.metrics-card--warning{border-left-color:var(--amber);background:linear-gradient(to right,var(--amber-bg),var(--surface))}.metrics-card--info{border-left-color:var(--blue);background:linear-gradient(to right,var(--blue-bg),var(--surface))}.metrics-card--default{border-left-color:var(--border)}.metrics-card--success .metrics-card__value{color:var(--green)}.metrics-card--danger .metrics-card__value{color:var(--red)}.metrics-card--warning .metrics-card__value{color:var(--amber)}.metrics-card--info .metrics-card__value{color:var(--blue)}.vehicle-status{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 6px;border-radius:99px;font-size:11px;font-weight:500;letter-spacing:.01em;border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);white-space:nowrap}.vehicle-status--compact{padding:2px 7px 2px 5px;font-size:10.5px}.vehicle-status__icon{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;flex-shrink:0;color:#fff}.vehicle-status--compact .vehicle-status__icon{width:12px;height:12px}.vehicle-status__icon-svg{width:9px;height:9px}.vehicle-status--compact .vehicle-status__icon-svg{width:8px;height:8px}.vehicle-status--moving{background:var(--state-moving-bg);border-color:var(--state-moving-border);color:var(--state-moving)}.vehicle-status--moving .vehicle-status__icon{background:var(--state-moving)}.vehicle-status--idle{background:var(--state-idle-bg);border-color:var(--state-idle-border);color:var(--state-idle)}.vehicle-status--idle .vehicle-status__icon{background:var(--state-idle)}.vehicle-status--parked{background:var(--state-parked-bg);border-color:var(--state-parked-border);color:var(--state-parked)}.vehicle-status--parked .vehicle-status__icon{background:var(--state-parked)}.vehicle-status--towing{background:var(--state-towing-bg);border-color:var(--state-towing-border);color:var(--state-towing);font-weight:600}.vehicle-status--towing .vehicle-status__icon{background:var(--state-towing)}.vehicle-status--offline{background:var(--state-offline-bg);border-color:var(--state-offline-border);color:var(--state-offline)}.vehicle-status--offline .vehicle-status__icon{background:var(--state-offline)}.vehicle-status--pulse .vehicle-status__icon{position:relative;box-shadow:0 0 0 0 currentColor;animation:vehicle-status-pulse 1.8s ease-in-out infinite}@keyframes vehicle-status-pulse{0%,to{box-shadow:0 0 #10b9818c}50%{box-shadow:0 0 0 4px #10b98100}}.vehicle-status--idle.vehicle-status--pulse .vehicle-status__icon{animation-name:vehicle-status-pulse-idle}@keyframes vehicle-status-pulse-idle{0%,to{box-shadow:0 0 #f59e0b8c}50%{box-shadow:0 0 0 4px #f59e0b00}}.vehicle-status--towing.vehicle-status--pulse .vehicle-status__icon{animation-name:vehicle-status-pulse-towing;animation-duration:1.2s}@keyframes vehicle-status-pulse-towing{0%,to{box-shadow:0 0 #ef4444a6}50%{box-shadow:0 0 0 5px #ef444400}}.vehicle-list-panel{display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);height:100%;min-height:0;overflow:hidden}.vehicle-list-panel__header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.vehicle-list-panel__heading{display:flex;align-items:baseline;gap:8px}.vehicle-list-panel__title{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text)}.vehicle-list-panel__count{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text-dim);background:var(--surface-2);padding:1px 7px;border-radius:99px}.connection{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:500;letter-spacing:.02em;color:var(--text-muted);font-family:var(--font-mono)}.connection__dot{width:6px;height:6px;border-radius:50%}.connection--connected .connection__dot{background:var(--green);animation:connection-pulse 2s ease-in-out infinite}.connection--connected{color:var(--green)}.connection--disconnected .connection__dot{background:var(--amber)}.connection--disconnected{color:var(--amber)}.connection--unavailable .connection__dot{background:var(--text-dim)}.connection--unavailable{color:var(--text-dim)}@keyframes connection-pulse{0%,to{box-shadow:0 0 #34d39980}50%{box-shadow:0 0 0 4px #34d39900}}.vehicle-list-panel__search{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text-dim)}.vehicle-list-panel__search svg{flex-shrink:0}.vehicle-list-panel__search input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:12.5px}.vehicle-list-panel__search input::placeholder{color:var(--text-dim)}.vehicle-list-panel__list{flex:1;overflow-y:auto;padding:4px 0 12px}.vehicle-row{position:relative;width:100%;display:flex;align-items:stretch;gap:10px;padding:12px 16px 12px 18px;background:transparent;border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;color:var(--text);transition:background .12s ease,border-color .12s ease}.vehicle-row:hover:not(.vehicle-row--skeleton){background:var(--surface-2)}.vehicle-row__bar{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border);transition:width .12s ease,background .12s ease}.vehicle-row--moving .vehicle-row__bar{background:var(--state-moving)}.vehicle-row--idle .vehicle-row__bar{background:var(--state-idle)}.vehicle-row--parked .vehicle-row__bar{background:var(--state-parked)}.vehicle-row--towing .vehicle-row__bar{background:var(--state-towing)}.vehicle-row--offline .vehicle-row__bar{background:var(--state-offline);opacity:.6}.vehicle-row--offline{opacity:.65}.vehicle-row--offline:hover{opacity:.85}.vehicle-row__icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex-shrink:0;border-radius:50%;background:#ffffff0a;align-self:center}.vehicle-row--moving .vehicle-row__icon{background:var(--state-moving-bg)}.vehicle-row--idle .vehicle-row__icon{background:var(--state-idle-bg)}.vehicle-row--parked .vehicle-row__icon{background:var(--state-parked-bg)}.vehicle-row--towing .vehicle-row__icon{background:var(--state-towing-bg)}.vehicle-row--offline .vehicle-row__icon{background:var(--state-offline-bg)}.vehicle-row__icon-inner{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;color:#fff}.vehicle-row--moving .vehicle-row__icon-inner{background:var(--state-moving)}.vehicle-row--idle .vehicle-row__icon-inner{background:var(--state-idle)}.vehicle-row--parked .vehicle-row__icon-inner{background:var(--state-parked)}.vehicle-row--towing .vehicle-row__icon-inner{background:var(--state-towing)}.vehicle-row--offline .vehicle-row__icon-inner{background:var(--state-offline)}.vehicle-row__icon-svg{width:12px;height:12px;display:block}.vehicle-row--pulse .vehicle-row__icon-inner{animation:vehicle-row-pulse 1.8s ease-in-out infinite}@keyframes vehicle-row-pulse{0%,to{box-shadow:0 0 0 0 currentColor;opacity:1}50%{box-shadow:0 0 0 6px #0000;opacity:.85}}.vehicle-row--towing.vehicle-row--pulse .vehicle-row__icon-inner{animation-duration:1.2s}.vehicle-row--active,.vehicle-row--active:hover{background:var(--blue-dim)}.vehicle-row--active .vehicle-row__bar{width:5px;background:var(--blue-bright)}.vehicle-row--active .vehicle-row__plate{color:var(--blue-bright)}.vehicle-row__main{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.vehicle-row__top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.vehicle-row__plate{font-family:var(--font-mono);font-size:13.5px;font-weight:600;letter-spacing:.02em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-row__speed{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.vehicle-row--moving .vehicle-row__speed{color:var(--state-moving)}.vehicle-row--towing .vehicle-row__speed{color:var(--state-towing);font-weight:600}.vehicle-row__bottom{display:flex;justify-content:space-between;align-items:center;gap:8px}.vehicle-row__time{font-family:var(--font-mono);font-size:10.5px;color:var(--text-dim);white-space:nowrap;margin-left:auto}.vehicle-row__km{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);white-space:nowrap;letter-spacing:.02em}.vehicle-row--skeleton{cursor:default;pointer-events:none}.skeleton{display:inline-block;height:12px;background:linear-gradient(90deg,var(--surface-2) 0%,var(--border-bright) 50%,var(--surface-2) 100%);background-size:200% 100%;border-radius:4px;animation:skeleton-shimmer 1.4s ease-in-out infinite}.skeleton--plate{width:84px;height:14px}.skeleton--speed{width:56px}.skeleton--badge{width:90px;height:18px;border-radius:99px}.skeleton--time{width:50px;height:10px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.vehicle-list-panel__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:36px 24px;color:var(--text-muted)}.vehicle-list-panel__empty-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--surface-2);color:var(--text-dim);font-size:18px;margin-bottom:10px}.vehicle-list-panel__empty-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}.vehicle-list-panel__empty-sub{font-size:11.5px;color:var(--text-muted);max-width:220px;line-height:1.45}.vehicle-list-panel__empty--filter{padding:28px 24px}.vehicle-list-panel__alert{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;color:var(--state-towing);background:var(--state-towing-bg);border:1px solid var(--state-towing-border);padding:1px 7px;border-radius:99px}.gps-page{display:flex;flex-direction:column;height:100%;background:var(--bg);overflow:hidden}.gps-page__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:16px 24px 14px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.gps-page__header-left{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.gps-page__title{font-size:18px;font-weight:700;color:var(--text);letter-spacing:-.02em}.gps-page__summary{display:flex;align-items:center;gap:14px;color:var(--text-muted);font-size:12.5px}.gps-page__summary-item{display:inline-flex;align-items:center;gap:6px}.gps-page__summary-item strong{color:var(--text);font-weight:600;font-family:var(--font-mono)}.gps-page__summary-item--total{padding-left:14px;border-left:1px solid var(--border)}.gps-page__summary-dot{width:6px;height:6px;border-radius:50%}.gps-page__summary-dot--live{background:var(--green)}.gps-page__summary-dot--moving{background:var(--amber)}.gps-page__meta{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-muted);font-family:var(--font-mono)}.gps-page__live-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:gps-pulse 2s ease-in-out infinite}@keyframes gps-pulse{0%,to{box-shadow:0 0 #34d39980}50%{box-shadow:0 0 0 4px #34d39900}}.gps-page__error{padding:10px 24px;background:var(--red-bg);border-bottom:1px solid rgba(248,113,113,.22);color:var(--red);font-size:12.5px;flex-shrink:0}.gps-page__layout{display:grid;grid-template-columns:320px 1fr;flex:1;min-height:0;overflow:hidden}.gps-page__map-wrapper{position:relative;min-width:0;min-height:0;overflow:hidden}.gps-page__system{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;max-height:50vh;overflow-y:auto}.gps-page__system-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:10px 24px;background:transparent;border:none;text-align:left;color:var(--text-muted);font-size:11.5px;letter-spacing:.04em;border-bottom:1px solid transparent;transition:background .12s ease}.gps-page__system--collapsed .gps-page__system-toggle{border-bottom:none}.gps-page__system:not(.gps-page__system--collapsed) .gps-page__system-toggle{border-bottom:1px solid var(--border);background:var(--surface-2)}.gps-page__system-toggle:hover{background:var(--surface-2)}.gps-page__system-caret{display:inline-block;transition:transform .15s ease;color:var(--text-dim);font-size:10px;width:10px}.gps-page__system-caret--open{transform:rotate(90deg);color:var(--blue-bright)}.gps-page__system-title{font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text)}.gps-page__system-summary{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-left:auto}.gps-page__system-summary code{background:var(--surface-2);border:1px solid var(--border);padding:1px 6px;border-radius:4px;font-size:10.5px;color:var(--blue-bright)}.gps-page__system-summary--muted{color:var(--text-dim)}.gps-page__system-content{display:flex;flex-direction:column;gap:14px;padding:16px 24px 22px}.gps-page__notice{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-size:13px}.gps-page__info{display:flex;flex-wrap:wrap;gap:18px;padding:12px 16px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-size:12px;color:var(--text-muted);align-items:center}.gps-page__info-label{font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin-right:6px}.gps-page__info code{font-family:var(--font-mono);font-size:11px;background:var(--blue-dim);padding:2px 7px;border-radius:4px;color:var(--blue-bright)}.gps-page__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}@media (max-width: 900px){.gps-page__layout{grid-template-columns:280px 1fr}}@media (max-width: 720px){.gps-page__layout{grid-template-columns:1fr;grid-template-rows:220px 1fr}.vehicle-list-panel{border-right:none;border-bottom:1px solid var(--border)}}.gps-page__summary-item--alert{color:var(--state-towing);font-weight:600}.gps-page__summary-dot--alert{background:var(--state-towing);animation:gps-page-alert-pulse 1.2s ease-in-out infinite}@keyframes gps-page-alert-pulse{0%,to{box-shadow:0 0 #ef44448c}50%{box-shadow:0 0 0 4px #ef444400}}.rep-map{position:relative;width:100%;height:420px;border:1px solid #1f2937;border-radius:8px;overflow:hidden;margin-bottom:16px;background:#0f172a}.rep-map--loading,.rep-map--error{display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:14px}.rep-map--error{color:#fca5a5}.rep-map__legend{position:absolute;bottom:12px;left:12px;background:#0f172ad9;border:1px solid #334155;border-radius:6px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:12px;max-width:calc(100% - 24px);z-index:1}.rep-map__legend-item{display:inline-flex;align-items:center;gap:6px;color:#e2e8f0;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.rep-map__legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.rep-page{max-width:1100px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:24px}.rep-page__header{display:flex;flex-direction:column;gap:4px}.rep-page__title{font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.rep-page__subtitle{font-size:13px;color:var(--text-muted)}.rep-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);padding-bottom:0}.rep-tab-btn{padding:8px 18px;border:none;background:none;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.rep-tab-btn:hover{color:var(--text)}.rep-tab-btn--active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}.rep-tab{display:flex;flex-direction:column;gap:16px}.rep-filter{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.rep-filter__field{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);min-width:140px}.rep-filter__field--wide{flex:1;min-width:240px}.rep-filter__field input{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:13px;color:var(--text);font-family:var(--font);outline:none;transition:border-color .15s}.rep-filter__field input:focus{border-color:var(--blue)}.rep-summary-cards{display:flex;gap:14px;flex-wrap:wrap}.rep-card{display:flex;flex-direction:column;gap:4px;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:140px}.rep-card__label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.rep-card__value{font-size:28px;font-weight:700;color:var(--text);letter-spacing:-.02em}.rep-btn{display:inline-flex;align-items:center;padding:8px 18px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:background .15s;align-self:flex-end}.rep-btn:hover:not(:disabled){background:var(--surface-2)}.rep-btn:disabled{opacity:.5;cursor:not-allowed}.rep-btn--primary{background:var(--blue);color:#fff;border-color:var(--blue)}.rep-btn--primary:hover:not(:disabled){background:#1d4ed8}.rep-result-meta{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted)}.rep-truncated{padding:8px 14px;font-size:12px;color:var(--text-muted);text-align:center}.rep-error{font-size:13px;color:var(--red);padding:12px 16px;background:var(--red-bg);border:1px solid var(--red);border-radius:var(--radius)}.rep-table-wrapper{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}.rep-table{width:100%;border-collapse:collapse;font-size:13px}.rep-table th{background:var(--surface-2);padding:10px 14px;text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}.rep-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap}.rep-table tbody tr:last-child td{border-bottom:none}.rep-table tbody tr:hover td{background:var(--surface-2)}.rep-code{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);padding:2px 6px;border-radius:4px;color:var(--blue)}.rep-muted{color:var(--text-muted)}.rep-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;letter-spacing:.04em}.rep-badge--green{background:var(--green-bg);color:var(--green)}.rep-badge--amber{background:var(--amber-bg);color:var(--amber)}.rep-badge--slate{background:var(--slate-bg);color:var(--slate)}.rep-badge--red{background:var(--red-bg);color:var(--red)}.rep-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-muted);font-size:14px;text-align:center}.vmodal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.vmodal{background:var(--surface-container-lowest);color:var(--on-background);border:1px solid var(--outline-variant);border-radius:var(--radius-2xl);box-shadow:var(--shadow-level-2);width:100%;max-width:560px;max-height:90vh;overflow:auto}.vmodal__title{font-family:var(--font-display);font-weight:700}.vmodal__header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}.vmodal__title{font-size:16px;font-weight:700;color:var(--text)}.vmodal__close{background:transparent;border:0;font-size:22px;color:var(--text-muted);cursor:pointer;line-height:1}.vmodal__body{padding:20px 22px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.vmodal__field{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.vmodal__field input,.vmodal__field select{height:42px;padding:0 14px;border-radius:var(--radius-xl);border:1px solid var(--outline-variant);font-size:14px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--on-background);background:var(--surface-container-lowest);outline:none;transition:border-color .15s,box-shadow .15s}.vmodal__field input::placeholder{color:var(--outline)}.vmodal__field input:focus,.vmodal__field select:focus{border-color:var(--primary);box-shadow:0 0 0 4px #003ec71a}.vmodal__actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.vehicles-page{max-width:1200px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:24px}.vehicles-page__header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px}.vehicles-page__title{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.02em;color:var(--on-background)}.vehicles-page__subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}.vehicles-card{background:var(--surface-container-lowest);border:1px solid var(--surface-container);border-radius:var(--radius-2xl);box-shadow:var(--shadow-level-1);overflow:hidden}.vehicles-card__toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border)}.vehicles-card__title{font-size:15px;font-weight:600;color:var(--text)}.vehicles-search{flex:0 1 340px;height:40px;padding:0 14px;border-radius:var(--radius-xl);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-background);font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s}.vehicles-search:focus{border-color:var(--primary);box-shadow:0 0 0 4px #003ec71a}.vehicles-search::placeholder{color:var(--outline)}.vehicles-table-wrap{overflow-x:auto}.vehicles-table{width:100%;border-collapse:collapse;font-size:13px}.vehicles-table thead th{text-align:left;font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:12px 16px;background:var(--bg-subtle, #f8f9fb);border-bottom:1px solid var(--border)}.vehicles-table tbody td{padding:14px 16px;border-bottom:1px solid var(--border);color:var(--text)}.vehicles-table__row{cursor:pointer;transition:background .12s}.vehicles-table__row:hover{background:var(--bg-subtle, #fafbfc)}.vehicles-table__plate{font-weight:700}.vehicles-table__actions-col{text-align:right;width:110px}.vehicles-table__actions{text-align:right;white-space:nowrap}.vehicles-table__empty{text-align:center;padding:36px 16px;color:var(--text-muted)}.icon-btn{background:transparent;border:1px solid var(--border);border-radius:6px;width:30px;height:30px;cursor:pointer;font-size:13px;color:var(--text);display:inline-flex;align-items:center;justify-content:center;margin-left:4px}.icon-btn:hover{background:#f3f4f6}.icon-btn--danger{color:#b42318}.icon-btn--danger:hover{background:#fee4e2}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.vehicles-card__footer{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;font-size:12px;color:var(--text-muted)}.vehicles-card__pager{display:flex;align-items:center;gap:10px}.btn{height:40px;padding:0 18px;border-radius:var(--radius-xl);border:1px solid transparent;font-family:var(--font-body);font-size:13.5px;font-weight:600;letter-spacing:.02em;cursor:pointer;transition:opacity .15s,background .15s,transform .15s}.btn--primary{background:var(--primary-container);color:#fff;box-shadow:var(--shadow-level-1)}.btn--primary:hover{opacity:.92;transform:translateY(-1px)}.btn--primary:disabled{background:var(--outline);cursor:not-allowed;box-shadow:none;opacity:1;transform:none}.btn--ghost{background:var(--surface-container-lowest);border-color:var(--outline-variant);color:var(--on-surface-variant)}.btn--ghost:hover{background:var(--surface-container);color:var(--on-background)}.btn--ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn--ghost:hover{background:#f3f4f6}.pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em}.pill--green{background:#dcfce7;color:#166534}.pill--amber{background:#fef3c7;color:#92400e}.pill--red{background:#fee2e2;color:#991b1b}.uploader{border:1.5px dashed var(--border);border-radius:12px;padding:22px;text-align:center;background:var(--bg, #fafbfc);color:var(--text);transition:border-color .15s,background .15s}.uploader--drag{border-color:#2563eb;background:#2563eb14}.uploader--disabled{opacity:.6}.uploader__icon{font-size:28px}.uploader__text{font-size:13px;color:var(--text);margin-top:4px}.uploader__btn{background:transparent;border:0;color:#2563eb;font-weight:600;cursor:pointer;padding:0}.uploader__hint{font-size:11px;color:var(--text-muted);margin-top:4px}.uploader__error{color:#b42318;font-size:12px;margin-top:8px}.pdfv-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172aa6;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}.pdfv{background:var(--surface, white);color:var(--text);border:1px solid var(--border);border-radius:12px;width:100%;max-width:1100px;height:90vh;display:flex;flex-direction:column;overflow:hidden}.pdfv__header{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--border);gap:12px}.pdfv__title{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdfv__actions{display:flex;align-items:center;gap:8px}.pdfv__close{background:transparent;border:0;font-size:26px;line-height:1;color:var(--text-muted);cursor:pointer}.pdfv__body{flex:1;background:var(--bg, #f3f4f6);display:flex}.pdfv__iframe{border:0;width:100%;height:100%}.pdfv__loading,.pdfv__error{margin:auto;font-size:14px;color:var(--text-muted)}.pdfv__error{color:#b42318}.vd-page{max-width:1200px;margin:0 auto;padding:24px 24px 64px;display:flex;flex-direction:column;gap:20px}.vd-page__loading{padding:60px 0;text-align:center;color:var(--text-muted)}.vd-back{background:transparent;border:0;color:var(--text-muted);cursor:pointer;font-size:13px;padding:4px 0;align-self:flex-start}.vd-back:hover{color:var(--text)}.vd-header{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;background-image:repeating-linear-gradient(45deg,transparent 0,transparent 14px,rgba(0,0,0,.015) 14px,rgba(0,0,0,.015) 28px)}.vd-header__icon{width:54px;height:54px;border-radius:50%;background:#1f2937;color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px}.vd-header__title{font-size:18px;font-weight:700;color:var(--text)}.vd-header__sub{font-size:13px;color:var(--text-muted);margin-top:4px;display:flex;align-items:center;gap:10px}.vd-header__sub strong{color:var(--text);font-weight:600}.vd-grid{display:grid;grid-template-columns:320px 1fr;gap:20px}@media (max-width: 900px){.vd-grid{grid-template-columns:1fr}}.vd-sidecol{display:flex;flex-direction:column;gap:20px}.vd-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.vd-card__header{margin-bottom:12px}.vd-card__title{font-size:15px;font-weight:700;color:var(--text)}.vd-card__subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}.vd-detail-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.vd-detail-list>div{display:flex;flex-direction:column;gap:2px}.vd-detail-list dt{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.vd-detail-list dd{font-size:14px;color:var(--text);font-weight:600}.vd-docs-toolbar{margin:12px 0 14px}.vd-empty{padding:50px 16px;text-align:center;color:var(--text-muted)}.vd-empty__icon{font-size:38px;margin-bottom:6px}.vd-empty__title{font-size:15px;font-weight:600;color:var(--text)}.vd-empty__sub{font-size:12px;margin-top:2px}.vd-doclist{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.vd-doc{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px}.vd-doc__icon{font-size:22px}.vd-doc__main{flex:1;min-width:0}.vd-doc__name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vd-doc__meta{font-size:11px;color:var(--text-muted);margin-top:2px}.vd-doc__actions{display:flex;gap:4px}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:80;display:flex;justify-content:flex-end}.drawer{width:min(440px,100%);height:100%;background:#fff;display:flex;flex-direction:column;box-shadow:-10px 0 24px #0f172a1f;animation:drawer-in .18s ease-out}@keyframes drawer-in{0%{transform:translate(8%);opacity:.4}to{transform:translate(0);opacity:1}}.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #e5e7eb}.drawer__close{background:transparent;border:0;font-size:24px;line-height:1;cursor:pointer;color:#6b7280}.drawer__form{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:14px}.drawer__form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#374151;font-weight:500}.drawer__form input,.drawer__form select{padding:9px 11px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:400;color:#111827;background:#fff}.drawer__form input:focus,.drawer__form select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.drawer__form input:disabled,.drawer__form select:disabled{background:#f3f4f6;color:#9ca3af}.drawer__hint{margin-top:4px;font-size:11px;font-weight:400;color:#6b7280}.drawer__fieldset{border:1px solid #e5e7eb;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:10px;background:#f9fafb}.drawer__fieldset legend{padding:0 6px;font-size:12px;font-weight:600;color:#2563eb;text-transform:uppercase;letter-spacing:.4px}.drawer__error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;padding:10px 12px;border-radius:6px;font-size:13px;margin:0}.drawer__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.drawer__actions button{padding:9px 16px;border-radius:6px;border:1px solid #d1d5db;background:#fff;font-size:14px;cursor:pointer}.drawer__actions .drawer__submit{background:#2563eb;color:#fff;border-color:#2563eb}.users-page{padding:24px;display:flex;flex-direction:column;gap:18px}.users-page__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.users-page__title{margin:0;font-size:22px;font-weight:700;color:#0f172a}.users-page__subtitle{margin:4px 0 0;font-size:13px;color:#6b7280}.users-page__cta{padding:10px 16px;background:#2563eb;color:#fff;border:0;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.users-page__cta:hover{background:#1d4ed8}.users-page__placeholder{padding:48px 24px;border:1px dashed #d1d5db;border-radius:10px;background:#f9fafb;text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center;color:#374151}.users-page__placeholder button{padding:8px 14px;background:#2563eb;color:#fff;border:0;border-radius:6px;font-size:13px;cursor:pointer}.users-page__placeholder--error{border-color:#fecaca;background:#fef2f2;color:#991b1b}.users-table-wrapper{border:1px solid #e5e7eb;border-radius:10px;background:#fff;overflow:hidden}.users-table{width:100%;border-collapse:collapse;font-size:13px}.users-table thead{background:#f9fafb;color:#6b7280;text-align:left;font-size:11px;letter-spacing:.4px;text-transform:uppercase}.users-table th,.users-table td{padding:12px 14px;border-bottom:1px solid #f3f4f6}.users-table tbody tr:last-child td{border-bottom:0}.users-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#f3f4f6;padding:2px 6px;border-radius:4px;color:#1f2937}.users-role{font-weight:500;color:#1f2937}.users-muted{color:#6b7280}.users-badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px}.users-badge--green{background:#dcfce7;color:#166534}.users-badge--amber{background:#fef3c7;color:#92400e}.users-badge--red{background:#fee2e2;color:#991b1b}.users-badge--slate{background:#f3f4f6;color:#6b7280}.users-actions{text-align:right;white-space:nowrap}.users-delete-btn{padding:5px 10px;font-size:12px;font-weight:500;border:1px solid #fecaca;background:#fff;color:#b91c1c;border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease}.users-delete-btn:hover:not(:disabled){background:#fef2f2}.users-delete-btn:disabled{opacity:.45;cursor:not-allowed}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--surface);padding:32px;border-radius:var(--radius, 12px);box-shadow:var(--shadow, 0 8px 24px rgba(0, 0, 0, .08));width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px}.login-title{margin:0;font-size:28px;font-weight:700;color:var(--blue)}.login-subtitle{margin:0 0 8px;font-size:14px;color:var(--muted, #64748b)}.login-tabs{display:flex;gap:8px;margin-bottom:4px}.login-tab{flex:1;padding:8px;border:1px solid var(--border, #e2e8f0);background:transparent;color:var(--text, #0f172a);border-radius:8px;cursor:pointer;font-size:13px}.login-tab--active{background:var(--blue);color:#fff;border-color:var(--blue)}.login-label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #0f172a)}.login-label input{padding:10px 12px;border:1px solid var(--border, #e2e8f0);border-radius:8px;font-size:14px;background:var(--bg);color:var(--text, #0f172a)}.login-label input:focus{outline:none;border-color:var(--blue)}.login-error{margin:0;padding:8px 12px;background:#ef444414;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.login-denied{margin:8px 0 0;padding:10px 12px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:8px;font-size:13px;line-height:1.4}.login-submit{padding:10px;background:var(--blue);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;margin-top:4px}.login-submit:disabled{opacity:.6;cursor:not-allowed}.login-subdomain-row{display:flex;gap:6px;align-items:center}.login-subdomain-row input{flex:1;padding:10px 12px;border:1px solid var(--border, #e2e8f0);border-radius:8px;font-size:14px;background:var(--bg);color:var(--text, #0f172a)}.login-subdomain-row input:focus{outline:none;border-color:var(--blue)}.login-subdomain-clear{width:32px;height:32px;border:1px solid var(--border, #e2e8f0);background:transparent;color:var(--muted, #64748b);border-radius:8px;cursor:pointer;font-size:16px;line-height:1}.login-subdomain-clear:hover{background:#ffffff0f}.tsbadge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;cursor:help}.tsbadge__dot{width:6px;height:6px;border-radius:50%;display:inline-block}.tsbadge--active{background:#10b98126;color:var(--green, #10b981)}.tsbadge--active .tsbadge__dot{background:var(--green, #10b981)}.tsbadge--inactive{background:#64748b26;color:var(--muted, #94a3b8)}.tsbadge--inactive .tsbadge__dot{background:var(--muted, #94a3b8)}.tsbadge--suspended{background:#ef444426;color:var(--red, #ef4444)}.tsbadge--suspended .tsbadge__dot{background:var(--red, #ef4444)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100}.drawer{position:fixed;top:0;right:0;bottom:0;width:480px;background:var(--bg);border-left:1px solid var(--border, #1e293b);display:flex;flex-direction:column;animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer__header{padding:20px;border-bottom:1px solid var(--border, #1e293b);display:flex;justify-content:space-between;align-items:center}.drawer__header h3{margin:0;font-size:18px}.drawer__close{background:transparent;border:none;color:var(--muted, #94a3b8);font-size:24px;cursor:pointer}.drawer__form{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.drawer__form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0)}.drawer__form input,.drawer__form select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.drawer__form input:focus,.drawer__form select:focus{outline:none;border-color:var(--blue)}.drawer__form input:disabled,.drawer__form select:disabled{opacity:.6;cursor:not-allowed}.drawer__error{margin:0;padding:10px 12px;background:#ef44441f;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.drawer__actions{display:flex;gap:8px;justify-content:flex-end;padding-top:8px}.drawer__actions button{padding:10px 16px;border-radius:8px;border:1px solid var(--border, #1e293b);background:transparent;color:var(--text, #e2e8f0);cursor:pointer;font-size:14px;font-weight:500}.drawer__actions .drawer__submit{background:var(--blue);border-color:var(--blue);color:#fff}.drawer__actions button:disabled{opacity:.6;cursor:not-allowed}.modules-section{display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid var(--border, #e5e7eb)}.modules-section__head h4{margin:0 0 4px;font-size:14px;font-weight:600;color:#111827}.modules-section__head p{margin:0;font-size:12px;color:#6b7280}.modules-section__placeholder{padding:16px;border:1px dashed #d1d5db;border-radius:8px;font-size:13px;color:#6b7280;text-align:center}.modules-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.module-card{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;transition:border-color .15s ease,background .15s ease}.module-card--on{border-color:#2563eb;background:#eff6ff}.module-card--locked{background:#f9fafb}.module-card__body{flex:1;min-width:0}.module-card__title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.module-card__icon{font-size:20px;color:#2563eb}.module-card__title{font-size:13px;font-weight:600;color:#111827}.module-card__desc{margin:4px 0 0;font-size:12px;color:#6b7280;line-height:1.4}.module-card__hint{margin:4px 0 0;font-size:11px;color:#2563eb;font-style:italic}.module-card__pill{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.4px}.module-card__pill--enforced{background:#dcfce7;color:#166534}.module-card__pill--reserved{background:#f3f4f6;color:#6b7280}.module-switch{position:relative;display:inline-block;width:38px;height:22px;flex-shrink:0}.module-switch input{opacity:0;width:0;height:0}.module-switch__track{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:#d1d5db;border-radius:11px;transition:background .15s ease}.module-switch__thumb{position:absolute;height:18px;width:18px;left:2px;top:2px;background:#fff;border-radius:50%;transition:transform .15s ease}.module-switch input:checked+.module-switch__track{background:#2563eb}.module-switch input:checked+.module-switch__track .module-switch__thumb{transform:translate(16px)}.module-switch input:disabled+.module-switch__track{cursor:not-allowed;opacity:.6}.tenants-page{padding:24px;display:flex;flex-direction:column;gap:16px}.tenants-page__header{display:flex;justify-content:space-between;align-items:center}.tenants-page__header h2{margin:0;font-size:22px}.tenants-page__create-btn{padding:8px 14px;background:var(--blue);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.tenants-page__search{padding:10px 14px;border-radius:8px;border:1px solid var(--border, #1e293b);background:var(--surface);color:var(--text, #e2e8f0);font-size:14px;max-width:320px}.tenants-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border-radius:8px}.tenants-table th,.tenants-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border, #1e293b);font-size:13px}.tenants-table tr:last-child td{border-bottom:none}.tenants-table thead th:first-child{border-top-left-radius:8px}.tenants-table thead th:last-child{border-top-right-radius:8px}.tenants-table tbody tr:last-child td:first-child{border-bottom-left-radius:8px}.tenants-table tbody tr:last-child td:last-child{border-bottom-right-radius:8px}.tenants-table th{font-weight:600;font-size:12px;text-transform:uppercase;color:var(--muted, #94a3b8)}.tenants-table__empty{text-align:center;padding:32px;color:var(--muted, #94a3b8)}.tenants-table__actions{position:relative;width:40px}.tenants-table__menu-btn{background:transparent;border:none;color:var(--muted, #94a3b8);cursor:pointer;font-size:18px;padding:4px 8px}.tenants-table__menu{position:absolute;right:12px;top:32px;background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:8px;box-shadow:0 4px 12px #0000004d;z-index:10;min-width:140px;display:flex;flex-direction:column}.tenants-table__menu--up{top:auto;bottom:32px}.tenants-table__menu button{background:transparent;border:none;color:var(--text, #e2e8f0);text-align:left;padding:8px 12px;cursor:pointer;font-size:13px}.tenants-table__menu button:hover{background:#ffffff0a}.tenants-page__pagination{display:flex;gap:12px;align-items:center;justify-content:center;padding:8px}.tenants-page__pagination button{padding:6px 12px;background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:6px;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px}.tenants-page__pagination button:disabled{opacity:.4;cursor:not-allowed}.tenants-table__menu-danger{color:var(--red)}.tenants-table__menu-danger:hover{background:color-mix(in srgb,var(--red) 8%,transparent)}.create-vehicle-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100}.create-vehicle-drawer{position:fixed;top:0;right:0;bottom:0;width:480px;background:var(--bg);border-left:1px solid var(--border, #1e293b);display:flex;flex-direction:column;animation:cv-drawer-in .2s ease-out}@keyframes cv-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.create-vehicle-drawer__header{padding:20px;border-bottom:1px solid var(--border, #1e293b);display:flex;justify-content:space-between;align-items:center}.create-vehicle-drawer__header h3{margin:0;font-size:18px}.create-vehicle-drawer__close{background:transparent;border:none;color:var(--muted, #94a3b8);font-size:24px;cursor:pointer}.create-vehicle-drawer__form{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.create-vehicle-drawer__form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0)}.create-vehicle-drawer__form input,.create-vehicle-drawer__form select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.create-vehicle-drawer__form input:focus,.create-vehicle-drawer__form select:focus{outline:none;border-color:var(--blue)}.create-vehicle-drawer__form input:disabled,.create-vehicle-drawer__form select:disabled{opacity:.6;cursor:not-allowed}.create-vehicle-drawer__error{margin:0;padding:10px 12px;background:#ef44441f;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.create-vehicle-drawer__actions{display:flex;gap:8px;justify-content:flex-end;padding-top:8px}.create-vehicle-drawer__actions button{padding:10px 16px;border-radius:8px;border:1px solid var(--border, #1e293b);background:transparent;color:var(--text, #e2e8f0);cursor:pointer;font-size:14px;font-weight:500}.create-vehicle-drawer__actions .create-vehicle-drawer__submit{background:var(--blue);border-color:var(--blue);color:#fff}.create-vehicle-drawer__actions button:disabled{opacity:.6;cursor:not-allowed}.vehicles-page{padding:24px;display:flex;flex-direction:column;gap:16px}.vehicles-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.vehicles-page__header h2{margin:0 0 4px;font-size:22px}.vehicles-page__subtitle{margin:0;color:var(--muted, #94a3b8);font-size:13px}.vehicles-page__create-btn{padding:8px 14px;background:var(--blue);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.vehicles-page__filters{display:flex;gap:8px;flex-wrap:wrap}.vehicles-page__search,.vehicles-page__tenant-filter{padding:10px 14px;border-radius:8px;border:1px solid var(--border, #1e293b);background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.vehicles-page__search{flex:1;max-width:320px}.vehicles-page__tenant-filter{min-width:200px}.vehicles-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:8px;overflow:hidden}.vehicles-table th,.vehicles-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border, #1e293b);font-size:13px}.vehicles-table th{font-weight:600;font-size:12px;text-transform:uppercase;color:var(--muted, #94a3b8)}.vehicles-table__empty{text-align:center;padding:32px;color:var(--muted, #94a3b8)}.vehicles-table__tenant{display:flex;flex-direction:column}.vehicles-table__subdomain{font-size:11px;color:var(--muted, #94a3b8);font-family:monospace}.vehicles-type{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;text-transform:uppercase;font-weight:500}.vehicles-type--car{background:#3b82f626;color:var(--blue)}.vehicles-type--motorcycle{background:#a855f726;color:#a855f7}.vehicles-gps{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:500}.vehicles-gps--linked{background:#10b98126;color:var(--green, #10b981)}.vehicles-gps--none{color:var(--muted, #94a3b8)}.vehicles-status{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;text-transform:uppercase;background:#64748b26;color:var(--muted, #94a3b8)}.vehicles-status--active{background:#10b98126;color:var(--green, #10b981)}.vehicles-page__pagination{display:flex;gap:12px;align-items:center;justify-content:center;padding:8px}.vehicles-page__pagination button{padding:6px 12px;background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:6px;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px}.vehicles-page__pagination button:disabled{opacity:.4;cursor:not-allowed}.dsbadge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;cursor:help}.dsbadge__dot{width:6px;height:6px;border-radius:50%;display:inline-block}.dsbadge--active{background:#10b98126;color:var(--green, #10b981)}.dsbadge--active .dsbadge__dot{background:var(--green, #10b981)}.dsbadge--never-seen,.dsbadge--inactive{background:#64748b26;color:var(--muted, #94a3b8)}.dsbadge--never-seen .dsbadge__dot,.dsbadge--inactive .dsbadge__dot{background:var(--muted, #94a3b8)}.dsbadge--pending{background:#3b82f626;color:var(--blue, #3b82f6)}.dsbadge--pending .dsbadge__dot{background:var(--blue, #3b82f6)}.dsbadge--offline{background:#f59e0b26;color:#f59e0b}.dsbadge--offline .dsbadge__dot{background:#f59e0b}.dsbadge--suspended{background:#ef444426;color:var(--red, #ef4444)}.dsbadge--suspended .dsbadge__dot{background:var(--red, #ef4444)}.dsbadge--retired{background:#1e293b80;color:#94a3b8cc}.dsbadge--retired .dsbadge__dot{background:#94a3b899}.create-device-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100}.create-device-drawer{position:fixed;top:0;right:0;bottom:0;width:480px;background:var(--bg);border-left:1px solid var(--border, #1e293b);display:flex;flex-direction:column;animation:cd-drawer-in .2s ease-out}@keyframes cd-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.create-device-drawer__header{padding:20px;border-bottom:1px solid var(--border, #1e293b);display:flex;justify-content:space-between;align-items:center}.create-device-drawer__header h3{margin:0;font-size:18px}.create-device-drawer__close{background:transparent;border:none;color:var(--muted, #94a3b8);font-size:24px;cursor:pointer}.create-device-drawer__form{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.create-device-drawer__form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0)}.create-device-drawer__form input,.create-device-drawer__form select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.create-device-drawer__form input:focus,.create-device-drawer__form select:focus{outline:none;border-color:var(--blue)}.create-device-drawer__form input:disabled,.create-device-drawer__form select:disabled{opacity:.6;cursor:not-allowed}.create-device-drawer__error{margin:0;padding:10px 12px;background:#ef44441f;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.create-device-drawer__actions{display:flex;gap:8px;justify-content:flex-end;padding-top:8px}.create-device-drawer__actions button{padding:10px 16px;border-radius:8px;border:1px solid var(--border, #1e293b);background:transparent;color:var(--text, #e2e8f0);cursor:pointer;font-size:14px;font-weight:500}.create-device-drawer__actions .create-device-drawer__submit{background:var(--blue);border-color:var(--blue);color:#fff}.create-device-drawer__actions button:disabled{opacity:.6;cursor:not-allowed}.device-detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100}.device-detail-drawer{position:fixed;top:0;right:0;bottom:0;width:520px;background:var(--bg);border-left:1px solid var(--border, #1e293b);display:flex;flex-direction:column;animation:dd-drawer-in .2s ease-out}@keyframes dd-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.device-detail-drawer__header{padding:20px;border-bottom:1px solid var(--border, #1e293b);display:flex;justify-content:space-between;align-items:center}.device-detail-drawer__header h3{margin:0;font-size:18px}.device-detail-drawer__close{background:transparent;border:none;color:var(--muted, #94a3b8);font-size:24px;cursor:pointer}.device-detail-drawer__body{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.device-detail-drawer__loading,.device-detail-drawer__error{margin:0;font-size:13px;color:var(--muted, #94a3b8);text-align:center;padding:12px}.device-detail-drawer__error{color:var(--red, #ef4444);background:#ef44441a;border-radius:8px}.device-detail-drawer__meta{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;margin:0;font-size:13px}.device-detail-drawer__meta dt{color:var(--muted, #94a3b8);font-weight:500}.device-detail-drawer__meta dd{margin:0;color:var(--text, #e2e8f0)}.device-detail-drawer__status-label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0);font-weight:500}.device-detail-drawer__status-label select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.device-detail-drawer__status-label select:focus{outline:none;border-color:var(--blue)}.device-detail-drawer__hint{margin:0;padding:10px 12px;background:#3b82f614;border-radius:8px;font-size:12px;color:var(--muted, #94a3b8)}.device-detail-drawer__transfer-section{border-top:1px solid var(--border, #1e293b);padding-top:16px;margin-top:8px}.device-detail-drawer__transfer-btn{width:100%;padding:10px 14px;background:transparent;border:1px solid var(--border, #1e293b);border-radius:8px;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px;font-weight:500}.device-detail-drawer__transfer-btn:hover{background:#ffffff0a;border-color:var(--blue)}.device-detail-drawer__transfer-btn:disabled{opacity:.5;cursor:not-allowed}.transfer-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:200;display:flex;align-items:center;justify-content:center}.transfer-modal{background:var(--bg);border:1px solid var(--border, #1e293b);border-radius:12px;padding:20px;width:420px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;gap:12px}.transfer-modal h4{margin:0;font-size:16px}.transfer-modal__current{margin:0;font-size:13px;color:var(--muted, #94a3b8)}.transfer-modal__current strong{color:var(--text, #e2e8f0);font-weight:600}.transfer-modal__warning{margin:0;padding:10px 12px;background:#f59e0b1f;color:#f59e0b;border-radius:8px;font-size:12px;line-height:1.5}.transfer-modal__warning code{background:#f59e0b33;padding:1px 6px;border-radius:4px}.transfer-modal__label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0);font-weight:500}.transfer-modal__label select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.transfer-modal__error{margin:0;padding:10px 12px;background:#ef44441f;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.transfer-modal__actions{display:flex;gap:8px;justify-content:flex-end;padding-top:4px}.transfer-modal__actions button{padding:9px 14px;border-radius:8px;border:1px solid var(--border, #1e293b);background:transparent;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px;font-weight:500}.transfer-modal__actions .transfer-modal__confirm{background:var(--blue);border-color:var(--blue);color:#fff}.transfer-modal__actions button:disabled{opacity:.6;cursor:not-allowed}.devices-page{padding:24px;display:flex;flex-direction:column;gap:16px}.devices-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.devices-page__header h2{margin:0 0 4px;font-size:22px}.devices-page__subtitle{margin:0;color:var(--muted, #94a3b8);font-size:13px}.devices-page__create-btn{padding:8px 14px;background:var(--blue);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.devices-page__filters{display:flex;gap:8px;flex-wrap:wrap}.devices-page__search,.devices-page__filter{padding:10px 14px;border-radius:8px;border:1px solid var(--border, #1e293b);background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.devices-page__search{flex:1;max-width:320px}.devices-page__filter{min-width:180px}.devices-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:8px;overflow:hidden}.devices-table th,.devices-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border, #1e293b);font-size:13px}.devices-table th{font-weight:600;font-size:12px;text-transform:uppercase;color:var(--muted, #94a3b8)}.devices-table__row{cursor:pointer}.devices-table__row:hover{background:#ffffff05}.devices-table__empty{text-align:center;padding:32px;color:var(--muted, #94a3b8)}.devices-table__tenant{display:flex;flex-direction:column}.devices-table__subdomain{font-size:11px;color:var(--muted, #94a3b8);font-family:monospace}.devices-table__plate{background:#10b9811f;color:var(--green, #10b981);padding:2px 8px;border-radius:4px}.devices-table__unassigned{color:var(--muted, #94a3b8)}.devices-table__stale{display:inline-block;margin-left:6px;padding:1px 6px;font-size:10px;border-radius:4px;background:#f59e0b26;color:#f59e0b}.devices-page__pagination{display:flex;gap:12px;align-items:center;justify-content:center;padding:8px}.devices-page__pagination button{padding:6px 12px;background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:6px;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px}.devices-page__pagination button:disabled{opacity:.4;cursor:not-allowed}.assign-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100}.assign-drawer{position:fixed;top:0;right:0;bottom:0;width:480px;background:var(--bg);border-left:1px solid var(--border, #1e293b);display:flex;flex-direction:column;animation:assign-drawer-in .2s ease-out}@keyframes assign-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.assign-drawer__header{padding:20px;border-bottom:1px solid var(--border, #1e293b);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.assign-drawer__header h3{margin:0 0 4px;font-size:18px}.assign-drawer__device{margin:0;font-size:12px;color:var(--muted, #94a3b8)}.assign-drawer__device code{font-family:monospace;color:var(--text, #e2e8f0)}.assign-drawer__close{background:transparent;border:none;color:var(--muted, #94a3b8);font-size:24px;cursor:pointer}.assign-drawer__form{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.assign-drawer__form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text, #e2e8f0)}.assign-drawer__form input,.assign-drawer__form select{padding:10px 12px;border:1px solid var(--border, #1e293b);border-radius:8px;background:var(--surface);color:var(--text, #e2e8f0);font-size:14px}.assign-drawer__form input:focus,.assign-drawer__form select:focus{outline:none;border-color:var(--blue)}.assign-drawer__form input:disabled,.assign-drawer__form select:disabled{opacity:.6;cursor:not-allowed}.assign-drawer__loading{margin:0;color:var(--muted, #94a3b8);font-size:13px;text-align:center;padding:16px 0}.assign-drawer__hint{margin:0;padding:10px 12px;background:#3b82f614;border-radius:8px;font-size:12px;color:var(--muted, #94a3b8)}.assign-drawer__link-btn{background:transparent;border:none;color:var(--blue);cursor:pointer;font-size:12px;text-align:left;padding:4px 0;text-decoration:underline;align-self:flex-start}.assign-drawer__error{margin:0;padding:10px 12px;background:#ef44441f;color:var(--red, #ef4444);border-radius:8px;font-size:13px}.assign-drawer__actions{display:flex;gap:8px;justify-content:flex-end;padding-top:8px}.assign-drawer__actions button{padding:10px 16px;border-radius:8px;border:1px solid var(--border, #1e293b);background:transparent;color:var(--text, #e2e8f0);cursor:pointer;font-size:14px;font-weight:500}.assign-drawer__actions .assign-drawer__submit{background:var(--blue);border-color:var(--blue);color:#fff}.assign-drawer__actions button:disabled{opacity:.6;cursor:not-allowed}.assignments-page{padding:24px;display:flex;flex-direction:column;gap:16px}.assignments-page__header h2{margin:0 0 4px;font-size:22px}.assignments-page__subtitle{margin:0;color:var(--muted, #94a3b8);font-size:13px}.assignments-page__search{padding:10px 14px;border-radius:8px;border:1px solid var(--border, #1e293b);background:var(--surface);color:var(--text, #e2e8f0);font-size:14px;max-width:360px}.assignments-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:8px;overflow:hidden}.assignments-table th,.assignments-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border, #1e293b);font-size:13px}.assignments-table th{font-weight:600;font-size:12px;text-transform:uppercase;color:var(--muted, #94a3b8)}.assignments-table__empty{text-align:center;padding:32px;color:var(--muted, #94a3b8)}.assignments-table__tenant{display:flex;flex-direction:column}.assignments-table__subdomain{font-size:11px;color:var(--muted, #94a3b8);font-family:monospace}.assignments-table__vehicle code{background:#10b9811f;color:var(--green, #10b981);padding:2px 8px;border-radius:4px}.assignments-table__unassigned{color:var(--muted, #94a3b8);font-style:italic}.assignments-status{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;text-transform:uppercase;background:#64748b26;color:var(--muted, #94a3b8)}.assignments-status--active{background:#10b98126;color:var(--green, #10b981)}.assignments-table__actions{width:140px;text-align:right}.assignments-table__btn{padding:6px 12px;background:var(--blue);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500}.assignments-table__btn--danger{background:transparent;color:var(--red, #ef4444);border:1px solid var(--red, #ef4444)}.assignments-table__btn:disabled{opacity:.5;cursor:not-allowed}.skeleton-row{height:16px;background:#ffffff0d;border-radius:4px;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.assignments-page__pagination{display:flex;gap:12px;align-items:center;justify-content:center;padding:8px}.assignments-page__pagination button{padding:6px 12px;background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:6px;color:var(--text, #e2e8f0);cursor:pointer;font-size:13px}.assignments-page__pagination button:disabled{opacity:.4;cursor:not-allowed}.features-page{padding:24px;display:flex;flex-direction:column;gap:20px}.features-page__header{display:flex;align-items:flex-start;gap:16px}.features-page__back{margin-top:4px;background:transparent;border:1px solid var(--border, #1e293b);color:var(--text, #e2e8f0);border-radius:8px;padding:6px 12px;cursor:pointer;font-size:13px}.features-page__back:hover{background:#ffffff0a}.features-page__header h2{margin:0 0 4px;font-size:22px}.features-page__subtitle{margin:0;color:var(--muted, #94a3b8);font-size:13px;max-width:720px}.features-page__placeholder{background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:10px;padding:28px;text-align:center;color:var(--muted, #94a3b8);display:flex;flex-direction:column;gap:12px;align-items:center}.features-page__placeholder--error{color:var(--red)}.features-page__placeholder button{padding:6px 14px;background:var(--surface);border:1px solid var(--border, #1e293b);color:var(--text, #e2e8f0);border-radius:8px;cursor:pointer}.features-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px}.feature-card{background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:14px;transition:border-color .15s ease,background .15s ease}.feature-card--on{border-color:color-mix(in srgb,var(--blue) 55%,var(--border, #1e293b));background:color-mix(in srgb,var(--blue) 4%,var(--surface))}.feature-card__head{display:flex;gap:14px;align-items:flex-start}.feature-card__icon{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--blue);display:flex;align-items:center;justify-content:center;flex-shrink:0}.feature-card__icon .material-symbols-outlined{font-size:22px}.feature-card__title-block{flex:1;min-width:0}.feature-card__title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text, #e2e8f0)}.feature-card__pill{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:999px;cursor:help}.feature-card__pill--enforced{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green)}.feature-card__pill--reserved{background:#94a3b829;color:var(--muted, #94a3b8)}.feature-card__desc{margin-top:4px;color:var(--muted, #94a3b8);font-size:13px;line-height:1.4}.feature-card__code{display:inline-block;margin-top:8px;padding:2px 8px;background:#0f172a99;border-radius:6px;font-size:11px;color:var(--muted, #94a3b8);font-family:ui-monospace,SF Mono,Menlo,monospace}.feature-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0;margin-top:4px}.feature-switch input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;margin:0}.feature-switch__track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#475569;transition:background .15s ease}.feature-switch__thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s ease;box-shadow:0 1px 3px #0000004d}.feature-switch input:checked+.feature-switch__track{background:var(--blue)}.feature-switch input:checked+.feature-switch__track .feature-switch__thumb{transform:translate(20px)}.feature-switch--pending{opacity:.5;pointer-events:none}.feature-card__meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0;padding-top:12px;border-top:1px solid var(--border, #1e293b)}.feature-card__meta div{display:flex;flex-direction:column;gap:2px;min-width:0}.feature-card__meta dt{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #94a3b8);margin:0}.feature-card__meta dd{margin:0;font-size:12px;color:var(--text, #e2e8f0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tusers-page{padding:24px;display:flex;flex-direction:column;gap:16px}.tusers-page__header{display:flex;align-items:flex-start;gap:16px}.tusers-page__back{margin-top:4px;background:transparent;border:1px solid var(--border, #1e293b);color:var(--text, #e2e8f0);border-radius:8px;padding:6px 12px;cursor:pointer;font-size:13px}.tusers-page__back:hover{background:#ffffff0a}.tusers-page__title-block h2{margin:0 0 4px;font-size:22px}.tusers-page__subtitle{margin:0;color:var(--muted, #94a3b8);font-size:13px}.tusers-page__subtitle code{padding:2px 6px;background:#0f172a99;border-radius:4px;margin-right:4px}.tusers-page__placeholder{background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:10px;padding:32px;text-align:center;color:var(--muted, #94a3b8);display:flex;flex-direction:column;gap:10px;align-items:center}.tusers-page__placeholder--error{color:var(--red)}.tusers-page__placeholder button{padding:6px 14px;background:var(--surface);border:1px solid var(--border, #1e293b);color:var(--text, #e2e8f0);border-radius:8px;cursor:pointer}.tusers-table-wrapper{background:var(--surface);border:1px solid var(--border, #1e293b);border-radius:10px;overflow:hidden}.tusers-table{width:100%;border-collapse:collapse}.tusers-table th,.tusers-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border, #1e293b);font-size:13px}.tusers-table tr:last-child td{border-bottom:none}.tusers-table th{font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #94a3b8);background:#0f172a4d}.tusers-code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;background:#0f172a80;padding:2px 6px;border-radius:4px;color:var(--text, #e2e8f0)}.tusers-role{font-size:12px;color:var(--text, #e2e8f0)}.tusers-muted{color:var(--muted, #94a3b8)}.tusers-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.tusers-badge--green{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green)}.tusers-badge--amber{background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber)}.tusers-badge--red{background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--red)}.tusers-badge--slate{background:#94a3b829;color:var(--muted, #94a3b8)}.dvr-shell{min-height:100vh;background:var(--background);display:flex;flex-direction:column}.dvr-shell__header{height:60px;background:var(--surface-container-lowest);border-bottom:1px solid var(--outline-variant);display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:10}.dvr-shell__brand{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:700;font-size:18px;color:var(--on-background)}.dvr-shell__user{display:flex;align-items:center;gap:10px}.dvr-shell__avatar{width:34px;height:34px;border-radius:50%;background:var(--surface-container-high);color:var(--on-surface-variant);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.dvr-shell__logout{width:34px;height:34px;border-radius:var(--radius-lg);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-surface-variant);display:flex;align-items:center;justify-content:center}.dvr-shell__logout .material-symbols-outlined{font-size:18px}.dvr-shell__logout:hover{background:var(--surface-container);color:var(--on-background)}.dvr-shell__main{flex:1;width:100%;max-width:520px;margin:0 auto;padding:22px 18px 60px;display:flex;flex-direction:column;gap:18px}.dvr-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-2xl);padding:22px;box-shadow:var(--shadow-level-1)}.dvr-card--hero{background:var(--primary);color:#fff;border-color:transparent;position:relative;overflow:hidden}.dvr-card--hero:after{content:"";position:absolute;top:-40px;right:-40px;width:180px;height:180px;background:#ffffff1f;border-radius:50%;filter:blur(28px);pointer-events:none}.dvr-card--hero>*{position:relative;z-index:1}.dvr-card__hello{font-family:var(--font-display);font-weight:600;font-size:22px;letter-spacing:-.01em;margin-bottom:6px}.dvr-card__hint{font-size:13px;color:#ffffffd1}.dvr-card__title{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--on-background);margin-bottom:14px}.dvr-shift{display:flex;flex-direction:column;gap:14px}.dvr-shift__plate{font-family:var(--font-display);font-weight:700;font-size:28px;letter-spacing:-.02em}.dvr-shift__meta{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dvr-shift__meta-item{background:#ffffff1f;border-radius:var(--radius-lg);padding:10px 12px}.dvr-shift__meta-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;opacity:.82}.dvr-shift__meta-value{font-family:var(--font-display);font-weight:600;font-size:17px;margin-top:2px}.dvr-shift__cta-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dvr-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.dvr-field>span{font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant)}.dvr-field input,.dvr-field select,.dvr-field textarea{width:100%;border-radius:var(--radius-xl);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);padding:12px 14px;font-size:15px;color:var(--on-background);outline:none}.dvr-field input:focus,.dvr-field select:focus,.dvr-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px #003ec71a}.dvr-field textarea{min-height:100px;resize:vertical}.dvr-btn{width:100%;min-height:48px;border-radius:var(--radius-xl);border:1px solid transparent;font-family:var(--font-body);font-weight:600;font-size:15px;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:opacity .15s,transform .15s}.dvr-btn--primary{background:var(--primary-container);color:#fff;box-shadow:var(--shadow-level-1)}.dvr-btn--primary:hover{opacity:.92;transform:translateY(-1px)}.dvr-btn--primary:disabled{background:var(--outline);cursor:not-allowed;box-shadow:none;transform:none;opacity:1}.dvr-btn--ghost{background:var(--surface-container-lowest);border-color:var(--outline-variant);color:var(--on-surface-variant)}.dvr-btn--ghost:hover{background:var(--surface-container);color:var(--on-background)}.dvr-btn--danger{background:var(--error-container);color:var(--error);border:1px solid rgba(186,26,26,.2)}.dvr-btn--danger:hover{background:#ffc4bd}.dvr-inc-list{display:flex;flex-direction:column;gap:8px}.dvr-inc{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--outline-variant);border-radius:var(--radius-lg);background:var(--surface-container-lowest)}.dvr-inc__sev{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dvr-inc__sev--green{background:var(--success)}.dvr-inc__sev--amber{background:var(--warning)}.dvr-inc__sev--red{background:var(--error)}.dvr-inc__main{flex:1;min-width:0}.dvr-inc__type{font-size:13.5px;font-weight:600;color:var(--on-background)}.dvr-inc__meta{font-size:11.5px;color:var(--on-surface-variant);margin-top:2px}.dvr-empty{text-align:center;padding:22px 16px;color:var(--on-surface-variant);font-size:13px}.dvr-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:1000;display:flex;align-items:flex-end;justify-content:center;padding:0}.dvr-modal{background:var(--surface-container-lowest);width:100%;max-width:520px;max-height:92vh;overflow-y:auto;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;display:flex;flex-direction:column}.dvr-modal__head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--outline-variant)}.dvr-modal__title{font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--on-background)}.dvr-modal__close{background:transparent;border:0;font-size:26px;line-height:1;color:var(--on-surface-variant);cursor:pointer}.dvr-modal__body{padding:18px 20px;flex:1}.dvr-modal__foot{padding:14px 20px 18px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--outline-variant)}.dvr-modal__steps{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-bottom:10px}.dvr-radio-card{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1.5px solid var(--outline-variant);border-radius:var(--radius-xl);cursor:pointer;background:var(--surface-container-lowest);margin-bottom:10px;transition:border-color .15s,background .15s}.dvr-radio-card input{accent-color:var(--primary)}.dvr-radio-card--on{border-color:var(--primary);background:var(--primary-fixed)}.dvr-radio-card__title{font-size:14px;font-weight:600;color:var(--on-background)}.dvr-radio-card__sub{font-size:12px;color:var(--on-surface-variant)}.dvr-error{background:#ba1a1a14;color:var(--error);border:1px solid rgba(186,26,26,.2);border-radius:var(--radius-lg);padding:10px 12px;font-size:13px;margin-top:8px}.ops-page{max-width:1280px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:22px}.ops-page__title{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.02em;color:var(--on-background)}.ops-page__subtitle{font-size:13.5px;color:var(--on-surface-variant);margin-top:2px}.ops-card{background:var(--surface-container-lowest);border:1px solid var(--surface-container);border-radius:var(--radius-2xl);box-shadow:var(--shadow-level-1);overflow:hidden}.ops-card__toolbar{padding:16px 20px;border-bottom:1px solid var(--outline-variant);display:flex;flex-wrap:wrap;gap:10px}.ops-input{height:38px;padding:0 12px;border-radius:var(--radius-lg);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-background);font-size:13px;outline:none}.ops-input:focus{border-color:var(--primary)}.ops-input--inline{height:30px;padding:0 8px;font-size:12px}.ops-table-wrap{overflow-x:auto}.ops-table{width:100%;border-collapse:collapse;font-size:13px}.ops-table thead th{text-align:left;font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--on-surface-variant);padding:12px 16px;background:var(--surface-container-low);border-bottom:1px solid var(--outline-variant)}.ops-table tbody td{padding:13px 16px;border-bottom:1px solid var(--outline-variant);color:var(--on-background);vertical-align:middle}.ops-table__plate{font-weight:700}.ops-table__actions-col{text-align:right;width:80px}.ops-table__actions{text-align:right}.ops-table__desc{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--on-surface-variant)}.ops-table__empty{text-align:center;padding:36px 16px;color:var(--on-surface-variant)}.ops-card__footer{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;font-size:12px;color:var(--on-surface-variant)}.ops-pager{display:flex;align-items:center;gap:10px}.app-shell{display:flex;height:100%;overflow:hidden}.app-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.app-content{flex:1;overflow-y:auto}
