:root{--color-bg:#f6f7f9;--color-surface:#fff;--color-text:#111827;--color-muted:#4b5563;--color-border:#8a93a1;--color-primary:#0b57d0;--color-on-primary:#fff;--color-focus:#0b57d0;--color-marker:#d93025;--color-marker-ring:#fff;--color-marker-old:#4b5563;--color-track:#6a3db8;--color-live:#0a6c2f;--color-recent:#0b57d0;--color-stale:#8a5a00;--color-offline:#4b5563;--color-danger:#b3261e;--color-selected-bg:#e8f0fe;--color-scrim:#11182799;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius:12px;--target:44px;--header-h:56px;--shadow:0 2px 12px #0000002e;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#0f1217;--color-surface:#171b22;--color-text:#e8eaed;--color-muted:#aab2bd;--color-border:#6b7686;--color-primary:#8ab4f8;--color-on-primary:#0b1b3a;--color-focus:#8ab4f8;--color-marker:#ff6b60;--color-marker-ring:#12161c;--color-marker-old:#aab2bd;--color-track:#c3a6ff;--color-live:#5fd48a;--color-recent:#8ab4f8;--color-stale:#f2c14e;--color-offline:#aab2bd;--color-danger:#f2b8b5;--color-selected-bg:#1d2a44;--color-scrim:#0009;--shadow:0 2px 12px #0009}}*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-bg);min-height:100dvh;color:var(--color-text);font:400 1rem/1.5 var(--font);-webkit-tap-highlight-color:transparent;flex-direction:column;margin:0;display:flex;overflow-x:hidden}a,button{touch-action:manipulation}::selection{background:var(--color-primary);color:var(--color-on-primary)}input{caret-color:var(--color-primary)}.panel-scroll{scrollbar-color:var(--color-border) transparent}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}main{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}main:focus{outline:none}.skip-link{inset-inline-start:var(--space-2);z-index:100;padding:var(--space-3) var(--space-4);background:var(--color-primary);color:var(--color-on-primary);border-radius:var(--radius);position:absolute;top:-100px}.skip-link:focus{top:calc(env(safe-area-inset-top) + var(--space-2))}.site-header{align-items:center;gap:var(--space-1) var(--space-4);min-height:var(--header-h);padding:env(safe-area-inset-top) max(var(--space-4), env(safe-area-inset-right)) var(--space-1) max(var(--space-4), env(safe-area-inset-left));background:var(--color-surface);border-block-end:1px solid var(--color-border);flex-wrap:wrap;display:flex}.site-header a{min-height:var(--target);min-width:var(--target);padding-inline:var(--space-3);border-radius:var(--radius);color:var(--color-text);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.site-header a:hover{background:var(--color-bg)}.site-header a[aria-current=page],.site-header a[aria-current=true]{color:var(--color-primary);text-underline-offset:6px;font-weight:700;text-decoration:underline}.brand{margin-inline-end:auto;font-weight:700;padding-inline-start:0!important}.nav,.langs{gap:var(--space-1);display:flex}@media (max-width:479.98px){.site-header{column-gap:var(--space-2)}.nav a:first-child{display:none}.site-header a{padding-inline:var(--space-2)}}.landing{width:min(100%,40rem);padding:var(--space-8) max(var(--space-4), env(safe-area-inset-left)) var(--space-8);margin-inline:auto}.landing h1{margin:0 0 var(--space-4);text-wrap:balance;font-size:clamp(1.75rem,6vw,2.75rem);line-height:1.15}.landing p{color:var(--color-muted);margin:0 0 var(--space-6);font-size:1.125rem}.button{min-height:var(--target);padding:var(--space-2) var(--space-6);border-radius:var(--radius);background:var(--color-primary);color:var(--color-on-primary);font:600 1rem/1.2 var(--font);cursor:pointer;border:0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.button:hover{filter:brightness(1.08)}.map-stage{flex:1;min-height:0;position:relative}.map-stage>.map-canvas{position:absolute;inset:0}.map-stage>.map-canvas[hidden]{display:none}.map-note,.map-panel,.map-toast{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.map-note{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin:0;display:flex;position:absolute;inset-block-start:var(--space-4);inset-inline-start:max(var(--space-4), env(safe-area-inset-left))}.map-panel{width:min(calc(100% - 2 * var(--space-4)), 28rem);margin:var(--space-8) auto;padding:var(--space-6)}.map-panel h1,.map-toast h2{margin:0 0 var(--space-2);font-size:1.25rem;line-height:1.25}.map-panel p,.map-toast p{margin:0 0 var(--space-4);color:var(--color-muted)}.map-panel p:last-child,.map-toast p:last-child{margin-bottom:0}.map-toast{max-width:26rem;padding:var(--space-4);pointer-events:none;margin-inline:auto;position:absolute;inset-block-start:var(--space-4);inset-inline-start:max(var(--space-4), env(safe-area-inset-left));inset-inline-end:calc(var(--target) + var(--space-6) + env(safe-area-inset-right))}.map-legend{max-width:calc(100% - var(--target) - var(--space-6) - env(safe-area-inset-right));padding:var(--space-1) var(--space-3);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:none;font-size:.8125rem;line-height:1.3;position:absolute;inset-block-start:var(--space-2);inset-inline-start:max(var(--space-2), env(safe-area-inset-left))}.map-legend ul{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.map-legend li{align-items:center;gap:var(--space-2);display:flex}.swatch{border-radius:50%;flex:none;width:16px;height:16px}.swatch-live{background:var(--color-marker);border:2px solid var(--color-marker-ring);outline:1px solid var(--color-marker-old)}.swatch-old{background:var(--color-surface);border:3px solid var(--color-marker-old)}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.map-stage .maplibregl-ctrl-group button{width:var(--target);height:var(--target)}.map-stage .maplibregl-ctrl-top-right{margin-top:var(--space-2);margin-right:env(safe-area-inset-right)}.map-stage .maplibregl-ctrl-bottom-right,.map-stage .maplibregl-ctrl-bottom-left{margin-bottom:env(safe-area-inset-bottom)}.map-stage .maplibregl-ctrl-attrib{font-size:.75rem}.map-stage .maplibregl-ctrl-attrib a{padding-block:2px;display:inline-block}@media (prefers-color-scheme:dark){.map-stage .maplibregl-ctrl-attrib{color:var(--color-text);background:#12161cd9}.map-stage .maplibregl-ctrl-attrib a{color:var(--color-primary)}.map-stage .maplibregl-ctrl-group{background:var(--color-surface)}.map-stage .maplibregl-ctrl-group button{background-color:#0000}.map-stage .maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert()}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.spinner{border-top-color:var(--color-border);animation:none}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.connection-banner{padding:var(--space-2) max(var(--space-4), env(safe-area-inset-left));background:var(--color-surface);color:var(--color-text);border-block-end:1px solid var(--color-border);text-align:center;font-size:.875rem}.connection-banner:empty{border:0;padding:0}.landing .actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.button-secondary{background:var(--color-surface);color:var(--color-primary);border:2px solid var(--color-primary)}.auth-card{width:min(100%,26rem);margin:var(--space-8) auto;padding:var(--space-6) max(var(--space-4), env(safe-area-inset-left))}.auth-card h1{margin:0 0 var(--space-2);font-size:1.75rem;line-height:1.2}.auth-lead{margin:0 0 var(--space-6);color:var(--color-muted)}.field{margin-bottom:var(--space-4)}.field label{margin-bottom:var(--space-1);font-weight:600;display:block}.field input{width:100%;min-height:var(--target);padding:var(--space-2) var(--space-3);border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit}.field input[aria-invalid=true]{border-color:var(--color-danger)}.field-error,.inline-error{margin:var(--space-1) 0 0;color:var(--color-danger);font-size:.9375rem}.inline-error{margin:0}.field-hint{margin:var(--space-2) 0 0;color:var(--color-muted);font-size:.9375rem}.notice{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.notice-error{border-color:var(--color-danger);border-width:2px}.button-block{width:100%}.button-small{padding:var(--space-2) var(--space-4);font-size:.9375rem}.button:disabled{opacity:.6;cursor:not-allowed}.link-button{min-height:var(--target);padding:0 var(--space-2);color:var(--color-primary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;text-decoration:underline;display:inline-flex}body:has(.panel-layout){height:100dvh;min-height:0}.panel-layout{flex-direction:column;flex:1;min-height:0;display:flex}.panel-map{flex-direction:column;flex:1;order:1;min-height:0;display:flex;position:relative}.panel{background:var(--color-surface);border-block-start:1px solid var(--color-border);min-height:0;max-height:46dvh;padding-inline:max(var(--space-4), env(safe-area-inset-left)) max(var(--space-4), env(safe-area-inset-right));flex-direction:column;order:2;padding-block-end:env(safe-area-inset-bottom);display:flex}.panel-head{align-items:center;gap:var(--space-2) var(--space-3);min-height:var(--target);padding-block:var(--space-2);flex:none;grid-template-columns:minmax(0,1fr) auto;display:grid}.panel-head>.panel-account,.panel-head>.inline-error{grid-column:1/-1}.panel-heading{flex-direction:column;min-width:0;display:flex}.panel-heading h1{text-wrap:balance;margin:0;font-size:1.125rem;line-height:1.25}.panel-sub{gap:0 var(--space-2);color:var(--color-muted);flex-wrap:wrap;margin:0;font-size:.875rem;display:flex}.panel-count:after{content:" ·"}.panel-count:last-child:after{content:none}.sheet-toggle{min-height:var(--target);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;font-size:.875rem}.panel-body{gap:var(--space-2);min-height:0;overscroll-behavior:contain;flex-direction:column;flex:1;padding-block-end:var(--space-2);display:flex;overflow-y:auto}.panel-scroll{overscroll-behavior:contain;flex:1;min-height:6rem;overflow-y:auto}.panel-layout[data-selected=true] .panel{max-height:62dvh}.panel-layout[data-sheet=closed] .panel-body{display:none}.panel-account{align-items:center;gap:var(--space-3);display:flex}.panel-account>.button{flex:none;margin-inline-start:auto}.panel-org{overflow-wrap:anywhere;font-weight:600}.live-status{align-items:center;gap:var(--space-2);flex:1;min-width:0;margin:0;font-size:.875rem;display:flex}.live-status svg{flex:none}.live-status:not([data-connection=connected]){padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius)}.live-status[data-connection=connected] svg{color:var(--color-live)}.live-status[data-connection=reconnecting] svg,.live-status[data-connection=connecting] svg{color:var(--color-stale)}.live-status[data-connection=offline]{border-width:2px}.live-status[data-connection=offline] svg{color:var(--color-offline)}.state-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius)}.state-card h2{margin:0 0 var(--space-2);font-size:1.0625rem}.state-card p{margin:0 0 var(--space-3);color:var(--color-muted)}.state-card p:last-child{margin-bottom:0}.vehicle-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.vehicle{gap:var(--space-1);width:100%;min-height:var(--target);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit;text-align:start;cursor:pointer;display:grid}.vehicle:hover{background:var(--color-bg)}.vehicle[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-selected-bg);border-width:2px}.vehicle-top{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.vehicle-name{overflow-wrap:anywhere;font-weight:700}.vehicle-plate,.vehicle-line{color:var(--color-muted);overflow-wrap:anywhere;font-size:.875rem}.vehicle-warn{align-items:center;gap:var(--space-2);color:var(--color-text);font-weight:600;display:flex}.vehicle-warn svg{color:var(--color-stale);flex:none}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);white-space:nowrap;border:1px solid;border-radius:999px;font-size:.8125rem;font-weight:600;display:inline-flex}.badge[data-freshness=live]{color:var(--color-live)}.badge[data-freshness=recent]{color:var(--color-recent)}.badge[data-freshness=stale]{color:var(--color-stale)}.badge[data-freshness=offline],.badge[data-freshness=never]{color:var(--color-offline)}.badge[data-freshness=never]{border-style:dashed}.skeleton{pointer-events:none}.sk{background:linear-gradient(90deg, var(--color-bg), var(--color-border), var(--color-bg));opacity:.5;background-size:200% 100%;border-radius:6px;height:.875rem;animation:1.4s linear infinite shimmer;display:block}.sk-a{width:55%}.sk-b{width:30%}.sk-c{width:75%}@keyframes shimmer{to{background-position:-200% 0}}.details{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);flex:none}.details-name{align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);flex-wrap:wrap;display:flex}.details-list{gap:0 var(--space-3);margin:0 0 var(--space-2);grid-template-columns:minmax(0,1fr) auto;font-size:.9375rem;display:grid}.details-list div{display:contents}.details-list dt{color:var(--color-muted)}.details-list dd{font-variant-numeric:tabular-nums;margin:0}.details-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.details-actions .button{padding-inline:var(--space-2);flex:auto;font-size:.875rem}.details-list dd{text-align:end}.details-list time{color:var(--color-muted);font-size:.8125rem;display:block}.button-secondary[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary)}.track-note{margin-top:var(--space-2);font-size:.875rem}.track-note p{margin:0}@media (min-width:900px){.panel-layout{flex-direction:row}.panel{border-block-start:0;border-inline-end:1px solid var(--color-border);order:0;width:24rem;max-height:none;padding-block-end:0}.panel-head{padding-block:var(--space-3)}.sheet-toggle{display:none}.panel-layout[data-sheet=closed] .panel-body{display:flex}.panel-layout[data-selected=true] .panel{max-height:none}}.sheet-toggle:hover{background:var(--color-bg)}.link-button:hover{text-decoration-thickness:2px}.field input:hover{border-color:var(--color-text)}
