:root{--bg-panel: rgba(15, 15, 25, .88);--bg-panel-blur: 20px;--bg-search: rgba(15, 15, 25, .92);--bg-card: rgba(255, 255, 255, .04);--bg-card-hover: rgba(255, 255, 255, .08);--border-subtle: rgba(255, 255, 255, .08);--border-focus: rgba(77, 171, 247, .5);--text-primary: #f0f0f5;--text-secondary: #8888aa;--text-tertiary: #5a5a78;--accent: #4dabf7;--accent-glow: rgba(77, 171, 247, .25);--accent-deep: #228be6;--positive: #51cf66;--positive-bg: rgba(81, 207, 102, .12);--negative: #ff6b6b;--negative-bg: rgba(255, 107, 107, .12);--neutral: #ffd43b;--neutral-bg: rgba(255, 212, 59, .12);--radius: 12px;--radius-sm: 8px;--radius-xs: 6px;--panel-width: 380px;--search-width: 480px;--transition: .3s cubic-bezier(.4, 0, .2, 1);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--shadow: 0 8px 32px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(77, 171, 247, .15);--body-bg: #0a0a14}:root[data-theme=light]{--bg-panel: rgba(255, 255, 255, .9);--bg-search: rgba(255, 255, 255, .95);--bg-card: rgba(0, 0, 0, .04);--bg-card-hover: rgba(0, 0, 0, .08);--border-subtle: rgba(0, 0, 0, .1);--border-focus: rgba(77, 171, 247, .5);--text-primary: #1c1c1e;--text-secondary: #5a5a78;--text-tertiary: #8888aa;--shadow: 0 8px 32px rgba(0, 0, 0, .1);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .15);--shadow-glow: 0 0 20px rgba(77, 171, 247, .2);--body-bg: #f8f9fa}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);overflow:hidden;background:var(--body-bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#map{width:100vw;height:100vh;height:100dvh;position:fixed;top:0;left:0;z-index:1}#search-container{position:absolute;top:24px;left:50%;transform:translate(-50%);width:100%;max-width:var(--search-width);z-index:3000;display:flex;flex-direction:column;gap:8px;padding:0 16px}#search-wrapper{position:relative;display:flex;align-items:center}#search-icon{position:absolute;left:16px;color:var(--text-tertiary);pointer-events:none;z-index:1}#search-input{width:100%;padding:14px 40px 14px 44px;font-family:var(--font);font-size:15px;font-weight:500;color:var(--text-primary);background:var(--bg-search);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border:1px solid var(--border-subtle);border-radius:var(--radius);outline:none;box-shadow:var(--shadow);transition:var(--transition);letter-spacing:.01em}#search-clear{position:absolute;right:12px;width:24px;height:24px;border:none;background:var(--bg-card);color:var(--text-secondary);border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}#search-clear:hover{background:var(--bg-card-hover);color:var(--text-primary)}#search-clear.hidden{display:none}#search-input::placeholder{color:var(--text-tertiary);font-weight:400}#search-input:focus{border-color:var(--border-focus);box-shadow:var(--shadow),var(--shadow-glow),0 0 0 3px var(--accent-glow)}#search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--bg-search);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--border-subtle);border-radius:var(--radius);box-shadow:var(--shadow-lg);max-height:420px;overflow-y:auto;overscroll-behavior:contain;transition:opacity var(--transition-fast),transform var(--transition-fast);transform-origin:top center}#search-results.hidden{display:none}#search-results::-webkit-scrollbar{width:4px}#search-results::-webkit-scrollbar-track{background:transparent}#search-results::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}.search-group{padding:6px 0}.search-group+.search-group{border-top:1px solid var(--border-subtle)}.search-group-label{padding:8px 16px 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary)}.search-result-item{display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;transition:background var(--transition-fast);border-radius:0}.search-result-item:hover{background:var(--bg-card-hover)}.search-result-icon{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);font-size:16px;background:var(--bg-card)}.search-result-icon.station{background:#4dabf71f}.search-result-icon.stop{background:#8888aa1f}.search-result-icon.route{background:#ffd43b1f}.search-result-text{flex:1;min-width:0}.search-result-name{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-name mark{background:var(--accent-glow);color:var(--accent);border-radius:2px;padding:0 1px}.search-result-subtitle{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.search-route-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:4px;font-size:13px;font-weight:700;min-width:28px}.draggable-close{position:absolute;top:12px;right:12px;width:24px;height:24px;color:var(--text-secondary);font-size:18px;border-radius:var(--radius-xs);background:var(--bg-card);display:flex;align-items:center;justify-content:center;text-decoration:none;border:none;transition:var(--transition-fast);cursor:pointer;z-index:10;line-height:1}.draggable-close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.custom-tooltip-content{display:flex;flex-direction:column;max-height:400px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 40px 12px 16px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.panel-header-content{flex:1;min-width:0}.panel-title{font-size:18px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.panel-subtitle{font-size:13px;color:var(--text-secondary);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:12px 0}.panel-body::-webkit-scrollbar{width:4px}.panel-body::-webkit-scrollbar-track{background:transparent}.panel-body::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}.arrival-row{display:flex;align-items:center;gap:10px;padding:10px 20px;transition:background var(--transition-fast)}.arrival-row:hover{background:var(--bg-card)}.line-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:26px;padding:0 6px;border-radius:5px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#fff;background:var(--accent-deep)}.arrival-info{flex:1;min-width:0}.arrival-headsign{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.arrival-meta{display:flex;align-items:center;gap:8px;margin-top:2px}.arrival-eta{flex-shrink:0;text-align:right;min-width:52px}.arrival-eta-value{font-size:16px;font-weight:700;color:var(--text-primary);line-height:1.2}.arrival-eta-value.due{color:var(--accent)}.arrival-eta-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.delay-indicator{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600}.delay-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.delay-dot.on-time{background:var(--positive)}.delay-dot.slight{background:var(--neutral)}.delay-dot.late{background:var(--negative)}.delay-text.on-time{color:var(--positive)}.delay-text.slight{color:var(--neutral)}.delay-text.late{color:var(--negative)}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.status-badge.live{background:var(--positive-bg);color:var(--positive)}.status-badge.live:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--positive);animation:pulse-dot 2s ease-in-out infinite}.status-badge.scheduled{background:#8888aa1f;color:var(--text-secondary)}.platform-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:#8888aa1f;color:var(--text-secondary)}.platform-badge.platform-changed{background:var(--negative-bg);color:var(--negative)}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.vs-info-messages:not(:empty){padding:12px 20px 0}.vs-warning{padding:8px 12px;border-radius:8px;background:var(--neutral-bg);color:var(--neutral);font-size:12px;font-weight:500;line-height:1.4}.bus-detail-grid{padding:16px 20px;display:flex;flex-direction:column;gap:16px}.bus-detail-row{display:flex;justify-content:space-between;gap:12px}.bus-detail-label{font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;min-width:90px;flex-shrink:0;padding-top:2px}.bus-detail-value{font-size:14px;font-weight:500;color:var(--text-primary);text-align:end}.bus-detail-value.positive{color:var(--positive)}.bus-detail-value.negative{color:var(--negative)}.bus-detail-value.neutral{color:var(--neutral)}.bus-detail-divider{height:1px;background:var(--border-subtle);margin:0 20px}.bus-marker-wrapper{background:none!important;border:none!important}.bus-marker-pill{display:inline-flex;align-items:center;background:#fff;border-radius:5px;box-shadow:0 2px 6px #00000047,0 0 0 1.5px #00000014;overflow:hidden;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;white-space:nowrap}.bus-marker-pill:hover{transform:scale(1.12);box-shadow:0 4px 14px #0006,0 0 0 2px #ffffff40;z-index:10000!important}.bus-marker-logo-wrap{display:flex;align-items:center;justify-content:center;background:#fff;padding:0 3px;height:100%;flex-shrink:0}.bus-marker-logo{display:block;width:auto}.bus-marker-num{padding:0 6px 0 5px;font-family:var(--font);font-weight:700;color:#fff;flex-shrink:0;letter-spacing:.01em}.bus-marker-pill.on-time .bus-marker-num{background:var(--positive)}.bus-marker-pill.early .bus-marker-num{background:var(--accent)}.bus-marker-pill.slight .bus-marker-num{background:var(--neutral);color:#1a1a2e}.bus-marker-pill.late .bus-marker-num{background:var(--negative)}.bus-marker-pill.train-pill .train-num{background:#003082;color:#ffc917}.panel-loading{display:flex;align-items:center;justify-content:center;padding:40px 20px;color:var(--text-tertiary);font-size:13px;gap:8px}.panel-loading:before{content:"";width:16px;height:16px;border:2px solid var(--border-subtle);border-top-color:var(--accent);border-radius:50%;animation:spinner .8s linear infinite}@keyframes spinner{to{transform:rotate(360deg)}}.panel-empty{padding:40px 20px;text-align:center;color:var(--text-tertiary);font-size:13px}.station-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:#4dabf71f;color:var(--accent);margin-left:8px;vertical-align:middle}.leaflet-control-zoom{border:none!important;box-shadow:var(--shadow)!important;border-radius:var(--radius-sm)!important;overflow:hidden}.leaflet-control-zoom a{background:var(--bg-panel)!important;color:var(--text-primary)!important;border-bottom:1px solid var(--border-subtle)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);width:36px!important;height:36px!important;line-height:36px!important;font-size:18px!important;transition:background var(--transition-fast)!important}.leaflet-control-zoom a:hover{background:var(--bg-card-hover)!important}.leaflet-control-zoom a:last-child{border-bottom:none!important}.leaflet-control-attribution{background:#0f0f19b3!important;color:var(--text-tertiary)!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:10px!important;padding:2px 8px!important}.leaflet-control-attribution a{color:var(--text-secondary)!important}.leaflet-popup-content-wrapper{background:var(--bg-panel)!important;color:var(--text-primary)!important;border-radius:var(--radius-sm)!important;box-shadow:var(--shadow)!important;backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur))}.leaflet-popup-tip{background:var(--bg-panel)!important}@media(max-width:768px){#search-container{width:calc(100vw - 32px)}#search-results{max-height:45dvh!important}#attention-popups{top:90px!important;width:calc(100vw - 32px)!important;max-height:calc(100dvh - 98px)!important;overflow-y:auto!important}.panel-title{font-size:16px}.bus-detail-row{flex-direction:column;gap:4px}.bus-detail-label{min-width:auto}.floating-controls{max-width:calc(100vw - 24px);bottom:12px!important;padding:0!important;border:none!important;background:transparent;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.floating-controls.fc-open{padding:8px!important;border:1px solid var(--border-subtle)!important;background:var(--bg-panel);box-shadow:var(--shadow)!important;backdrop-filter:blur(var(--bg-panel-blur))!important;-webkit-backdrop-filter:blur(var(--bg-panel-blur))!important}.fc-fab{display:flex!important;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--bg-panel);border:1px solid var(--border-subtle);box-shadow:var(--shadow);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));color:var(--text-primary);font-size:20px;cursor:pointer}.floating-controls.fc-open .fc-fab{display:none!important}.controls-row{display:none!important;flex-wrap:wrap;justify-content:center;max-width:148px}.floating-controls.fc-open .controls-row{display:flex!important}.floating-controls.fc-rentals-step .controls-row{max-width:220px}.floating-controls.fc-rentals-step .controls-row>.control-btn{display:none}.rentals-control-group:hover .rentals-submenu{display:none!important}.floating-controls.fc-rentals-step .rentals-submenu{display:block!important;position:static;transform:none;width:100%;min-width:0;padding:0;margin-top:8px;border:none;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.vehicle-sidebar{inset:auto 12px 0!important;width:auto!important;height:55dvh!important;border-radius:var(--radius) var(--radius) 0 0!important;border-left:none!important;border-right:none!important;border-bottom:none!important;transform:translateY(105%)!important;z-index:3200!important;transition:transform var(--transition),height var(--transition)!important}.vehicle-sidebar.vs-open{transform:translateY(0)!important}.vehicle-sidebar.vs-expanded{height:92dvh!important}.vs-drag-handle{display:flex!important;justify-content:center;align-items:center;padding:10px 0 6px;cursor:grab;touch-action:none;flex:none}.vs-drag-handle:before{content:"";width:36px;height:4px;border-radius:2px;background:var(--border-subtle)}.vehicle-sidebar .custom-tooltip-content{overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.vehicle-sidebar .panel-header{position:sticky;top:0;z-index:1;background:var(--bg-panel)}.vehicle-sidebar .vs-body,.vehicle-sidebar .vs-upcoming-stops{flex:none;overflow:visible}.vehicle-sidebar .vs-upcoming-list{flex:none;overflow-y:visible}#stats-panel,#national-disruptions-panel{inset:auto 12px 0!important;width:auto!important;max-height:80dvh!important;border-radius:var(--radius) var(--radius) 0 0!important;border-left:none!important;border-right:none!important;border-bottom:none!important;transform:translateY(105%)!important;z-index:3200!important}#stats-panel.open,#national-disruptions-panel.open{transform:translateY(0) translate(0)!important}}@media(pointer:coarse){.control-btn{width:44px!important;height:44px!important}}.stop-tooltip{background:var(--bg-panel)!important;color:var(--text-primary)!important;border:1px solid var(--border-subtle)!important;border-radius:var(--radius-xs)!important;padding:4px 10px!important;font-family:var(--font)!important;font-size:12px!important;font-weight:500!important;box-shadow:var(--shadow)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.stop-tooltip:before{border-top-color:var(--bg-panel)!important}.arrival-row.is-realtime{cursor:pointer}.arrival-row.is-realtime:hover{background-color:#ffffff0d}.floating-controls{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:3000;display:flex;flex-direction:column;gap:8px;padding:8px;border-radius:var(--radius);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border:1px solid var(--border-subtle);box-shadow:var(--shadow)}.fc-fab{display:none}.controls-row{display:flex;gap:8px;justify-content:center}.control-btn{width:40px;height:40px;border-radius:var(--radius);border:1px solid transparent;background:var(--bg-card);color:var(--text-primary);display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:var(--transition-fast)}.control-btn:hover{background:var(--bg-card-hover)}.control-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.lang-btn{font-size:14px;font-weight:700}#theme-picker-modal{position:fixed;inset:0;z-index:5000;display:none;pointer-events:none}#theme-picker-modal.open{display:block}.theme-picker-dock{position:fixed;left:0;right:0;bottom:88px;width:100%;padding:14px 24px 20px;box-sizing:border-box;pointer-events:auto;z-index:1}.theme-picker-dock-backdrop{position:fixed;left:0;right:0;bottom:0;height:320px;background:linear-gradient(to top,rgba(0,0,0,.88) 0%,rgba(0,0,0,.45) 45%,transparent 100%);pointer-events:none;z-index:0}.theme-picker-dock--enter{animation:theme-picker-dock-in .26s ease-out}.theme-picker-dock-backdrop--enter{animation:theme-picker-dock-backdrop-in .26s ease-out}@keyframes theme-picker-dock-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes theme-picker-dock-backdrop-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.theme-picker-dock--enter,.theme-picker-dock-backdrop--enter{animation:none}}.theme-picker-title{position:relative;z-index:1;margin:0 0 8px 4px;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6)}.theme-swatch-row{position:relative;z-index:1;display:flex;gap:10px;overflow-x:auto}.theme-swatch{position:relative;flex:1 1 130px;min-width:130px;height:140px;border-radius:var(--radius-sm);border:2px solid transparent;background-size:cover;background-position:center;background-color:var(--bg-card);cursor:pointer;overflow:hidden;padding:0}.theme-swatch:hover,.theme-swatch:focus-visible{border-color:var(--border-focus)}.theme-swatch.selected{border-color:var(--accent);box-shadow:var(--shadow-glow)}.theme-swatch-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 6px 4px;font-size:13px;color:#fff;text-align:left;background:linear-gradient(to top,rgba(0,0,0,.75),transparent)}.animated-route-line{animation:dash 30s linear infinite}@keyframes dash{to{stroke-dashoffset:-1000}}.tooltip-footer{padding:8px 16px;border-top:1px solid var(--border-subtle);font-size:11px;color:var(--text-tertiary);text-align:center}.tooltip-footer:empty{display:none}.tooltip-footer a{color:var(--text-secondary);text-decoration:none}.tooltip-footer a:hover{color:var(--text-primary);text-decoration:underline}#stats-panel{position:fixed;right:16px;top:16px;bottom:16px;width:340px;z-index:3000;display:flex;flex-direction:column;overflow:hidden;transform:translate(calc(100% + 24px));transition:transform var(--transition);pointer-events:none;background:var(--bg-panel);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border:1px solid var(--border-subtle);border-radius:var(--radius);box-shadow:var(--shadow-lg)}#stats-panel.open{transform:translate(0);pointer-events:auto}.control-btn.disruptions-btn{position:relative}.disruption-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--negative, #e03131);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}.disruption-item{padding:12px 16px;margin:8px 16px;border-radius:8px;border-left:3px solid}.disruption-item.disruption-severe{background:var(--negative-bg, rgba(224, 49, 49, .1));border-left-color:var(--negative, #e03131)}.disruption-item.disruption-maintenance{background:var(--neutral-bg);border-left-color:var(--neutral, #f08c00)}.disruption-item-header{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;margin-bottom:4px}.disruption-title{font-size:13px;font-weight:600;margin-bottom:4px}.disruption-message{font-size:12px;line-height:1.4;color:var(--text-secondary)}.disruption-summary{display:flex;gap:8px;margin:8px 16px}.disruption-count-pill{display:inline-flex;align-items:center;gap:4px;border-radius:var(--radius-xs);padding:2px 8px;font-size:12px;font-weight:600;border:none;font-family:inherit}.disruption-count-pill.disruption-count-severe{background:var(--negative-bg, rgba(224, 49, 49, .1));color:var(--negative, #e03131)}.disruption-count-pill.disruption-count-maintenance{background:var(--neutral-bg);color:var(--neutral, #f08c00);cursor:pointer;transition:var(--transition-fast)}.disruption-count-pill.disruption-count-maintenance:hover{background:var(--bg-card-hover)}.disruption-count-pill.dimmed{opacity:.45}.vs-info-messages .disruption-item{position:relative;margin:0 0 12px;padding:16px 20px}.vs-disruption-nav{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:4px}.vs-disruption-nav .vs-chevron{font-size:13px}.vs-disruption-counter{font-size:10px;color:var(--text-tertiary)}#national-disruptions-panel{position:fixed;right:16px;top:16px;bottom:16px;width:340px;z-index:3000;display:flex;flex-direction:column;overflow:hidden;transform:translate(calc(100% + 24px));transition:transform var(--transition);pointer-events:none;background:var(--bg-panel);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border:1px solid var(--border-subtle);border-radius:var(--radius);box-shadow:var(--shadow-lg)}#national-disruptions-panel.open{transform:translate(0);pointer-events:auto}.stats-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.stats-panel-title{font-size:16px;font-weight:700;color:var(--text-primary)}.stats-panel-body{flex:1;display:flex;flex-direction:column;overflow:hidden}.stats-detail-body{flex-shrink:0;padding:16px;border-bottom:1px solid var(--border-subtle)}.stats-summary-row{display:flex;flex-direction:column;gap:8px}.stats-summary-item{display:flex;align-items:center;gap:10px}.stats-summary-label{flex:1;color:var(--text-secondary);font-size:13px}.stats-summary-value{font-weight:700;font-size:15px;color:var(--text-primary)}.stats-summary-value.positive{color:var(--positive)}.stats-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-tertiary)}.stats-operators-section{flex:1;display:flex;flex-direction:column;overflow:hidden}.stats-operators-header{padding:12px 16px 8px;flex-shrink:0}.stats-operator-list{flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding:0 16px 16px;display:flex;flex-direction:column;gap:4px}.stats-operator-list::-webkit-scrollbar{width:4px}.stats-operator-list::-webkit-scrollbar-track{background:transparent}.stats-operator-list::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}.stats-operator-row{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg-card)}.stats-operator-header{display:flex;align-items:center;justify-content:space-between}.stats-operator-name{font-size:14px;font-weight:600;color:var(--text-primary)}.stats-operator-logo{height:20px;width:auto;max-width:110px;object-fit:contain;background:#fff;border-radius:3px;padding:2px 4px}.stats-operator-count{font-size:14px;font-weight:700;color:var(--text-primary)}.stats-punctuality-bar{display:flex;align-items:center;gap:10px}.stats-punctuality-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary)}.stats-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.stats-dot.on-time{background:var(--positive)}.stats-dot.delayed{background:var(--negative)}.stats-dot.early{background:var(--accent)}.stats-panel-footer{flex-shrink:0;padding:16px;border-top:1px solid var(--border-subtle)}.stats-callout{padding:12px;border-radius:var(--radius-sm);background:var(--negative-bg);display:flex;flex-direction:column;gap:2px}.stats-callout-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--negative)}.stats-callout-value{font-size:14px;font-weight:600;color:var(--text-primary)}.stats-callout-sub{font-size:12px;color:var(--text-secondary)}.vs-drag-handle{display:none}.vehicle-sidebar{position:fixed;top:16px;right:16px;bottom:16px;width:340px;z-index:900;display:flex;flex-direction:column;background:var(--bg-panel);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border:1px solid var(--border-subtle);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden;transform:translate(calc(100% + 16px));transition:transform var(--transition);pointer-events:none}.vehicle-sidebar.vs-open{transform:translate(0);pointer-events:all}.vehicle-sidebar .custom-tooltip-content{max-height:none;flex:1;display:flex;flex-direction:column;overflow:hidden}.vs-body{flex:1;display:flex;flex-direction:column;overflow:hidden}.vs-detail-body{flex-shrink:0;border-bottom:1px solid var(--border-subtle)}.vs-upcoming-stops{flex:1;display:flex;flex-direction:column;overflow:hidden}.vs-upcoming-header{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;cursor:pointer;user-select:none;flex-shrink:0;border-bottom:1px solid var(--border-subtle)}.vs-upcoming-header:hover{background:var(--bg-card)}.vs-upcoming-label{font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em}.vs-chevron{background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:0;font-size:14px;display:inline-flex;align-items:center;transition:transform var(--transition-fast);line-height:1}.vs-chevron.vs-expanded{transform:rotate(180deg)}.vs-upcoming-list{flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;position:relative}.vs-upcoming-list::-webkit-scrollbar{width:4px}.vs-upcoming-list::-webkit-scrollbar-track{background:transparent}.vs-upcoming-list::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}.vs-upcoming-list:before{content:"";position:absolute;left:20px;top:0;bottom:0;width:1px;background:var(--border-subtle);pointer-events:none;z-index:0}.vs-upcoming-list--empty:before{display:none}.vs-stop-row{display:flex;align-items:center;justify-content:space-between;padding:7px 16px 7px 38px;gap:12px;position:relative;transition:background var(--transition-fast)}.vs-stop-row:hover{background:var(--bg-card)}.vs-timeline-dot{position:absolute;left:20px;top:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:var(--accent-deep);flex-shrink:0;z-index:1}.vs-stop-name{font-size:13px;color:var(--text-secondary);text-decoration:none;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.vs-stop-name:hover{color:var(--text-primary);text-decoration:underline}.vs-stop-meta{display:flex;align-items:center;gap:6px;flex-shrink:0}.vs-stop-platform{display:inline-flex;align-items:center;padding:1px 6px;border-radius:8px;font-size:10px;font-weight:700;background:#4dabf71f;color:var(--accent)}.vs-stop-platform.vs-platform-changed{background:var(--negative-bg);color:var(--negative)}.vs-visited .vs-timeline-dot{background:transparent;border:1.5px solid var(--text-tertiary);width:7px;height:7px}.vs-visited .vs-stop-name,.vs-visited .vs-stop-eta{color:var(--text-tertiary)}.vs-current .vs-timeline-dot{background:var(--text-secondary);width:10px;height:10px}.vs-current .vs-stop-name,.vs-current .vs-stop-eta{color:var(--text-secondary);font-weight:500}.vs-next .vs-timeline-dot{background:var(--accent);width:12px;height:12px;animation:vs-next-breathe 2s ease-in-out infinite}@keyframes vs-next-breathe{0%,to{box-shadow:0 0 0 2px var(--accent-glow)}50%{box-shadow:0 0 0 5px var(--accent-glow)}}.vs-next .vs-stop-name{color:var(--text-primary);font-weight:600}.vs-next .vs-stop-eta{color:var(--accent);font-weight:600}.vs-stop-row:not(.vs-visited):not(.vs-current):not(.vs-next) .vs-stop-name,.vs-stop-row:not(.vs-visited):not(.vs-current):not(.vs-next) .vs-stop-eta{color:var(--accent-deep)}.vs-stop-eta{font-size:13px;font-family:monospace;color:var(--text-secondary);white-space:nowrap;flex-shrink:0;position:relative}.vs-stop-eta[data-tooltip]:hover:before{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);right:0;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-xs);padding:6px 10px;font-size:11px;color:var(--text-secondary);white-space:pre;pointer-events:none;z-index:10;box-shadow:var(--shadow);min-width:140px}.vs-no-data{padding:12px 20px;font-size:13px;color:var(--text-tertiary);font-style:italic}.vs-skeleton{height:16px;background:var(--border-subtle);border-radius:4px;margin:10px 20px;opacity:.5}#attention-popups{position:fixed;top:16px;left:16px;z-index:3000;display:flex;flex-direction:column;gap:12px;width:300px;max-height:calc(100vh - 32px);overflow-y:auto}.spin-border{flex-shrink:0;position:relative;border-radius:var(--radius);padding:2px;overflow:hidden;box-shadow:var(--shadow-lg)}.spin-border:before{content:"";position:absolute;inset:-100%;background:conic-gradient(from 0deg,transparent 0%,transparent 78%,var(--neutral) 92%,var(--accent) 97%,transparent 100%);animation:attention-spin 4s linear infinite}@keyframes attention-spin{to{transform:rotate(360deg)}}.attention-popup-inner{position:relative;z-index:1;background:var(--bg-panel);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));border-radius:calc(var(--radius) - 2px);overflow:hidden}.attention-popup-header{display:flex;align-items:center;gap:8px;padding:14px 16px 8px;font-size:14px;font-weight:700;color:var(--text-primary)}.attention-popup-body{padding:0 16px 12px;font-size:12px;line-height:1.5;color:var(--text-secondary)}.attention-popup-error{padding:0 16px 12px;color:#e05252;font-size:.85em}.attention-popup-details{display:none;padding:12px 16px 16px;font-size:12px;line-height:1.5;color:var(--text-tertiary);border-top:1px solid var(--border-subtle)}.attention-popup-details.open{display:block}.attention-popup-actions{display:flex;gap:8px;padding:0 16px 16px}.attention-popup-actions button{flex:1;padding:8px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;font-family:var(--font);cursor:pointer;border:1px solid transparent}.attention-popup-actions .btn-primary{background:var(--accent);color:#fff}.attention-popup-actions .btn-ghost{background:var(--bg-card);color:var(--text-secondary)}.attention-popup-actions .btn-ghost:hover{background:var(--bg-card-hover)}.location-marker-dot{width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid white;box-shadow:0 0 0 4px var(--accent-glow);animation:pulse-dot 2s ease-in-out infinite}.rentals-control-group{position:relative}.rentals-control-group:before{content:"";position:absolute;left:0;right:0;bottom:100%;height:8px}.rentals-submenu{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);min-width:160px;padding:8px;border-radius:var(--radius-sm);background:var(--bg-panel);border:1px solid var(--border-subtle);box-shadow:var(--shadow);backdrop-filter:blur(var(--bg-panel-blur));-webkit-backdrop-filter:blur(var(--bg-panel-blur));z-index:3001}.rentals-control-group:hover .rentals-submenu{display:block}.rentals-submenu-row{display:flex;align-items:center;gap:8px;padding:4px 6px;font-size:12px;color:var(--text-primary);cursor:pointer;white-space:nowrap}.rentals-submenu-updated{padding:2px 6px 6px;font-size:11px;color:var(--text-tertiary);border-bottom:1px solid var(--border-subtle);margin-bottom:4px;white-space:nowrap}.rental-cluster-wrapper{background:none!important;border:none!important}.rental-cluster-icon{position:relative;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#fff;font-size:16px;box-shadow:0 2px 6px #00000047,0 0 0 1.5px #00000014;cursor:pointer}.rental-cluster-count{position:absolute;bottom:-4px;right:-4px;background:var(--accent);color:#fff;border-radius:10px;padding:1px 5px;font-size:10px;font-weight:700;line-height:1.2}.rental-popup-row{padding:2px 0;font-size:12px;white-space:nowrap}.rental-popup-provider{font-weight:700;margin-top:6px;font-size:12px}.rental-popup-provider:first-child{margin-top:0}.rental-popup-type,.rental-popup-propulsion{color:var(--text-tertiary)}
