@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-wght-normal-l_AIctKy.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-ext-wght-normal-BsZE-iaG.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--midnight:#0b0f1a;--indigo:#6b5bff;--sky:#00e5ff;--lavender:#c8b4ff;--sunset:#ff8a7a;--cloud:#f5f7fa;--brand-gradient:linear-gradient(90deg, var(--indigo), var(--sky));--bg:var(--cloud);--panel:#ffffffe6;--panel-solid:#fff;--card:#eef1f6;--fg:var(--midnight);--muted:#586079;--border:#0b0f1a1f;--accent:#5847ee;--accent-fill:var(--indigo);--accent-fg:#fff;--warn:#b45309;--danger:#b91c1c;--glow-indigo:#6b5bff14;--glow-sunset:#ff8a7a14;--map-bg:#edf0f5;--map-todo:#d9533f;--map-done:#0089a3;--map-current:#6b5bff33;--map-option:#0b0f1a66;--map-chosen:#5847ee;--map-rider:#5847ee;--map-sky:#d9e1f2;--grade-1:#c99700;--grade-2:#e8731a;--grade-3:#d1302a;--grade-4:#861818;--grade-down:#a69cf7;--radius:12px;color:var(--fg);font-family:Montserrat,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:var(--midnight);--panel:#121829db;--panel-solid:#121829;--card:#161d31;--fg:var(--cloud);--muted:#9aa3b8;--border:#f5f7fa1f;--accent:var(--lavender);--warn:#f59e0b;--danger:#f87171;--glow-indigo:#6b5bff29;--glow-sunset:#ff8a7a1a;--map-bg:var(--midnight);--map-todo:var(--sunset);--map-done:var(--sky);--map-current:#6b5bff61;--map-option:#f5f7fa73;--map-chosen:var(--lavender);--map-rider:var(--cloud);--map-sky:#1c2447;--grade-1:#facc15;--grade-2:#fb923c;--grade-3:#f05252;--grade-4:#c2262e;--grade-down:#e4dcff}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;margin:0;overflow:hidden}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--panel-solid);color:var(--fg);border-radius:8px;min-height:40px;padding:.5rem .9rem}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent-fill);color:var(--accent-fg);border-color:#0000;font-weight:600;box-shadow:0 6px 18px -8px #6b5bffcc}button.primary:hover:not(:disabled){filter:brightness(1.08)}button.secondary{background:0 0}button.link{text-align:left;color:var(--accent);background:0 0;border:none;align-self:flex-start;min-height:0;padding:0 .25rem}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:8px;min-height:40px;padding:.5rem .7rem}#map{touch-action:none;width:100vw;height:100vh;display:block;position:fixed;inset:0}.hud{top:max(10px, env(safe-area-inset-top));background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:var(--radius);pointer-events:none;grid-template-columns:auto auto repeat(3,minmax(88px,auto));align-items:center;row-gap:6px;width:max-content;max-width:calc(100vw - 20px);padding:6px;display:grid;position:fixed;left:50%;transform:translate(-50%)}.hud .label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.7rem}.hud .value{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:650;line-height:1.1}.hud .unit{color:var(--muted);font-size:.8rem}.hud-reading{white-space:nowrap;align-items:baseline;gap:4px;display:flex}.hud-power{background:var(--card);border-radius:8px;flex-direction:column;justify-content:center;align-self:stretch;min-width:116px;padding:4px 14px 6px;display:flex}.hud-power .value{min-width:3ch;font-size:2.1rem;line-height:1}.hud-power .unit{font-size:.95rem}.hud-avg{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.hud-body{flex-direction:column;gap:2px;padding:0 14px;display:flex}.hud-body .value{text-align:right;min-width:3ch;font-size:1.05rem}.hud-body svg.i{width:15px;height:15px;color:var(--accent);align-self:center}.hud-body .hud-reading:first-child svg.i{color:var(--map-todo)}.hud-stat{border-left:1px solid var(--border);flex-direction:column;padding:0 14px;display:flex}.hud-route{border-top:1px solid var(--border);grid-column:1/-1;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:6px 8px 2px;display:grid}.hud-route .label{text-overflow:ellipsis;white-space:nowrap;max-width:40vw;overflow:hidden}.hud-route .unit{font-variant-numeric:tabular-nums;white-space:nowrap}.hud-climb{--climb:var(--grade-1);border-left:4px solid var(--climb);background:color-mix(in srgb, var(--climb) 14%, transparent);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:8px;grid-column:1/-1;align-items:center;gap:8px;margin-top:2px;padding:5px 10px;font-size:.85rem;display:flex;overflow:hidden}.hud-climb[data-grade="2"]{--climb:var(--grade-2)}.hud-climb[data-grade="3"]{--climb:var(--grade-3)}.hud-climb[data-grade="4"]{--climb:var(--grade-4)}.hud-climb svg.i{width:18px;height:18px;color:var(--climb);flex:none}.hud-climb span{color:var(--muted);text-overflow:ellipsis;overflow:hidden}.progress{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.progress>div{background:var(--brand-gradient);width:0;height:100%;transition:width .6s}.road{left:50%;bottom:calc(76px + env(safe-area-inset-bottom));text-align:center;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);pointer-events:none;max-width:calc(100vw - 20px);padding:6px 16px;position:fixed;transform:translate(-50%)}.road-name{font-weight:600}.road-next{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.road-next .queued{color:var(--map-chosen);font-weight:600}.road-progress{color:var(--muted);font-size:.75rem}.options{pointer-events:auto;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:4px;display:flex}.option{border:1px solid var(--border);background:var(--panel-solid);border-radius:8px;flex-direction:column;align-items:center;max-width:150px;min-height:0;padding:4px 10px;font-size:.78rem;line-height:1.25;display:flex}.option .arrow{font-size:1.1rem}.option .name{text-overflow:ellipsis;white-space:nowrap;max-width:130px;overflow:hidden}.option .left{color:var(--map-todo);font-weight:600}.option.done .left{color:var(--map-done);font-weight:500}.option.chosen{border-color:var(--map-chosen);box-shadow:inset 0 0 0 1px var(--map-chosen)}.hint{margin-top:4px;font-size:.8rem}.hint strong{color:var(--map-todo)}.legend{right:10px;bottom:calc(80px + env(safe-area-inset-bottom));background:var(--panel);border:1px solid var(--border);color:var(--muted);pointer-events:none;border-radius:999px;gap:10px;padding:3px 12px;font-size:.75rem;display:flex;position:fixed}.legend i{vertical-align:middle;border-radius:2px;width:14px;height:4px;margin-right:5px;display:inline-block}.legend .todo{background:var(--map-todo)}.legend .done{background:var(--map-done)}.legend .you{background:var(--map-chosen)}.controls{left:50%;bottom:max(12px, env(safe-area-inset-bottom));gap:6px;display:flex;position:fixed;transform:translate(-50%)}button svg.i{pointer-events:none;width:22px;height:22px;display:block}.controls button{background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);place-items:center;min-width:48px;min-height:48px;font-size:1.2rem;display:grid}.controls button[aria-pressed=true]{border-color:var(--map-chosen);color:var(--map-chosen)}.status{left:10px;bottom:calc(140px + env(safe-area-inset-bottom));flex-direction:column;align-items:flex-start;gap:4px;display:flex;position:fixed}.chip{background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-size:.75rem;display:inline-flex}.chip svg{flex:none;width:16px;height:16px}.chip-button{background:var(--panel);border-radius:999px;min-height:0;padding:2px 10px;font-size:.75rem}.chip-button .chip-action{opacity:.6;width:12px;height:12px;margin-right:-2px}.chip-button:hover:not(:disabled){border-color:var(--accent);color:var(--fg)}.chip-button:hover:not(:disabled) .chip-action{opacity:1}.chip.ok{color:var(--accent)}.chip.warn{color:var(--warn)}.board{right:10px;top:max(110px, calc(var(--hud-bottom,0px) + 8px));background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:210px;padding:8px 12px;font-size:.85rem;position:fixed}.board h2{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 4px;font-size:.75rem}.board ol{margin:0;padding-left:1.2rem}.board li{font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;display:flex}.board li.me{color:var(--accent);font-weight:600}.reconnect{background:var(--panel-solid);border:1px solid var(--border);border-left:4px solid var(--warn);border-radius:var(--radius);z-index:5;flex-direction:column;gap:8px;width:min(420px,100vw - 32px);padding:14px 16px;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.reconnect p{color:var(--muted);margin:0;font-size:.9rem}.reconnect .row{flex-wrap:wrap;gap:8px;display:flex}.toasts{z-index:6;top:max(110px, calc(var(--hud-bottom,0px) + 8px));pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{background:var(--panel-solid);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:8px;padding:6px 12px;font-size:.9rem;animation:.2s ease-out toast-in}.toast.warn{border-left-color:var(--warn)}.toast.with-actions{pointer-events:auto;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 10px;display:flex}.toast.with-actions button{min-height:30px;padding:.2rem .8rem;font-size:.85rem}.toast.with-actions button:first-of-type{background:var(--accent-fill);color:var(--accent-fg);border-color:#0000;font-weight:600}.toast.error{border-left-color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.debug{background:var(--panel-solid);border:1px solid var(--border);border-radius:8px;max-width:360px;max-height:40vh;margin:0;padding:8px;font-size:11px;position:fixed;bottom:10px;right:10px;overflow:auto}dialog#setup{border:1px solid var(--border);background:radial-gradient(60% 50% at 0% 0%, var(--glow-indigo), transparent 70%), radial-gradient(50% 45% at 100% 0%, var(--glow-sunset), transparent 70%), var(--panel-solid);color:var(--fg);border-radius:18px;width:calc(100vw - 32px);max-width:1200px;height:calc(100dvh - 32px);max-height:none;padding:0;overflow:hidden}dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0b0f1a99}.setup{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);height:100%;display:grid}.sprite{width:0;height:0;position:absolute;overflow:hidden}.noscript{max-width:640px;margin:48px auto;padding:0 16px;font-size:1.1rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.setup-head{border-bottom:1px solid var(--border);grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:12px 24px;display:grid}h1,h2{font-weight:600}.brand{align-items:center;gap:12px;display:flex}.brand-logo{flex:none;width:38px;height:22px}.brand-wordmark{width:127px;min-width:0;height:12px}@media (max-width:420px){.brand-wordmark{display:none}.tagline{letter-spacing:.2em}}.head-tools{justify-self:end;align-items:center;gap:8px;display:flex}.head-link{color:var(--accent);white-space:nowrap;align-items:center;gap:5px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.head-link svg{flex:none;width:20px;height:20px}.head-link:hover span{text-decoration:underline}.rider-ranking{align-self:flex-start;margin-top:4px;font-size:.85rem}.rider-ranking svg{width:16px;height:16px}#install-app{white-space:nowrap;min-height:34px;padding:.3rem .7rem}.lang select{min-height:34px;padding:.3rem .6rem}.stepper{background:var(--bg);border:1px solid var(--border);border-radius:999px;gap:4px;padding:4px;display:flex}.step-tab{min-height:36px;color:var(--muted);background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:.3rem .9rem .3rem .4rem;font-weight:600;display:flex}.step-tab[aria-current=true]{background:var(--panel-solid);color:var(--fg);box-shadow:0 1px 3px #00000026}.step-tab:disabled{opacity:.45}.step-num{background:var(--border);width:24px;height:24px;color:var(--fg);border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-weight:700;display:grid}.step-tab[aria-current=true] .step-num,.step-tab.done .step-num{background:var(--accent-fill);color:var(--accent-fg)}.step-tab.done .step-num{font-size:0}.step-tab.done .step-num:before{content:"✓";font-size:.8rem}.setup-body{min-height:0}.step{height:100%;padding:28px 32px;overflow-y:auto}.step>*{max-width:1140px}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:10px;min-width:0;padding:16px 18px;display:flex}.card-title{margin:0;font-size:1.05rem}.step-account{grid-template-columns:minmax(0,1.15fr) minmax(320px,420px);justify-content:center;align-items:center;gap:48px;display:grid}.hero-lockup{align-items:center;gap:20px;margin-bottom:18px;display:flex}.hero h1{min-width:0;margin:0;line-height:0}.hero-logo{flex:none;width:97px;height:56px}.hero-wordmark{width:297px;max-width:100%;height:28px}.tagline{letter-spacing:.32em;text-transform:uppercase;color:var(--accent);margin:0 0 8px;font-size:.78rem;font-weight:500}.hero .lede{color:var(--muted);margin:0 0 22px;font-size:1.1rem}.intro{border:1px solid var(--border);background:var(--card);border-radius:14px;padding:16px 18px}.intro h2{margin:0 0 10px;font-size:1rem}.intro ol{color:var(--muted);flex-direction:column;gap:10px;margin:0;padding-left:1.2rem;display:flex}.intro strong{color:var(--fg)}.auth-card{padding:22px}.auth{flex-direction:column;gap:6px;display:flex}.auth input{width:100%}.auth>button{min-height:44px;margin-top:6px}.tabs{background:var(--bg);border:1px solid var(--border);border-radius:10px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:8px;padding:4px;display:grid}.tabs [role=tab]{min-height:36px;color:var(--muted);background:0 0;border:none;font-weight:600}.tabs [role=tab][aria-selected=true]{background:var(--panel-solid);color:var(--fg);box-shadow:0 1px 3px #00000026}.rider{align-items:center;gap:12px;display:flex}.avatar{background:var(--accent-fill);width:48px;height:48px;color:var(--accent-fg);border-radius:50%;flex:none;place-items:center;font-size:1.3rem;font-weight:700;display:grid}.rider-info{flex-direction:column;flex:1;min-width:0;display:flex}.rider-info strong{text-overflow:ellipsis;font-size:1.1rem;overflow:hidden}.rider-info small{color:var(--muted)}.rider .link{align-self:center}.step-devices{flex-direction:column;align-items:stretch;gap:16px;display:flex}.step-devices>*{width:100%;max-width:900px;margin-inline:auto}.step-devices>.link{width:auto;margin-inline:auto}.step-intro h2{margin:0 0 6px;font-size:1.5rem}.step-intro .note{font-size:.95rem}.devices{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;display:grid}.device{background:var(--card);border:1px solid var(--border);border-radius:16px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;padding:20px;transition:border-color .2s;display:grid}.device>button{grid-column:1/-1;min-height:44px}.device-icon{background:var(--border);width:68px;height:68px;color:var(--muted);border-radius:50%;place-items:center;display:grid;position:relative}.device-icon svg{width:38px;height:38px}.device-info{flex-direction:column;gap:2px;min-width:0;display:flex}.device-kind{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.75rem}.device-name{text-overflow:ellipsis;white-space:nowrap;font-size:1.3rem;overflow:hidden}.device-live{font-variant-numeric:tabular-nums;min-height:1.3em;color:var(--muted);font-size:1rem}.device[data-state=disconnected] .device-name{color:var(--muted)}.device[data-state=connected]{border-color:var(--accent)}.device[data-state=connected] .device-icon{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent)}.device[data-state=connected] .device-icon:after{content:"";background:var(--sky);border:3px solid var(--card);border-radius:50%;width:16px;height:16px;position:absolute;bottom:2px;right:2px}.device[data-state=connected] .device-live{color:var(--fg);font-weight:600}.device[data-state=connecting] .device-icon,.device[data-state=reconnecting] .device-icon{background:color-mix(in srgb, var(--warn) 16%, transparent);color:var(--warn);animation:1.2s ease-in-out infinite device-pulse}#dev-hrm[data-state=connected] .device-icon svg{animation:1s ease-in-out infinite heart-beat}@keyframes device-pulse{50%{opacity:.55}}@keyframes heart-beat{15%{transform:scale(1.12)}30%{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.device-icon,.device-icon svg{animation:none!important}}.bt-help summary{cursor:pointer;font-weight:600}.bt-os{align-items:center;gap:8px;margin:0;font-size:.85rem;display:flex}.bt-os select{min-height:32px;padding:.25rem .5rem}.bt-problem{border-left:4px solid var(--warn);background:var(--bg);border-radius:8px;margin:0;padding:6px 10px;font-size:.85rem}.bt-steps{flex-direction:column;gap:8px;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.bt-steps li{border-radius:8px;grid-template-columns:1.4em 1fr;gap:2px 6px;padding:4px 6px;display:grid}.bt-steps .icon{text-align:center;grid-row:span 2;font-weight:700}.bt-steps li.ok .icon{color:var(--accent)}.bt-steps li.warn .icon{color:var(--warn)}.bt-steps li.todo .icon,.bt-steps .detail{color:var(--muted)}.bt-steps li.highlight{background:var(--bg);outline:2px solid var(--warn)}.step-city{grid-template-columns:minmax(0,1fr) minmax(300px,380px);align-items:start;gap:20px;display:grid}.side{flex-direction:column;gap:16px;min-width:0;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.field-row output{font-variant-numeric:tabular-nums;font-weight:600}.segmented{background:var(--bg);border:1px solid var(--border);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;display:grid}.segmented label{position:relative}.segmented input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.segmented span{text-align:center;color:var(--muted);border-radius:8px;padding:.45rem .3rem;font-size:.9rem;font-weight:600;display:block}.segmented input:checked+span{background:var(--panel-solid);color:var(--fg);box-shadow:0 1px 3px #00000026}.segmented .slow-mark{color:var(--warn);font-size:.68rem;font-weight:500;display:block}.segmented input:disabled+span{opacity:.5;cursor:not-allowed}.segmented input:focus-visible+span{outline:2px solid var(--accent);outline-offset:1px}.switch{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;display:flex}.switch input{appearance:none;background:var(--border);cursor:pointer;border:none;border-radius:999px;flex:none;width:42px;height:24px;min-height:0;padding:0;transition:background .2s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0000004d}.switch input:checked{background:var(--accent-fill)}.switch input:checked:after{transform:translate(18px)}.options input[type=range]{width:100%;accent-color:var(--accent)}.setup-foot{border-top:1px solid var(--border);background:var(--panel-solid);flex-wrap:wrap;align-items:center;gap:16px;padding:12px 24px;display:flex}.ride-summary{flex:260px;min-width:0;margin:0;font-weight:600}.ride-summary.pending{color:var(--muted);font-weight:400}.setup-foot .actions{gap:8px;margin-left:auto;display:flex}#ride,#step-next{min-width:170px;min-height:48px;font-size:1.05rem}@media (max-width:960px){.step-account,.step-city{grid-template-columns:minmax(0,1fr);gap:20px}.hero-lockup{gap:14px}.hero-logo{width:69px;height:40px}.hero-wordmark{width:212px;height:20px}}@media (max-width:760px){dialog#setup{border:none;border-radius:0;width:100vw;max-width:none;height:100dvh}.setup-head{grid-template-columns:1fr auto;gap:10px;padding:10px 16px}.setup-head>*{min-width:0}#ranking-link{display:none}.stepper{grid-area:2/1/auto/-1}.step-tab{flex:auto;justify-content:center;min-width:0;padding-right:.6rem}.step-tab:not([aria-current=true])>span:not(.step-num){display:none}.step-tab:not([aria-current=true]){flex:none;padding:.3rem .4rem}.step{padding:18px 16px}.setup-foot{padding:10px 16px}.setup-foot .attribution{display:none}.setup-foot .actions{flex:100%}.setup-foot .actions button{flex:1;min-width:0}}.row{flex-wrap:wrap;gap:8px;display:flex}.row input{flex:180px}.note{color:var(--muted);margin:0;font-size:.85rem}.note.warn{color:var(--warn)}.map-list{flex-direction:column;gap:6px;max-height:220px;display:flex;overflow:auto}.map-option{text-align:left;flex-shrink:0;justify-content:space-between;width:100%;display:flex}.map-option[aria-checked=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.map-option small{color:var(--muted)}.sublabel{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.75rem}#started-block,.all-block{flex-direction:column;gap:6px;display:flex}.map-option .pct{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.map-option .bar{background:var(--border);border-radius:2px;height:4px;margin-top:4px;display:block;overflow:hidden}.map-option .bar>i{background:var(--brand-gradient);height:100%;display:block}.map-option .info{text-align:left;flex-direction:column;flex:auto;min-width:0;display:flex}.map-option .info small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-option{align-items:center;gap:10px}.city-results,.requests{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.city{border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:6px 10px;display:flex}.city-info{flex-direction:column;flex:auto;min-width:0;display:flex}.city-info small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.city .state{color:var(--muted);text-align:right;overflow-wrap:anywhere;flex:0 auto;max-width:45%;font-size:.8rem}.city .state.warn{color:var(--warn)}.city .state.ok{color:var(--accent)}.city button{flex:none}.spinner{vertical-align:-.1em;border:2px solid;border-right-color:#0000;border-radius:50%;width:.8em;height:.8em;margin-right:4px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}input[type=range],input[type=checkbox],input[type=radio]{min-height:0;padding:0}.rides-list{flex-direction:column;gap:6px;max-height:320px;margin:8px 0;padding:0;list-style:none;display:flex;overflow:auto}.ride{border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;min-width:0;padding:6px 10px;display:flex}.ride .info{flex-direction:column;flex:auto;min-width:0;display:flex}.ride .info small{color:var(--muted);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ride button{flex:none;min-height:32px;padding:2px 8px;font-size:.8rem}.export{border:1px dashed var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;padding:10px 14px;font-size:.9rem;display:flex}.actions{justify-content:flex-end;gap:8px;display:flex}.keys,.attribution{color:var(--muted);margin:0;font-size:.75rem}.attribution a{color:inherit}@media (max-width:640px){.hud{grid-template-columns:auto repeat(3,minmax(0,1fr));row-gap:4px;width:calc(100vw - 20px);padding:4px}.hud .unit{font-size:.72rem}.hud-power{grid-row:1/3;min-width:0;padding:4px 8px}.hud-power .value{font-size:1.6rem}.hud-body{flex-direction:row;grid-area:2/2/auto/-1;gap:16px;padding:0 7px}.hud-stat{padding:0 6px}.hud-stat .value{font-size:1.05rem}.hud-route{grid-template-columns:minmax(0,auto) minmax(40px,1fr) auto;gap:8px;padding:4px 4px 2px}.board{display:none}.status{bottom:calc(150px + env(safe-area-inset-bottom))}}@media (max-width:360px){.hud .label{letter-spacing:.04em}.hud-power .value{font-size:1.4rem}.hud-stat{padding:0 4px}.hud-stat .value{font-size:.95rem}}:root{--z1:#9ca3af;--z2:#3b82f6;--z3:#16a34a;--z4:#eab308;--z5:#f97316;--z6:#dc2626;--z7:#9333ea;--on-target:#16a34a;--near-target:#d97706;--off-target:#dc2626}@media (prefers-color-scheme:dark){:root{--z1:#6b7280;--z2:#60a5fa;--z3:#22c55e;--z4:#facc15;--z5:#fb923c;--z6:#f87171;--z7:#c084fc;--on-target:#22c55e;--near-target:#f59e0b;--off-target:#f87171}}#tile-power{transition:background .4s,box-shadow .4s}#tile-power[data-zone="1"]{box-shadow:inset 0 -4px 0 var(--z1)}#tile-power[data-zone="2"]{box-shadow:inset 0 -4px 0 var(--z2)}#tile-power[data-zone="3"]{box-shadow:inset 0 -4px 0 var(--z3)}#tile-power[data-zone="4"]{box-shadow:inset 0 -4px 0 var(--z4)}#tile-power[data-zone="5"]{box-shadow:inset 0 -4px 0 var(--z5)}#tile-power[data-zone="6"]{box-shadow:inset 0 -4px 0 var(--z6)}#tile-power[data-zone="7"]{box-shadow:inset 0 -4px 0 var(--z7)}#tile-power[data-target=on]{background:color-mix(in srgb, var(--on-target) 30%, var(--panel-solid));border-color:var(--on-target)}#tile-power[data-target=near]{background:color-mix(in srgb, var(--near-target) 30%, var(--panel-solid));border-color:var(--near-target)}#tile-power[data-target=off]{background:color-mix(in srgb, var(--off-target) 30%, var(--panel-solid));border-color:var(--off-target)}svg.chart{width:100%;height:100%;display:block}svg.chart polygon{stroke:var(--panel-solid);stroke-width:0}svg.chart .z1{fill:var(--z1)}svg.chart .z2{fill:var(--z2)}svg.chart .z3{fill:var(--z3)}svg.chart .z4{fill:var(--z4)}svg.chart .z5{fill:var(--z5)}svg.chart .z6{fill:var(--z6)}svg.chart .z7{fill:var(--z7)}svg.chart .free{fill:var(--border)}svg.chart .max{fill:var(--z7);opacity:.7}svg.chart .ftp{stroke:var(--fg);stroke-width:1px;stroke-dasharray:4 3;opacity:.45}.profile{border-top:1px solid var(--border);flex-direction:column;gap:10px;margin-top:14px;padding-top:14px;display:flex}.account-delete{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.account-delete>*+*{margin-top:8px}.account-delete input,.account-delete button{box-sizing:border-box;width:100%;display:block}.account-delete summary{cursor:pointer;color:var(--muted);font-size:.85rem}.account-delete .note{margin-bottom:0}.account-delete label[hidden],.account-delete input[hidden]{display:none}.profile-grid{grid-template-columns:minmax(0,1fr) 7.5rem;align-items:center;gap:6px 10px;display:grid}.profile-grid label{font-size:.9rem}.profile-grid input{width:100%;min-width:0}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented.four{grid-template-columns:repeat(4,1fr)}.workout-card select{width:100%}.workout-card.dragging{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.workout-preview{flex-direction:column;gap:6px;display:flex}.workout-chart{background:var(--bg);border:1px solid var(--border);border-radius:8px;height:72px;overflow:hidden}.workout-meta{font-variant-numeric:tabular-nums;margin:0;font-size:.85rem;font-weight:600}#workout-desc{white-space:pre-line;max-height:6em;overflow:auto}.ftp-ask{flex-direction:column;gap:6px;display:flex}.ftp-ask input{flex:6rem}.dropzone{border:1px dashed var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px;padding:10px;display:flex}button.danger{color:var(--danger)}.ride .info small+small{color:var(--accent)}.workout-panel{left:10px;top:max(110px, calc(var(--hud-bottom,0px) + 8px));background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;width:280px;padding:10px 12px;font-size:.85rem;display:flex;position:fixed}.wp-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.wp-head strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.wp-clock{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto}.wp-sound{min-width:28px;min-height:28px;color:var(--muted);background:0 0;border-color:#0000;flex:none;align-self:center;padding:0}.wp-sound svg.i{width:18px;height:18px}.wp-sound[data-state=on]{color:var(--fg)}.wp-sound[data-state=blocked]{color:var(--warn);background:color-mix(in srgb, var(--warn) 16%, transparent);animation:1.2s ease-in-out infinite device-pulse}.wp-now{justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.wp-block,.wp-left{flex-direction:column;min-width:0;display:flex}.wp-left{align-items:flex-end}.wp-left.ending .value{color:var(--accent);animation:1s ease-in-out infinite wp-ending}@keyframes wp-ending{0%,to{transform:scale(1)}15%{transform:scale(1.18)}}@media (prefers-reduced-motion:reduce){.wp-left.ending .value,.wp-sound[data-state=blocked]{animation:none}}.wp-block .label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.7rem}.workout-panel .value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:650;line-height:1.1}.workout-panel .unit,.workout-panel small{color:var(--muted)}.wp-target .unit{margin-left:3px}.wp-line{color:var(--muted);margin:0}.wp-timeline{background:var(--bg);border-radius:6px;height:46px;position:relative;overflow:hidden}.wp-chart{position:absolute;inset:0}.wp-cursor{background:var(--fg);width:2px;box-shadow:0 0 0 1px var(--panel-solid);margin-left:-1px;position:absolute;top:0;bottom:0}.wp-controls{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.wp-controls button{min-width:34px;min-height:34px;padding:2px 8px}.wp-controls svg.i{width:18px;height:18px;margin-inline:auto}.wp-intensity{align-items:center;gap:2px;display:inline-flex}.wp-intensity output{text-align:center;font-variant-numeric:tabular-nums;min-width:3.2em}.switch.wp-erg{gap:6px;margin-left:auto;font-weight:600}.wp-steps{font-variant-numeric:tabular-nums;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.wp-steps li{border-left:3px solid var(--border);grid-template-columns:minmax(0,1fr) auto 3.6em;gap:8px;padding:2px 0 2px 8px;display:grid}.wp-steps li:first-child{font-weight:600}.wp-steps .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.wp-steps .time{text-align:right;color:var(--muted)}.wp-steps li.more{color:var(--muted);border-left-style:dotted;font-style:italic}.wp-steps li[data-zone="1"]{border-left-color:var(--z1)}.wp-steps li[data-zone="2"]{border-left-color:var(--z2)}.wp-steps li[data-zone="3"]{border-left-color:var(--z3)}.wp-steps li[data-zone="4"]{border-left-color:var(--z4)}.wp-steps li[data-zone="5"]{border-left-color:var(--z5)}.wp-steps li[data-zone="6"]{border-left-color:var(--z6)}.wp-steps li[data-zone="7"]{border-left-color:var(--z7)}.workout-panel.waiting .wp-block .label{color:var(--accent);font-weight:700}.workout-panel.inactive .wp-now,.workout-panel.inactive .wp-timeline{opacity:.55}.sound-volume{align-items:center;gap:10px;display:flex}.sound-volume input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.sound-volume button{min-height:34px;padding:.3rem .8rem}.erg-panel{width:300px}.erg-panel .wp-controls{flex-wrap:nowrap}.erg-panel .switch{gap:6px;margin-right:auto;font-weight:600}.erg-target input{text-align:center;width:4.2em;min-height:34px;font:inherit;font-variant-numeric:tabular-nums;appearance:textfield;padding:2px 4px;font-weight:650}.erg-target input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.erg-target input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.erg-target .unit{color:var(--muted);margin-right:2px}.erg-panel.inactive .erg-target input,.erg-panel.inactive .erg-target .unit{opacity:.55}@media (max-width:640px){.workout-panel{top:calc(var(--hud-bottom,150px) + 6px);gap:4px;width:auto;padding:6px 10px;left:10px;right:10px}.workout-panel .wp-timeline,#wp-cadence,.wp-steps li:nth-child(n+2){display:none}.workout-panel .value{font-size:1.2rem}#erg-hint{display:none}}.planner{z-index:4;left:10px;top:max(110px, calc(var(--hud-bottom,0px) + 8px));background:var(--panel-solid);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;width:320px;max-height:calc(100vh - 230px);padding:10px 12px;font-size:.85rem;display:flex;position:fixed;overflow-y:auto}.planner-close{min-width:32px;min-height:32px;padding:0;font-size:1.2rem;line-height:1}.planner-field{flex-direction:column;gap:3px;display:flex}.planner .segmented span{padding:.35rem .2rem;font-size:.8rem}.planner-length{grid-template-columns:1fr 4.5rem auto;align-items:center;gap:6px;display:grid}.planner-length input{width:100%;min-width:0}.planner-actions{gap:8px;display:flex}.planner-actions button,#pl-ride{flex:1}.planner-proposals{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.planner-proposals:empty{display:none}.proposal{text-align:left;background:var(--bg);border:1px solid var(--border);gap:2px;width:100%;padding:6px 8px;font-weight:500;display:grid}.proposal[aria-pressed=true]{border-color:var(--map-chosen);box-shadow:inset 0 0 0 1px var(--map-chosen)}.proposal strong{font-size:.85rem}.proposal small{color:var(--muted);font-variant-numeric:tabular-nums}.proposal svg{width:100%;height:28px}.proposal svg path{fill:none;stroke:var(--map-chosen);stroke-width:1.5px}.route-done{border-left-color:var(--accent)}body.planning .workout-panel,body.planning .elevation,body.planning .road,body.planning .board,body.planning .legend{display:none!important}@media (max-width:640px){.planner{top:auto;left:10px;right:10px;bottom:calc(72px + env(safe-area-inset-bottom));width:auto;max-height:48vh}body.planning .hud,body.planning .status{display:none!important}}.elevation{right:10px;bottom:calc(112px + env(safe-area-inset-bottom));background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:var(--radius);pointer-events:none;flex-direction:column;gap:4px;width:300px;padding:8px 12px;font-size:.8rem;display:flex;position:fixed}.elev-head{justify-content:space-between;align-items:baseline;display:flex}.elev-head .label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.7rem}.elev-head strong{font-variant-numeric:tabular-nums}.elev-chart{height:64px;position:relative}.elev-chart svg{width:100%;height:100%;display:block;overflow:visible}.elev-chart .behind{fill:var(--map-done);opacity:.35}.elev-chart .ahead{fill:var(--map-chosen);opacity:.3}.elev-chart .line{fill:none;stroke:var(--fg);stroke-width:1.5px;stroke-linejoin:round}.elev-chart .rider{stroke:var(--map-rider);stroke-width:1px;stroke-dasharray:3 2}.elev-dot{background:var(--map-rider);width:9px;height:9px;box-shadow:0 0 0 2px var(--panel-solid);border-radius:50%;margin:-4.5px 0 0 -4.5px;position:absolute}.elev-summary{color:var(--muted);font-variant-numeric:tabular-nums;margin:0}@media (max-width:640px){.elevation{top:calc(var(--hud-bottom,150px) + 6px);gap:2px;width:auto;padding:4px 10px;bottom:auto;left:10px;right:10px}.elev-chart{height:36px}.elev-summary{display:none}body:has(#elevation:not([hidden])) .workout-panel{top:calc(var(--hud-bottom,150px) + 76px)}}.garmin-linked,.garmin-setup{flex-direction:column;gap:10px;display:flex}.garmin-linked[hidden],.garmin-setup[hidden]{display:none}.garmin-steps{flex-direction:column;gap:4px;margin:0;padding-left:1.3rem;display:flex}.garmin-steps code{background:var(--card);border:1px solid var(--border);-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;border-radius:4px;padding:1px 5px;font-size:.8rem}.ride .info small.garmin-status{color:var(--muted)}.ride .info small.garmin-status.uploaded a,.ride .info small.garmin-status.duplicate a{color:var(--accent)}.ride .info small.garmin-status.failed{color:var(--warn);white-space:normal}.garmin-steps a{color:var(--accent)}.garmin-flow{counter-reset:garmin-step;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.garmin-flow>li{counter-increment:garmin-step;border:1px solid var(--border);border-radius:var(--radius);opacity:.7;flex-direction:column;gap:6px;padding:10px 12px 12px 44px;display:flex;position:relative}.garmin-flow>li.current{opacity:1;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.garmin-flow>li.done{opacity:1}.garmin-flow>li:before{content:counter(garmin-step);background:var(--border);width:22px;height:22px;color:var(--fg);border-radius:50%;place-items:center;font-size:.8rem;font-weight:700;display:grid;position:absolute;top:10px;left:12px}.garmin-flow>li.current:before{background:var(--accent-fill);color:var(--accent-fg)}.garmin-flow>li.done:before{content:"✓";background:var(--accent-fill);color:var(--accent-fg)}.garmin-flow button.primary{align-self:flex-start}.addressbar{border:1px solid var(--border);background:var(--panel-solid);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;padding:4px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;display:block;overflow:hidden}.addressbar mark{color:var(--accent);background:0 0;font-weight:700}.garmin-paste-row{gap:6px;display:flex}.garmin-paste-row input{flex:auto;min-width:0}.garmin-paste-row button{flex:none}.garmin-paste-row button[hidden],#garmin-ticket-hint:empty{display:none}.garmin-advanced summary{cursor:pointer;color:var(--muted);font-size:.85rem}.garmin-advanced[open]{flex-direction:column;gap:8px;display:flex}.garmin-advanced button{align-self:flex-start}
