*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-2{bottom:.5rem}.bottom-full{bottom:100%}.left-1\/2{left:50%}.left-2{left:.5rem}.right-2{right:.5rem}.top-2{top:.5rem}.top-full{top:100%}.z-10{z-index:10}.mb-1{margin-bottom:.25rem}.mt-1{margin-top:.25rem}.flex{display:flex}.hidden{display:none}.size-1\.5{width:.375rem;height:.375rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.h-4{height:1rem}.h-full{height:100%}.w-4{width:1rem}.w-full{width:100%}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-2{border-width:2px}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.fill-red-300{fill:#fca5a5}.fill-red-500{fill:#ef4444}.text-\[10px\]{font-size:10px}.font-medium{font-weight:500}.text-foreground{color:var(--text)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.maplibregl-popup{pointer-events:auto;z-index:5;max-width:calc(100vw - 2rem)!important;max-width:calc(100dvw - 2rem)!important}html.landscape-mobile .maplibregl-popup{max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 2rem)!important;max-width:calc(100dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 2rem)!important}html.landscape-mobile .maplibregl-popup .map-popup{max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 2rem);max-width:calc(100dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 2rem);max-height:calc(100vh - 6rem);max-height:calc(100dvh - 6rem);overflow-y:auto}html.landscape-mobile .maplibregl-popup .stop-popup{max-width:100%;overflow:hidden}html.landscape-mobile .maplibregl-popup .stop-popup__route-badges{flex-wrap:wrap;max-width:100%}.maplibregl-popup-content{box-shadow:none!important;background:0 0!important;border-radius:0!important;padding:0!important}.maplibregl-popup-tip,.maplibregl-popup-close-button{display:none!important}:root{--bg:#f1f5f9;--bg-map:#f5f3f0;--panel:#fffffff2;--panel-solid:#fff;--text:#1e293b;--text-muted:#64748b;--text-subtle:#94a3b8;--border:#e2e8f0;--shadow:#0000001a;--shadow-lg:#00000026;--focus:#3b82f6;--brand-accent:#f59e0b;--brand-accent-bg:#f59e0b1f;--success:#22c55e;--success-bg:#dcfce7;--success-text:#166534;--warning:#f59e0b;--warning-bg:#fef3c7;--warning-text:#92400e;--danger:#ef4444;--danger-bg:#fef2f2;--danger-text:#991b1b;--marker-shadow:#0000004d;--route-outline-width:0px;--zoom-bg:#fff;--zoom-bg-hover:#f4f4f4;--zoom-text:#333;--zoom-border:#0000001a;--popup-bg:#fff;--popup-text:#333}[data-theme=dark]{--bg:#0f172a;--bg-map:#1a1a2e;--panel:#1e293bf2;--panel-solid:#1e293b;--text:#f1f5f9;--text-muted:#94a3b8;--text-subtle:#64748b;--border:#334155;--shadow:#0000004d;--shadow-lg:#0006;--focus:#60a5fa;--brand-accent:#fbbf24;--brand-accent-bg:#fbbf2426;--success:#4ade80;--success-bg:#166534;--success-text:#dcfce7;--warning:#fbbf24;--warning-bg:#78350f;--warning-text:#fef3c7;--danger:#f87171;--danger-bg:#7f1d1d;--danger-text:#fef2f2;--marker-shadow:#00000080;--zoom-bg:#1e293b;--zoom-bg-hover:#334155;--zoom-text:#f1f5f9;--zoom-border:#ffffff1a;--popup-bg:#1e293b;--popup-text:#f1f5f9}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}@supports (height:100dvh){html,body,#root{height:100dvh}}body{font-optical-sizing:auto;font-variation-settings:"slnt" -1,"wdth" 98.7,"GRAD" 10,"ROND" 5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;background:var(--bg);color:var(--text);font-family:Google Sans Flex,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button,[role=button],input,select,textarea{touch-action:manipulation;-webkit-tap-highlight-color:transparent}#root{width:100%;height:100%}html.landscape-mobile{--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}.maplibregl-map{background:var(--bg-map);font-family:inherit}.maplibregl-ctrl-attrib{display:none!important}.maplibregl-marker{touch-action:manipulation;cursor:pointer;z-index:3;pointer-events:auto!important}.animated-route-svg,.animated-route-svg *{pointer-events:none!important}.animated-route-svg{z-index:1}.map-controls__group{background-color:var(--zoom-border);border:1px solid var(--zoom-border);box-shadow:0 2px 6px var(--shadow);border-radius:18px}.map-controls__group>button:not(:last-child){border-bottom:1px solid var(--zoom-border)}.map-controls__button{background-color:var(--zoom-bg);cursor:pointer;width:34px;height:34px;color:var(--zoom-text);border:none;border-radius:7px;padding:5px;font-size:18px;font-weight:300;line-height:30px}.map-controls__button:hover{background-color:var(--zoom-bg-hover)}.map-controls__button--disabled{pointer-events:none;cursor:not-allowed;opacity:.5}.map-popup{background-color:var(--popup-bg);border:1px solid var(--border);box-shadow:0 2px 6px var(--shadow-lg);border-radius:18px;position:relative}.map-popup__content{color:var(--popup-text);margin:12px;padding:10px;font-family:Google Sans Flex,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.map-popup__close{background:var(--popup-bg);border:1px solid var(--border);width:28px;height:28px;color:var(--text-muted);box-shadow:0 1px 2px var(--shadow);border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:18px;font-weight:600;line-height:28px;display:flex;position:absolute;top:12px;right:12px}.map-popup__close:hover{color:var(--text);background:var(--bg)}.map-popup__close svg{width:18px;height:18px}@media (min-width:769px){.map-popup__close{top:14px;right:14px}}@media (max-width:768px){.map-controls__button{width:40px;height:40px;line-height:36px}}.app{width:100vw;height:100vh;flex-direction:column;height:100dvh;min-height:100dvh;display:flex;position:relative;overflow:hidden}.map-container{z-index:0;flex:1;width:100%}.map-container--placeholder,.map-container--loading{background:var(--bg-map);justify-content:center;align-items:center;display:flex}.map-loading-indicator{justify-content:center;align-items:center;animation:1.5s ease-in-out infinite pulse;display:flex}.map-placeholder{text-align:center;background:var(--panel);border:1px solid var(--border);max-width:22rem;box-shadow:0 8px 24px var(--shadow);border-radius:16px;flex-direction:column;align-items:center;gap:.75rem;padding:1.25rem 1.5rem;display:flex}.map-placeholder__title{color:var(--text);font-size:1rem;font-weight:600}.map-placeholder__body{color:var(--text-muted);margin:0;font-size:.875rem}.map-load-button{appearance:none;background:var(--brand-accent);color:#1f2937;cursor:pointer;box-shadow:0 6px 16px var(--shadow);border:none;border-radius:999px;padding:.5rem 1rem;font-weight:600;transition:transform .15s,box-shadow .15s,filter .15s}.map-load-button:hover{filter:brightness(.98);transform:translateY(-1px)}.map-load-button:active{box-shadow:0 4px 12px var(--shadow);transform:translateY(0)}.map-load-button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.map-controls--below-top-bar{top:calc(env(safe-area-inset-top,0px) + 4.25rem)}.top-bar{z-index:1000;background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--shadow);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex;position:absolute;top:0;left:0;right:0}.top-bar__left{flex:1;align-items:center;gap:1rem;display:flex}.top-bar__center{color:var(--text-muted);align-items:center;gap:1rem;font-size:.875rem;display:flex}.top-bar__title{color:var(--text);align-items:center;gap:.5rem;margin:0;font-size:1.25rem;font-weight:700;display:flex}.top-bar__icon{align-items:center;display:flex}.top-bar__icon img{width:auto;height:1.75rem}.top-bar__right{flex:1;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.top-bar__status{align-items:center;gap:.5rem;display:flex}.top-bar__indicator{background:var(--success);border-radius:50%;width:8px;height:8px;animation:2s infinite live-pulse;box-shadow:0 0 #22c55e66}.top-bar__indicator--fetching{background:var(--warning);box-shadow:none;animation:1s infinite pulse}.top-bar__indicator--inactive{background:var(--text-subtle);box-shadow:none;animation:none}@keyframes live-pulse{0%{box-shadow:0 0 #22c55e66}70%{box-shadow:0 0 0 6px #22c55e00}to{box-shadow:0 0 #22c55e00}}.top-bar__vehicle-count{color:var(--text);align-items:center;font-weight:600;line-height:1;display:flex}.top-bar__vehicle-count--loading{color:var(--text-subtle);font-weight:400}.top-bar__stale-count{color:var(--warning);cursor:help;align-items:center;line-height:1;display:flex}.top-bar__update-time{color:var(--text-subtle);align-items:center;line-height:1;display:flex}.filter-bar{z-index:1000;align-items:center;gap:.5rem;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.route-filter{background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 12px var(--shadow-lg);border-radius:9999px;gap:.5rem;padding:.5rem;display:flex}.route-filter__btn{border:2px solid var(--border);background:var(--panel-solid);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:.875rem;font-weight:600;transition:all .2s;display:flex}.route-filter__btn:hover{transform:scale(1.1)}.route-filter__btn--active{color:#fff;text-shadow:0 1px 2px #00000080,0 0 4px #0000004d;border-color:#0000}.route-filter__btn--inactive{opacity:.85;background:#e5e7eb}[data-theme=dark] .route-filter__btn--inactive{color:#d1d5db;background:#374151}.route-filter__btn--inactive:hover{opacity:1}.route-filter__btn--all{border-radius:9999px;width:auto;padding:0 1rem}[data-theme=dark] .route-filter__btn--all:not(.route-filter__btn--active){color:#d1d5db;background:#374151}.route-filter__btn--all.route-filter__btn--active{background:var(--text);color:var(--bg)}[data-theme=dark] .route-filter__btn--all.route-filter__btn--active{text-shadow:none}.route-filter__btn--x3.route-filter__btn--active{text-shadow:0 0 3px #00b047,0 0 6px #00b047;background-size:14px 14px;background-image:repeating-linear-gradient(-45deg,#00b047 0 5px,#006425 5px 10px)!important}.stop-filter{position:relative}.stop-filter__toggle{border:2px solid var(--border);background:var(--panel-solid);cursor:pointer;height:40px;color:var(--text);white-space:nowrap;border-radius:9999px;justify-content:center;align-items:center;gap:.375rem;padding:0 1rem;font-size:.875rem;font-weight:600;transition:all .2s;display:flex}.stop-filter__toggle:hover{color:var(--text);transform:scale(1.1)}.stop-filter__toggle--active,.stop-filter__toggle--has-filters{background:var(--text);color:var(--bg);border-color:#0000}.stop-filter__toggle--active:hover,.stop-filter__toggle--has-filters:hover{color:var(--bg)}.stop-filter__panel{background:var(--panel-solid);border:1px solid var(--border);box-shadow:0 4px 20px var(--shadow-lg);z-index:1001;border-radius:.75rem;min-width:280px;max-width:320px;position:absolute;bottom:calc(100% + .5rem);right:0;overflow:visible}@media (min-width:769px){.stop-filter__panel{left:0;right:auto}}.stop-filter__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.stop-filter__header-actions{align-items:center;gap:.5rem;display:flex}.stop-filter__action-btn{border:1px solid var(--border);background:var(--panel-solid);cursor:pointer;height:28px;color:var(--text);border-radius:9999px;padding:0 .75rem;font-size:.75rem;font-weight:500;transition:all .2s}.stop-filter__action-btn:hover{background:var(--bg)}.stop-filter__action-btn:disabled{opacity:.5;cursor:not-allowed}.stop-filter__action-btn--remove{color:#ef4444;background:#fef2f2;border-color:#fecaca}.stop-filter__action-btn--remove:hover{background:#fee2e2;border-color:#ef4444}.stop-filter__title{color:var(--text);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:flex}.stop-filter__close{cursor:pointer;width:28px;height:28px;color:var(--text-muted);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex}.stop-filter__close:hover{background:var(--bg);color:var(--text)}.stop-filter__routes{flex-direction:column;gap:.625rem;padding:.75rem 1rem 1rem;display:flex}.stop-filter__section-label{color:var(--text-muted);font-size:.75rem;font-weight:600}.stop-filter__route-btn{border:1px solid var(--border);background:var(--panel-solid);cursor:pointer;text-align:left;border-radius:.75rem;align-items:center;gap:.75rem;width:100%;padding:.75rem .875rem;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex}.stop-filter__route-btn:hover{border-color:var(--route-color);transform:translateY(-1px);box-shadow:0 6px 16px #0f172a1f}.stop-filter__route-btn:disabled{cursor:not-allowed;opacity:.5;box-shadow:none;transform:none}.stop-filter__route-btn--active{border-color:var(--route-color);box-shadow:0 0 0 2px var(--route-color)}.stop-filter__route-badge{background:var(--route-color);color:#fff;text-shadow:0 1px 1px #00000059,0 0 2px #00000040;border-radius:9999px;justify-content:center;align-items:center;gap:.25rem;min-width:42px;height:32px;padding:0 .5rem;font-size:.875rem;font-weight:700;display:inline-flex}.stop-filter__route-badge--x3{text-shadow:0 0 3px #00b047,0 0 6px #00b047;background-size:14px 14px;background-image:repeating-linear-gradient(-45deg,#00b047 0 5px,#006425 5px 10px)!important}.stop-filter__route-badge svg{filter:drop-shadow(0 1px 1px #00000059)}.stop-filter__route-text{flex-direction:column;gap:.125rem;display:flex}.stop-filter__route-title{color:var(--text);font-size:.875rem;font-weight:600}.stop-filter__route-subtitle{color:var(--text-muted);font-size:.75rem}.stop-filter[data-lang=kl] .stop-filter__route-title{font-size:.75rem}.stop-filter[data-lang=kl] .stop-filter__route-subtitle,.stop-filter[data-lang=kl] .stop-filter__mode-btn{font-size:.625rem}.stop-filter__mode{gap:.625rem;display:flex}.stop-filter__mode-btn{border:1px solid var(--border);background:var(--panel-solid);height:36px;color:var(--text-muted);cursor:pointer;border-radius:9999px;flex:1;font-size:.8125rem;font-weight:600;transition:transform .2s,color .2s,background .2s,border-color .2s}.stop-filter__mode-btn:hover{color:var(--text);transform:translateY(-1px)}.stop-filter__mode-btn--active{background:var(--text);color:var(--bg);border-color:#0000}.stop-filter__mode-btn--active:hover{color:var(--bg)}.stop-filter__selected-route{flex-direction:column;gap:1rem;padding:.75rem 1rem 1rem;display:flex;overflow:visible}.stop-filter__selected-route .stop-filter__route-btn{cursor:default}.stop-filter__selected-route .stop-filter__route-btn:hover{transform:none}.stop-filter__range{gap:.75rem;display:grid;overflow:visible}.stop-filter__range-field{color:var(--text-muted);flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.stop-filter__range-label{font-weight:600}.stop-filter__range-select{appearance:none;border:1px solid var(--border);background:var(--panel-solid);color:var(--text);border-radius:.5rem;width:100%;padding:.5rem .6rem;font-size:.8125rem}.stop-filter__range-select:focus{outline:2px solid var(--text);outline-offset:2px}.stop-filter__searchable-select{flex-direction:column;gap:.375rem;display:flex;position:relative}.stop-filter__searchable-trigger{border:1px solid var(--border);background:var(--panel-solid);width:100%;color:var(--text);text-align:left;cursor:pointer;border-radius:.5rem;justify-content:space-between;align-items:center;gap:.5rem;padding:.625rem .75rem;font-size:.8125rem;transition:border-color .2s,box-shadow .2s;display:flex}.stop-filter__searchable-trigger:hover{border-color:var(--text-muted)}.stop-filter__searchable-trigger--open{border-color:var(--text-muted);background:var(--hover)}.stop-filter__placeholder{color:var(--text-muted)}.stop-filter__chevron{color:var(--text-muted);flex-shrink:0;transition:transform .2s;transform:rotate(180deg)}.stop-filter__chevron--open{transform:rotate(0)}.stop-filter__searchable-dropdown{background:var(--panel-solid);border:1px solid var(--border);box-shadow:0 -4px 24px var(--shadow-lg);z-index:1100;border-radius:.5rem;position:absolute;bottom:calc(100% + .25rem);left:0;right:0;overflow:hidden}.stop-filter__searchable-search{border-bottom:1px solid var(--border);color:var(--text-muted);align-items:center;gap:.5rem;padding:.625rem .75rem;display:flex}.stop-filter__searchable-input{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:.8125rem}.stop-filter__searchable-input::placeholder{color:var(--text-muted)}.stop-filter__searchable-list{max-height:280px;margin:0;padding:.375rem;list-style:none;overflow-y:auto}.stop-filter__searchable-option{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.375rem;align-items:center;gap:.625rem;padding:.5rem .625rem;font-size:.8125rem;transition:background .15s;display:flex}.stop-filter__searchable-option:hover{background:var(--hover)}.stop-filter__searchable-option--selected{background:var(--hover);font-weight:600}.stop-filter__stop-index{background:var(--border);width:1.5rem;height:1.5rem;color:var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.6875rem;font-weight:600;display:inline-flex}.stop-filter__searchable-empty{text-align:center;color:var(--text-muted);padding:.75rem;font-size:.8125rem}.stop-filter__loading{color:var(--text-muted);padding:.5rem 0;font-size:.8125rem}.bus-marker{justify-content:center;align-items:center;display:flex}.bus-marker__inner{color:#fff;width:36px;height:36px;box-shadow:0 2px 8px var(--marker-shadow);border:3px solid var(--panel-solid);border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex;position:relative}.bus-marker__inner.bus-marker--x3{background-size:14px 14px;background-image:repeating-linear-gradient(-45deg,#00b047 0 5px,#006425 5px 10px)!important}.bus-marker__inner.bus-marker--x3 .bus-marker__label{background:#00b047;border-radius:3px;padding:2px 4px}.bus-marker--stale .bus-marker__inner{opacity:.5}.bus-marker__label{text-shadow:0 1px 2px #00000080,0 0 4px #0000004d}.bus-marker__stale-badge{background:var(--warning);border:2px solid var(--panel-solid);border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:.625rem;display:flex;position:absolute;top:-4px;right:-4px}.bus-marker--depot .bus-marker__inner{opacity:.6;border-style:dashed}.bus-marker__depot-badge{border:2px solid var(--panel-solid);background:#6b7280;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;display:flex;position:absolute;top:-4px;right:-4px}.selected-bus-overlay,.selected-stop-overlay{pointer-events:none;z-index:2105;position:fixed;transform:translate(-50%,-50%)}.selected-stop-overlay__circle{width:18px;height:18px;box-shadow:0 2px 8px var(--marker-shadow);background-color:#60a5fa;border:2px solid #3b82f6;border-radius:50%}.bus-path{stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.bus-path--current{stroke-dasharray:8 10;animation:1.4s linear infinite bus-path-flow}.bus-path--next{stroke-dasharray:8 10;animation:2.6s linear infinite bus-path-flow}@keyframes bus-path-flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-36px}}.route-path{stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.route-path--pulse{stroke-dasharray:12 20;animation:9s linear infinite route-path-flow}.route-path--loading{stroke-dasharray:none;animation:1.8s ease-in-out infinite route-path-loading-pulse}@keyframes route-path-flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-160px}}@keyframes route-path-loading-pulse{0%,to{opacity:.3}50%{opacity:.8}}.bus-popup{min-width:200px}.bus-popup__route{margin:0 0 .25rem;font-size:1.125rem;font-weight:700}.bus-popup__headsign{color:var(--text-muted);margin:0 0 .75rem;font-size:.875rem}.bus-popup__details,.bus-popup__section{flex-direction:column;gap:.5rem;display:flex}.bus-popup__log{background:var(--bg);border:1px dashed var(--border);border-radius:.5rem;margin-top:.5rem;padding:.5rem .6rem}.bus-popup__log .bus-popup__row{font-size:.75rem}.bus-popup__log .bus-popup__label{color:var(--text-subtle)}.bus-popup__row{justify-content:space-between;gap:1rem;font-size:.875rem;display:flex}.bus-popup__label{color:var(--text-muted)}.bus-popup__time-ago{color:var(--text-subtle);font-size:.75rem}.bus-popup__at-stop,.bus-popup__at-depot,.bus-popup__stale-warning{text-align:center;border-radius:.5rem;margin-top:.5rem;padding:.5rem;font-size:.875rem}.bus-popup__at-stop{background:var(--success-bg);color:var(--success-text)}.bus-popup__at-depot{color:#6b7280;background:#f3f4f6}[data-theme=dark] .bus-popup__at-depot{color:#9ca3af;background:#374151}.bus-popup__stale-warning{background:var(--warning-bg);color:var(--warning-text)}.error-banner{z-index:1000;background:var(--danger-bg);border:1px solid var(--danger);border-radius:.5rem;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex;position:absolute;top:60px;left:1rem;right:1rem}.error-banner__icon{align-items:center;display:flex}.error-banner__text{color:var(--danger-text);flex:1;font-weight:500}.error-banner__details{width:100%;color:var(--danger);margin-top:.5rem;font-size:.75rem}.error-banner__details summary{cursor:pointer}.error-banner__details code{background:var(--danger-bg);word-break:break-all;border-radius:.25rem;margin-top:.25rem;padding:.5rem;display:block}.bottom-sheet__backdrop{z-index:2000;background:#0000004d;align-items:flex-end;display:flex;position:fixed;inset:0}.bottom-sheet{background:var(--panel-solid);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:1rem 1rem 0 0;width:100%;max-height:min(70dvh,70vh);padding:.5rem 1rem 1rem;animation:.3s ease-out slideUp;position:relative;overflow-y:auto}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.bottom-sheet__handle{background:var(--border);border-radius:2px;width:40px;height:4px;margin:0 auto 1rem}.bottom-sheet__close{background:var(--bg);cursor:pointer;width:32px;height:32px;color:var(--text);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1rem;display:flex;position:absolute;top:1rem;right:1rem}.bottom-sheet__close:hover{background:var(--border)}.bottom-sheet__content{padding-bottom:env(safe-area-inset-bottom,0)}.bottom-sheet__header{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.bottom-sheet__route-badge{color:#fff;text-shadow:0 1px 2px #00000080,0 0 4px #0000004d;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.25rem;font-weight:700;display:flex}.bottom-sheet__route-badge--x3{text-shadow:0 0 3px #00b047,0 0 6px #00b047;background-size:14px 14px;background-image:repeating-linear-gradient(-45deg,#00b047 0 5px,#006425 5px 10px)!important}.bottom-sheet__title h2{color:var(--text);margin:0;font-size:1.25rem}.bottom-sheet__headsign{color:var(--text-muted);margin:.25rem 0 0;font-size:.875rem}.bottom-sheet__details{flex-direction:column;gap:.75rem;display:flex}.bottom-sheet__group{flex-direction:column;gap:.5rem;display:flex}.bottom-sheet__group--log{background:var(--bg);border:1px dashed var(--border);border-radius:.75rem;margin-top:.25rem;padding:.75rem}.bottom-sheet__group--log .bottom-sheet__row{padding:.35rem 0;font-size:.8125rem}.bottom-sheet__group--log .bottom-sheet__label{color:var(--text-subtle)}.bottom-sheet__group--log .bottom-sheet__value{color:var(--text-muted)}.bottom-sheet__row{border-bottom:1px solid var(--border);justify-content:space-between;padding:.5rem 0;display:flex}.bottom-sheet__label{color:var(--text-muted);align-items:center;gap:.375rem;display:flex}.bottom-sheet__value{color:var(--text);font-weight:500}.bottom-sheet__time-ago{color:var(--text-subtle);font-size:inherit}.bottom-sheet__badge{text-align:center;border-radius:.5rem;justify-content:center;align-items:center;gap:.375rem;margin-top:.5rem;padding:.75rem;font-weight:500;display:flex}.bottom-sheet__badge--at-stop{background:var(--success-bg);color:var(--success-text)}.bottom-sheet__badge--stale{background:var(--warning-bg);color:var(--warning-text)}.bottom-sheet__stop-icon{color:var(--text);background:var(--bg);border-radius:.75rem;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.bottom-sheet__route-badges{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.bottom-sheet__section{margin-bottom:1rem}.bottom-sheet__section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:.375rem;margin:0 0 .5rem;font-size:.875rem;font-weight:600;display:flex}.bottom-sheet__bus-item{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.5rem 0;display:flex}.bottom-sheet__bus-item:last-child{border-bottom:none}.bottom-sheet__heading-list{flex-wrap:wrap;gap:.5rem;padding:.25rem 0 .5rem;display:flex}.bottom-sheet__route-badge--small{width:32px;min-width:32px;height:32px;padding:0;font-size:.75rem}.bottom-sheet__route-badge--active{width:38px;min-width:38px;height:38px;box-shadow:0 0 0 2px var(--panel-solid),0 0 0 3px currentColor;border-radius:50%;padding:0;font-size:.9rem}.bottom-sheet__header--stop{flex-direction:column;align-items:flex-start;gap:.5rem;margin-bottom:.75rem}.bottom-sheet__header--stop .bottom-sheet__title h2{font-size:1.125rem}.bottom-sheet__header--stop .bottom-sheet__route-badges{gap:.3rem}button.bottom-sheet__route-badge{cursor:pointer;border:none;transition:transform .15s,box-shadow .15s}button.bottom-sheet__route-badge:hover{transform:scale(1.05)}.bottom-sheet__bus-destination{color:var(--text);align-items:center;gap:.25rem;font-size:.875rem;display:flex}.bottom-sheet__empty{color:var(--text-muted);text-align:center;padding:2rem 1rem;font-style:italic}.stop-popup__schedule{border-top:1px dashed var(--border);margin-top:.5rem;padding-top:.5rem}.stop-popup__schedule-title{color:var(--text-muted);margin-bottom:.35rem;font-size:.75rem}.stop-schedule{flex-wrap:wrap;gap:.4rem;display:flex}.stop-schedule__time{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:.2rem .5rem;font-size:.75rem}.stop-schedule__time--next{color:#fff;text-shadow:0 1px 2px #0006;background:#e91e8c;border-color:#e91e8c;font-weight:600}.stop-schedule--x3 .stop-schedule__time--next{background:#00b047;border-color:#00b047}.stop-schedule__time--ended{opacity:.5;text-decoration:line-through}.stop-schedule__ended-label{color:var(--text-secondary);margin-bottom:.2rem;font-size:.65rem;font-style:italic;display:block}.stop-schedule--compact{gap:.3rem;margin-top:.35rem;margin-left:1.5rem}.stop-schedule--compact .stop-schedule__time{padding:.15rem .4rem;font-size:.7rem}.stop-popup__no-schedule{color:var(--text-muted);margin-top:.35rem;font-size:.75rem;font-style:italic}.bottom-sheet__stop-section{margin-bottom:.5rem}.bottom-sheet__stop-section:last-child{margin-bottom:0}.stop-search{position:relative}.stop-search__input{border:1px solid var(--border);background:var(--panel-solid);width:200px;color:var(--text);border-radius:9999px;outline:none;padding:.5rem 1rem;font-size:.875rem;transition:border-color .2s}.stop-search__input:focus{border-color:var(--focus)}.stop-search__dropdown{background:var(--panel-solid);box-shadow:0 4px 12px var(--shadow-lg);z-index:100;border-radius:.5rem;margin-top:.5rem;position:absolute;top:100%;left:0;right:0;overflow:hidden}.stop-search__result{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.stop-search__result:hover{background:var(--bg)}.stop-search__icon{align-items:center;display:flex}@media (max-width:768px){.top-bar{grid-template-columns:1fr auto;grid-template-areas:"left right""center center";align-items:center;row-gap:.5rem;padding:.5rem .75rem;display:grid}.top-bar__left{grid-area:left;min-width:0}.top-bar__right{flex-wrap:nowrap;grid-area:right;justify-self:end}.top-bar__center{grid-area:center;justify-content:center;width:100%}.top-bar__title{font-size:1rem}.top-bar__update-time,.stop-search{display:none}.bottom-sheet__header--stop{gap:.4rem;margin-bottom:.5rem}.bottom-sheet__header--stop .bottom-sheet__title h2{font-size:1rem}.bottom-sheet__header--stop .bottom-sheet__route-badges{gap:.4rem}.bottom-sheet__header--stop .bottom-sheet__route-badge{width:32px;height:32px;font-size:.9rem}.bottom-sheet__header--stop .bottom-sheet__route-badge--small{width:26px;min-width:26px;height:26px;padding:0;font-size:.7rem}.bottom-sheet__header--stop .bottom-sheet__route-badge--active{width:32px;min-width:32px;height:32px;padding:0;font-size:.85rem}.filter-bar{z-index:1000;padding:.5rem;padding-bottom:max(.5rem,calc(env(safe-area-inset-bottom,0px) + .25rem));flex-direction:column;align-items:stretch;gap:.5rem;width:auto;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.filter-bar:has(.route-filter[data-lang=kl]){width:calc(100vw - 1rem);max-width:400px}.route-filter{order:2;justify-content:center;gap:.25rem;padding:.25rem;box-shadow:0 2px 12px #00000026;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:var(--panel-solid)!important}.stop-filter{flex-shrink:0;order:1;justify-content:flex-end;display:flex}.route-filter__btn{flex-shrink:0;width:36px;height:36px;font-size:.75rem;font-weight:700}.route-filter__btn--all{width:auto;min-width:36px;height:36px;padding:0 .5rem;font-size:.6rem}.stop-filter__toggle{gap:.3rem;height:34px;padding:0 .75rem;font-size:.75rem;box-shadow:0 2px 12px #00000026;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.stop-filter__toggle:not(.stop-filter__toggle--active):not(.stop-filter__toggle--has-filters){background:var(--panel-solid)}.stop-filter__toggle svg{width:12px;height:12px}.stop-filter__panel{min-width:100%;max-width:100%;max-height:70vh;padding-bottom:max(1rem,env(safe-area-inset-bottom,0px));border-radius:1rem 1rem 0 0;position:fixed;inset:auto 0 0}.map-controls--below-top-bar{top:calc(env(safe-area-inset-top,0px) + 5.5rem)}}@media (max-width:480px){.top-bar__title{font-size:.95rem}}@media (max-width:900px) and (max-height:500px) and (orientation:landscape){.top-bar{padding:.35rem .5rem;padding-top:calc(env(safe-area-inset-top,0px) + .35rem);gap:.5rem}.top-bar__left{gap:.4rem}.top-bar__icon{align-items:center;display:flex}.top-bar__icon img{width:auto;height:24px}.top-bar__title{font-size:.85rem}.top-bar__right{gap:.35rem}.top-bar__status{gap:.25rem}.top-bar__indicator{width:6px;height:6px}.top-bar__vehicle-count{padding:.15rem .35rem;font-size:.65rem}.top-bar__stale-count{padding:.1rem .3rem;font-size:.6rem}.top-bar__update-time{display:none}.language-switcher__btn,.theme-switcher__btn{width:28px;height:28px}.language-switcher__btn svg,.theme-switcher__btn svg{width:14px;height:14px}.filter-bar{flex-direction:row;align-items:center;gap:.5rem;width:auto;max-width:none;padding:0;position:fixed;bottom:.5rem;left:auto;right:.5rem;transform:none}.route-filter{order:1;gap:.2rem;padding:.25rem}.stop-filter{order:2}.route-filter__btn{width:28px;height:28px;font-size:.6rem}.route-filter__btn--all{min-width:28px;height:28px;padding:0 .35rem;font-size:.5rem}.route-filter[data-lang=kl] .route-filter__btn--all{min-width:50px;padding:0 .4rem;font-size:.45rem}.stop-filter__toggle{height:28px;padding:0 .5rem;font-size:.6rem}.stop-filter__panel{top:calc(env(safe-area-inset-top,0px) + 3.25rem);border-radius:.75rem;flex-direction:column;width:auto;min-width:260px;max-width:min(340px,90vw);max-height:none;padding-bottom:.5rem;display:flex;position:fixed;bottom:calc(1rem + 28px);left:auto;right:.5rem;overflow:hidden}.stop-filter__header{padding:.5rem .75rem}.stop-filter__routes,.stop-filter__selected-route{flex:1;gap:.5rem;min-height:0;padding:.5rem .75rem .75rem;overflow-y:auto}.stop-filter__route-btn{gap:.5rem;padding:.5rem .6rem}.stop-filter__route-title{font-size:.75rem}.stop-filter__route-subtitle{font-size:.65rem}.stop-filter__mode{gap:.4rem}.stop-filter__mode-btn{height:30px;font-size:.7rem}.stop-filter__range{gap:.5rem}.stop-filter__searchable-trigger{padding:.5rem .6rem;font-size:.75rem}.stop-filter__searchable-list{max-height:140px}.bottom-sheet{bottom:1rem;left:50vw;width:min(420px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));width:min(420px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(420px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(420px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));height:auto;max-height:min(50dvh,50vh);padding:.5rem 2rem .5rem .75rem;padding-left:max(.75rem,env(safe-area-inset-left,0px));box-sizing:border-box;border-radius:.75rem;flex-direction:column;min-width:0;display:flex;position:fixed;left:50dvw;overflow:hidden;transform:translate(-50%)}.bottom-sheet__handle{display:none}.bottom-sheet__close{width:24px;height:24px;top:.4rem;right:.4rem}.bottom-sheet__close svg{width:14px;height:14px}.bottom-sheet__content{flex-direction:column;flex:1;gap:.4rem;min-height:0;padding-bottom:.15rem;display:flex;overflow-y:auto}.bottom-sheet__header{flex-shrink:0;gap:.35rem;margin-bottom:0}.bottom-sheet__title h2{font-size:.8rem}.bottom-sheet__headsign{font-size:.6rem}.bottom-sheet__details{flex:1;gap:.25rem;min-height:0;padding-right:.15rem;font-size:.7rem;overflow-y:auto}.bottom-sheet__group{gap:.2rem}.bottom-sheet__group--log{max-height:none;margin-top:.1rem;padding:.3rem .4rem;overflow-y:visible}.bottom-sheet__group--log .bottom-sheet__row{padding:.15rem 0;font-size:.65rem}.bottom-sheet__row{padding:.2rem 0;font-size:.7rem}.bottom-sheet__label{font-size:.65rem}.bottom-sheet__label svg{width:11px;height:11px}.bottom-sheet__value{font-size:.7rem}.bottom-sheet__route-badge{width:28px;height:28px;font-size:.8rem}.bottom-sheet__badge{padding:.2rem .4rem;font-size:.6rem}.bottom-sheet__badge svg{width:11px;height:11px}.bottom-sheet__stop-section{margin-bottom:.2rem}.bottom-sheet__heading-list{gap:.2rem;padding:.1rem 0 .2rem}.bottom-sheet__section{margin-bottom:.2rem}.bottom-sheet__section-title{margin-bottom:.15rem;font-size:.65rem}.bottom-sheet__section-title svg{width:11px;height:11px}.bottom-sheet__header--stop{flex-direction:column;align-items:flex-start;gap:.25rem;margin-bottom:0}.bottom-sheet__header--stop .bottom-sheet__title h2{font-size:.8rem}.bottom-sheet__header--stop .bottom-sheet__route-badges{gap:.15rem}.bottom-sheet__header--stop .bottom-sheet__route-badge--small{width:20px;min-width:20px;height:20px;font-size:.55rem}.bottom-sheet__header--stop .bottom-sheet__route-badge--active{width:24px;min-width:24px;height:24px;font-size:.65rem}.stop-schedule{gap:.15rem}.stop-schedule__time{padding:.1rem .3rem;font-size:.6rem}.stop-schedule--compact{margin-top:.15rem;margin-left:.75rem}.bottom-sheet--stop{width:min(380px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));width:min(380px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(380px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(380px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));min-width:0}.bottom-sheet--stop .bottom-sheet__title{overflow-wrap:anywhere;min-width:0;max-width:100%;padding-right:0}.bottom-sheet--stop .bottom-sheet__content{width:100%;min-width:0;max-width:100%;padding-left:.25rem;overflow:hidden}.bottom-sheet--stop .bottom-sheet__header--stop{width:100%;min-width:0;max-width:100%}.bottom-sheet--stop .bottom-sheet__header--stop .bottom-sheet__route-badges{flex-wrap:wrap;width:100%;min-width:0;max-width:100%;padding-left:.15rem;overflow:hidden}.bottom-sheet--bus{max-width:min(580px,95vw);max-height:min(42dvh,42vh)}.bottom-sheet--bus .bottom-sheet__content{grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;gap:.4rem .75rem;display:grid;overflow:visible}.bottom-sheet--bus .bottom-sheet__header{flex-direction:column;grid-area:1/1;align-items:flex-start;gap:.25rem;margin-bottom:0}.bottom-sheet--bus .bottom-sheet__group--log{background:0 0;border-radius:0;grid-area:2/1;align-self:start;margin:0;padding:0}.bottom-sheet--bus .bottom-sheet__group--log .bottom-sheet__row{flex-direction:column;align-items:flex-start;gap:.1rem;padding:.15rem 0}.bottom-sheet--bus .bottom-sheet__details{grid-area:1/2/-1;overflow:visible}.bottom-sheet--bus .stop-schedule{gap:.25rem}.bottom-sheet--bus .stop-schedule__time{padding:.15rem .4rem;font-size:.7rem}.bottom-sheet--bus .stop-schedule--compact{margin-top:.25rem;margin-left:0}}html.landscape-mobile .app{width:calc(100vw - var(--safe-left,0px) - var(--safe-right,0px));margin-left:var(--safe-left,0px);margin-right:var(--safe-right,0px)}html.landscape-mobile .top-bar{padding:.35rem .5rem;padding-top:calc(env(safe-area-inset-top,0px) + .35rem);gap:.5rem}html.landscape-mobile .top-bar__left{gap:.4rem}html.landscape-mobile .top-bar__icon{align-items:center;display:flex}html.landscape-mobile .top-bar__icon img{width:auto;height:24px}html.landscape-mobile .top-bar__title{font-size:.85rem}html.landscape-mobile .top-bar__right{gap:.35rem}html.landscape-mobile .top-bar__status{gap:.25rem}html.landscape-mobile .top-bar__indicator{width:6px;height:6px}html.landscape-mobile .top-bar__vehicle-count{padding:.15rem .35rem;font-size:.65rem}html.landscape-mobile .top-bar__stale-count{padding:.1rem .3rem;font-size:.6rem}html.landscape-mobile .top-bar__update-time{display:none}html.landscape-mobile .language-switcher__btn,html.landscape-mobile .theme-switcher__btn{width:28px;height:28px}html.landscape-mobile .language-switcher__btn svg,html.landscape-mobile .theme-switcher__btn svg{width:14px;height:14px}html.landscape-mobile .filter-bar{bottom:.5rem;right:calc(.5rem + var(--safe-right,0px));flex-direction:row;align-items:center;gap:.5rem;width:auto;max-width:none;padding:0;position:fixed;left:auto;transform:none}html.landscape-mobile .route-filter{order:1;gap:.2rem;padding:.25rem}html.landscape-mobile .stop-filter{order:2}html.landscape-mobile .route-filter__btn{width:28px;height:28px;font-size:.7rem}html.landscape-mobile .route-filter__btn--all{min-width:28px;padding:0 .35rem;font-size:.5rem}html.landscape-mobile .stop-filter__toggle{height:28px;padding:0 .5rem;font-size:.6rem}html.landscape-mobile .stop-filter__panel{bottom:auto;top:calc(env(safe-area-inset-top,0px) + 3rem);right:max(.5rem,env(safe-area-inset-right,0px));max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 1rem);max-width:calc(100dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 1rem);min-width:240px;max-height:calc(100vh - env(safe-area-inset-top,0px) - 4rem);max-height:calc(100dvh - env(safe-area-inset-top,0px) - 4rem);z-index:1001;position:fixed;left:auto;overflow-y:auto}html.landscape-mobile .stop-filter__searchable-dropdown{max-height:none;box-shadow:none;border:1px solid var(--border);border-radius:.5rem;margin-top:.25rem;position:relative;bottom:auto;left:0;right:0}html.landscape-mobile .stop-filter__searchable-list{max-height:120px}html.landscape-mobile .bottom-sheet{bottom:1rem;left:50vw;width:min(420px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));width:min(420px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(420px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(420px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));height:auto;max-height:min(50dvh,50vh);padding:.5rem 2rem .5rem .75rem;padding-left:max(.75rem,env(safe-area-inset-left,0px));box-sizing:border-box;border-radius:.75rem;flex-direction:column;min-width:0;display:flex;position:fixed;left:50dvw;overflow:hidden;transform:translate(-50%)}html.landscape-mobile .bottom-sheet__handle{display:none}html.landscape-mobile .bottom-sheet__close{width:24px;height:24px;top:.4rem;right:.4rem}html.landscape-mobile .bottom-sheet__close svg{width:14px;height:14px}html.landscape-mobile .bottom-sheet__content{flex-direction:column;flex:1;gap:.4rem;min-height:0;padding-bottom:.15rem;display:flex;overflow-y:auto}html.landscape-mobile .bottom-sheet__header{flex-shrink:0;gap:.35rem;margin-bottom:0}html.landscape-mobile .bottom-sheet__title h2{font-size:.8rem}html.landscape-mobile .bottom-sheet__headsign{font-size:.6rem}html.landscape-mobile .bottom-sheet__details{flex:1;gap:.25rem;min-height:0;padding-right:.15rem;font-size:.7rem;overflow-y:auto}html.landscape-mobile .bottom-sheet__group{gap:.2rem}html.landscape-mobile .bottom-sheet__group--log{max-height:none;margin-top:.1rem;padding:.3rem .4rem;overflow-y:visible}html.landscape-mobile .bottom-sheet__group--log .bottom-sheet__row{padding:.15rem 0;font-size:.65rem}html.landscape-mobile .bottom-sheet__row{padding:.2rem 0;font-size:.7rem}html.landscape-mobile .bottom-sheet__label{font-size:.65rem}html.landscape-mobile .bottom-sheet__label svg{width:11px;height:11px}html.landscape-mobile .bottom-sheet__value{font-size:.7rem}html.landscape-mobile .bottom-sheet__route-badge{width:28px;height:28px;font-size:.8rem}html.landscape-mobile .bottom-sheet__badge{padding:.2rem .4rem;font-size:.6rem}html.landscape-mobile .bottom-sheet__badge svg{width:11px;height:11px}html.landscape-mobile .bottom-sheet__stop-section{margin-bottom:.2rem}html.landscape-mobile .bottom-sheet__heading-list{gap:.2rem;padding:.1rem 0 .2rem}html.landscape-mobile .bottom-sheet__section{margin-bottom:.2rem}html.landscape-mobile .bottom-sheet__section-title{margin-bottom:.15rem;font-size:.65rem}html.landscape-mobile .bottom-sheet__section-title svg{width:11px;height:11px}html.landscape-mobile .bottom-sheet__header--stop{flex-direction:column;align-items:flex-start;gap:.25rem;margin-bottom:0}html.landscape-mobile .bottom-sheet__header--stop .bottom-sheet__title h2{font-size:.8rem}html.landscape-mobile .bottom-sheet__header--stop .bottom-sheet__route-badges{gap:.15rem}html.landscape-mobile .bottom-sheet__header--stop .bottom-sheet__route-badge--small{width:20px;min-width:20px;height:20px;font-size:.55rem}html.landscape-mobile .bottom-sheet__header--stop .bottom-sheet__route-badge--active{width:24px;min-width:24px;height:24px;font-size:.65rem}html.landscape-mobile .stop-schedule{gap:.15rem}html.landscape-mobile .stop-schedule--compact{margin-top:.15rem;margin-left:.75rem}html.landscape-mobile .bottom-sheet--stop{width:min(380px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));width:min(380px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(380px,calc(90vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-width:min(380px,calc(90dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));min-width:0}html.landscape-mobile .bottom-sheet--stop .bottom-sheet__title{overflow-wrap:anywhere;min-width:0;max-width:100%;padding-right:0}html.landscape-mobile .bottom-sheet--stop .bottom-sheet__content{box-sizing:border-box;width:100%;min-width:0;max-width:100%;padding-left:.25rem;overflow:hidden}html.landscape-mobile .bottom-sheet--stop .bottom-sheet__header--stop{width:100%;min-width:0;max-width:100%;overflow:hidden}html.landscape-mobile .bottom-sheet--stop .bottom-sheet__header--stop .bottom-sheet__route-badges{flex-wrap:wrap;width:100%;min-width:0;max-width:100%;padding-left:.15rem;overflow:hidden}html.landscape-mobile .bottom-sheet--bus{max-width:min(580px,95vw);max-height:min(42dvh,42vh)}html.landscape-mobile .bottom-sheet--bus .bottom-sheet__content{grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;gap:.4rem .75rem;display:grid;overflow:visible}html.landscape-mobile .bottom-sheet--bus .bottom-sheet__header{flex-direction:column;grid-area:1/1;align-items:flex-start;gap:.25rem;margin-bottom:0}html.landscape-mobile .bottom-sheet--bus .bottom-sheet__group--log{background:0 0;border-radius:0;grid-area:2/1;align-self:start;margin:0;padding:0}html.landscape-mobile .bottom-sheet--bus .bottom-sheet__group--log .bottom-sheet__row{flex-direction:column;align-items:flex-start;gap:.1rem;padding:.15rem 0}html.landscape-mobile .bottom-sheet--bus .bottom-sheet__details{grid-area:1/2/-1;overflow:visible}html.landscape-mobile .bottom-sheet--bus .stop-schedule{gap:.25rem}html.landscape-mobile .bottom-sheet--bus .stop-schedule__time{padding:.15rem .4rem;font-size:.7rem}html.landscape-mobile .bottom-sheet--bus .stop-schedule--compact{margin-top:.25rem;margin-left:0}html.portrait-mobile .bottom-sheet__group--log{margin-top:.75rem}.loading-skeleton{z-index:500;background:var(--panel);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.loading-skeleton__content{text-align:center}.loading-skeleton__icon{color:var(--text);justify-content:center;align-items:center;animation:1s ease-in-out infinite bounce;display:flex}.loading-skeleton__text{color:var(--text-muted);margin-top:1rem;font-size:1.125rem;font-weight:500}.loading-skeleton__dots{justify-content:center;gap:.5rem;margin-top:1rem;display:flex}.loading-skeleton__dots span{background:var(--brand-accent);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite loading-dots}.loading-skeleton__dots span:first-child{animation-delay:0s}.loading-skeleton__dots span:nth-child(2){animation-delay:.2s}.loading-skeleton__dots span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes loading-dots{0%,80%,to{opacity:.5;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}.language-switcher{position:relative}.language-switcher__toggle{background:var(--panel-solid);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:.5rem;justify-content:center;align-items:center;width:32px;height:32px;padding:.375rem;transition:all .15s;display:flex;box-shadow:0 1px 2px #0000000d}.language-switcher__toggle:hover{background:var(--brand-accent-bg);border-color:var(--brand-accent)}.language-switcher__toggle:active{transform:scale(.96)}.language-switcher__flag{-o-object-fit:cover;object-fit:cover;border-radius:2px;width:18px;height:12px;display:inline-block;box-shadow:0 0 0 1px #0000001a,0 1px 2px #00000014}.language-switcher__dropdown{background:var(--panel-solid);box-shadow:0 4px 20px var(--shadow-lg);z-index:1100;border-radius:.75rem;min-width:160px;margin:.5rem 0 0;padding:.5rem 0;list-style:none;position:absolute;top:100%;right:0;overflow:hidden}.language-switcher__option{cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:.75rem;min-height:44px;padding:.625rem .875rem;font-size:.8125rem;transition:background .15s;display:flex}.language-switcher__option .language-switcher__flag{width:20px;height:14px}.language-switcher__option:hover{background:var(--brand-accent-bg)}.language-switcher__option--active{background:var(--brand-accent-bg);color:var(--brand-accent);font-weight:600}.language-switcher__name{flex:1}.language-switcher__check{color:var(--success);align-items:center;display:flex}.theme-switcher{position:relative}.theme-switcher__toggle{background:var(--panel-solid);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:.5rem;justify-content:center;align-items:center;width:32px;height:32px;padding:.375rem;transition:all .15s;display:flex;box-shadow:0 1px 2px #0000000d}.theme-switcher__toggle:hover{background:var(--brand-accent-bg);border-color:var(--brand-accent)}.theme-switcher__toggle:active{transform:scale(.96)}.theme-switcher__icon{align-items:center;display:flex}.theme-switcher__dropdown{background:var(--panel-solid);box-shadow:0 4px 20px var(--shadow-lg);z-index:1100;border-radius:.75rem;min-width:160px;margin-top:.5rem;padding:.5rem 0;list-style:none;position:absolute;top:100%;right:0;overflow:hidden}.theme-switcher__option{cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:.75rem;min-height:44px;padding:.625rem .875rem;font-size:.8125rem;transition:background .15s;display:flex}.theme-switcher__option:hover{background:var(--brand-accent-bg)}.theme-switcher__option--active{background:var(--brand-accent-bg);color:var(--brand-accent);font-weight:600}.theme-switcher__name{flex:1}.theme-switcher__check{color:var(--success);align-items:center;display:flex}.info-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:.5rem;justify-content:center;align-items:center;width:28px;height:28px;padding:.375rem;transition:all .15s;display:flex}.info-btn:hover{color:var(--text);background:var(--brand-accent-bg)}.info-btn:active{transform:scale(.95)}.info-modal__backdrop{-webkit-backdrop-filter:blur(4px);z-index:3000;padding:1rem;padding-top:max(4rem,env(safe-area-inset-top,0px) + 3rem);background:#0009;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.info-modal{background:var(--panel-solid);width:100%;max-width:480px;max-height:calc(100vh - 5rem);border-radius:1rem;flex-direction:column;max-height:calc(100dvh - 5rem);margin-bottom:2rem;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 32px #0000004d}.info-modal__close{background:var(--bg);border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text-muted);z-index:1;border-radius:.5rem;justify-content:center;align-items:center;transition:all .15s;display:flex;position:absolute;top:.75rem;right:.75rem}.info-modal__close:hover{background:var(--brand-accent-bg);color:var(--text);border-color:var(--brand-accent)}.info-modal__title{color:var(--text);border-bottom:1px solid var(--border);flex-shrink:0;margin:0;padding:1.25rem 3.5rem 1.25rem 1.5rem;font-size:1.25rem;font-weight:700}.info-modal__content{flex:1;padding:1rem 1.5rem;overflow-y:auto}.info-modal__section{margin-bottom:1.5rem}.info-modal__section:last-child{margin-bottom:0}.info-modal__section h3{color:var(--text);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .75rem;font-size:.875rem;font-weight:600}.info-modal__list{margin:0;padding:0;list-style:none}.info-modal__list li{border-bottom:1px solid var(--border);color:var(--text);padding:.625rem 0;font-size:.875rem}.info-modal__list li:last-child{border-bottom:none}.info-modal__list--compact li{padding:.375rem 0;font-size:.8125rem}.info-modal__cookie-key{background:var(--brand-accent);color:#1a1a1a;border-radius:.25rem;padding:.1rem .4rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;font-weight:600;display:inline-block}.info-modal__source{color:var(--text-muted);font-size:.8125rem}.info-modal__source a{color:var(--brand-accent);align-items:center;gap:.25rem;text-decoration:none;display:inline-flex}.info-modal__source a:hover{text-decoration:underline}.info-modal__text{color:var(--text-muted);margin:0 0 .75rem;font-size:.875rem;line-height:1.5}.info-modal__footer{border-top:1px solid var(--border);text-align:center;flex-shrink:0;padding:1rem 1.5rem}.info-modal__footer p{color:var(--text-muted);margin:0;font-size:.8125rem}.info-modal__footer strong{color:var(--text)}@media (max-width:768px){.info-modal__backdrop{align-items:flex-end;padding:0}.info-modal{max-width:100%;max-height:85vh;border-radius:1.25rem 1.25rem 0 0;max-height:85dvh;margin-bottom:0}.info-modal__title{padding:1rem 3rem 1rem 1.25rem;font-size:1.125rem}.info-modal__close{width:36px;height:36px;top:.625rem;right:.625rem}.info-modal__content{padding:.75rem 1.25rem;padding-bottom:max(1rem,env(safe-area-inset-bottom,0px))}.info-modal__section{margin-bottom:1.25rem}.info-modal__section h3{font-size:.8125rem}.info-modal__list li{padding:.5rem 0;font-size:.8125rem}.info-modal__source{font-size:.75rem}.info-modal__text{font-size:.8125rem}.info-modal__footer{padding:.75rem 1.25rem;padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px))}.info-modal__footer p{font-size:.75rem}.theme-switcher__toggle,.language-switcher__toggle{width:36px;height:36px}.language-switcher__flag{font-size:.875rem}}@media (max-width:768px) and (hover:none) and (pointer:coarse){.bottom-sheet{border-radius:1.25rem 1.25rem 0 0;max-height:min(75dvh,75vh)}.bottom-sheet__row{padding:.75rem 0}.bottom-sheet__close{width:44px;height:44px;font-size:1.25rem}.route-filter__btn{width:40px;height:40px;font-size:.8rem}.route-filter__btn--all{height:40px;padding:0 .625rem;font-size:.7rem}.stop-filter__toggle{height:40px;padding:0 .75rem}.route-filter[data-lang=kl] .route-filter__btn--all{white-space:nowrap;min-width:max-content;padding:0 .5rem;font-size:.6rem}.top-bar__right{gap:.5rem}.top-bar__status{gap:.375rem}.top-bar__vehicle-count{font-size:.875rem}.top-bar__stale-count{display:none}.theme-switcher__toggle,.language-switcher__toggle{width:40px;height:40px}}@supports (padding-top:env(safe-area-inset-top)){.top-bar{padding-top:max(.75rem,env(safe-area-inset-top));padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}.bottom-sheet__content{padding-bottom:max(1rem,env(safe-area-inset-bottom))}}.detail-panel__backdrop{z-index:2000;pointer-events:none;position:fixed;inset:0}.detail-panel{background:var(--panel-solid);pointer-events:all;border-radius:.75rem;width:320px;max-height:50vh;padding:1rem;animation:.2s ease-out fadeSlideIn;position:fixed;bottom:1rem;left:1rem;overflow-y:auto;box-shadow:0 4px 20px #00000026}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.detail-panel__close{background:var(--bg);cursor:pointer;width:28px;height:28px;color:var(--text);border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:flex;position:absolute;top:.75rem;right:.75rem}.detail-panel__close:hover{background:var(--border)}.stop-popup{min-width:180px}.stop-popup__heading{margin-top:.4rem}.stop-popup__heading-title{color:var(--text-muted);align-items:center;gap:.35rem;margin-bottom:.25rem;font-size:.75rem;display:flex}.stop-popup__heading-list{flex-wrap:wrap;gap:.3rem;display:flex}.stop-popup__route-badges{flex-wrap:wrap;gap:.3rem;margin-top:.35rem;margin-bottom:.25rem;padding-right:1.5rem;display:flex}.stop-popup__route-badge{color:#fff;text-shadow:0 1px 1px #00000059;cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;min-width:24px;height:22px;padding:0 .4rem;font-size:.7rem;font-weight:600;transition:transform .15s,box-shadow .15s;display:inline-flex}.stop-popup__route-badge:hover{transform:scale(1.08)}.stop-popup__route-badge--active{min-width:30px;height:26px;box-shadow:0 0 0 2px var(--panel-solid),0 0 0 4px currentColor;font-size:.8rem}.stop-popup__route-badge--x3{text-shadow:0 0 3px #00b047,0 0 6px #00b047;background-size:11px 11px;background-image:repeating-linear-gradient(-45deg,#00b047 0 4px,#006425 4px 8px)!important}html.landscape-mobile .stop-popup{min-width:160px;max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 4rem);max-width:calc(100dvw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 4rem)}html.landscape-mobile .stop-popup__route-badges{flex-wrap:wrap;gap:.25rem;max-width:100%}html.landscape-mobile .stop-popup__route-badge{min-width:22px;height:20px;padding:0 .3rem;font-size:.65rem}html.landscape-mobile .stop-popup__route-badge--active{min-width:26px;height:24px;font-size:.7rem}html.landscape-mobile .stop-popup__schedule{max-width:100%}html.landscape-mobile .stop-schedule{flex-wrap:wrap;max-width:100%}html.landscape-mobile .stop-schedule__time{padding:.1rem .25rem;font-size:.6rem}
