:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--bg-elevated:#fafafa;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#2563eb;--accent-bg:#2563eb1a;--accent-border:#2563eb73;--danger:#d33;--shadow:#0000001a 0 -2px 12px -2px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--bottom-nav-h:62px;--content-max-width:720px;font:16px/145% var(--sans);letter-spacing:.1px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--text:#9b9ba8;--text-h:#f5f5f7;--bg:#0b0b12;--bg-elevated:#17171f;--border:#27272f;--code-bg:#1c1c26;--accent:#6a5cff;--accent-bg:#6a5cff2e;--accent-border:#6a5cff8c;--shadow:#0009 0 -2px 12px -2px, #0006 0 4px 6px -2px}}:root[data-theme=dark]{--text:#9b9ba8;--text-h:#f5f5f7;--bg:#0b0b12;--bg-elevated:#17171f;--border:#27272f;--code-bg:#1c1c26;--accent:#6a5cff;--accent-bg:#6a5cff2e;--accent-border:#6a5cff8c;--shadow:#0009 0 -2px 12px -2px, #0006 0 4px 6px -2px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;overflow-x:hidden}#root{width:100%;max-width:var(--content-max-width);flex-direction:column;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:600}h1{letter-spacing:-.3px;margin:4px 0 16px;font-size:24px}h2{letter-spacing:-.1px;margin:24px 0 10px;font-size:17px;line-height:130%}p{margin:0}code{font-family:var(--mono);background:var(--code-bg);color:var(--text-h);border-radius:4px;padding:3px 6px;font-size:14px;line-height:135%}.auth-page{flex:1;justify-content:center;align-items:center;padding:24px 20px;display:flex}.auth-form,.vehicle-form{text-align:left;flex-direction:column;gap:14px;width:100%;max-width:400px;display:flex}.vehicle-form{border:1px solid var(--border);background:var(--bg-elevated);border-radius:12px;margin:0 0 20px;padding:18px}.date-filter-row{flex-flow:wrap;align-items:flex-end;max-width:none;padding:12px 14px}.date-filter-row label{flex:1;min-width:130px}.auth-form label,.vehicle-form label{color:var(--text-h);flex-direction:column;gap:6px;font-size:14px;display:flex}.auth-form input,.vehicle-form input,.vehicle-form select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;min-height:44px;padding:11px 12px;font-size:16px}.auth-links{color:var(--text);justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex}button{font:inherit;border:1px solid var(--accent-border);background:var(--accent-bg);min-height:44px;color:var(--text-h);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:8px;padding:10px 18px;font-size:15px}button:active{background:var(--accent);color:#fff}@media (hover:hover){button:hover{background:var(--accent);color:#fff}}.btn-success{color:#fff;background:#16a34a;border-color:#16a34a}.btn-success:active{color:#fff;background:#15803d;border-color:#15803d}@media (hover:hover){.btn-success:hover{color:#fff;background:#15803d;border-color:#15803d}}.form-actions{flex-wrap:wrap;gap:10px;display:flex}.form-actions button{flex:1;min-width:120px}.error{color:var(--danger);font-size:14px}.hint{color:var(--text);font-size:12px}.os-location-warning{color:#7c3e0a;background:#fef3e2;border:1px solid #f5d9a8;border-radius:10px;margin-bottom:14px;padding:12px 14px;font-size:13.5px;line-height:1.5}.os-location-warning p{margin:0 0 10px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .os-location-warning{color:#fbbf72;background:#b453092e;border-color:#b4530966}}:root[data-theme=dark] .os-location-warning{color:#fbbf72;background:#b453092e;border-color:#b4530966}.native-alert-overlay{z-index:50;background:#0006;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.native-alert{background:var(--bg-elevated);width:100%;max-width:280px;box-shadow:var(--shadow);text-align:center;border-radius:14px;overflow:hidden}.native-alert-title{color:var(--text-h);padding:18px 16px 4px;font-size:15px;font-weight:700}.native-alert-message{color:var(--text);padding:0 16px 16px;font-size:13px;line-height:1.4}.native-alert-actions{border-top:1px solid var(--border);display:flex}.native-alert-btn{min-height:44px;color:var(--text-h);background:0 0;border:none;border-radius:0;flex:1;padding:10px 8px;font-size:15px}.native-alert-btn:active,.native-alert-btn:hover{background:var(--code-bg);color:var(--text-h)}.native-alert-btn+.native-alert-btn{border-left:1px solid var(--border)}.native-alert-btn-primary{color:var(--accent);font-weight:600}.native-alert-btn-primary:active,.native-alert-btn-primary:hover{color:var(--accent)}.layout{flex-direction:column;flex:1;min-height:100svh;display:flex}.top-bar{z-index:10;padding:12px 16px;padding-top:max(12px, env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-name{color:var(--accent);font-size:15px;font-weight:600}.user-badge{background:var(--accent-bg);width:30px;height:30px;color:var(--accent);border:1px solid var(--accent-border);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.top-bar-actions{align-items:center;gap:10px;display:flex}.icon-button{width:38px;height:38px;min-height:0;color:var(--text-h);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.icon-button:active{background:var(--code-bg);color:var(--text-h)}@media (hover:hover){.icon-button:hover{background:var(--code-bg);color:var(--text-h)}}.notif-dot{background:var(--danger);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:10px;font-weight:700;line-height:1;display:flex;position:absolute;top:2px;right:2px}.toast{top:calc(58px + env(safe-area-inset-top));z-index:15;background:var(--text-h);color:var(--bg);box-shadow:var(--card-shadow,0 8px 20px -8px #0000004d);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;margin:8px 16px 0;padding:12px 14px;animation:.2s ease-out toast-in;display:flex;position:sticky}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.toast-body{align-items:center;gap:10px;font-size:13.5px;line-height:1.4;display:flex}.toast-dot{background:var(--accent);border-radius:50%;flex:none;width:8px;height:8px}.toast-close{min-height:0;color:inherit;opacity:.7;background:0 0;border:none;padding:4px 8px;font-size:13px}.toast-close:active,.toast-close:hover{opacity:1;color:inherit;background:#ffffff1f}.sheet-title{color:var(--text-h);padding:4px 12px 10px;font-size:15px;font-weight:700}.sheet-empty{color:var(--text);padding:8px 12px 16px;font-size:13px}.notif-item{text-align:left;line-height:1.4;display:block}.notif-time{color:var(--text);white-space:nowrap;font-size:12px}.page{padding:16px 16px calc(var(--bottom-nav-h) + 24px);text-align:left;flex:1;width:100%}.route-fallback{background:var(--bg);flex:1;width:100%;min-height:100svh}.bottom-nav{z-index:20;height:var(--bottom-nav-h);padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow);max-width:var(--content-max-width);margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav .tab{color:var(--text);background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-height:0;padding:6px 2px;font-size:11px;text-decoration:none;display:flex}.bottom-nav .tab:active{background:var(--code-bg);color:var(--text)}@media (hover:hover){.bottom-nav .tab:hover{background:var(--code-bg);color:var(--text)}}.bottom-nav .tab.active{color:var(--accent)}.sheet-overlay{z-index:30;background:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:var(--content-max-width);background:var(--bg);padding:10px 8px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;flex-direction:column;max-height:80vh;display:flex;overflow-y:auto}.sheet-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:4px auto 10px}.sheet-item{text-align:left;color:var(--text-h);background:0 0;border:none;border-radius:8px;padding:13px 12px;font-size:15px}.sheet-item:active{background:var(--code-bg)}.sheet-danger{color:var(--danger)}.sheet-divider{background:var(--border);height:1px;margin:8px 4px}.sheet-user{color:var(--text);padding:4px 12px 8px;font-size:13px}.settings-toggle-row{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:6px 0;display:flex}.settings-toggle-label{color:var(--text-h);font-size:14px;font-weight:600}.toggle{background:var(--code-bg);border:1px solid var(--border);border-radius:999px;flex:none;width:44px;height:26px;transition:background .15s;position:relative}.toggle-on{background:var(--accent);border-color:var(--accent)}.toggle-knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:2px;left:2px}.toggle-on .toggle-knob{transform:translate(18px)}.lang-options{gap:10px;display:flex}.lang-option{flex:1;min-height:44px}.lang-option-active{background:var(--accent);color:#fff}.settings-field{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding:10px 0;display:flex}.sound-choice-list{flex-wrap:wrap;gap:8px;display:flex}.sound-choice{background:var(--code-bg);border:1px solid var(--border);min-height:40px;color:var(--text);border-radius:999px;padding:0 14px;font-size:13px}.sound-choice-active{background:var(--accent);border-color:var(--accent);color:#fff}.volume-slider{width:100%;accent-color:var(--accent)}.status-ok{color:#16a34a;font-weight:600}.status-warn{color:#b45309;font-weight:600}.combobox{position:relative}.combobox input{width:100%}.combobox-dropdown{z-index:20;background:var(--bg);border:1px solid var(--border);max-height:220px;box-shadow:var(--shadow);border-radius:8px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.combobox-option{color:var(--text-h);cursor:pointer;padding:11px 12px;font-size:15px}.combobox-option:not(:last-child){border-bottom:1px solid var(--border)}@media (hover:hover){.combobox-option:hover{background:var(--code-bg)}}.combobox-create{color:var(--accent);font-weight:600}.combobox-empty{color:var(--text);padding:11px 12px;font-size:13px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin:12px 0 24px;display:grid}.stat-card{border:1px solid var(--border);text-align:left;background:var(--bg-elevated);border-radius:10px;padding:14px}a.stat-card-link{color:inherit;min-height:0;text-decoration:none;transition:border-color .15s,transform .1s;display:block}a.stat-card-link:active{background:var(--bg-elevated);color:inherit;transform:scale(.98)}@media (hover:hover){a.stat-card-link:hover{border-color:var(--accent-border);background:var(--bg-elevated);color:inherit}}.stat-value{color:var(--text-h);font-size:22px;font-weight:700}.stat-label{color:var(--text);margin-top:4px;font-size:12px}.bar-chart{flex-direction:column;gap:14px;margin-bottom:24px;display:flex}.bar-row{grid-template-columns:1fr auto;grid-template-areas:"label value""track track";gap:4px 8px;font-size:13px;display:grid}.bar-label,.bar-value{color:var(--text-h)}.bar-label{grid-area:label}.bar-value{text-align:right;grid-area:value}.bar-track{background:var(--code-bg);border-radius:4px;grid-area:track;height:10px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:4px;height:100%}.data-list{flex-direction:column;gap:10px;margin-top:4px;padding:0;list-style:none;display:flex}.data-card{border:1px solid var(--border);background:var(--bg-elevated);border-radius:10px;padding:12px 14px}.data-card-title{color:var(--text-h);justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;font-size:15px;font-weight:600;display:flex}.data-card-row{justify-content:space-between;gap:12px;padding:3px 0;font-size:13px;display:flex}.data-card-row .label{color:var(--text)}.data-card-row .value{color:var(--text-h);text-align:right}.value.status-ok{color:#16a34a}.value.status-warn{color:#b45309}.dt-date{margin-left:.6em}.badge{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge-neutral{background:var(--code-bg);color:var(--text-h)}.badge-success{color:#16a34a;background:#22c55e26}.badge-warning{color:#b45309;background:#eab3082e}.badge-danger{color:#dc2626;background:#dc26261f}.badge-info{background:var(--accent-bg);color:var(--accent)}.btn-danger{color:#dc2626;background:#dc26261a;border-color:#dc262680}.btn-danger:active{background:var(--danger);color:#fff}@media (hover:hover){.btn-danger:hover{background:var(--danger);color:#fff}}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.row-actions{gap:8px;margin-top:10px;display:flex}.row-actions button{flex:1;min-height:38px;padding:8px 10px;font-size:13px}.filter-chip{background:var(--accent-bg);color:var(--accent);border-radius:999px;align-items:center;gap:8px;margin:12px 0;padding:6px 8px 6px 14px;font-size:13px;font-weight:600;display:inline-flex}.filter-chip button{min-height:0;color:inherit;background:0 0;border:none;border-radius:999px;padding:4px 8px;font-size:13px;line-height:1}.filter-chip button:active,.filter-chip button:hover{color:inherit;background:#00000014}.link-button{color:var(--accent);font-size:13px;font-weight:600;text-decoration:none}.tracking-map{border:1px solid var(--border);border-radius:12px;width:100%;height:60svh;min-height:320px}.leaflet-tooltip.vehicle-plate-label{color:#111;letter-spacing:.3px;background:#ffd400;border:none;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700;box-shadow:0 1px 4px #00000040}.leaflet-tooltip.vehicle-plate-label:before{border-top-color:#ffd400}@media (width>=640px){:root{--content-max-width:900px}.page{padding:24px 32px calc(var(--bottom-nav-h) + 24px)}h1{font-size:28px}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.bar-row{grid-template-columns:140px 1fr 130px;grid-template-areas:"label track value";align-items:center;gap:12px}}
