@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--accent-r: 230;--accent-g: 0;--accent-b: 125;--accent: rgb(var(--accent-r), var(--accent-g), var(--accent-b));--accent-soft: rgba(var(--accent-r), var(--accent-g), var(--accent-b), .16);--accent-glow: rgba(var(--accent-r), var(--accent-g), var(--accent-b), .45);--bg: #0a0a0c;--panel-bg: rgba(14, 16, 22, .82);--panel-solid: #141418;--panel-border: rgba(255, 255, 255, .08);--panel-inner: rgba(255, 255, 255, .04);--panel-inner-hover: rgba(255, 255, 255, .07);--divider: rgba(255, 255, 255, .06);--chip-bg: rgba(255, 255, 255, .05);--text: #f2f3f5;--text-muted: #9aa0ad;--text-faint: #6b7280;--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--info: #06b6d4;--shadow-panel: 0 12px 48px rgba(0, 0, 0, .45), 0 2px 12px rgba(0, 0, 0, .25);--shadow-popup: 0 12px 40px rgba(0, 0, 0, .45);--radius-sm: 5px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 16px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease-out: cubic-bezier(.2, .8, .2, 1)}body{background:var(--bg);color:var(--text);height:100vh;width:100vw;overflow:hidden;margin:0;font-family:var(--font-sans);box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:inherit}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#fff3}.glass-panel{background:var(--panel-bg);backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2);border:1px solid var(--panel-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-panel);color:var(--text)}.loading-page{height:100vh;width:100vw;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center}.loading-page__title{font-size:1.5rem;font-weight:700;margin-bottom:1rem;animation:pulse 2s ease-in-out infinite}.loading-page__subtitle{font-size:.875rem;color:var(--text-muted)}.loading-page__waiting{font-size:1.25rem}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.error-page{height:100vh;width:100vw;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.error-page__title{font-size:1.875rem;font-weight:700;margin-bottom:1rem;color:var(--danger)}.error-page__message{font-size:1.125rem;margin-bottom:1.5rem}.btn-primary{padding:.5rem 1.5rem;background:var(--accent);border:none;color:#fff;border-radius:var(--radius-md);font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:opacity .2s}.btn-primary:hover{opacity:.85}.not-found{padding:2rem;text-align:center}.not-found__title{font-size:3.75rem;font-weight:700;color:var(--danger);margin-bottom:1rem}.not-found__subtitle{font-size:1.5rem;font-weight:600;margin-bottom:1.5rem}.not-found__message{margin-bottom:2rem}.not-found__link{display:inline-block;background:var(--accent);color:#fff;font-weight:700;padding:.5rem 1rem;border-radius:var(--radius-md);text-decoration:none;transition:opacity .2s}.not-found__link:hover{opacity:.85}.bike-marker{position:relative;width:36px;height:36px;cursor:pointer}.bike-marker__inner{position:relative;width:36px;height:36px;border-radius:50%;border:2px solid #fff;display:grid;place-items:center;color:#fff;font-family:Inter,sans-serif;font-size:12px;font-weight:700;letter-spacing:.02em;line-height:1;z-index:1;overflow:hidden;box-shadow:0 2px 10px #00000040,0 0 0 3px var(--rider-color, var(--accent)),0 0 0 7px color-mix(in srgb,var(--rider-color, var(--accent)) 22%,transparent);transition:transform .2s,box-shadow .2s}.bike-marker.active .bike-marker__inner{transform:scale(1.15);box-shadow:0 4px 16px #00000059,0 0 0 3px var(--rider-color, var(--accent)),0 0 0 9px color-mix(in srgb,var(--rider-color, var(--accent)) 38%,transparent)}.bike-marker__pulse{position:absolute;top:50%;left:50%;width:36px;height:36px;margin-top:-18px;margin-left:-18px;border-radius:50%;border:2px solid var(--rider-color, var(--accent));opacity:0;z-index:0;animation:bike-pulse 2s ease-out infinite}@keyframes bike-pulse{0%{transform:scale(.9);opacity:.7}to{transform:scale(1.6);opacity:0}}.bike-marker__avatar-img{width:100%;height:100%;object-fit:cover}.bike-marker--offline .bike-marker__inner{filter:grayscale(1);opacity:.5}.bike-marker--offline .bike-marker__pulse{animation:none;opacity:0}.ws-marker{width:28px;height:28px;border-radius:50%;background:var(--panel-bg);border:2px solid var(--accent);display:grid;place-items:center;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 2px 8px #0000004d;z-index:2}.ws-marker:hover{transform:scale(1.2)}.ws-marker.active{background:var(--accent);transform:scale(1.15);box-shadow:0 0 0 4px rgba(var(--accent-r),var(--accent-g),var(--accent-b),.3),0 2px 8px #0000004d}.ws-marker__icon{font-size:13px;line-height:1}/*!
 *  Weather Icons 1.3
 *  Updated November 30th, 2014
 *  Weather themed icons for Bootstrap
 *  ------------------------------------------------------------------------------
* Maintained at http://erikflowers.github.io/weather-icons
 *  http://twitter.com/Erik_UX
 *
 *  License
 *  ------------------------------------------------------------------------------
 *  - Fpmt licensed under SIL OFL 1.1 -
 *    http://scripts.sil.org/OFL
 *  - CSS and LESS are licensed under MIT License -
 *    http://opensource.org/licenses/mit-license.html
 *  - Documentation licensed under CC BY 3.0 -
 *    http://creativecommons.org/licenses/by/3.0/
 *  - Inspired by and works great as a companion with Font Awesome
 *    "Font Awesome by Dave Gandy - http://fontawesome.io"
 *
 *  Weather Icons Bootstrap Package Author - Erik Flowers - erik@helloerik.com
 *  ------------------------------------------------------------------------------
 *  Email: erik@helloerik.com
 *  Twitter: http://twitter.com/Erik_UX
 */@font-face{font-family:weathericons;src:url(/assets/weathericons-regular-webfont-WKIYpmHz.eot);src:url(/assets/weathericons-regular-webfont-WKIYpmHz.eot?#iefix) format("embedded-opentype"),url(/assets/weathericons-regular-webfont-B-i0YZwS.woff) format("woff"),url(/assets/weathericons-regular-webfont-dBAeXXmo.ttf) format("truetype"),url(/assets/weathericons-regular-webfont-BhRdsjD7.svg#weathericons-regular-webfontRg) format("svg");font-weight:400;font-style:normal}.wi{display:inline-block;font-family:weathericons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wi-day-cloudy-gusts:before{content:""}.wi-day-cloudy-windy:before{content:""}.wi-day-cloudy:before{content:""}.wi-day-fog:before{content:""}.wi-day-hail:before{content:""}.wi-day-lightning:before{content:""}.wi-day-rain-mix:before{content:""}.wi-day-rain-wind:before{content:""}.wi-day-rain:before{content:""}.wi-day-showers:before{content:""}.wi-day-snow:before{content:""}.wi-day-sprinkle:before{content:""}.wi-day-sunny-overcast:before{content:""}.wi-day-sunny:before{content:""}.wi-day-storm-showers:before{content:""}.wi-day-thunderstorm:before{content:""}.wi-cloudy-gusts:before{content:""}.wi-cloudy-windy:before{content:""}.wi-cloudy:before{content:""}.wi-fog:before{content:""}.wi-hail:before{content:""}.wi-rain-mix:before{content:""}.wi-rain-wind:before{content:""}.wi-rain:before{content:""}.wi-showers:before{content:""}.wi-snow:before{content:""}.wi-sprinkle:before{content:""}.wi-storm-showers:before{content:""}.wi-thunderstorm:before{content:""}.wi-windy:before{content:""}.wi-night-alt-cloudy-gusts:before{content:""}.wi-night-alt-cloudy-windy:before{content:""}.wi-night-alt-hail:before{content:""}.wi-night-alt-lightning:before{content:""}.wi-night-alt-rain-mix:before{content:""}.wi-night-alt-rain-wind:before{content:""}.wi-night-alt-rain:before{content:""}.wi-night-alt-showers:before{content:""}.wi-night-alt-snow:before{content:""}.wi-night-alt-sprinkle:before{content:""}.wi-night-alt-storm-showers:before{content:""}.wi-night-alt-thunderstorm:before{content:""}.wi-night-clear:before{content:""}.wi-night-cloudy-gusts:before{content:""}.wi-night-cloudy-windy:before{content:""}.wi-night-cloudy:before{content:""}.wi-night-hail:before{content:""}.wi-night-lightning:before{content:""}.wi-night-rain-mix:before{content:""}.wi-night-rain-wind:before{content:""}.wi-night-rain:before{content:""}.wi-night-showers:before{content:""}.wi-night-snow:before{content:""}.wi-night-sprinkle:before{content:""}.wi-night-storm-showers:before{content:""}.wi-night-thunderstorm:before{content:""}.wi-celsius:before{content:""}.wi-cloud-down:before{content:""}.wi-cloud-refresh:before{content:""}.wi-cloud-up:before{content:""}.wi-cloud:before{content:""}.wi-degrees:before{content:""}.wi-down-left:before{content:""}.wi-down:before{content:""}.wi-fahrenheit:before{content:""}.wi-horizon-alt:before{content:""}.wi-horizon:before{content:""}.wi-left:before{content:""}.wi-lightning:before{content:""}.wi-night-fog:before{content:""}.wi-refresh-alt:before{content:""}.wi-refresh:before{content:""}.wi-right:before{content:""}.wi-sprinkles:before{content:""}.wi-strong-wind:before{content:""}.wi-sunrise:before{content:""}.wi-sunset:before{content:""}.wi-thermometer-exterior:before{content:""}.wi-thermometer-internal:before{content:""}.wi-thermometer:before{content:""}.wi-tornado:before{content:""}.wi-up-right:before{content:""}.wi-up:before{content:""}.wi-wind-west:before{content:""}.wi-wind-south-west:before{content:""}.wi-wind-south-east:before{content:""}.wi-wind-south:before{content:""}.wi-wind-north-west:before{content:""}.wi-wind-north-east:before{content:""}.wi-wind-north:before{content:""}.wi-wind-east:before{content:""}.wi-smoke:before{content:""}.wi-dust:before{content:""}.wi-snow-wind:before{content:""}.wi-day-snow-wind:before{content:""}.wi-night-snow-wind:before{content:""}.wi-night-alt-snow-wind:before{content:""}.wi-day-sleet-storm:before{content:""}.wi-night-sleet-storm:before{content:""}.wi-night-alt-sleet-storm:before{content:""}.wi-day-snow-thunderstorm:before{content:""}.wi-night-snow-thunderstorm:before{content:""}.wi-night-alt-snow-thunderstorm:before{content:""}.wi-solar-eclipse:before{content:""}.wi-lunar-eclipse:before{content:""}.wi-meteor:before{content:""}.wi-hot:before{content:""}.wi-hurricane:before{content:""}.wi-smog:before{content:""}.wi-alien:before{content:""}.wi-snowflake-cold:before{content:""}.wi-stars:before{content:""}.wi-night-partly-cloudy:before{content:""}.wi-umbrella:before{content:""}.wi-day-windy:before{content:""}.wi-night-alt-cloudy:before{content:""}.wi-up-left:before{content:""}.wi-down-right:before{content:""}.wi-time-12:before{content:""}.wi-time-1:before{content:""}.wi-time-2:before{content:""}.wi-time-3:before{content:""}.wi-time-4:before{content:""}.wi-time-5:before{content:""}.wi-time-6:before{content:""}.wi-time-7:before{content:""}.wi-time-8:before{content:""}.wi-time-9:before{content:""}.wi-time-10:before{content:""}.wi-time-11:before{content:""}.wi-day-sleet:before{content:""}.wi-night-sleet:before{content:""}.wi-night-alt-sleet:before{content:""}.wi-sleet:before{content:""}.wi-day-haze:before{content:""}.wi-beafort-0:before{content:""}.wi-beafort-1:before{content:""}.wi-beafort-2:before{content:""}.wi-beafort-3:before{content:""}.wi-beafort-4:before{content:""}.wi-beafort-5:before{content:""}.wi-beafort-6:before{content:""}.wi-beafort-7:before{content:""}.wi-beafort-8:before{content:""}.wi-beafort-9:before{content:""}.wi-beafort-10:before{content:""}.wi-beafort-11:before{content:""}.wi-beafort-12:before{content:""}.wi-wind-default:before{content:""}wi-wind-default._0-deg{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0)}wi-wind-default._15-deg{-webkit-transform:rotate(15deg);-moz-transform:rotate(15deg);-ms-transform:rotate(15deg);-o-transform:rotate(15deg);transform:rotate(15deg)}wi-wind-default._30-deg{-webkit-transform:rotate(30deg);-moz-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}wi-wind-default._45-deg{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}wi-wind-default._60-deg{-webkit-transform:rotate(60deg);-moz-transform:rotate(60deg);-ms-transform:rotate(60deg);-o-transform:rotate(60deg);transform:rotate(60deg)}wi-wind-default._75-deg{-webkit-transform:rotate(75deg);-moz-transform:rotate(75deg);-ms-transform:rotate(75deg);-o-transform:rotate(75deg);transform:rotate(75deg)}wi-wind-default._90-deg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}wi-wind-default._105-deg{-webkit-transform:rotate(105deg);-moz-transform:rotate(105deg);-ms-transform:rotate(105deg);-o-transform:rotate(105deg);transform:rotate(105deg)}wi-wind-default._120-deg{-webkit-transform:rotate(120deg);-moz-transform:rotate(120deg);-ms-transform:rotate(120deg);-o-transform:rotate(120deg);transform:rotate(120deg)}wi-wind-default._135-deg{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}wi-wind-default._150-deg{-webkit-transform:rotate(150deg);-moz-transform:rotate(150deg);-ms-transform:rotate(150deg);-o-transform:rotate(150deg);transform:rotate(150deg)}wi-wind-default._165-deg{-webkit-transform:rotate(165deg);-moz-transform:rotate(165deg);-ms-transform:rotate(165deg);-o-transform:rotate(165deg);transform:rotate(165deg)}wi-wind-default._180-deg{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}wi-wind-default._195-deg{-webkit-transform:rotate(195deg);-moz-transform:rotate(195deg);-ms-transform:rotate(195deg);-o-transform:rotate(195deg);transform:rotate(195deg)}wi-wind-default._210-deg{-webkit-transform:rotate(210deg);-moz-transform:rotate(210deg);-ms-transform:rotate(210deg);-o-transform:rotate(210deg);transform:rotate(210deg)}wi-wind-default._225-deg{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}wi-wind-default._240-deg{-webkit-transform:rotate(240deg);-moz-transform:rotate(240deg);-ms-transform:rotate(240deg);-o-transform:rotate(240deg);transform:rotate(240deg)}wi-wind-default._255-deg{-webkit-transform:rotate(255deg);-moz-transform:rotate(255deg);-ms-transform:rotate(255deg);-o-transform:rotate(255deg);transform:rotate(255deg)}wi-wind-default._270-deg{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}wi-wind-default._285-deg{-webkit-transform:rotate(295deg);-moz-transform:rotate(295deg);-ms-transform:rotate(295deg);-o-transform:rotate(295deg);transform:rotate(295deg)}wi-wind-default._300-deg{-webkit-transform:rotate(300deg);-moz-transform:rotate(300deg);-ms-transform:rotate(300deg);-o-transform:rotate(300deg);transform:rotate(300deg)}wi-wind-default._315-deg{-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg);transform:rotate(315deg)}wi-wind-default._330-deg{-webkit-transform:rotate(330deg);-moz-transform:rotate(330deg);-ms-transform:rotate(330deg);-o-transform:rotate(330deg);transform:rotate(330deg)}wi-wind-default._345-deg{-webkit-transform:rotate(345deg);-moz-transform:rotate(345deg);-ms-transform:rotate(345deg);-o-transform:rotate(345deg);transform:rotate(345deg)}.wi-moon-new:before{content:""}.wi-moon-waxing-cresent-1:before{content:""}.wi-moon-waxing-cresent-2:before{content:""}.wi-moon-waxing-cresent-3:before{content:""}.wi-moon-waxing-cresent-4:before{content:""}.wi-moon-waxing-cresent-5:before{content:""}.wi-moon-waxing-cresent-6:before{content:""}.wi-moon-first-quarter:before{content:""}.wi-moon-waxing-gibbous-1:before{content:""}.wi-moon-waxing-gibbous-2:before{content:""}.wi-moon-waxing-gibbous-3:before{content:""}.wi-moon-waxing-gibbous-4:before{content:""}.wi-moon-waxing-gibbous-5:before{content:""}.wi-moon-waxing-gibbous-6:before{content:""}.wi-moon-full:before{content:""}.wi-moon-waning-gibbous-1:before{content:""}.wi-moon-waning-gibbous-2:before{content:""}.wi-moon-waning-gibbous-3:before{content:""}.wi-moon-waning-gibbous-4:before{content:""}.wi-moon-waning-gibbous-5:before{content:""}.wi-moon-waning-gibbous-6:before{content:""}.wi-moon-3rd-quarter:before{content:""}.wi-moon-waning-crescent-1:before{content:""}.wi-moon-waning-crescent-2:before{content:""}.wi-moon-waning-crescent-3:before{content:""}.wi-moon-waning-crescent-4:before{content:""}.wi-moon-waning-crescent-5:before{content:""}.wi-moon-waning-crescent-6:before{content:""}.main-view{position:relative;height:100vh;width:100vw;overflow:hidden}#map{position:absolute!important;top:0!important;left:0!important;height:100%!important;width:100%!important;z-index:1}.connection-bar{position:fixed;top:0;left:0;right:0;z-index:100;color:#fff;font-size:10px;font-weight:700;padding:2px 1rem;text-align:center;animation:pulse 2s ease-in-out infinite}.connection-bar--connecting{background:var(--warning)}.connection-bar--disconnected{background:var(--danger)}.mobile-top-bar{position:absolute;top:10px;left:10px;right:10px;z-index:10;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px}.mobile-top-bar__brand{width:28px;height:28px;border-radius:8px;background:var(--accent);display:grid;place-items:center;font-size:13px;font-weight:800;color:#fff;letter-spacing:-.02em;flex-shrink:0;box-shadow:0 0 0 1px #ffffff14 inset}.mobile-top-bar__info{flex:1;min-width:0}.mobile-top-bar__name{font-size:15px;font-weight:700;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-top-bar__meta{display:flex;align-items:center;gap:12px;margin-top:4px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}.mobile-top-bar__live{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;color:var(--text-muted)}.mobile-top-bar__live-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);animation:sidebar-pulse 1.8s ease-in-out infinite}.qr-backdrop{position:fixed;inset:0;background:#000c;display:flex;align-items:flex-end;justify-content:center;z-index:50;padding:0}@media(min-width:768px){.qr-backdrop{align-items:center;padding:1rem}}.qr-modal{background:var(--panel-solid);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:1rem;max-width:32rem;width:100%;max-height:90vh;overflow-y:auto}@media(min-width:768px){.qr-modal{border-radius:var(--radius-xl);padding:1.5rem;margin:0 1rem;max-height:none}}.qr-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}@media(min-width:768px){.qr-header{margin-bottom:1.5rem}}.qr-title{font-size:1.25rem;font-weight:700}@media(min-width:768px){.qr-title{font-size:1.5rem}}.qr-close{color:var(--text-faint);background:none;border:none;cursor:pointer;transition:color .2s;padding:0}.qr-close:hover{color:var(--text)}.qr-close svg{width:1.5rem;height:1.5rem}.qr-tabs{display:flex;border-bottom:1px solid var(--divider);margin-bottom:1rem;overflow-x:auto}@media(min-width:768px){.qr-tabs{margin-bottom:1.5rem}}.qr-tab{padding:.5rem .75rem;font-size:.875rem;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;transition:color .2s;white-space:nowrap}@media(min-width:768px){.qr-tab{font-size:1rem}}.qr-tab:hover{color:var(--text)}.qr-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.qr-content{background:#fff;border-radius:var(--radius-md);padding:.75rem}@media(min-width:768px){.qr-content{padding:1.5rem}}.qr-image-section{text-align:center}.qr-image-title{color:#111827;font-weight:600;margin-bottom:.5rem;font-size:1rem}@media(min-width:768px){.qr-image-title{margin-bottom:1rem;font-size:1.125rem}}.qr-image{width:100%;max-width:200px;margin:0 auto;height:auto;display:block}@media(min-width:768px){.qr-image{max-width:24rem}}.qr-url{color:#4b5563;font-size:.75rem;margin-top:.5rem;word-break:break-all}@media(min-width:768px){.qr-url{font-size:.875rem;margin-top:1rem}}.sidebar{position:absolute;top:18px;left:18px;width:340px;max-height:calc(100vh - 240px);z-index:10;display:flex;flex-direction:column;overflow:hidden}.sidebar__header{padding:16px 18px 14px;border-bottom:1px solid var(--divider)}.sidebar__brand{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sidebar__brand-logo{width:28px;height:28px;border-radius:8px;background:var(--accent);display:grid;place-items:center;font-size:13px;font-weight:800;color:#fff;letter-spacing:-.02em;flex-shrink:0;box-shadow:0 0 0 1px #ffffff14 inset}.sidebar__brand-text{display:flex;flex-direction:column;line-height:1.1;min-width:0}.sidebar__brand-name{font-size:10.5px;font-weight:600;color:var(--text-muted);letter-spacing:.14em;text-transform:uppercase}.sidebar__brand-sub{font-size:10px;color:var(--text-faint);font-family:var(--font-mono);letter-spacing:.04em;margin-top:3px}.sidebar__menu{margin-left:auto;display:flex;gap:6px}.sidebar__iconbtn{width:26px;height:26px;border:1px solid var(--divider);background:var(--panel-inner);color:var(--text-muted);border-radius:7px;cursor:pointer;display:grid;place-items:center;transition:all .15s;padding:0}.sidebar__iconbtn:hover{background:var(--panel-inner-hover);color:var(--text)}.sidebar__iconbtn svg{width:13px;height:13px}.sidebar__title{font-size:17px;font-weight:700;line-height:1.2;letter-spacing:-.015em;margin:0 0 2px;text-wrap:pretty}.sidebar__meta{display:flex;gap:14px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-top:10px}.sidebar__meta-item{display:flex;align-items:center;gap:6px}.sidebar__live-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);animation:sidebar-pulse 1.8s ease-in-out infinite}@keyframes sidebar-pulse{0%,to{box-shadow:0 0 0 2px var(--accent-soft)}50%{box-shadow:0 0 0 6px rgba(var(--accent-r),var(--accent-g),var(--accent-b),.08)}}.sidebar__search{position:relative;padding:12px 14px;border-bottom:1px solid var(--divider)}.sidebar__search-icon{position:absolute;left:24px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-faint);pointer-events:none}.sidebar__search-input{width:100%;height:34px;background:var(--panel-inner);border:1px solid var(--divider);border-radius:9px;padding:0 30px 0 34px;font-size:12.5px;font-family:var(--font-sans);color:var(--text);outline:none;transition:border-color .15s,background .15s}.sidebar__search-input:focus{border-color:var(--accent);background:var(--panel-inner-hover)}.sidebar__search-input::placeholder{color:var(--text-faint)}.sidebar__search-clear{position:absolute;right:20px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:16px;line-height:1;padding:4px}.sidebar__search-clear:hover{color:var(--text)}.sidebar__list{flex:1;overflow-y:auto;min-height:0;padding:8px 10px 10px}.sidebar__list::-webkit-scrollbar{width:6px}.sidebar__list::-webkit-scrollbar-thumb{background:var(--divider);border-radius:3px}.sidebar__empty{text-align:center;padding:24px 0;font-size:12px;color:var(--text-faint)}@media(min-width:768px)and (max-width:1279px){.sidebar{width:300px;top:14px;left:14px;max-height:calc(100vh - 230px)}}@media(max-width:767px){.sidebar{display:none}}.rider{display:flex;align-items:center;gap:12px;padding:10px;border-radius:10px;cursor:pointer;transition:background .12s;position:relative}.rider:hover{background:var(--panel-inner)}.rider--active{background:var(--panel-inner-hover);box-shadow:inset 0 0 0 1px var(--accent-soft)}.rider--active:before{content:"";position:absolute;left:2px;top:14px;bottom:14px;width:2px;border-radius:2px;background:var(--accent)}.rider--offline{opacity:.5}.rider__avatar{position:relative;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;border:2px solid var(--panel-bg);box-shadow:0 0 0 1px var(--panel-border)}.rider__avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.rider__initials{color:#fff;font-size:12px;font-weight:600;line-height:1}.rider__online-dot{position:absolute;bottom:-1px;right:-1px;width:10px;height:10px;border-radius:50%;background:#22c55e;border:2px solid var(--panel-bg)}.rider__body{flex:1;min-width:0}.rider__name{font-size:13.5px;font-weight:600;line-height:1.3;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.rider__meta{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:10.5px;color:var(--text-muted);font-family:var(--font-mono)}.rider__speed{font-size:inherit;font-weight:inherit;color:inherit;line-height:1.3}.rider__meta-sep{opacity:.4;font-size:10px}.rider__sector{display:inline-flex;align-items:center;gap:5px;max-width:112px;padding:3px 7px 3px 6px;background:var(--chip-bg);border-radius:5px;flex-shrink:0;letter-spacing:.005em}.rider__sector-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0;box-shadow:0 0 6px var(--accent)}.rider__sector-name{font-size:10.5px;font-weight:500;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.sig{display:inline-flex;align-items:flex-end;gap:2px;height:13px;flex-shrink:0}.sig--large{height:18px}.sig-bar{display:block;width:3px;border-radius:1px;transition:background-color .2s}.sig--large .sig-bar{width:3.5px}.sig-3 .sig-bar[data-on="1"],.sig-4 .sig-bar[data-on="1"]{background:var(--success)}.sig-2 .sig-bar[data-on="1"]{background:var(--warning)}.sig-1 .sig-bar[data-on="1"]{background:var(--danger)}.sig-bar[data-on="0"]{background:var(--text-faint);opacity:.25}.sig-0 .sig-bar{background:var(--text-faint);opacity:.2}.map-ctrls{position:absolute;bottom:40%;right:18px;z-index:10;display:flex;flex-direction:column;padding:4px;gap:2px}.map-ctrl-btn{display:grid;place-items:center;width:34px;height:34px;font-size:16px;font-weight:600;background:transparent;border:none;cursor:pointer;padding:0;color:var(--text);border-radius:8px;transition:background .12s,color .12s}.map-ctrl-btn:hover{background:var(--panel-inner-hover)}.map-ctrl-btn--active{color:var(--accent)}.map-ctrl-btn svg{width:14px;height:14px}.map-ctrl-btn--layers{height:auto;padding:6px 0 4px;gap:2px}.map-ctrl-label{font-size:8px;font-weight:700;letter-spacing:.02em;line-height:1;text-transform:uppercase}.map-ctrl-sep{height:1px;background:var(--divider);margin:0 4px}@media(max-width:1024px){.map-ctrls{right:14px}}@media(max-width:767px){.map-ctrls{bottom:auto;top:50%;transform:translateY(-50%);right:10px}}.toast-container{position:fixed;top:18px;right:18px;z-index:20;width:400px;display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast-container .toast{pointer-events:auto}.toast{position:relative;display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:14px;cursor:pointer;overflow:hidden;animation:toast-enter .45s cubic-bezier(.2,.8,.2,1)}@keyframes toast-enter{0%{opacity:0;transform:translate(20px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}.toast__accent{position:absolute;left:0;top:0;bottom:0;width:3px}.toast__icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:15px;flex-shrink:0;background:var(--chip-bg);border:1px solid var(--divider)}.toast__icon--checkpoint{background:var(--accent-soft);border-color:rgba(var(--accent-r),var(--accent-g),var(--accent-b),.35)}.toast__icon--sector{background:#22c55e26;border-color:#22c55e4d}.toast__body{flex:1;min-width:0}.toast__head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:3px}.toast__label{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.toast__title{font-size:14px;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--text)}.toast__title strong{color:var(--accent);font-weight:600}.toast__sub{margin-top:3px;font-size:11px;color:var(--text-muted);line-height:1.35}.toast__time{font-family:var(--font-mono);font-size:10px;color:var(--text-faint);flex-shrink:0}.toast__progress{position:absolute;left:3px;right:0;bottom:0;height:2px;opacity:.4;transform-origin:left;animation:toast-progress linear forwards}@keyframes toast-progress{to{transform:scaleX(0)}}@media(max-width:1024px){.toast-container{width:300px;top:14px;right:14px}.toast__title{font-size:12px}.toast__sub{font-size:10.5px}}@media(max-width:767px){.toast-container{top:110px;right:10px;left:10px;width:auto}.toast{padding:10px 12px}.toast__title{font-size:12px}.toast__sub{font-size:10.5px}}.weather-strip{position:absolute;bottom:18px;left:50%;transform:translate(-50%);z-index:10;padding:12px 14px 14px;width:min(620px,calc(100vw - 400px));box-sizing:border-box}.weather-strip__tabs{display:flex;gap:4px;padding:0 4px 10px;border-bottom:1px solid var(--divider);margin-bottom:10px;overflow-x:auto;scrollbar-width:none}.weather-strip__tab{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:6px;border:1px solid var(--divider);background:var(--panel-inner);color:var(--text-muted);font-size:10.5px;font-weight:500;white-space:nowrap;cursor:pointer;transition:all .15s}.weather-strip__tab-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.weather-strip__head{display:flex;align-items:center;justify-content:space-between;padding:0 4px 10px}.weather-strip__title{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.14em;text-transform:uppercase}.weather-strip__loc{font-size:10.5px;color:var(--text-faint);font-family:var(--font-mono)}.weather-strip__tabs{display:flex;gap:6px;padding:0 4px 10px;overflow-x:auto;scrollbar-width:none}.weather-strip__tabs::-webkit-scrollbar{display:none}.weather-strip__tab{display:flex;align-items:center;gap:8px;background:var(--panel-inner);border:1px solid var(--divider);color:var(--text-muted);padding:7px 11px;border-radius:9px;font-size:11px;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;transition:all .15s}.weather-strip__tab:hover{background:var(--panel-inner-hover);color:var(--text)}.weather-strip__tab--active{background:var(--accent);border-color:var(--accent);color:#fff}.weather-strip__tab-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}.weather-strip__tab--active .weather-strip__tab-dot{background:#fff}.weather-strip__tab-name{font-weight:500;letter-spacing:-.005em}.weather-strip__tab-elev{font-family:var(--font-mono);font-size:9.5px;opacity:.7}.weather-strip__tab--active .weather-strip__tab-elev{opacity:.9}.weather-strip__scrollwrap{position:relative}.weather-strip__scroll-btn{position:absolute;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;background:var(--panel-bg);border:1px solid var(--panel-border);color:var(--text);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;display:grid;place-items:center;z-index:2;transition:opacity .2s,background .15s,transform .15s;box-shadow:0 4px 12px #0000004d;padding:0}.weather-strip__scroll-btn:hover{background:var(--panel-inner-hover)}.weather-strip__scroll-btn:active{transform:translateY(-50%) scale(.92)}.weather-strip__scroll-btn--prev{left:-4px}.weather-strip__scroll-btn--next{right:-4px}.weather-strip__scroll-btn--hidden{opacity:0;pointer-events:none}@media(max-width:640px){.weather-strip__scroll-btn{display:none}}.weather-strip__row{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scroll-padding:0 10px;padding:2px 0 6px;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--divider) transparent;mask-image:linear-gradient(to right,black 0,black calc(100% - 36px),transparent 100%);-webkit-mask-image:linear-gradient(to right,black 0,black calc(100% - 36px),transparent 100%)}.weather-strip__row--at-end{mask-image:linear-gradient(to right,transparent 0,black 36px,black 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,black 36px,black 100%)}.weather-strip__row--at-both{mask-image:linear-gradient(to right,transparent 0,black 36px,black calc(100% - 36px),transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,black 36px,black calc(100% - 36px),transparent 100%)}.weather-strip__row::-webkit-scrollbar{height:6px}.weather-strip__row::-webkit-scrollbar-track{background:transparent}.weather-strip__row::-webkit-scrollbar-thumb{background:var(--divider);border-radius:3px}.weather-strip__row::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.weather-card{flex:1 1 0;background:var(--panel-inner);border:1px solid var(--divider);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;scroll-snap-align:start;transition:border-color .15s,background .15s}.weather-card--now{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent) inset}.weather-card__time{font-family:var(--font-mono);font-size:10.5px;color:var(--text-faint)}.weather-card--now .weather-card__time{color:var(--accent);font-weight:600}.weather-card__main{display:flex;align-items:center;justify-content:space-between;margin-top:2px}.weather-card__temp{font-size:20px;font-weight:600;letter-spacing:-.02em}.weather-card__icon{font-size:18px;opacity:.85}.weather-card__cond{font-size:10.5px;color:var(--text-muted)}.weather-card__sub{display:flex;gap:10px;font-size:10px;color:var(--text-faint);font-family:var(--font-mono);margin-top:2px}.weather-card__sub span{display:flex;align-items:center;gap:3px}.weather-pill{position:absolute;bottom:16px;right:16px;z-index:10;display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;font-size:12px;color:var(--text)}.weather-pill:hover{background:var(--panel-inner-hover)}.weather-pill__icon{font-size:15px}.weather-pill__temp{font-weight:600}.weather-pill__label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em}@media(max-width:1024px){.weather-strip{min-width:0;width:calc(100vw - 28px);left:14px;right:14px;transform:none;bottom:32px}}@media(max-width:767px){.weather-strip{left:auto;right:10px;bottom:28px;transform:none;width:auto;min-width:0;padding:0;border-radius:14px;overflow:hidden;max-width:calc(100vw - 20px)}.weather-strip--collapsed .weather-strip__head,.weather-strip--collapsed .weather-strip__tabs,.weather-strip--collapsed .weather-strip__scrollwrap,.weather-strip__chip{display:none}.weather-strip--collapsed .weather-strip__chip{display:flex}.weather-strip--collapsed{cursor:pointer}.weather-pill{bottom:10px;right:10px}}.bottom-sheet{position:fixed;left:10px;right:10px;bottom:26px;z-index:15;flex-direction:column;max-height:58vh;border-radius:18px 18px 14px 14px;overflow:hidden;transition:height .35s cubic-bezier(.2,.8,.2,1),max-height .35s cubic-bezier(.2,.8,.2,1);display:flex}.bottom-sheet--peek{max-height:56px}.bottom-sheet__handle-area{display:flex;flex-direction:column;align-items:center;padding:6px 0 4px;cursor:pointer;flex-shrink:0;user-select:none;-webkit-user-select:none}.bottom-sheet__handle{width:36px;height:4px;background:var(--text-faint);border-radius:2px;opacity:.5}.bottom-sheet__peek-text{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-top:6px;display:flex;align-items:center;gap:8px}.bottom-sheet__header{display:flex;align-items:center;justify-content:space-between;padding:4px 14px 10px;flex-shrink:0}.bottom-sheet__title{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:8px}.bottom-sheet__title-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);animation:sidebar-pulse 1.8s infinite}.bottom-sheet__count{font-family:var(--font-mono);font-size:10.5px;color:var(--text-faint)}.bottom-sheet__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.bottom-sheet__search{padding:0 10px 8px;position:relative;flex-shrink:0}.bottom-sheet__search-input{width:100%;height:34px;padding:0 12px 0 34px;border-radius:9px;border:1px solid var(--divider);background:var(--panel-inner);color:var(--text);font-size:12.5px;font-family:var(--font-sans);outline:none}.bottom-sheet__search-icon{position:absolute;left:20px;top:8px;color:var(--text-faint);pointer-events:none}.bottom-sheet__list{flex:1;overflow-y:auto;padding:4px 8px 12px;-webkit-overflow-scrolling:touch}@media(min-width:768px){.bottom-sheet{display:none}}
