:root,body[data-theme=light]{--bg:#FAF7F1;--surface:#FFFFFF;--surface-2:#F3EEE3;--border:#E6DFD2;--border-strong:#D8CFBE;--text:#1B1B1F;--text-muted:#6B655C;--text-faint:#9C9486;--accent:#C75B1F;--accent-soft:#F6E7DA;--accent-on:#FFFFFF;--app-font:'Manrope',system-ui,-apple-system,sans-serif;--s-stop:#7C7568;--s-idle:#B6791F;--s-moving:#2E8B5C;--s-warn:#d67137;--s-alarm:#B23A30;--c-speed:#B23A30;--c-speed-bg:#FAE4E1;--c-tacho:#9A6708;--c-tacho-bg:#FBF1DF;--c-maint:#1A4FAD;--c-maint-bg:#E6EEFC;--c-area:#1F6B47;--c-area-bg:#E4F1EA;--c-other:#6B655C;--c-other-bg:#F2EFE8;--status-stop-bg:#F2EFE8;--status-stop-fg:#7C7568;--status-idle-bg:#FBF1DF;--status-idle-fg:#7A5009;--status-moving-bg:#E4F1EA;--status-moving-fg:#1F6B47;--status-alarm-bg:#FAE4E1;--status-alarm-fg:#7A1F19;--s-moving-map:#42C418;--s-moving-map-stroke:#2A720F;--s-idle-map:#E88A24;--s-idle-map-stroke:#633910;--s-stop-map:#C42127;--s-stop-map-stroke:#510E13;--s-alarm-map:#BFBFBF;--s-alarm-map-stroke:#606060;--s-nd-map:#BFBFBF;--s-nd-map-stroke:#606060;--s-moving-stroke:color-mix(in oklab, var(--s-moving) 20%, var(--border));--s-idle-stroke:color-mix(in oklab, var(--s-idle) 20%, var(--border));--s-stop-stroke:color-mix(in oklab, var(--s-stop) 20%, var(--border));--s-alarm-stroke:color-mix(in oklab, var(--s-alarm) 80%, var(--border));--shadow-1:0 1px 0 rgba(15, 12, 8, .04),0 1px 2px rgba(15, 12, 8, .04);--shadow-pop:0 8px 24px rgba(15, 12, 8, .08);--tacho-drive-bg:#E4F1EA;--tacho-drive-fg:#1F6B47;--tacho-work-bg:#FBF1DF;--tacho-work-fg:#7A5009;--tacho-avail-bg:#E3EEFF;--tacho-avail-fg:#1A4FAD;--tacho-rest-bg:#F2EFE8;--tacho-rest-fg:#7C7568;--map-filter:none}body[data-theme=dark]{--bg:#14110D;--surface:#1D1914;--surface-2:#27221B;--border:#2C2720;--border-strong:#3A3429;--text:#F2EDE2;--text-muted:#A39B8B;--text-faint:#6F665A;--accent:#E07335;--accent-soft:rgba(224, 115, 53, .16);--accent-on:#1A0F08;--s-stop:#8A8275;--s-idle:#D89A3B;--s-moving:#58C28C;--s-warn:#e3945f;--s-alarm:#E36B5F;--c-speed:#F39684;--c-speed-bg:rgba(227, 107, 95, .18);--c-tacho:#E5B568;--c-tacho-bg:rgba(216, 154, 59, .16);--c-maint:#90B8F8;--c-maint-bg:rgba(100, 160, 255, .14);--c-area:#7CDBA9;--c-area-bg:rgba(88, 194, 140, .16);--c-other:#A39B8B;--c-other-bg:rgba(138, 130, 117, .16);--s-moving-map:#42C418;--s-moving-map-stroke:#2A720F;--s-idle-map:#E88A24;--s-idle-map-stroke:#633910;--s-stop-map:#C42127;--s-stop-map-stroke:#510E13;--s-alarm-map:#BFBFBF;--s-alarm-map-stroke:#606060;--s-nd-map:#BFBFBF;--s-nd-map-stroke:#606060;--status-stop-bg:rgba(138, 130, 117, .16);--status-stop-fg:#B8B0A0;--status-idle-bg:rgba(216, 154, 59, .16);--status-idle-fg:#E5B568;--status-moving-bg:rgba(88, 194, 140, .16);--status-moving-fg:#7CDBA9;--status-alarm-bg:rgba(227, 107, 95, .18);--status-alarm-fg:#F39684;--tacho-drive-bg:rgba(88, 194, 140, .16);--tacho-drive-fg:#7CDBA9;--tacho-work-bg:rgba(216, 154, 59, .16);--tacho-work-fg:#E5B568;--tacho-avail-bg:rgba(100, 160, 255, .14);--tacho-avail-fg:#90B8F8;--tacho-rest-bg:rgba(138, 130, 117, .16);--tacho-rest-fg:#B8B0A0;--shadow-1:0 1px 0 rgba(0, 0, 0, .4),0 1px 2px rgba(0, 0, 0, .3);--shadow-pop:0 -8px 24px rgba(0, 0, 0, .4);--map-filter:none}*{box-sizing:border-box}.navbar-app{min-height:50px;border-color:#ccc;background:#f7f7f7;border-width:1px;border-style:solid;color:var(--text)}.navbar-app .btn{background:0 0;border:none;line-height:50px;padding-top:0;padding-bottom:0;color:var(--text);text-transform:uppercase}.ws-map-container{position:relative;width:100%}@media (max-height:768px){.ws-map-container{min-height:400px;height:400px}}@media (min-height:768px){.ws-map-container{min-height:450px;height:450px}}@media (max-width:768px){@media (min-height:768px){.ws-map-container{min-height:350px;height:500px}}@media (max-height:768px){.ws-map-container{min-height:350px;height:400px}}}ws-header,ws-limit-bar,ws-map,ws-trip-card{display:block;width:100%}ws-sidebar{display:contents}ws-icon,ws-status,ws-theme-toggle{display:inline-flex;align-items:center}.ws-icon{width:16px;height:16px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.ws-icon-sm{width:14px;height:14px}.ws-icon-lg{width:20px;height:20px}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--app-font);font-size:14px;line-height:1.45;letter-spacing:-.005em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s ease,color .25s ease}.ws-statusbar-scrim{position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top);background:linear-gradient(180deg,rgba(20,18,12,.55) 0,rgba(20,18,12,.16) 70%,rgba(20,18,12,0) 100%);z-index:10500;pointer-events:none}a{color:var(--accent);text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}::-webkit-scrollbar-track{background:0 0}.btn-primary{background-color:var(--accent);border-color:var(--accent);color:var(--accent-on)}.btn-primary:focus,.btn-primary:hover{background-color:var(--accent);border-color:var(--accent);color:var(--accent-on);filter:brightness(.94)}.form-control{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px}.form-control:focus{background:var(--surface);color:var(--text);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-control::placeholder{color:var(--text-faint)}.ws-app{display:flex;min-height:100vh;background:var(--bg);color:var(--text)}.ws-main{flex:1;min-width:0;display:flex;flex-direction:column;color:var(--text);background:var(--bg)}.ws-view{width:100%;min-height:100vh;background:var(--bg);color:var(--text);display:flex;flex-direction:column;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}@media (max-width:767px){.ws-view{max-width:480px;margin:0 auto}}.ws-drawer-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:999;opacity:0;pointer-events:none;transition:opacity .26s ease}.ws-drawer-backdrop.is-visible{opacity:1;pointer-events:auto}@media (min-width:768px){.ws-drawer-backdrop{display:none!important}}.ws-sidebar{display:flex;flex-direction:column;width:280px;flex-shrink:0;background:var(--surface);color:var(--text);border-right:1px solid var(--border);padding:calc(18px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom));position:fixed;top:0;left:0;bottom:0;z-index:1005;transform:translateX(-100%);transition:transform .28s cubic-bezier(.4, 0, .2, 1),box-shadow .28s ease}.ws-sidebar.is-open{transform:translateX(0);box-shadow:12px 0 40px rgba(0,0,0,.18)}.ws-sidebar-close{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:0 0;border:none;color:var(--text-muted);cursor:pointer;margin-left:auto;flex-shrink:0;transition:background-color .12s ease,color .12s ease}.ws-sidebar-close:hover{background:var(--surface-2);color:var(--text)}.ws-sidebar-brand{display:flex;align-items:center;gap:10px;padding:4px 6px 16px;border-bottom:1px solid var(--border);margin-bottom:12px}.ws-brand-logo{width:34px;height:34px;border-radius:9px;background:var(--accent);color:var(--accent-on);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;letter-spacing:-.02em;flex-shrink:0}.ws-brand-text{display:flex;flex-direction:column;line-height:1.1}.ws-brand-text .name{font-weight:800;font-size:15px;letter-spacing:-.01em}.ws-brand-text .hint{font-size:11px;color:var(--text-muted);font-weight:500;margin-top:2px}.ws-sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow-y:auto}.ws-sidebar-nav button{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:9px;background:0 0;border:none;color:var(--text-muted);text-align:left;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;width:100%;line-height:1.2;transition:background-color .15s ease,color .15s ease}.ws-sidebar-nav button:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.ws-sidebar-nav button.active{background:var(--accent-soft);color:var(--accent)}.ws-sidebar-nav button.disabled,.ws-sidebar-nav button:disabled{opacity:.45;cursor:not-allowed}.ws-sidebar-nav .ws-sidebar-label{flex:1}.ws-sidebar-meta{font-size:11px;font-weight:700;color:var(--text-muted);background:var(--surface-2);padding:1px 7px;border-radius:999px;font-variant-numeric:tabular-nums}.ws-sidebar-nav button.active .ws-sidebar-meta{background:rgba(255,255,255,.25);color:var(--accent)}body[data-theme=dark] .ws-sidebar-nav button.active .ws-sidebar-meta{background:rgba(255,255,255,.08)}.ws-sidebar-badge{background:var(--s-alarm);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px}.ws-sidebar-divider{height:1px;background:var(--border);margin:8px 0 10px}.ws-sidebar-foot{display:flex;align-items:center;gap:10px;padding:2px 4px 0;flex-shrink:0}.ws-sidebar-account{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.ws-sidebar-account .avatar{width:30px;height:30px;border-radius:50%;background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--text-muted);flex-shrink:0}.ws-sidebar-account .who{min-width:0;line-height:1.2}.ws-sidebar-account .who-name{font-size:12px;font-weight:700}.ws-sidebar-account .who-email{font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-settings-wrap{position:relative;flex-shrink:0}.ws-settings-btn{width:30px;height:30px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background-color .15s ease,color .15s ease}.ws-settings-btn.active,.ws-settings-btn:hover{background:var(--accent-soft);color:var(--accent)}.ws-settings-backdrop{position:fixed;inset:0;z-index:9}.ws-settings-dropdown{position:absolute;right:0;bottom:calc(100% + 8px);z-index:10;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:6px;display:flex;flex-direction:column;gap:2px}.ws-settings-dropdown button{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:9px;background:0 0;border:none;color:var(--text-muted);text-align:left;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;width:100%;line-height:1.2;transition:background-color .15s ease,color .15s ease}.ws-settings-dropdown button:hover{background:var(--surface-2);color:var(--text)}.ws-settings-dropdown button.active{background:var(--accent-soft);color:var(--accent)}.ws-settings-divider{height:1px;background:var(--border);margin:4px 2px}button:focus:not(:focus-visible){outline:0}@media (min-width:768px){.ws-sidebar{position:sticky;top:0;left:auto;bottom:auto;height:100vh;width:256px;transform:none!important;transition:none;box-shadow:none!important;z-index:auto}.ws-sidebar-close{display:none!important}}@media (min-width:768px){.ws-view{max-width:none;min-height:100vh;border-radius:0;border:none;box-shadow:none}.ws-menu-trigger{display:none!important}.ws-header ws-theme-toggle{display:none}}@media (min-width:768px){.ws-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:8px 24px 32px}.ws-list .ws-vehicle{margin-bottom:0}.ws-filters,.ws-search{padding-left:24px;padding-right:24px}.ws-section{padding:20px 24px 4px;max-width:880px;margin:0 auto;width:100%}.ws-flotta .ws-filters,.ws-flotta .ws-list,.ws-flotta .ws-search{max-width:1200px;margin-left:auto;margin-right:auto}.ws-flotta,.ws-menu,.ws-storico,.ws-vehicle-view{align-items:center}.ws-flotta>.ws-header,.ws-menu>.ws-header,.ws-storico>.ws-header,.ws-vehicle-view>.ws-header{width:100%;max-width:none}.ws-storico>div,.ws-vehicle-view>div{width:100%;max-width:920px}.ws-menu>div,.ws-menu>footer,.ws-menu>nav{width:100%;max-width:720px}}@media (min-width:1200px){.ws-list{grid-template-columns:repeat(3,1fr)}}@media (min-width:768px){.ws-flotta-map{padding:0}}.ws-header{padding:calc(14px + env(safe-area-inset-top)) 16px 14px;background:var(--bg);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0;position:relative;z-index:50}.ws-header h1{margin:0;font-size:14px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;text-align:center;flex:1 1 auto;min-width:0}.ws-header .ws-header-side{display:inline-flex;align-items:center;gap:8px;flex:1 1 0;min-width:0;white-space:nowrap}.ws-header .ws-header-side.right{justify-content:flex-end}.ws-offline-banner{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;font-size:12px;font-weight:600;color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 12%,var(--bg));border-bottom:1px solid color-mix(in oklab,var(--s-alarm) 35%,var(--border));flex-shrink:0}.ws-offline-banner svg{flex-shrink:0}.ws-iconbtn{background:0 0;border:none;padding:0;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.ws-iconbtn svg{display:block}.ws-toggle{width:30px;height:30px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.ws-segmented{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:2px}.ws-segmented button{border:none;background:0 0;color:var(--text-muted);padding:4px 8px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center}.ws-segmented button.active{background:var(--text);color:var(--bg)}.ws-section{padding:16px 16px 4px}.ws-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.ws-section-head h3{margin:0;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.ws-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-1)}.ws-status-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 7px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.ws-map-dock-rail .ws-status-pill{font-size:8.5px}.ws-map-dock-rail .ws-vcard-plate{font-size:12px}.ws-map-dock-rail .ws-vcard-model{font-size:9px}.ws-status-pill.s-stop{background:var(--status-stop-bg);color:var(--status-stop-fg)}.ws-status-pill.s-idle{background:var(--status-idle-bg);color:var(--status-idle-fg)}.ws-status-pill.s-moving{background:var(--status-moving-bg);color:var(--status-moving-fg)}.ws-status-pill.s-alarm{background:var(--status-alarm-bg);color:var(--status-alarm-fg)}.ws-status-pill.s-tacho{background:var(--status-stop-bg);color:var(--status-stop-fg)}.ws-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.ws-dot.s-stop{background:var(--s-stop)}.ws-dot.s-idle{background:var(--s-idle)}.ws-dot.s-moving{background:var(--s-moving)}.ws-dot.s-alarm{background:var(--s-alarm)}.ws-dot.haloed{box-shadow:0 0 0 3px var(--surface),0 0 0 4px rgba(0,0,0,.12)}.ws-filters{display:flex;gap:6px;padding:10px 16px 8px;overflow-x:auto;-webkit-overflow-scrolling:touch}.ws-filters::-webkit-scrollbar{display:none}.ws-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px;font-weight:600;white-space:nowrap;flex-shrink:0;cursor:pointer}.ws-chip.active{border-color:var(--text);background:var(--text);color:var(--bg)}.ws-chip .ws-chip-count{font-size:11px;font-weight:700;padding:1px 6px;border-radius:6px;background:var(--surface-2);color:var(--text-muted)}.ws-chip.active .ws-chip-count{background:rgba(255,255,255,.12);color:var(--bg)}.ws-search{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 12px;box-shadow:var(--shadow-1);margin:10px 16px 0}.ws-search input{border:none;outline:0;background:0 0;color:var(--text);font:inherit;font-size:13px;flex:1;min-width:0}.ws-search input::placeholder{color:var(--text-faint)}.ws-search-count{color:var(--text-faint);font-size:11px;font-weight:600}.ws-list{padding:4px 16px 24px}.ws-vehicle{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:8px;cursor:pointer;box-shadow:var(--shadow-1);color:var(--text)}@media (min-width:768px){.ws-vehicle{max-width:400px}}.ws-vehicle:hover{border-color:var(--border-strong)}.ws-vehicle.selected{background:var(--accent-soft,#f7e6cd);border-color:var(--accent,#c97a1f)}.ws-vehicle-head{display:flex;justify-content:space-between;align-items:baseline}.ws-vehicle-id{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}.ws-vehicle-id .plate{font-weight:700;font-size:14px;letter-spacing:.01em;white-space:nowrap}.ws-vehicle-id .model{font-size:11px;color:var(--text-muted);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.ws-vehicle-meta{margin-top:6px;color:var(--text-muted);font-size:12px;display:flex;justify-content:space-between;gap:8px}.ws-vehicle-meta .addr{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ws-vehicle-meta .seen{flex-shrink:0;color:var(--text-faint);display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.ws-vehicle-motion{margin-top:8px;font-size:11px;color:var(--text-muted);display:flex;gap:12px;height:12px}.ws-vehicle-motion b{color:var(--text);font-variant-numeric:tabular-nums}.ws-vehicle-glyph{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;flex-shrink:0;background:var(--surface-2,var(--surface));color:var(--text-muted);border:1px solid var(--border)}.ws-vehicle-glyph svg{width:16px;height:16px}.ws-vehicle-glyph.s-stop{color:var(--s-stop)}.ws-vehicle-glyph.s-idle{color:var(--s-idle)}.ws-vehicle-glyph.s-moving{color:var(--s-moving)}.ws-vehicle-glyph.s-alarm{color:var(--s-alarm);border-color:color-mix(in oklab,var(--s-alarm) 35%,var(--border))}.ws-kv{display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border);gap:12px}.ws-kv:last-child{border-bottom:none}.ws-kv-key{font-size:12px;color:var(--text-muted);font-weight:600}.ws-kv-val{text-align:right;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.ws-kv-val.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}.ws-limit-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.ws-limit-value{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.ws-limit-track{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden}.ws-limit-fill{height:100%;border-radius:999px;transition:width .4s ease;background:var(--s-moving)}.ws-limit.warn .ws-limit-fill{background:var(--s-idle)}.ws-limit.alert .ws-limit-fill{background:var(--s-alarm)}.ws-pill-warn{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.05em;padding:1px 6px;border-radius:4px;color:var(--status-alarm-fg);background:var(--status-alarm-bg)}.ws-limit{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:6px;overflow:hidden}.ws-limit-head{display:grid;grid-template-columns:18px minmax(110px,1fr) minmax(80px,1.4fr) auto;align-items:center;gap:10px;width:100%;padding:10px 12px;background:0 0;border:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.ws-limit-head:disabled{cursor:default}.ws-limit-head:focus-visible{outline:2px solid color-mix(in oklab,var(--accent) 50%,transparent);outline-offset:-2px}.ws-limit-twirl{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;background:var(--surface-2);color:var(--text-muted);font-size:14px;font-weight:700;line-height:1}.ws-limit.is-open .ws-limit-twirl{background:color-mix(in oklab,var(--accent) 16%,var(--surface-2));color:var(--accent)}.ws-limit-head:disabled .ws-limit-twirl{visibility:hidden}.ws-limit-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;min-width:0}.ws-limit-label>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-limit-value{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;justify-self:end}.ws-limit-track{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden;min-width:60px}.ws-limit-details{border-top:1px solid var(--border);background:color-mix(in oklab,var(--surface-2) 50%,var(--surface));padding:4px 12px 6px 40px}.ws-limit-detail-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:baseline;padding:6px 0;border-bottom:1px dashed var(--border);font-size:12px}.ws-limit-detail-row:last-child{border-bottom:none}.ws-limit-detail-row .k{color:var(--text-muted)}.ws-limit-detail-row .v{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.ws-limit-flat{background:0 0;border:none;border-radius:0;margin-bottom:0;overflow:visible}.ws-limit-flat .ws-limit-head{grid-template-columns:auto minmax(40px,1fr) auto;gap:8px;padding:4px 0}.ws-limit-flat .ws-limit-label{font-size:12px}.ws-limit-flat .ws-limit-value{font-size:12px}.ws-trip{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow-1);margin-bottom:8px;transition:all .2s ease}.ws-trip.selected{background:var(--accent-soft);border:2px solid var(--accent);border-left-width:6px;box-shadow:0 2px 8px rgba(0,0,0,.1),inset 0 0 0 1px var(--accent)}.ws-trip-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.ws-trip-num{width:22px;height:22px;border-radius:6px;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.ws-trip-time{display:flex;align-items:baseline;gap:6px;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.ws-trip-time .arrow{color:var(--text-faint);font-size:11px;font-weight:400}.ws-trip-duration{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--surface-2);color:var(--text);padding:3px 8px;border-radius:999px}.ws-trip-route{margin-top:10px;display:grid;grid-template-columns:14px 1fr;gap:8px}.ws-trip-rail{position:relative;display:flex;flex-direction:column;align-items:center;padding:4px 0}.ws-trip-rail .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ws-trip-rail .dot.from{background:var(--s-moving);box-shadow:0 0 0 3px var(--surface),0 0 0 4px rgba(46,139,92,.18)}.ws-trip-rail .dot.to{background:var(--accent);box-shadow:0 0 0 3px var(--surface),0 0 0 4px var(--accent-soft)}.ws-trip-rail .line{flex:1;width:2px;margin:2px 0;background:repeating-linear-gradient(var(--border-strong),var(--border-strong) 2px,transparent 2px,transparent 5px)}.ws-trip-stops{display:flex;flex-direction:column;gap:10px}.ws-trip-stop .addr{font-size:12px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis}.ws-trip-stop .city{font-size:11px;color:var(--text-muted)}.ws-trip-metrics{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ws-metric .label{font-size:9px;font-weight:700;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:4px}.ws-metric .value{margin-top:2px;font-size:13px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}.ws-metric.emphasized .value{color:var(--accent);font-size:14px}.ws-metric .unit{font-size:9px;color:var(--text-muted);font-weight:600;margin-left:2px}.ws-totals{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ws-total{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.ws-total .label{font-size:10px;color:var(--text-muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.ws-total .value{font-size:16px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}.ws-totals-tri{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}.ws-total.accent{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.ws-total.accent .value{color:var(--accent)}.ws-map{width:100%;height:320px;background:var(--surface-2)}.ws-map.full{flex:1;height:auto;min-height:520px}.leaflet-container{background:var(--surface-2);font-family:inherit}body[data-theme=dark] .leaflet-control-attribution{background:rgba(20,17,13,.7);color:var(--text-muted)}body[data-theme=dark] .leaflet-control-attribution a{color:var(--accent)}.leaflet-bar a,.leaflet-bar a:hover{background:var(--surface)!important;color:var(--text)!important;border-bottom-color:var(--border)!important}.ws-pin{width:14px;height:14px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ws-marker-pin{width:16px;height:16px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ws-marker-arrow{width:16px;height:16px;display:flex;align-items:center;justify-content:center}.ws-marker-arrow svg{width:15px;height:15px;fill:currentColor;stroke:var(--surface);stroke-width:2.5;stroke-linejoin:round;paint-order:stroke;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .4))}.ws-marker-dot{width:7px;height:7px;border-radius:50%;border:1.5px solid var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ws-hide-point-markers .ws-point-marker{display:none}.ws-pin.dot.to{background:var(--s-alarm)}.ws-marker-pin.dot.to{background:var(--s-alarm)}.ws-pin.dot.from{background:var(--s-moving)}.ws-marker-pin.dot.from{background:var(--s-moving)}.ws-marker-event-num{width:22px;height:22px;border-radius:50%;background:var(--c-tacho);border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;line-height:1}.ws-marker-event{width:26px;height:26px;border-radius:50%;background:var(--c-tacho);border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}.ws-marker-event svg{width:15px;height:15px;fill:currentColor;stroke:currentColor;color:#fff}.ws-marker-event.generic{width:16px;height:16px}.ws-pin.s-stop{background:var(--s-stop)}.ws-pin.s-idle{background:var(--s-idle)}.ws-pin.s-moving{background:var(--s-moving)}.ws-pin.s-alarm{background:var(--s-alarm)}.ws-pin.focus::after{content:'';position:absolute;inset:-8px;border-radius:50%;border:2px solid currentColor;opacity:.4;animation:ws-pulse 2.4s ease-out infinite}@keyframes ws-pulse{0%{transform:scale(.8);opacity:.6}100%{transform:scale(1.6);opacity:0}}.ws-map-overlay{position:absolute;z-index:500;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-1);padding:8px 10px;font-size:11px}.ws-map-overlay.legend{top:70px;right:12px;display:flex;flex-direction:column;gap:4px}.ws-map-overlay.legend>div{display:flex;align-items:center;gap:6px}.ws-map-sheet{position:absolute;left:0;right:0;height:auto;bottom:0;z-index:500;background:var(--surface);border-top:1px solid var(--border);border-top-left-radius:16px;border-top-right-radius:16px;padding:10px 14px 14px;box-shadow:var(--shadow-pop)}.ws-map-sheet .grip{width:36px;height:4px;background:var(--border-strong);border-radius:2px;margin:2px auto 10px}.ws-map-sheet-title{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--text-muted);text-transform:uppercase}.ws-map-sheet-rail{display:flex;gap:6px;margin-top:8px;overflow-x:auto}.ws-map-sheet-rail button{flex-shrink:0;padding:6px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:6px;cursor:pointer}.ws-menu-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text);text-align:left;width:100%;margin-bottom:6px}.ws-menu-item:hover{border-color:var(--border-strong)}.ws-menu-glyph{width:36px;height:36px;border-radius:10px;background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;font-size:16px}.ws-menu-text{flex:1}.ws-menu-text .name{font-size:14px;font-weight:700}.ws-menu-text .hint{font-size:11px;color:var(--text-muted)}.ws-menu-badge{background:var(--s-alarm);color:#fff;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px}.ws-icon-rel{position:relative;display:inline-flex}.ws-nav-dot{position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:var(--s-alarm);border-radius:50%;border:2px solid var(--header-bg,var(--bg))}.ws-input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:14px}.ws-input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ws-input::placeholder{color:var(--text-faint)}.ws-spacer-24{height:24px}.text-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}.fill{flex:1}.muted{color:var(--text-muted)}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto}.no-padding{padding:0!important}.ws-tacho-idents{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ws-tacho-ident{min-width:0}.ws-tacho-ident-k{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.ws-tacho-ident-v{font-size:12px;font-weight:600;color:var(--text);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-flex{display:flex!important}.ws-justify-content-between{justify-content:space-between!important}.ws-align-items-center{align-items:center!important}.circular-progress-container{margin-right:2px;margin-left:2px;width:24px;height:24px;display:inline-block}.circular-progress-sm{width:16px;height:16px}.circular-progress-lg{width:32px;height:32px}.circular-progress{--size:32px;--half-size:calc(var(--size) / 2);--stroke-width:5px;--radius:calc((var(--size) - var(--stroke-width)) / 2);--circumference:calc(var(--radius) * pi * 2);--dash:calc((var(--progress) * var(--circumference)) / 100);animation:progress-animation 5s linear 0s 1 forwards;width:100%;height:100%}.circular-progress text{width:100%;height:100%;text-align:center;transform:translate(15px,16px);vertical-align:super;stroke:#575252;font-size:.97em;dominant-baseline:middle;text-anchor:middle}.circular-progress circle{cx:var(--half-size);cy:var(--half-size);r:var(--radius);stroke-width:var(--stroke-width);fill:none;stroke-linecap:round}.circular-progress circle.bg{stroke:#ddd}.circular-progress circle.fg{transform:rotate(-90deg);transform-origin:var(--half-size) var(--half-size);stroke-dasharray:var(--dash) calc(var(--circumference) - var(--dash));transition:stroke-dasharray .3s linear 0s;stroke:var(--status-moving-fg)}.circular-progress.p60 circle.fg{stroke:rgb(255,202,55)}.circular-progress.p80 circle.fg{stroke:var(--s-warn)}.circular-progress.full circle.fg{stroke:var(--s-alarm)}@property --progress{syntax:"<number>";inherits:false;initial-value:0}.ws-mgmt{padding:0;overflow:hidden}.ws-mgmt-row{display:grid;grid-template-columns:minmax(140px,1fr) auto;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border)}.ws-mgmt-row:last-child{border-bottom:none}.ws-mgmt-row:nth-child(odd){background:color-mix(in oklab,var(--surface-2) 50%,var(--surface))}.ws-mgmt-k{font-size:12.5px;font-weight:700;color:var(--text);letter-spacing:.01em}.ws-mgmt-v{font-size:12.5px;color:var(--text);text-align:right;font-variant-numeric:tabular-nums}.ws-mgmt-hint{margin-top:2px;font-size:10.5px;font-weight:500;color:var(--text-muted);letter-spacing:0;text-transform:none}.ws-mgmt-conn{display:inline-flex;align-items:center;gap:6px;font-weight:700}.ws-mgmt-conn.is-on{color:var(--s-moving)}.ws-mgmt-conn.is-off{color:var(--s-alarm)}.ws-mgmt-conn-icon{display:inline-flex}.ws-mgmt-control{display:inline-flex;align-items:center;gap:8px}.ws-mgmt-state{font-weight:800;letter-spacing:.04em;font-size:13px;color:var(--text-muted)}.ws-mgmt-state.is-on{color:var(--s-moving)}.ws-mgmt-state.is-off{color:var(--s-stop)}.ws-mgmt-sep{color:var(--text-faint)}.ws-mgmt-btn{font:inherit;font-size:12px;font-weight:600;padding:5px 10px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer;white-space:nowrap}.ws-mgmt-btn:hover:not(:disabled){border-color:color-mix(in oklab,var(--accent) 50%,var(--border));color:var(--accent)}.ws-mgmt-btn:disabled{opacity:.55;cursor:not-allowed}.ws-mgmt-out.is-on .ws-mgmt-btn{background:color-mix(in oklab,var(--s-moving) 12%,var(--surface));border-color:color-mix(in oklab,var(--s-moving) 35%,var(--border))}.ws-mgmt-out.is-pending .ws-mgmt-btn{background:color-mix(in oklab,var(--accent) 10%,var(--surface));border-color:color-mix(in oklab,var(--accent) 40%,var(--border));color:var(--accent)}.ws-mgmt-spinner-wrap{display:inline-flex;align-items:center;gap:6px}.ws-mgmt-spinner{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in oklab,var(--accent) 30%,transparent);border-top-color:var(--accent);animation:ws-mgmt-spin .7s linear infinite}@keyframes ws-mgmt-spin{to{transform:rotate(360deg)}}.ws-spin{animation:ws-mgmt-spin .7s linear infinite}.ws-mgmt-msg{display:flex;align-items:center;justify-content:center;gap:8px;margin:8px 0 0;padding:14px 16px;border-radius:10px;background:var(--surface);border:1px solid var(--border);font-size:13px;color:var(--text-muted);font-weight:600}.ws-mgmt-msg-loading .ws-mgmt-spinner{width:14px;height:14px}.ws-mgmt-msg-error{color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 10%,var(--surface));border-color:color-mix(in oklab,var(--s-alarm) 35%,var(--border))}.ws-mgmt-msg-error .ws-mgmt-msg-icon{display:inline-flex;align-items:center}.ws-mgmt-retry{margin-left:6px;font:inherit;font-size:12px;font-weight:700;padding:4px 10px;background:0 0;color:var(--s-alarm);border:1px solid currentColor;border-radius:6px;cursor:pointer}.ws-mgmt-retry:hover{background:color-mix(in oklab,var(--s-alarm) 12%,transparent)}.ws-modal-backdrop{position:fixed;inset:0;background:color-mix(in oklab,#000 55%,transparent);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;animation:ws-modal-fade .12s ease-out}@keyframes ws-modal-fade{from{opacity:0}to{opacity:1}}@keyframes ws-modal-pop{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}.ws-modal{width:min(420px,100%);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.25);overflow:hidden;animation:ws-modal-pop .14s ease-out}.ws-modal-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:color-mix(in oklab,var(--accent) 14%,var(--surface));border-bottom:1px solid color-mix(in oklab,var(--accent) 25%,var(--border))}.ws-modal-title{flex:1;margin:0;font-size:13.5px;font-weight:700;color:var(--text);letter-spacing:.01em}.ws-modal-x{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:0 0;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer}.ws-modal-x:hover{color:var(--text);background:color-mix(in oklab,var(--accent) 18%,transparent)}.ws-modal-body{padding:16px 16px 12px;font-size:13px;line-height:1.45;color:var(--text)}.ws-modal-body p{margin:0}.ws-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:8px 14px 14px}.ws-btn{font:inherit;font-size:13px;font-weight:600;padding:7px 14px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.ws-btn:hover{border-color:color-mix(in oklab,var(--accent) 40%,var(--border))}.ws-btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.ws-btn-primary:hover{filter:brightness(1.05);border-color:var(--accent)}.ws-btn-ghost{background:var(--surface);color:var(--text)}.ws-tacho-pill{width:64px;height:56px;padding:0;border-radius:12px;justify-content:center}.ws-tacho-pill .ws-icon,.ws-tacho-pill .ws-icon svg{display:block;width:30px;height:30px}.ws-tacho-icon-avail{background-image:url('/img/tacho-avail.svg')}.ws-tacho-icon-rest{background-image:url('/img/tacho-rest.svg')}.ws-tacho-icon-work{background-image:url('/img/tacho-work.svg')}.ws-tacho-icon-drive{background-image:url('/img/tacho-drive.svg')}.ws-signal{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text);font-variant-numeric:tabular-nums;line-height:1}.ws-signal-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--surface-2);color:var(--text-muted);flex-shrink:0}.ws-signal.good .ws-signal-icon{color:var(--s-moving);background:color-mix(in oklab,var(--s-moving) 12%,var(--surface-2))}.ws-signal.warn .ws-signal-icon{color:var(--s-idle);background:color-mix(in oklab,var(--s-idle) 14%,var(--surface-2))}.ws-signal.bad .ws-signal-icon{color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 14%,var(--surface-2))}.ws-signal-bars{display:inline-flex;align-items:flex-end;gap:2px;height:12px}.ws-signal-bars .b{display:inline-block;width:3px;background:var(--surface-2);border-radius:1px;border:1px solid var(--border)}.ws-signal-bars .b:first-child{height:4px}.ws-signal-bars .b:nth-child(2){height:7px}.ws-signal-bars .b:nth-child(3){height:10px}.ws-signal-bars .b:nth-child(4){height:12px}.ws-signal.good .ws-signal-bars .b.on{background:var(--s-moving);border-color:var(--s-moving)}.ws-signal.warn .ws-signal-bars .b.on{background:var(--s-idle);border-color:var(--s-idle)}.ws-signal.bad .ws-signal-bars .b.on{background:var(--s-alarm);border-color:var(--s-alarm)}.ws-signal-label{font-size:12px;font-weight:700;letter-spacing:.02em}.ws-signal-meta{font-size:11px;color:var(--text-muted);font-weight:500}.ws-signal-meta:not(:empty)::before{content:'·';margin-right:6px;color:var(--text-faint)}.ws-list-spinner{display:flex;align-items:center;justify-content:center;padding:64px 0}.ws-fleet-spinner{width:36px;height:36px;border-radius:50%;border:3px solid color-mix(in oklab,var(--accent) 22%,transparent);border-top-color:var(--accent);animation:ws-mgmt-spin .75s linear infinite}.ws-notifications{background:var(--bg)}.ws-notifications-tools{display:flex;align-items:center;gap:10px;padding:10px 16px 8px;flex-wrap:nowrap}.ws-tabs{display:flex;flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;padding:3px;gap:3px}.ws-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 10px;background:0 0;border:none;border-radius:6px;font:inherit;font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.ws-tab:hover{color:var(--text)}.ws-tab.active{background:var(--accent);color:#fff}.ws-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:18px;padding:0 6px;background:var(--s-alarm);color:#fff;border-radius:999px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.ws-tab.active .ws-tab-badge{background:rgba(255,255,255,.22)}.ws-notifications-mark-all{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:34px;height:34px;background:0 0;border:1px solid var(--border);border-radius:8px;color:var(--accent);cursor:pointer;padding:0;margin-left:auto}.ws-notifications-mark-all:disabled{opacity:.4;cursor:default}.ws-notifications-mark-all .ws-icon,.ws-notifications-mark-all .ws-icon svg{display:block;width:18px;height:18px}.ws-notifications-list{list-style:none;margin:0;padding:0 0 32px;border-top:1px solid var(--border)}.ws-notification{display:grid;grid-template-columns:auto 1fr auto;align-items:flex-start;gap:14px;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;transition:background .12s}.ws-notification:hover{background:color-mix(in oklab,var(--accent) 4%,var(--surface))}.ws-notification.unread{background:color-mix(in oklab,var(--accent) 3%,var(--surface));position:relative}.ws-notification.unread::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}.ws-notification-pill{display:inline-flex;align-items:center;padding:4px 10px;background:#f5b74e;color:#1f1d18;border-radius:4px;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap;margin-top:2px}.ws-notification-pill.k-tacho{background:#f5b74e}.ws-notification-pill.k-maint{background:#4fb3f2;color:#fff}.ws-notification-pill.k-overspeed{background:#f5b74e}.ws-notification-body{min-width:0}.ws-notification-title{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-notification-msg{margin-top:2px;font-size:12.5px;color:var(--text-muted);line-height:1.4}.ws-notification-ts{margin-top:4px;font-size:11.5px;color:var(--text-faint);font-variant-numeric:tabular-nums}.ws-notification-del{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:0 0;border:none;border-radius:6px;color:var(--accent);cursor:pointer;flex-shrink:0}.ws-notification-del:hover{background:color-mix(in oklab,var(--s-alarm) 12%,transparent);color:var(--s-alarm)}.ws-notifications-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:60px 20px;color:var(--text-muted);font-size:13px}.ws-notifications-empty .ws-icon svg{width:28px;height:28px;opacity:.5}@media (max-width:640px){.ws-notifications-tools{padding:10px 12px 8px;gap:8px}.ws-notification{padding:12px 14px;gap:10px}.ws-notification-title{white-space:normal}}.ws-avvisi-tl{padding:0 16px 40px}.ws-avvisi-loading{display:flex;align-items:center;justify-content:center;padding:48px 0}.ws-avvisi-day{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:12px 2px 8px;background:linear-gradient(var(--bg) 72%,rgba(0,0,0,0));font-size:12px;font-weight:800;color:var(--text-muted);letter-spacing:.02em}.ws-avvisi-day-ct{margin-left:auto;font-size:11px;font-weight:700;color:var(--text-faint)}.ws-avvisi-items{position:relative}.ws-avvisi-items::before{content:'';position:absolute;left:19px;top:0;bottom:0;width:2px;background:var(--border)}.ws-avviso-row{display:grid;grid-template-columns:40px 1fr auto;align-items:flex-start;gap:12px;padding:10px 0;cursor:pointer;transition:opacity .12s}.ws-avviso-row.read{opacity:.56}.ws-avviso-row.menu-open{position:relative;z-index:25;opacity:1}.ws-avviso-row.read:hover{opacity:.78}.ws-avviso-row.unread:hover{opacity:.88}.ws-avviso-node{position:relative;z-index:1;width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);flex:0 0 auto}.ws-avviso-node .ws-icon{width:18px;height:18px}.ws-avviso-node.speed{background:var(--c-speed-bg);color:var(--c-speed);border-color:transparent}.ws-avviso-node.tacho{background:var(--c-tacho-bg);color:var(--c-tacho);border-color:transparent}.ws-avviso-node.maint{background:var(--c-maint-bg);color:var(--c-maint);border-color:transparent}.ws-avviso-node.area{background:var(--c-area-bg);color:var(--c-area);border-color:transparent}.ws-avviso-node.other{background:var(--c-other-bg);color:var(--c-other);border-color:transparent}.ws-avviso-unread-dot{position:absolute;top:-3px;right:-3px;width:11px;height:11px;border-radius:50%;background:var(--accent);border:2.5px solid var(--bg)}.ws-avviso-card{min-width:0;border-bottom:1px solid var(--border);padding-bottom:10px}.ws-avviso-card.last{border-bottom:none}.ws-avviso-top{display:flex;align-items:baseline;gap:8px}.ws-avviso-cat{font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--c-other)}.ws-avviso-cat.speed{color:var(--c-speed)}.ws-avviso-cat.tacho{color:var(--c-tacho)}.ws-avviso-cat.maint{color:var(--c-maint)}.ws-avviso-cat.area{color:var(--c-area)}.ws-avviso-time{margin-left:auto;font-size:11px;font-weight:600;color:var(--text-faint);font-variant-numeric:tabular-nums}.ws-avviso-title{font-size:13.5px;font-weight:700;color:var(--text);margin-top:4px;line-height:1.3}.ws-avviso-msg{font-size:12.5px;color:var(--text-muted);margin-top:2px;line-height:1.4}.ws-avviso-plate{display:inline-flex;align-items:center;gap:4px;margin-top:5px;font-size:11.5px;font-weight:600;color:var(--text-muted);font-variant-numeric:tabular-nums}.ws-avviso-plate .ws-icon{width:13px;height:13px;opacity:.7}.ws-avviso-menu{position:relative;flex:0 0 auto}.ws-avviso-kebab{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:0 0;border:none;border-radius:8px;color:var(--text-faint);cursor:pointer}.ws-avviso-kebab .ws-icon{width:18px;height:18px}.ws-avviso-kebab.open,.ws-avviso-kebab:hover{background:var(--surface-2);color:var(--text)}.ws-avviso-menu-pop{position:absolute;top:calc(100% + 4px);right:0;z-index:30;min-width:150px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-pop);padding:4px}.ws-avviso-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;background:0 0;border:none;border-radius:7px;font-size:13px;font-weight:600;text-align:left;color:var(--text);cursor:pointer}.ws-avviso-menu-item .ws-icon{width:16px;height:16px;flex:0 0 auto}.ws-avviso-menu-item:hover{background:var(--surface-2)}.ws-avviso-menu-item.danger{color:var(--s-alarm)}.ws-avviso-menu-item.danger:hover{background:color-mix(in oklab,var(--s-alarm) 12%,transparent)}.ws-avviso-menu-backdrop{position:fixed;inset:0;z-index:20;background:0 0}.ws-avvisi-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:60px 20px;color:var(--text-muted);font-size:13px}.ws-avvisi-empty .ws-icon{display:block;width:28px;height:28px;opacity:.5}.ws-avvisi-sentinel{width:100%;height:1px}.ws-avvisi-more{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 2px 8px;color:var(--text-muted);font-size:12.5px;font-weight:600}.ws-avvisi-more .ws-fleet-spinner{width:22px;height:22px;border-width:2.5px}@media (max-width:640px){.ws-avvisi-tl{padding:0 12px 32px}}.leaflet-popup.ws-popup-wrap .leaflet-popup-content-wrapper{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:0}.leaflet-popup.ws-popup-wrap .leaflet-popup-content{margin:0;padding:0;font-family:inherit;font-size:12px;line-height:1.4;width:auto!important}.leaflet-popup.ws-popup-wrap .leaflet-popup-tip{background:var(--surface);border:1px solid var(--border)}.leaflet-popup.ws-popup-wrap .leaflet-popup-close-button{color:var(--text-muted);padding:6px 8px 0 0}.leaflet-popup.ws-popup-wrap .leaflet-popup-close-button:hover{color:var(--text)}body .leaflet-tooltip{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:6px;font-family:inherit;font-size:11px;font-weight:600;box-shadow:var(--shadow-1)}body .leaflet-tooltip-top:before{border-top-color:var(--surface)}body .leaflet-tooltip-bottom:before{border-bottom-color:var(--surface)}body .leaflet-tooltip-left:before{border-left-color:var(--surface)}body .leaflet-tooltip-right:before{border-right-color:var(--surface)}.ws-popup{min-width:220px;max-width:320px}.ws-popup-large{min-width:320px;max-width:380px}.ws-popup-head{display:flex;align-items:center;gap:8px;padding:10px 28px 10px 12px;border-bottom:1px solid var(--border)}.ws-popup-head .ws-dot{width:10px;height:10px;flex-shrink:0}.ws-popup-id{display:flex;flex-direction:column;min-width:0;flex:1}.ws-popup-plate{font-weight:800;font-size:14px}.ws-popup-id strong{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-popup-id small{font-size:10.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-popup-status{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:999px;flex-shrink:0;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.ws-popup-status.s-moving{color:var(--s-moving);border-color:color-mix(in oklab,var(--s-moving) 35%,var(--border))}.ws-popup-status.s-idle{color:var(--s-idle);border-color:color-mix(in oklab,var(--s-idle) 35%,var(--border))}.ws-popup-status.s-stop{color:var(--s-fermo)}.ws-popup-status.s-alarm{color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 12%,var(--surface-2));border-color:color-mix(in oklab,var(--s-alarm) 35%,var(--border))}.ws-popup-body{padding:8px 12px 4px;display:flex;flex-direction:column;gap:4px}.ws-popup-row{display:grid;grid-template-columns:72px 1fr;gap:8px;align-items:baseline}.ws-popup-row .k{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.ws-popup-row .v{font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis}.ws-ag-armed{color:var(--s-moving);font-weight:600}.ws-ag-waiting{color:var(--text-muted)}.ws-popup-cta{display:block;width:calc(100% - 16px);margin:8px 8px 10px;padding:8px 10px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.03em;cursor:pointer}.ws-popup-cta:hover{filter:brightness(1.05)}.ws-popup-tacho{display:flex;flex-direction:column;gap:6px;padding:8px 12px 2px;margin-top:2px;border-top:1px solid var(--border,rgba(127,127,127,.18))}.ws-popup-tacho-chip{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--text)}.ws-popup-tacho-chip .ws-icon{flex:0 0 auto}.ws-popup-tacho-driver{font-weight:500;color:var(--text-muted)}.ws-popup-tacho-chip .ws-popup-tacho-driver{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-popup-slot{display:inline-flex;gap:2px;margin-left:auto;padding:2px;border-radius:9px;background:var(--surface-2);flex-shrink:0}.ws-popup-slot-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:34px;height:28px;padding:0 9px;border:none;border-radius:7px;background:0 0;color:var(--text-muted);font:inherit;font-size:12px;font-weight:800;cursor:pointer}.ws-popup-slot-btn[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.18)}.ws-popup-slot-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.ws-popup-slot-dot{width:7px;height:7px;border-radius:50%;background:var(--text-faint)}.ws-popup-slot-dot.t-drive{background:var(--tacho-drive-fg)}.ws-popup-slot-dot.t-work{background:var(--tacho-work-fg)}.ws-popup-slot-dot.t-avail{background:var(--tacho-avail-fg)}.ws-popup-slot-dot.t-rest{background:var(--tacho-rest-fg)}.ws-tacho-err,.ws-tacho-loading{font-size:11px;color:var(--text-muted)}.ws-popup-tacho .ws-limit-head{cursor:default}.ws-password-view{display:flex;flex-direction:column;height:100%}.ws-password-body{flex:1;overflow-y:auto;display:flex;justify-content:center;padding:24px 16px 40px}.ws-pwd-form{width:100%;max-width:420px;display:flex;flex-direction:column;gap:20px}.ws-pwd-alert{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;font-size:13px;font-weight:600}.ws-pwd-alert--success{background:color-mix(in oklab,var(--s-moving) 12%,var(--surface));color:var(--s-moving);border:1px solid color-mix(in oklab,var(--s-moving) 30%,var(--border))}.ws-pwd-alert--error{background:color-mix(in oklab,var(--s-alarm) 10%,var(--surface));color:var(--s-alarm);border:1px solid color-mix(in oklab,var(--s-alarm) 30%,var(--border))}.ws-pwd-alert--warn{background:#fff6e6;color:#8a5a00;border:1px solid #f2c869}.ws-pwd-field{display:flex;flex-direction:column;gap:6px}.ws-pwd-field label{font-size:12px;font-weight:700;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.ws-pwd-err{font-size:11.5px;font-weight:600;color:var(--s-alarm)}.ws-pwd-input-wrap{position:relative}.ws-pwd-input-wrap input{width:100%;padding:10px 42px 10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:14px;outline:0;transition:border-color .15s ease,box-shadow .15s ease}.ws-pwd-input-wrap input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 18%,transparent)}.ws-pwd-eye{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:0 0;border:none;padding:4px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;border-radius:6px;transition:color .12s ease}.ws-pwd-eye:hover{color:var(--text)}.ws-pwd-eye .ws-icon{display:block;width:18px;height:18px}.ws-pwd-alert .ws-icon{flex:0 0 auto;width:16px;height:16px}.ws-pwd-strength{display:flex;align-items:center;gap:8px;margin-top:4px}.ws-pwd-strength-bar{flex:1;height:4px;border-radius:999px;background:var(--border);overflow:hidden}.ws-pwd-strength-fill{display:block;height:100%;border-radius:999px;transition:width .3s ease,background-color .3s ease}.ws-pwd-strength-fill.level-1{width:33%;background:var(--s-alarm)}.ws-pwd-strength-fill.level-2{width:66%;background:var(--s-idle)}.ws-pwd-strength-fill.level-3{width:100%;background:var(--s-moving)}.ws-pwd-strength-label{font-size:11px;font-weight:700;flex-shrink:0}.ws-pwd-strength-label.level-1{color:var(--s-alarm)}.ws-pwd-strength-label.level-2{color:var(--s-idle)}.ws-pwd-strength-label.level-3{color:var(--s-moving)}.ws-pwd-actions{display:flex;gap:10px;justify-content:flex-end;padding-top:4px}.ws-btn{padding:10px 20px;border-radius:10px;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;border:none;transition:filter .12s ease,opacity .12s ease}.ws-btn:disabled{opacity:.5;cursor:not-allowed}.ws-btn--primary{background:var(--accent);color:var(--accent-on)}.ws-btn--primary:hover:not(:disabled){filter:brightness(1.07)}.ws-btn--ghost{background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.ws-btn--ghost:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.ws-login-view{width:100%;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px;padding-top:calc(24px + env(safe-area-inset-top));padding-bottom:calc(24px + env(safe-area-inset-bottom));box-sizing:border-box}.ws-login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px 22px;box-sizing:border-box}.ws-login-brand{display:flex;justify-content:center;margin-bottom:22px}.ws-login-brand img{max-width:100%;max-height:72px;object-fit:contain}.ws-login-title{margin:0 0 22px;text-align:center;font-size:20px;font-weight:700;color:var(--text)}.ws-login-card .ws-pwd-input-wrap input{font-size:16px;padding-top:12px;padding-bottom:12px}.ws-biolock{position:fixed;inset:0;z-index:9999;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg);padding:24px}.ws-biolock.is-visible{display:flex}.ws-biolock-brand{display:flex;align-items:center;gap:10px}.ws-biolock-text{margin:0;color:var(--text-muted);font-size:14px}.ws-biolock-exit{color:var(--text-faint);font-size:13px;text-decoration:none}.ws-login-lede{margin:0;color:var(--text-muted);font-size:13px;line-height:1.5}.ws-login-remember{display:flex;align-items:flex-start;gap:10px;cursor:pointer;color:var(--text);font-size:13px}.ws-login-remember input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--accent);flex-shrink:0}.ws-login-remember small{display:block;color:var(--text-muted);font-size:12px;line-height:1.35}.ws-login-card .ws-pwd-actions{justify-content:stretch}.ws-login-card .ws-pwd-actions .ws-btn{width:100%;padding:13px 20px;font-size:15px}.ws-login-links{text-align:center;font-size:13px}.ws-login-links a{color:var(--text-muted);text-decoration:none}.ws-login-links a:hover{color:var(--accent)}.ws-vehicle-tacho{margin-top:6px;font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ws-vehicle-tacho b{color:var(--text);font-variant-numeric:tabular-nums}.ws-tacho-tag{display:inline-flex;align-items:center;gap:4px;padding:1px 8px 1px 6px;border-radius:999px;font-size:10.5px;font-weight:600;line-height:1.5}.ws-tacho-tag .ws-icon,.ws-tacho-tag .ws-icon svg{display:block;width:13px;height:13px}.ws-tacho-tag.t-drive{background:var(--tacho-drive-bg);color:var(--tacho-drive-fg)}.ws-tacho-tag.t-work{background:var(--tacho-work-bg);color:var(--tacho-work-fg)}.ws-tacho-tag.t-avail{background:var(--tacho-avail-bg);color:var(--tacho-avail-fg)}.ws-tacho-tag.t-rest{background:var(--tacho-rest-bg);color:var(--tacho-rest-fg)}.ws-tacho-time .k{color:var(--text-faint)}.ws-kv{display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border);gap:12px}.ws-kv:last-child{border-bottom:none}.ws-kv-key{font-size:12px;color:var(--text-muted);font-weight:600}.ws-kv-val{text-align:right;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.ws-kv-val.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}.ws-map-dock{position:absolute;left:0;right:0;bottom:0;z-index:500;background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-pop)}.ws-map-dock-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 0}.ws-map-dock-title{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.ws-map-dock-live{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-faint);font-weight:600}.ws-map-dock-pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--s-moving);flex-shrink:0;animation:ws-dock-pulse 2s infinite}@keyframes ws-dock-pulse{0%{box-shadow:0 0 0 0 rgba(46,139,92,.45)}70%{box-shadow:0 0 0 5px rgba(46,139,92,0)}100%{box-shadow:0 0 0 0 rgba(46,139,92,0)}}.ws-map-dock-filters{display:grid;gap:8px;padding:10px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch}.ws-map-dock-filters::-webkit-scrollbar{display:none}.ws-map-dock-kpi{flex-shrink:0;display:inline-flex;align-items:center;gap:10px;padding:5px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer;margin-right:4px;font:inherit;color:var(--text);transition:background .12s,border-color .12s}.ws-map-dock-kpi .lab{font-size:12px;font-weight:600;color:var(--text-muted);display:inline-flex;align-items:center;gap:5px}.ws-map-dock-kpi .num{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.ws-map-dock-kpi.active{border-color:var(--text);background:var(--text)}.ws-map-dock-kpi.active .lab,.ws-map-dock-kpi.active .num{color:var(--bg)}.ws-map-dock-rail{gap:5px;overflow-x:auto;overflow-y:auto;padding:8px 16px 24px}@media (max-width:400px){.ws-map-dock-rail{display:block;grid-template-columns:repeat(1,1fr);gap:5px}}@media (min-width:768px){.ws-map-dock-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:5px}}.ws-map-dock-rail::-webkit-scrollbar{display:none}.ws-map-dock-empty{padding:14px 0 2px;color:var(--text-faint);font-size:13px;margin:0}.ws-map-overlay--search-legend{top:12px;right:12px;padding:0;min-width:196px;display:flex;flex-direction:column}.ws-map-overlay-search{display:flex;align-items:center;gap:7px;padding:8px 10px;border-bottom:1px solid var(--border);color:var(--text-faint)}.ws-map-overlay-search ws-icon{flex-shrink:0;width:13px;height:13px;opacity:.6}.ws-map-overlay-search input{border:none;outline:0;background:0 0;color:var(--text);font:inherit;font-size:12px;flex:1;min-width:0;width:140px}.ws-map-overlay-search input::placeholder{color:var(--text-faint)}.ws-map-overlay-legend{padding:8px 10px;font-size:11px;display:flex;flex-direction:column;gap:4px}.ws-map-overlay-legend>div{display:flex;align-items:center;gap:6px}.ws-vcard{scroll-snap-align:start;flex-shrink:0;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px;cursor:pointer;font:inherit;color:var(--text);transition:border-color .15s,transform .15s,box-shadow .15s}@media (max-width:768px){.ws-vcard{width:100%;margin-bottom:8px}}@media (min-width:768px){.ws-vcard{max-width:260px}}.ws-vcard:hover{border-color:var(--border-strong);transform:translateY(-2px)}.ws-vcard.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ws-vcard-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.ws-vcard-id{display:flex;align-items:center;gap:7px;min-width:0}.ws-vcard-plate{font-weight:800;font-size:14px}.ws-vcard-model{font-size:11px;color:var(--text-muted);font-weight:500;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-vcard-driver{font-size:12px;font-weight:600;margin-top:9px}.ws-vcard-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;font-size:11px;color:var(--text-faint)}.ws-vcard-addr{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ws-vcard-speed{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}.ws-vcard-seen{flex-shrink:0;white-space:nowrap}.ws-map-reset-view{position:absolute;z-index:501;top:12px;left:80px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:7px;padding:7px 14px 7px 10px;background:var(--surface);border:1px solid var(--border-strong);border-radius:20px;box-shadow:var(--shadow-pop);color:var(--text);font:600 12px/1 var(--app-font);cursor:pointer;white-space:nowrap;transition:background .15s,box-shadow .15s,transform .15s}.ws-map-reset-view:hover{background:var(--surface-2);box-shadow:0 4px 16px rgba(15,12,8,.12)}.ws-map-reset-view:active{transform:translateX(-50%) scale(.96)}.ws-map-reset-view svg{flex-shrink:0;opacity:.7}.ws-geo-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--accent);background:0 0;border:1px solid var(--accent);border-radius:4px;cursor:pointer;transition:all .15s}.ws-geo-btn:hover{background:color-mix(in oklab,var(--accent) 10%,transparent)}.ws-geo-btn svg{flex-shrink:0}.ws-geo-dialog{display:flex;flex-direction:column;min-width:280px;max-width:600px;max-height:80vh}.ws-geo-map{flex:1;min-height:300px;background:var(--surface);border-radius:0}.ws-geo-footer{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;gap:10px;background:var(--surface);border-top:1px solid var(--border);font-size:12px}.ws-geo-osm{display:inline-flex;align-items:center;padding:4px 8px;font-size:11px;font-weight:600;color:var(--accent);text-decoration:none;border-radius:3px;transition:all .15s;white-space:nowrap}.ws-geo-osm:hover{background:color-mix(in oklab,var(--accent) 12%,transparent)}.ws-stab{padding:6px 12px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);cursor:pointer;transition:background .14s,color .14s,border-color .14s}.ws-stab:hover{color:var(--text);border-color:var(--border-strong)}.ws-stab.active{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.ws-stab{padding:6px 12px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);cursor:pointer;transition:background .14s,color .14s,border-color .14s}.ws-stab:hover{color:var(--text);border-color:var(--border-strong)}.ws-stab.active{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}.ws-empty-inline{padding:22px 14px;text-align:center;color:var(--text-muted);font-size:13px;font-weight:600;background:var(--surface-2);border:1px dashed var(--border);border-radius:12px}.ws-stop{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-1);padding:12px 14px;margin-bottom:8px}.ws-stop-time{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ws-stop-time .span{font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center}.ws-stop-time .arrow{color:var(--text-faint);margin:0 7px;font-weight:600}.ws-stop-dur{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--text-muted);font-variant-numeric:tabular-nums}.ws-stop-dur .ws-icon{width:13px;height:13px}.ws-stop-body{display:flex;align-items:center;justify-content:space-between;gap:12px}.ws-stop-where .addr{font-size:13px;font-weight:600;line-height:1.3}.ws-stop-where .city{font-size:11.5px;color:var(--text-muted);margin-top:1px}.ws-stop-kind{flex:0 0 auto;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:3px 9px;border-radius:999px;white-space:nowrap;border:1px solid var(--border)}.ws-stop-kind.kind-rest{color:var(--text-muted);background:var(--surface-2)}.ws-stop-kind.kind-work{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in oklab,var(--accent) 30%,transparent)}.ws-stop.selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 20%,transparent)}.ws-ev-filters{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}.ws-ev-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;font:inherit;font-size:12px;font-weight:700;transition:background .14s,color .14s,border-color .14s}.ws-ev-chip .ws-icon{width:14px;height:14px}.ws-ev-chip:hover{border-color:var(--border-strong);color:var(--text)}.ws-ev-chip.active{background:var(--text);border-color:var(--text);color:var(--surface)}.ws-ev-chip .ct{font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--text-muted);font-variant-numeric:tabular-nums}.ws-ev-chip.active .ct{background:rgba(255,255,255,.22);color:var(--surface)}.ws-ev-timeline{position:relative}.ws-ev-row{position:relative;display:grid;grid-template-columns:46px 34px 1fr;align-items:start;gap:10px;padding-bottom:14px;cursor:pointer;border-radius:10px;transition:background .15s ease,box-shadow .15s ease}.ws-ev-row.selected .ws-ev-label{color:var(--accent)}.ws-ev-row.selected .ws-ev-content{background:var(--accent-soft);border:2px solid var(--accent);border-left-width:4px;box-shadow:0 2px 8px rgba(0,0,0,.1),inset 0 0 0 1px var(--accent)}.ws-ev-row::before{content:'';position:absolute;left:62px;top:30px;bottom:-4px;width:2px;background:var(--border)}.ws-ev-row:last-child::before{display:none}.ws-ev-time{font-size:12px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;text-align:right;padding-top:7px}.ws-ev-mark{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);z-index:1}.ws-ev-mark .ws-icon{width:18px;height:18px}.ws-ev-mark.is-off{opacity:.85}.ws-ev-mark.c-moto.is-on{color:var(--s-moving);background:color-mix(in oklab,var(--s-moving) 14%,var(--surface));border-color:color-mix(in oklab,var(--s-moving) 35%,var(--border))}.ws-ev-mark.c-idle.is-on{color:var(--s-idle);background:color-mix(in oklab,var(--s-idle) 14%,var(--surface));border-color:color-mix(in oklab,var(--s-idle) 35%,var(--border))}.ws-ev-mark.c-accent.is-on{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in oklab,var(--accent) 35%,var(--border))}.ws-ev-content{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:9px 12px;box-shadow:var(--shadow-1)}.ws-ev-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.ws-ev-label{font-size:13px;font-weight:700;line-height:1.25}.ws-ev-state{flex:0 0 auto;font-size:10px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:5px}.ws-ev-state.is-on{color:var(--s-moving);background:color-mix(in oklab,var(--s-moving) 12%,var(--surface-2))}.ws-ev-state.is-off{color:var(--text-muted);background:var(--surface-2)}.ws-ev-addr{font-size:12px;color:var(--text);margin-top:3px;line-height:1.3}.ws-ev-city{font-size:11px;color:var(--text-muted);margin-top:1px}.ws-fab{position:fixed;right:28px;bottom:28px;z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:14px}.ws-fab-backdrop{position:fixed;inset:0;z-index:-1;background:rgba(0,0,0,.32)}.ws-fab-actions{display:flex;flex-direction:column;align-items:flex-end;gap:14px}.ws-fab-action{display:flex;align-items:center;gap:12px;background:0 0;border:none;padding:0;cursor:pointer}.ws-fab-label{background:var(--surface);color:var(--text);font-size:12px;font-weight:600;white-space:nowrap;padding:6px 12px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.28)}.ws-fab-mini{flex:0 0 auto;width:44px;height:44px;border-radius:50%;background:var(--surface);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(0,0,0,.3);transition:transform .12s ease}.ws-fab-action:hover .ws-fab-mini{transform:scale(1.08)}.ws-fab-action:active .ws-fab-mini{transform:scale(.94)}.ws-fab-main{position:relative;width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;align-self:flex-end;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.38);transition:box-shadow .2s ease,transform .12s ease}.ws-fab-main:hover{box-shadow:0 8px 24px rgba(0,0,0,.46)}.ws-fab-main:active{transform:scale(.95)}.ws-fab-ic{position:absolute}.ws-clients{display:flex;flex-direction:column;gap:0}.ws-client{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease}.ws-client:active{background:var(--surface-hover,var(--surface-alt))}.ws-client-glyph{flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:var(--accent-soft,rgba(var(--accent-rgb,59,130,246),.12));color:var(--accent);display:flex;align-items:center;justify-content:center}.ws-client-info{flex:1 1 0;min-width:0}.ws-client-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-client-username{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-client-meta{font-size:11px;color:var(--text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-client-sep{opacity:.5}.ws-client-actions{display:flex;gap:4px;flex-shrink:0}.ws-client-btn{width:36px;height:36px;border-radius:8px;border:1px solid var(--border);background:0 0;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease,color .15s ease}.ws-client-btn:hover{background:var(--surface-alt);color:var(--text)}.ws-client-btn--accent{color:var(--accent);border-color:var(--accent)}.ws-client-btn--accent:hover{background:var(--accent);color:#fff}.ws-clients-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 16px;color:var(--text-muted);font-size:14px}.ws-clients-empty .ws-icon{width:32px;height:32px;opacity:.4}@media print{.leaflet-control-container,.ws-app>ws-sidebar,.ws-fab,.ws-header .ws-header-side,.ws-storico .btn-group,.ws-storico input[type=date]{display:none!important}.ws-main,.ws-storico,.ws-view{display:block!important;height:auto!important}.fill{overflow:visible!important}}.ws-cfg{padding:0}.ws-cfg-body-wrap{display:flex;flex-direction:column;gap:12px;padding:16px}.ws-cfg-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.ws-cfg-head{width:100%;display:flex;align-items:center;gap:10px;padding:14px 14px;background:0 0;border:none;cursor:pointer;color:var(--text);font-family:inherit;font-size:14px;font-weight:700;text-align:left}.ws-cfg-head>span{flex:1}.ws-cfg-head>.ws-icon{width:18px;height:18px;color:var(--accent);flex:0 0 auto}.ws-cfg-chevron{width:16px;height:16px;color:var(--text-muted);transition:transform .18s ease}.ws-cfg-head.open .ws-cfg-chevron{transform:rotate(180deg)}.ws-cfg-content{display:flex;flex-direction:column;gap:16px;padding:4px 14px 18px;border-top:1px solid var(--border)}.ws-cfg-field{display:flex;flex-direction:column;gap:6px}.ws-cfg-field label{font-size:12px;font-weight:700;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.ws-cfg-field input,.ws-cfg-field select{width:100%;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:14px;outline:0;transition:border-color .15s ease,box-shadow .15s ease}.ws-cfg-field input:focus,.ws-cfg-field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 18%,transparent)}.ws-cfg-field input:disabled,.ws-cfg-field input:read-only{opacity:.6;cursor:not-allowed}.ws-cfg-row{display:flex;gap:12px}.ws-cfg-readonly{flex:1;display:flex;flex-direction:column;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:8px 12px}.ws-cfg-readonly-k{font-size:11px;font-weight:700;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.ws-cfg-readonly-v{font-size:14px;font-weight:600;color:var(--text)}.ws-cfg-hint{font-size:12px;color:var(--text-faint);margin:0}.ws-cfg-toggle{display:flex;align-items:center;gap:12px}.ws-cfg-toggle-label{flex:1;font-size:13.5px;font-weight:600;color:var(--text)}.ws-cfg-actions{display:flex;padding-top:4px}.ws-cfg-actions .ws-btn{flex:1}.ws-switch{position:relative;flex:0 0 auto;width:46px;height:26px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);cursor:pointer;padding:0;transition:background-color .18s ease,border-color .18s ease}.ws-switch-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--text-faint);transition:transform .18s ease,background-color .18s ease}.ws-switch.on{background:var(--accent);border-color:var(--accent)}.ws-switch.on .ws-switch-knob{transform:translateX(20px);background:var(--accent-on)}.ws-switch.disabled,.ws-switch[disabled]{opacity:.5;cursor:not-allowed}.custom-google-satellite .leaflet-tile{filter:brightness(100%) contrast(100%) saturate(120%) sepia(0%) hue-rotate(12deg);image-rendering:-webkit-optimize-contrast}.custom-hybrid-labels .leaflet-tile{filter:saturate(10%) opacity(80%) hue-rotate(5deg) brightness(80%)}.ws-geo-screen{position:relative;min-height:0;overflow-y:auto}.ws-geo-empty{text-align:center;padding:40px 18px}.ws-geo-empty .ws-icon{opacity:.45;margin-bottom:4px}.ws-geo-card{padding:12px 14px 4px;margin-bottom:10px}.ws-swipe-row{position:relative;overflow:hidden;border-radius:12px;margin-bottom:10px}.ws-swipe-row .ws-geo-card{margin-bottom:0}.ws-swipe-row .ws-card{transition:transform .15s ease-out}.ws-swipe-row.is-swiped .ws-card{transform:translateX(-176px)}.ws-swipe-actions{position:absolute;z-index:-1;top:0;right:0;bottom:0;display:flex}.ws-swipe-action{width:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:var(--surface-2);color:var(--text-muted);border:none;border-left:1px solid var(--border);font-size:10.5px;font-weight:600}.ws-swipe-action--danger{background:var(--s-alarm);color:#fff;border-left-color:color-mix(in oklab,var(--s-alarm) 60%,#000)}.ws-geo-top{display:flex;align-items:center;gap:12px}.ws-geo-glyph{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in oklab,var(--accent) 22%,var(--border))}.ws-geo-glyph.is-off{background:var(--surface-2);color:var(--text-faint);border-color:var(--border)}.ws-geo-meta{flex:1;min-width:0}.ws-geo-name{display:flex;align-items:center;gap:8px;min-width:0}.ws-geo-name strong{font-size:14.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-geo-state{flex:0 0 auto;font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:999px}.ws-geo-state.is-on{background:var(--accent-soft);color:var(--accent)}.ws-geo-state.is-off{background:var(--surface-2);color:var(--text-faint)}.ws-geo-sub{display:flex;align-items:center;gap:8px;margin-top:4px}.ws-geo-typechip{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 7px}.ws-geo-dim{font-size:12px;font-weight:600;color:var(--text-muted);font-variant-numeric:tabular-nums}.ws-geo-pushmark{display:inline-flex;align-items:center;color:var(--accent)}.ws-geo-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px}.ws-geo-actions .ws-iconbtn{width:32px;height:32px;border-radius:9px;justify-content:center;color:var(--text-muted)}.ws-geo-actions .ws-iconbtn:hover{background:var(--surface-2);color:var(--text)}.ws-geo-actions .ws-geo-del:hover{color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 12%,transparent)}.ws-geo-toggles{margin-top:10px;border-top:1px solid var(--border)}.ws-geo-toggle{display:flex;align-items:center;gap:12px;padding:9px 0}.ws-geo-toggle+.ws-geo-toggle{border-top:1px solid color-mix(in oklab,var(--border) 55%,transparent)}.ws-geo-toggle .ws-cfg-toggle-label{flex:1;font-size:13px;font-weight:600;color:var(--text)}.ws-geo-toggle .ws-cfg-toggle-label small{font-weight:500;color:var(--text-faint)}.ws-geo-editor{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg);z-index:20}.ws-geo-edithead{flex:0 0 auto}.ws-geo-nameinput{flex:1;min-width:0;padding:8px 11px;background:var(--surface);border:1px solid color-mix(in oklab,var(--accent) 20%,var(--border));border-radius:8px;color:var(--text);font:inherit;font-size:14px;font-weight:600;outline:0}.ws-geo-nameinput:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ws-geo-nameinput::placeholder{color:var(--text-faint);font-weight:500}.ws-geo-segwrap{flex:0 0 auto;padding:10px 14px 4px}.ws-geo-seg{display:flex;width:100%}.ws-geo-seg button{flex:1;justify-content:center;gap:6px;padding:7px 8px;font-size:12.5px;font-weight:600}.ws-geo-map{flex:1 1 auto;min-height:200px;position:relative;margin:8px 14px 0;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-1)}.ws-geo-map .leaflet-container,.ws-geo-map ws-map{display:block;width:100%;height:100%}.ws-geo-panel{flex:0 0 auto;max-height:46%;overflow-y:auto;padding:12px 14px 4px}.ws-rule-editor .ws-geo-panel{flex:1 1 auto;max-height:none}.ws-accordion-section{border:1px solid var(--border,#d7dee8);border-radius:12px;margin-bottom:10px;overflow:hidden}.ws-accordion-section.open{border-color:var(--accent,#c97a1f)}.ws-accordion-head{display:flex;align-items:center;gap:8px;padding:11px 13px;cursor:pointer}.ws-accordion-title{font-weight:700;font-size:13px;flex:0 0 auto}.ws-accordion-head .ws-switch{margin-left:auto}.ws-accordion-summary{flex:1;text-align:right;font-size:12px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-accordion-chev{flex:0 0 auto;transition:transform .15s}.ws-accordion-section.open .ws-accordion-chev{transform:rotate(90deg)}.ws-accordion-body{padding:0 13px 13px;border-top:1px solid var(--border,#d7dee8);padding-top:11px}.ws-ag-status{display:flex;align-items:center;gap:8px;padding:10px 13px;margin:0 0 10px;border:1px solid var(--border,#d7dee8);border-radius:12px;background:var(--surface-2);font-weight:700;font-size:13px}.ws-ag-info{padding:0 4px 10px}.ws-geo-hint{display:flex;align-items:flex-start;gap:8px;padding:8px 11px;border-radius:9px;background:var(--accent-soft);color:color-mix(in oklab,var(--accent) 88%,var(--text));font-size:12px;line-height:1.4;margin-bottom:10px}.ws-geo-hint .ws-icon{flex:0 0 auto;margin-top:1px;color:var(--accent)}.ws-geo-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.ws-btn--sm{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;font-size:12.5px;border-radius:9px}.ws-geo-radius{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border)}.ws-trigger-row-wrap{position:relative;display:flex;align-items:center;gap:4px;margin-bottom:12px}.ws-trigger-row{display:flex;gap:8px;overflow-x:auto;scroll-behavior:smooth;padding:2px 0}.ws-trigger-row::-webkit-scrollbar{display:none}.ws-trigger-scroll{flex:0 0 auto;width:24px;height:24px;border-radius:50%;border:1px solid var(--border,#d7dee8);background:var(--surface,#fff);display:flex;align-items:center;justify-content:center}.ws-trigger-scroll.left svg{transform:scaleX(-1)}.ws-trigger-chip{flex:0 0 auto;display:flex;align-items:center;gap:5px;padding:7px 11px;border-radius:10px;border:1px solid var(--border,#d7dee8);background:var(--surface-2,#f6f8fb);font-size:12px}.ws-trigger-chip.active{background:var(--accent-soft,#f7e6cd);border-color:var(--accent,#c97a1f);color:var(--accent,#c97a1f)}.ws-day-row{display:flex;gap:6px;margin-bottom:10px}.ws-day-chip{width:32px;height:32px;border-radius:8px;border:1px solid var(--border,#d7dee8);background:var(--surface-2,#f6f8fb);font-weight:600;font-size:12px}.ws-day-chip.active{background:var(--accent,#c97a1f);border-color:var(--accent,#c97a1f);color:#fff}.ws-time-row{display:flex;gap:10px}.ws-time-box{flex:1}.ws-time-box label{display:block;font-size:10.5px;color:var(--text-faint);margin-bottom:3px}.ws-geo-radius label{font-size:13px;font-weight:600;color:var(--text)}.ws-geo-radius-input{display:inline-flex;align-items:center;gap:4px;width:120px;padding:8px 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:9px}.ws-geo-radius-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ws-geo-radius-input input{flex:1;min-width:0;padding:0;background:0 0;border:none;color:var(--text);font:inherit;font-size:14px;font-variant-numeric:tabular-nums;text-align:right;outline:0}.ws-geo-unit{flex:0 0 auto;font-size:12px;font-weight:600;color:var(--text-faint);pointer-events:none}.ws-geo-radius-input--range{width:auto}.ws-geo-optset{margin-top:4px;border-top:1px solid var(--border)}.ws-geo-optset .ws-geo-toggle+.ws-geo-toggle{border-top:1px solid color-mix(in oklab,var(--border) 55%,transparent)}.ws-geo-error{margin-top:10px}.ws-geo-foot{flex:0 0 auto;border-top:1px solid var(--border)}.ws-geo-foot .ws-btn{min-width:96px}.ws-geo-vlist{padding:4px 0 0;max-height:50vh;overflow-y:auto}.geo-vertex{box-sizing:border-box;width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid #0d6efd;box-shadow:0 1px 3px rgba(0,0,0,.35);cursor:pointer;-webkit-touch-callout:none;user-select:none;transition:transform .12s ease,border-color .12s ease}.geo-vertex--active{border-color:var(--accent);background:var(--accent);transform:scale(1.25);box-shadow:0 0 0 4px var(--accent-soft),0 1px 4px rgba(0,0,0,.35)}.boot-screen{position:fixed;inset:0;z-index:9000;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:32px;background:var(--bg,#faf7f1);opacity:1;visibility:visible;transition:opacity .35s ease,visibility .35s ease}.boot-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.boot-brand{display:flex;flex-direction:column;align-items:center;gap:16px}.boot-logo{display:flex;justify-content:center;align-items:center;width:64px;height:64px;border-radius:16px;background:var(--accent,#c75b1f);color:var(--accent-on,#fff);font-size:2rem;font-weight:700;letter-spacing:-1px;font-family:Montserrat,Helvetica,Arial,sans-serif}.boot-name{color:var(--text,#1b1b1f);font-size:1.1rem;font-weight:600;letter-spacing:.02em;font-family:Montserrat,Helvetica,Arial,sans-serif}.boot-dots{display:flex;gap:8px;align-items:center}.boot-dots span{display:block;width:8px;height:8px;border-radius:50%;background:var(--accent,#c75b1f);animation:boot-dot-pulse 1.2s ease-in-out infinite}.boot-dots span:nth-child(2){animation-delay:.2s}.boot-dots span:nth-child(3){animation-delay:.4s}@keyframes boot-dot-pulse{0%,100%,80%{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.d-form-section{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.d-form-section:first-child{margin-top:0;padding-top:0;border-top:none}.d-form-section-title{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:12px}.d-form-section-title .ws-icon{color:var(--accent);flex-shrink:0}.d-form-hint{font-size:11px;color:var(--text-faint);margin-top:4px;line-height:1.4}.d-form-alert-info{background:color-mix(in oklab,var(--accent) 8%,var(--surface));border:1px solid color-mix(in oklab,var(--accent) 25%,var(--border));color:var(--text);border-radius:6px;font-size:12px;padding:8px 12px;display:flex;align-items:center;gap:8px}.d-switch-group{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:4px}.d-badge-admin{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);border-radius:4px;padding:1px 5px;vertical-align:middle;margin-left:4px}.d-input-group{display:flex;gap:6px;align-items:flex-start}.d-input-group .d-form-control{flex:1;min-width:0}.modal-body .csm-wrap .dropdown-menu{z-index:1100}.modal--tabs .modal-body{padding:0!important;display:flex;flex-direction:column;min-height:420px;max-height:min(580px,72vh);overflow:hidden}.modal--tabs .modal-body>.modal-error-banner{padding:8px 16px;font-size:12.5px;background:color-mix(in oklab,#dc3545 10%,var(--surface));border-bottom:1px solid color-mix(in oklab,#dc3545 30%,var(--border));color:var(--text);flex-shrink:0}.modal--tabs .d-user-layout{flex:1;min-height:0;overflow:hidden}.modal--tabs .d-user-sidebar{width:148px}.modal--tabs .d-settings-group{padding:14px 20px}.modal--tabs .d-settings-label{width:190px}.modal--tabs .csm-wrap .dropdown-menu{z-index:1100}.ws-chart-tooltip{background:var(--surface,#fff);border:1px solid var(--border,#ddd);border-radius:6px;padding:8px 11px;min-width:140px;box-shadow:0 4px 16px rgba(0,0,0,.15);font-size:11px;line-height:1.5;color:var(--text,#1b1b1f);transition:opacity .1s;white-space:nowrap}.ws-chart-tooltip .ws-tt-head{font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted,#666);margin-bottom:4px}.ws-chart-tooltip .ws-tt-row{color:var(--text-muted,#666)}.ws-chart-tooltip .ws-tt-row b{color:var(--text,#1b1b1f);font-weight:700}.ws-chart-tooltip .ws-tt-lbl{font-weight:600;color:var(--text-muted,#666)}.ws-chart-tooltip .ws-tt-lbl::after{content:':';margin-right:3px}.ws-chart-tooltip .ws-tt-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:baseline}.ws-chart-tooltip .ws-tt-badge{display:inline-block;margin-left:5px;padding:1px 5px;font-size:9px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--text-muted,#666);background:var(--surface-2,#f0f0f3);border-radius:4px;vertical-align:middle}.ws-chart-tooltip .ws-tt-warn{color:var(--s-alarm,#c0392b);font-weight:700}.ws-notif-detail{padding-bottom:24px}.ws-nd-head{padding:16px 16px 12px;border-bottom:1px solid var(--border)}.ws-nd-head-top{display:flex;align-items:center;gap:8px;margin-bottom:10px}.ws-nd-sev{margin-left:auto;display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;background:var(--surface-2);color:var(--text-muted)}.ws-nd-sev.label-info{background:rgba(90,120,200,.16);color:#6a8bd0}.ws-nd-sev.label-warning{background:rgba(214,158,46,.18);color:#c98e2a}.ws-nd-sev.label-danger{background:rgba(214,69,46,.18);color:#e0603a}.ws-nd-title{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:var(--text)}.ws-nd-body{margin:6px 0 0;font-size:14px;line-height:1.45;color:var(--text-muted)}.ws-nd-time{margin-top:10px;font-size:12px;color:var(--text-muted)}.ws-nd-map-wrap{margin:14px 16px 0;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-1)}.ws-nd-map{display:block;width:100%;height:220px;position:relative}.ws-nd-map .leaflet-container,.ws-nd-map ws-map{display:block;width:100%;height:100%}.ws-nd-map-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;font-size:12px;color:var(--text-muted);border-top:1px solid var(--border);background:var(--surface)}.ws-nd-section{margin:18px 16px 0}.ws-nd-section-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px}.ws-nd-rows{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}.ws-nd-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:11px 14px}.ws-nd-row+.ws-nd-row{border-top:1px solid var(--border)}.ws-nd-row-label{font-size:13px;color:var(--text-muted);flex:0 0 auto}.ws-nd-row-value{font-size:14px;font-weight:600;color:var(--text);text-align:right}.ws-mp-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:14px}.ws-mp-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.ws-mp-name{font-size:15px;font-weight:700;color:var(--text)}.ws-mp-status{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;flex-shrink:0}.ws-mp-status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;position:relative;flex-shrink:0}.ws-mp-status--planned{color:#6a8bd0;background:rgba(90,120,200,.16)}.ws-mp-status--live{color:var(--s-moving);background:color-mix(in oklab,var(--s-moving) 16%,var(--surface-2))}.ws-mp-status--live .ws-mp-status-dot::after{content:'';position:absolute;inset:-4px;border-radius:50%;border:2px solid currentColor;opacity:.4;animation:ws-pulse 2.4s ease-out infinite}.ws-mp-status--done{color:var(--text-muted);background:var(--surface-2)}.ws-mp-status--bad{color:var(--s-alarm);background:color-mix(in oklab,var(--s-alarm) 16%,var(--surface-2))}.ws-mp-stop{display:grid;grid-template-columns:14px 1fr;column-gap:8px}.ws-mp-stop-rail{display:flex;flex-direction:column;align-items:center}.ws-mp-dot{width:8px;height:8px;margin-top:3px;border-radius:50%;background:var(--surface);border:2px solid var(--border-strong);flex-shrink:0}.ws-mp-dot.reached{background:var(--s-moving);border-color:var(--s-moving)}.ws-mp-line{flex:1;width:2px;margin:2px 0;background:repeating-linear-gradient(var(--border-strong),var(--border-strong) 2px,transparent 2px,transparent 5px)}.ws-mp-stop-body{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:12px}.ws-mp-stop:last-child .ws-mp-stop-body{padding-bottom:0}.ws-mp-stop-label{font-size:13px;font-weight:600;color:var(--text)}.ws-mp-stop-time{font-size:12px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}.ws-mp-stop-time.muted{color:var(--text-muted);font-weight:500}.ddd-progress{margin-top:4px}.ddd-progress-count{margin-top:8px;text-align:center;font-size:12px;font-weight:600;color:var(--text-muted);font-variant-numeric:tabular-nums}.ws-cluster{display:flex;align-items:center;justify-content:center}.ws-cluster-inner{display:flex;align-items:center;justify-content:center;border-radius:50%;font-family:var(--font, 'Manrope', sans-serif);font-weight:700;color:#fff;background:var(--accent,#1a6ed4);border:2px solid rgba(255,255,255,.7);box-shadow:0 2px 6px rgba(0,0,0,.25)}.ws-cluster-sm .ws-cluster-inner{width:32px;height:32px;font-size:13px}.ws-cluster-md .ws-cluster-inner{width:40px;height:40px;font-size:14px}.ws-cluster-lg .ws-cluster-inner{width:50px;height:50px;font-size:15px}.ws-shape-label{background:rgba(255,255,255,.85);border:none;box-shadow:none;color:#1f2937;font-weight:600;font-size:12px;padding:1px 6px;border-radius:4px;white-space:nowrap;display:none}.leaflet-container.ws-shape-labels-visible .ws-shape-label{display:block}.ws-shape-label::before{display:none}.ws-marker-label{background:rgba(255,255,255,.85);border:none;box-shadow:none;color:#1f2937;font-weight:600;font-size:12px;padding:1px 6px;border-radius:4px;max-width:150px;white-space:normal;word-wrap:break-word;text-align:center;display:none}.leaflet-container.ws-marker-labels-visible .ws-marker-label{display:block}.ws-marker-label::before{display:none}.ws-marker-hover-label{background:rgba(255,255,255,.85);border:none;box-shadow:none;color:#1f2937;font-weight:600;font-size:12px;padding:1px 6px;border-radius:4px;max-width:150px;white-space:normal;word-wrap:break-word;text-align:center}.ws-marker-hover-label::before{display:none}.d-fleet-marker-wrap{position:relative;display:inline-block}.icon-marker-transparent svg[data-inv]{opacity:.5}.d-fleet-warn{position:absolute;top:-3px;right:1px;display:flex;width:16px;height:16px;filter:drop-shadow(0 1px 1.5px rgba(0, 0, 0, .55))}.d-fleet-warn svg{width:16px;height:16px}.ws-video-screen{overflow-y:auto;padding-bottom:24px}.ws-video-nav{margin:12px 16px 4px}.ws-video-nav .ws-tab{gap:6px}.ws-video-nav .ws-tab .ws-icon{flex:none}.ws-video-screen .ws-input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px}.ws-video-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:1px 7px;border-radius:10px}.ws-video-badge.is-on{color:var(--s-moving);background:color-mix(in oklab,var(--s-moving) 14%,transparent)}.ws-video-badge.is-off{color:var(--text-muted);background:var(--surface-2)}.ws-video-badge.is-live{color:var(--s-stop-map);background:color-mix(in oklab,var(--s-stop-map) 14%,transparent)}.ws-video-dev{display:flex;align-items:center;gap:12px;cursor:pointer}.ws-video-dev-glyph{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.ws-video-dev-meta{flex:1;min-width:0}.ws-video-dev-name{display:flex;align-items:center;gap:8px;font-size:15px}.ws-video-dev-name strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-video-dev-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.ws-video-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.ws-video-chevron{color:var(--text-faint);flex:none}.ws-video-status{padding:10px 16px 0}.ws-video-tabpane{padding:12px 16px 0}.ws-video-filters{display:flex;gap:6px;margin-bottom:12px}.ws-video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.ws-video-cell{position:relative;aspect-ratio:1/1;border-radius:8px;overflow:hidden;background:var(--surface-2);cursor:pointer}.ws-video-thumb{width:100%;height:100%;object-fit:cover}.ws-video-thumb--ph{display:grid;place-items:center;color:var(--text-faint)}.ws-video-cell-ov{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:4px;padding:4px 6px;font-size:10px;color:#fff;background:linear-gradient(180deg,transparent,rgba(0,0,0,.65))}.ws-video-sentinel{height:1px}.ws-video-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 0;color:var(--text-muted);font-size:12px}.ws-video-startwrap{padding:24px 0;text-align:center}.ws-video-player{position:relative;aspect-ratio:16/9;background:#0a1018;border-radius:10px;overflow:hidden}.ws-video-frame{width:100%;height:100%;border:0;display:block}.ws-video-live-controls{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.ws-video-live-controls .ws-btn{flex:0 0 auto}.ws-video-screen .ws-btn--danger{background:var(--s-stop-map);border-color:var(--s-stop-map);color:#fff}.ws-video-cmd{display:block;margin-bottom:12px}.ws-video-cmd-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;margin-bottom:10px}.ws-video-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:8px 0 4px}.ws-video-cmd .ws-input{width:100%}.ws-video-cmd .ws-btn{width:100%;margin-top:12px;justify-content:center}.ws-video-progress{margin-top:10px;padding:8px 10px;border-radius:8px;font-size:12px;background:var(--surface-2);color:var(--text-muted)}.ws-video-progress.active{background:var(--accent-soft);color:var(--accent)}.ws-video-progress.done{background:color-mix(in oklab,var(--s-moving) 14%,transparent);color:var(--s-moving)}.ws-video-progress.error{background:color-mix(in oklab,var(--s-stop-map) 14%,transparent);color:var(--s-stop-map)}.ws-video-cmd-preview{margin-top:10px;text-align:center}.ws-video-cmd-preview img{max-width:100%;border-radius:8px}.ws-video-link{display:inline-block;margin-top:8px;color:var(--accent);font-weight:600;font-size:13px;cursor:pointer}.ws-video-lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.92)}.ws-video-lb-media{max-width:96vw;max-height:80vh;border-radius:6px}.ws-video-lb-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center}.ws-video-lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center}.ws-video-lb-nav.prev{left:12px}.ws-video-lb-nav.next{right:12px}.ws-video-lb-meta{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#e6edf5;font-size:12px}.ws-video-evfilters{display:flex;flex-direction:column;gap:8px;padding:12px 16px}.ws-video-evfilters .ws-input{width:100%}.ws-video-evdates{display:flex;gap:8px}.ws-video-evdates .ws-input{flex:1}.ws-video-ev{display:flex;gap:10px;align-items:flex-start}.ws-video-ev-thumb{width:60px;height:60px;flex:none;border-radius:8px;overflow:hidden;background:var(--surface-2)}.ws-video-ev-thumb img{width:100%;height:100%;object-fit:cover}.ws-video-ev-thumb--ph{display:grid;place-items:center;color:var(--text-faint)}.ws-video-ev-main{flex:1;min-width:0}.ws-video-ev-l1{display:flex;align-items:center;gap:8px}.ws-video-ev-sev{font-size:10px;font-weight:700;text-transform:uppercase;padding:1px 6px;border-radius:6px}.ws-video-ev-l2{font-size:12px;color:var(--text-muted);margin-top:3px}.ws-video-ev-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.ws-video-ev-chip{display:inline-flex;align-items:center;gap:4px}.ws-video-stats{display:flex;gap:8px;padding:12px 16px 4px}.ws-video-stat{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.ws-video-stat-k{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.ws-video-stat-v{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.ws-video-sess{display:block}.ws-video-sess-top{display:flex;align-items:center;gap:10px}.ws-video-sess-meta{flex:1;min-width:0}.ws-video-sess-name{font-size:15px}.ws-video-uptime{display:inline-flex;align-items:center;gap:6px;flex:none;font-size:13px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums}.ws-video-rec{width:7px;height:7px;border-radius:50%;background:var(--s-stop-map);animation:ws-video-pulse 1.4s infinite}@keyframes ws-video-pulse{0%{opacity:1}50%{opacity:.35}100%{opacity:1}}.ws-video-sess-info{font-size:12px;color:var(--text-muted);margin:8px 0 0}.ws-video-sess-actions{display:flex;gap:8px;margin-top:12px}.ws-video-sess-actions .ws-btn{flex:1;justify-content:center}.ws-toast-container{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:10000;pointer-events:none}.ws-toast{display:flex;align-items:center;gap:8px;max-width:min(90vw,360px);padding:10px 16px;border-radius:10px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-pop);color:var(--text);font-family:var(--app-font);font-size:13px;font-weight:600;opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease}.ws-toast.ws-toast-visible{opacity:1;transform:translateY(0)}.ws-toast-icon{width:18px;height:18px;flex-shrink:0;color:var(--warn,#e88a24)}.ws-vcard-badge-nopos{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:6px;font-size:8.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex-shrink:0;background:color-mix(in srgb,var(--warn,#e88a24) 16%,transparent);color:var(--warn,#e88a24)}.ws-vcard-badge-nopos .ws-icon{width:11px;height:11px}.ws-vehicle-shared{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:11px;color:var(--accent,#c75b1f)}.ws-vehicle-shared .ws-icon{width:12px;height:12px;flex-shrink:0}.ws-vcard-shared{display:inline-flex;align-items:center;gap:4px;margin-top:2px;font-size:9px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--accent,#c75b1f)}.ws-vcard-shared .ws-icon{width:11px;height:11px;flex-shrink:0}.ws-popup-large .ws-popup-shared{display:flex;align-items:center;gap:5px;padding:4px 10px 0;font-size:11px;font-weight:600;color:var(--accent,#c75b1f)}.ws-info-badge{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;margin:0 auto 0 7px;padding:0;border:1px solid var(--border);border-radius:50%;background:0 0;color:var(--text-muted);cursor:pointer}.ws-info-badge:active{opacity:.6}.ws-info-pop{position:fixed;z-index:4000;pointer-events:none;max-width:260px;padding:8px 11px;border:1px solid var(--border);border-radius:10px;background:var(--surface,#fff);color:var(--text);font-size:12px;line-height:1.35;box-shadow:0 10px 28px rgba(0,0,0,.22);opacity:0;transition:opacity .12s ease}.ws-info-pop.is-visible{opacity:1}