:root{--bg:#fff4e0;--surface:#fff;--ink:#2b2d42;--muted:#6c6f85;--accent:#e4572e;--accent-ink:#fff;--sky:#76b5c5;--grass:#8cc084;--line:#ecdcc0;--ok:#3a9d5d;--bad:#c0392b;--radius:14px;--shadow:0 3px 0 var(--line);color:var(--ink);background:var(--bg);font-family:Nunito,ui-rounded,system-ui,-apple-system,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#1f2233;--surface:#2b2f45;--ink:#f3ede0;--muted:#a5a8bd;--line:#3b4060}}*{box-sizing:border-box}body{background:var(--bg);margin:0}button{font:inherit}.app{flex-direction:column;height:100dvh;display:flex}.topbar{justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.logo{letter-spacing:-.02em;color:var(--accent);font-size:1.4rem;font-weight:900}.badge{background:var(--surface);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:.8rem}.badge-ok{color:var(--ok)}.badge-bad{color:var(--bad)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.start{flex:1;grid-template-columns:minmax(280px,380px) 1fr;gap:16px;padding:0 16px 16px;display:grid}.start h1{margin:0 0 12px;font-size:1.4rem}.map{border-radius:var(--radius);min-height:420px;box-shadow:var(--shadow);overflow:hidden}@media (width<=760px){.start{grid-template-columns:1fr}.map{min-height:55dvh}}.segmented{background:var(--bg);border-radius:999px;gap:4px;margin-bottom:16px;padding:4px;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:1;padding:8px 12px}.segmented button.active{background:var(--surface);color:var(--ink);font-weight:700}.actions{gap:10px;display:grid}.actions button{text-align:left;flex-direction:column;gap:2px;padding:14px 16px;font-size:1.1rem;font-weight:800;display:flex}.actions small{opacity:.85;font-size:.85rem;font-weight:400}button{cursor:pointer;background:var(--bg);color:var(--ink);box-shadow:var(--shadow);border:0;border-radius:12px;padding:10px 14px}button:active{box-shadow:none;transform:translateY(2px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 3px #b8401d}button.secondary{background:var(--sky);color:#10303a;box-shadow:0 3px #4f8c9b}.ride{flex:1;align-content:start;gap:16px;padding:0 16px 16px;display:grid}.hud{flex-wrap:wrap;gap:10px;display:flex}.metric{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;min-width:110px;padding:10px 14px;display:flex}.metric.big{min-width:150px}.metric-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem}.metric-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:900}.metric.big .metric-value{font-size:2.4rem}.metric-value small{color:var(--muted);margin-left:4px;font-size:.8rem;font-weight:600}.ride-controls{gap:14px;max-width:640px;display:grid}.slider{gap:6px;font-weight:700;display:grid}.slider input{width:100%;accent-color:var(--accent)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.muted{color:var(--muted);margin:0;font-size:.9rem}.attribution{color:var(--muted);padding:8px 16px;font-size:.75rem}.attribution a{color:inherit}.ride3d{flex:1;min-height:0;transition:background 1.2s;position:relative;overflow:hidden}.ride-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.ride-overlay{background:var(--bg);place-content:center;justify-items:center;gap:12px;font-size:1.2rem;font-weight:800;display:grid;position:absolute;inset:0}.nav{justify-items:center;gap:6px;max-width:min(92vw,720px);display:grid;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.street{color:#fff;white-space:nowrap;background:#2f6fb3;border:2px solid #fff;border-radius:8px;padding:5px 14px;font-weight:800;box-shadow:0 3px #0000002e}.nav-hint{color:#2b2d42;background:#fffc;border-radius:999px;padding:2px 10px;font-size:.85rem;font-weight:700}.exits{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.exit{color:#2b2d42;background:#ffffffeb;align-items:center;gap:8px;padding:8px 14px;font-weight:700;display:flex;box-shadow:0 3px #00000026}.exit.active{background:var(--accent);color:#fff;box-shadow:0 3px #b8401d}.exit-arrow{font-size:1.3rem;line-height:1}.ride-panel{z-index:4;gap:10px;width:min(320px,100vw - 24px);padding:12px;display:grid;position:absolute;top:12px;right:12px}.ride-panel.collapsed{width:auto;box-shadow:none;background:0 0;padding:0}.dev{font-variant-numeric:tabular-nums;font-size:.72rem}.overview-wrap{width:168px;height:168px;position:absolute;bottom:18px;right:12px}.overview{cursor:zoom-in;background:#d3e9b4;border:4px solid #fff;border-radius:50%;width:100%;height:100%;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 4px #0000002e}.overview:active{transform:none;box-shadow:0 4px #0000002e}.overview canvas{width:100%;height:100%;display:block}.overview-wrap.large{aspect-ratio:1;z-index:6;width:min(86vw,100dvh - 170px);height:auto;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.overview-wrap.large .overview{cursor:zoom-out;border-radius:18px}.map-backdrop{z-index:5;background:#2b2d4273;position:absolute;inset:0}.map-north,.map-legend{color:#2b2d42;background:#ffffffe6;border-radius:999px;padding:3px 9px;font-size:.8rem;font-weight:800;position:absolute}.map-north{top:10px;right:10px}.map-legend{align-items:center;gap:6px;display:flex;bottom:10px;left:10px}.map-legend i{border-radius:3px;width:18px;height:5px;display:inline-block}.map-zoom{gap:4px;display:grid;position:absolute;bottom:-4px;left:-14px}.map-zoom button{color:#2b2d42;background:#fff;border-radius:50%;width:30px;height:30px;padding:0;font-weight:800;line-height:1;box-shadow:0 2px #0003}.overview-wrap.large .map-zoom{bottom:12px;left:auto;right:12px}.overview-wrap.large .map-zoom button{width:40px;height:40px;font-size:1.1rem}.metric.weather{min-width:150px}.weather-icon{margin-right:6px}.wind{color:var(--muted);font-size:.72rem;font-weight:700}.tools{justify-items:end;gap:8px;display:grid;position:absolute;bottom:204px;right:12px}.tools button{color:#2b2d42;background:#fffffff0;border-radius:50%;place-content:center;width:52px;height:52px;padding:0;font-size:1.35rem;font-weight:800;line-height:1;display:grid;box-shadow:0 3px #0000002e}.tools button small{letter-spacing:.02em;font-size:.55rem;font-weight:800}.pick{flex:1;gap:4px;font-size:.85rem;font-weight:700;display:grid}.pick select{font:inherit;border:2px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:6px 8px}.check{align-items:center;gap:8px;font-size:.9rem;font-weight:700;display:flex}.check input{width:18px;height:18px;accent-color:var(--accent)}.ride3d{--hud:#1c1e2ea8;--hud-line:#ffffff29;--hud-h:40px}.bar,.chip,.exit,.tools>button,.tool-pair,.panel-toggle{background:var(--hud);color:#fff;box-shadow:none;-webkit-backdrop-filter:blur(10px)}.bar{height:var(--hud-h);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;border-radius:999px;align-items:stretch;max-width:calc(100vw - 190px);display:flex;position:absolute;top:12px;left:50%;overflow:hidden;transform:translate(-50%)}.bar-main,.bar-sub,.grade{align-items:center;display:flex}.bar-main{gap:16px;padding:0 16px 0 18px}.stat{align-items:baseline;gap:3px;display:inline-flex}.stat b{font-size:1.12rem;font-weight:800;line-height:var(--hud-h);text-align:right;min-width:2ch}.stat small{opacity:.68;font-size:.66rem;font-weight:700}.stat.primary b{min-width:3ch;font-size:1.6rem}.grade{border-left:1px solid var(--hud-line);border-right:1px solid var(--hud-line);gap:5px;padding:0 13px;transition:background .5s,color .5s}.grade-arrow{opacity:.9;font-size:.62rem}.grade .stat b{min-width:3ch}.bar-sub{opacity:.84;gap:12px;padding:0 18px 0 14px;font-size:.78rem;font-weight:700}.chip{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;padding:0 13px;font-size:.85rem;display:flex;position:absolute}.chip-weather{height:var(--hud-h);top:12px;left:12px}.chip .wind{font-size:.75rem;font-weight:700}.chip .wind.against{color:#ffb85c}.chip .wind.with{color:#8fe3ae}.chip .test{text-transform:uppercase;letter-spacing:.06em;color:#2b2d42;background:#ffd23f;border-radius:999px;padding:1px 6px;font-size:.62rem;font-weight:800}.panel-toggle{width:var(--hud-h);height:var(--hud-h);border-radius:50%;justify-self:end;padding:0;font-size:1.05rem;line-height:1}.chip-conquest{border-radius:14px;gap:5px;min-width:132px;padding:7px 12px 8px;display:grid;bottom:26px;left:12px}.conquest-label b{color:#ff9b7d}.conquest-track{background:#fff3;border-radius:2px;height:4px;display:block;overflow:hidden}.conquest-track i{background:var(--accent);border-radius:2px;min-width:2px;height:100%;transition:width .6s;display:block}.conquest-plus{color:#fff;background:var(--accent);border-radius:999px;padding:1px 8px;font-weight:900;animation:2.6s ease-out forwards plus-rise;position:absolute;top:-22px;right:10px}@keyframes plus-rise{0%{opacity:0;transform:translateY(8px)}12%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@media (prefers-reduced-motion:reduce){.conquest-plus{animation:none}}.ride-attribution{color:#ffffffd9;text-shadow:0 1px 2px #0000008c;margin:0;font-size:.62rem;position:absolute;bottom:6px;left:14px}.ride-attribution a{color:inherit}.nav{gap:6px;bottom:16px}.street{align-items:baseline;gap:8px;padding:4px 12px;font-size:.95rem;display:flex}.street-next{opacity:.85;font-size:.72rem;font-weight:700}.exits{gap:6px}.exit{border:1px solid #0000;gap:6px;max-width:190px;padding:6px 11px;font-size:.85rem}.exit-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.exit-arrow{font-size:1.05rem}.exit.active{background:var(--accent);border-color:#ffffff8c}.tools{gap:6px;bottom:192px}.tools>button{width:40px;height:40px;font-size:1.15rem}.tool-pair{border-radius:20px;display:grid;overflow:hidden}.tool-pair button{color:#fff;width:40px;height:36px;box-shadow:none;background:0 0;border-radius:0;padding:0;font-size:1rem;font-weight:800}.tool-pair button+button{border-top:1px solid var(--hud-line)}.tools button:disabled{opacity:.35}.overview-wrap{width:150px;height:150px}.overview{border-width:3px;box-shadow:0 3px #00000029}.overview-wrap:not(.large) .map-zoom{display:none}@media (width<=1000px){.bar{max-width:calc(100vw - 150px)}.bar-sub{background:var(--hud);-webkit-backdrop-filter:blur(10px);border-radius:999px;height:24px;padding:0 11px;font-size:.72rem;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.bar{overflow:visible}.grade{border-right:0;border-radius:0 999px 999px 0}}@media (width<=560px){.bar{max-width:calc(100vw - 16px);top:58px}.bar-main{gap:12px;padding:0 12px 0 14px}.overview-wrap:not(.large){width:96px;height:96px;inset:136px auto auto 12px}.nav{justify-items:start;max-width:none;bottom:76px;left:12px;right:62px;transform:none}.exits{justify-content:flex-start}.tools{bottom:16px}}.lvl{background:var(--accent);color:#fff;align-self:stretch;align-items:center;gap:3px;padding:0 12px 0 15px;display:flex}.lvl small{text-transform:uppercase;opacity:.85;font-size:.6rem;font-weight:800}.lvl b{font-size:1.15rem;font-weight:900}.xp-line{background:#ffd23f;border-radius:0 2px 2px 0;height:3px;transition:width .5s ease-out;position:absolute;bottom:0;left:0}.popups{pointer-events:none;justify-items:center;gap:4px;display:grid;position:absolute;top:62px;left:50%;transform:translate(-50%)}.popup{color:#fff;background:var(--hud);-webkit-backdrop-filter:blur(10px);white-space:nowrap;border-radius:999px;padding:3px 11px;font-size:.8rem;font-weight:800;animation:2.8s ease-out forwards popup}@keyframes popup{0%{opacity:0;transform:translateY(10px)scale(.9)}10%{opacity:1;transform:none}78%{opacity:1}to{opacity:0;transform:translateY(-8px)}}.levelup{color:#fff;text-align:center;pointer-events:none;z-index:3;text-shadow:0 3px #00000047,0 0 26px #ffd23fbf;justify-items:center;gap:2px;animation:5.6s ease-out forwards levelup;display:grid;position:absolute;top:15%;left:50%;transform:translate(-50%)}.levelup-kicker{letter-spacing:.32em;text-transform:uppercase;color:#ffd23f;font-size:.8rem;font-weight:900}.levelup-number{font-size:clamp(4.5rem,14vw,8rem);font-weight:900;line-height:.95;animation:.7s cubic-bezier(.2,1.6,.4,1) both levelup-number}.levelup-rank{font-size:1.5rem;font-weight:900}.levelup-reward{text-shadow:none;background:var(--hud);-webkit-backdrop-filter:blur(10px);border-radius:14px;align-items:center;gap:9px;margin-top:10px;padding:7px 14px;animation:.5s ease-out .55s both levelup-reward;display:flex}.levelup-reward i{border:2px solid #fff;border-radius:50%;flex:none;width:20px;height:20px}.levelup-reward small{opacity:.8;font-size:.75rem}@keyframes levelup{0%{opacity:0}5%{opacity:1}86%{opacity:1}to{opacity:0;transform:translate(-50%)translateY(-14px)}}@keyframes levelup-number{0%{transform:scale(.2)}to{transform:scale(1)}}@keyframes levelup-reward{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.levelup,.levelup-number,.levelup-reward,.popup{animation-duration:10ms}.levelup{animation:none}}.ride-panel{max-height:calc(100dvh - 24px);overflow-y:auto}.gear{border-bottom:2px solid var(--line);gap:8px;padding-bottom:10px;display:grid}.gear-head{gap:1px;display:grid}.gear-row{grid-template-columns:82px 1fr;align-items:center;gap:8px;font-size:.82rem;font-weight:700;display:grid}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{color:#fff;border-radius:50%;place-content:center;width:26px;height:26px;padding:0;font-size:.62rem;font-weight:900;display:grid;box-shadow:inset 0 0 0 2px #0000001f}.swatch.chosen{outline:3px solid var(--ink);outline-offset:2px}.swatch.locked{opacity:1;filter:saturate(.25)brightness(.8);text-shadow:0 1px 2px #000000b3;cursor:not-allowed}.effects{flex-wrap:wrap;gap:5px;display:flex}.effect{background:var(--bg);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:700}.effect.on{background:var(--accent);color:#fff}.level-card{border-bottom:2px solid var(--line);align-items:center;gap:12px;margin-bottom:14px;padding-bottom:14px;display:flex}.level-badge{background:var(--accent);color:#fff;border-radius:50%;flex:none;place-content:center;width:46px;height:46px;font-size:1.3rem;font-weight:900;display:grid;box-shadow:0 3px #b8401d}.level-info{flex:1;gap:4px;min-width:0;display:grid}.level-track{background:var(--bg);border-radius:3px;height:6px;display:block;overflow:hidden}.level-track i{background:#f2b417;border-radius:3px;height:100%;display:block}.level-info small{color:var(--muted);font-size:.75rem}@media (width<=1000px){.popups{top:92px}}@media (width<=560px){.popups{top:136px}.levelup{top:24%}.lvl{padding:0 9px 0 12px}}.trainer{border-top:2px solid var(--line);border-bottom:2px solid var(--line);gap:8px;padding:10px 0;display:grid}.dot{background:var(--muted);border-radius:50%;flex:none;width:10px;height:10px}.dot.connected{background:var(--ok)}.dot.connecting{background:#f2b417;animation:1s ease-in-out infinite pulse}.dot.error{background:var(--bad)}@keyframes pulse{50%{opacity:.3}}.trainer-error{color:var(--bad);margin:0;font-size:.82rem;font-weight:700}.riders-online{border-left:1px solid var(--hud-line);align-items:center;gap:5px;padding-left:8px;font-size:.8rem;font-weight:800;display:inline-flex}.riders-online i{background:#8fe3ae;border-radius:50%;width:8px;height:8px}.riders-online.connecting i{background:#ffd23f;animation:1s ease-in-out infinite pulse}.riders-online.offline i{background:#ff7a66}.name-field{color:var(--muted);gap:4px;margin-bottom:14px;font-size:.8rem;font-weight:700;display:grid}.name-field input{font:inherit;color:var(--ink);border:2px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 10px;font-size:1rem;font-weight:700}.name-field input:focus{outline:3px solid var(--sky);outline-offset:1px}.pinmap{touch-action:none;background:#d3e9b4;position:relative}.pinmap canvas{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.map-message{color:var(--muted);place-content:center;font-weight:700;display:grid;position:absolute;inset:0}.pinmap-legend{pointer-events:none;color:#2b2d42;background:#ffffffe6;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.8rem;font-weight:800;display:flex;position:absolute;bottom:10px;left:10px}.pinmap-legend i{border-radius:3px;width:18px;height:5px}.pinmap-zoom{gap:6px;display:grid;position:absolute;bottom:10px;right:10px}.pinmap-zoom button{color:#2b2d42;background:#fff;border-radius:50%;width:40px;height:40px;padding:0;font-weight:800}.name-field small{font-size:.72rem;font-weight:500}.help{z-index:7;color:#fff;-webkit-backdrop-filter:blur(12px);background:#1c1e2edb;border-radius:16px;gap:10px;width:min(400px,100vw - 32px);padding:16px 18px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.help b{font-size:1.1rem}.help ul{gap:7px;margin:0;padding:0;font-size:.9rem;list-style:none;display:grid}.help kbd{text-align:center;min-width:1.6em;font:inherit;background:#ffffff2e;border-radius:6px;padding:1px 5px;font-weight:800;display:inline-block}.help button{justify-self:start}.crash{flex:1;place-content:center;justify-items:start;gap:12px;max-width:520px;margin:0 auto;padding:24px;display:grid}.crash h1{margin:0}.crash code{color:var(--muted);word-break:break-word;margin-top:6px;font-size:.8rem;display:block}.menu{flex-direction:column;flex:1;gap:14px;min-height:0;padding:0 16px 12px;display:flex}.menu h2{margin:0 0 8px;font-size:1.05rem}.menu-head{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.profile-chip,.device-chips{background:var(--surface);box-shadow:var(--shadow);color:var(--ink);cursor:pointer;text-align:left;border:0;border-radius:999px;justify-self:start;align-items:center;gap:10px;padding:6px 14px 6px 6px;font-weight:400;display:flex}.profile-chip .level-badge{width:38px;height:38px;font-size:1.05rem}.profile-text{gap:1px;min-width:110px;display:grid}.profile-text small{color:var(--muted);font-size:.72rem}.profile-text .level-track{height:4px}.device-chips{justify-self:end;gap:14px;padding:8px 14px;font-size:.82rem}.device-chips span{align-items:center;gap:6px;display:flex}.menu-tabs{background:var(--surface);box-shadow:var(--shadow);border-radius:999px;gap:4px;padding:4px;display:flex}.menu-tabs button{color:var(--muted);cursor:pointer;box-shadow:none;background:0 0;border:0;border-radius:999px;padding:8px 18px;font-weight:700}.menu-tabs button.active{background:var(--accent);color:var(--accent-ink)}.play{flex:1;grid-template-columns:minmax(320px,440px) 1fr;gap:16px;min-height:0;display:grid}.play-side{flex-direction:column;gap:12px;min-height:0;padding-bottom:4px;display:flex;overflow:auto}.play-side>*{flex:none}.play .map{height:100%;min-height:0}.hero{text-align:left;border-radius:var(--radius);cursor:pointer;color:#fff;background:linear-gradient(135deg,#e4572e 0%,#f2913d 55%,#f2c14e 100%);border:0;gap:4px;padding:22px 20px 20px;display:grid;position:relative;overflow:hidden;box-shadow:0 4px #b8401d}.hero:after{content:"";border:22px solid #ffffff29;border-radius:50%;width:190px;height:190px;position:absolute;bottom:-46px;right:-30px}.hero:disabled{cursor:default;filter:saturate(.55);opacity:1}.hero-kicker{letter-spacing:.08em;text-transform:uppercase;opacity:.9;font-size:.8rem;font-weight:800}.hero-title{letter-spacing:-.02em;font-size:2rem;font-weight:900;line-height:1.05}.hero-sub{opacity:.92;max-width:30ch;font-size:.9rem}.hero-go{align-items:center;gap:10px;margin-top:10px;font-size:1.05rem;font-weight:800;display:flex}.hero-go kbd{font:inherit;background:#ffffff38;border-radius:6px;padding:2px 7px;font-size:.7rem;font-weight:700}.modes{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.mode{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);opacity:.62;align-content:start;gap:3px;padding:12px;display:grid}.mode.ready{opacity:1;outline:2px solid var(--accent)}.mode-icon{font-size:1.4rem}.mode small{color:var(--muted);font-size:.74rem;line-height:1.3}.mode em{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:4px;font-size:.66rem;font-style:normal;font-weight:800}.place .segmented{margin-bottom:10px}button.wide{width:100%;padding:12px 16px;font-size:1rem;font-weight:800}.menu-page{flex:1;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-content:start;gap:16px;width:100%;max-width:1100px;min-height:0;margin:0 auto;display:grid;overflow:auto}.menu-page .card{align-content:start;gap:10px;display:grid}.menu-page .muted,.menu .muted{color:var(--muted);margin:0;font-size:.85rem}.menu .dot{background:var(--muted);border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.menu .dot.connected{background:var(--ok)}.menu .dot.connecting{background:#f2b417}.menu .dot.error{background:var(--bad)}.device .row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.readout{background:var(--bg);border-radius:10px;gap:22px;padding:10px 14px;display:flex}.readout b{font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:900}.rewards{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rewards li{opacity:.55;align-items:center;gap:10px;font-size:.85rem;display:flex}.rewards li.have{opacity:1}.rewards small{color:var(--muted);font-size:.74rem;display:block}.rewards i{width:16px;height:16px;box-shadow:0 0 0 2px var(--line);border-radius:50%;flex:none}.reward-level{background:var(--bg);border-radius:50%;flex:none;place-content:center;width:26px;height:26px;font-size:.75rem;font-weight:800;display:grid}.rewards li.have .reward-level{background:var(--accent);color:#fff}.stats{grid-template-columns:1fr 1fr;gap:10px;margin:0;display:grid}.stats div{background:var(--bg);border-radius:10px;padding:10px 12px}.stats dt{color:var(--muted);font-size:.75rem}.stats dd{margin:0;font-size:1.25rem;font-weight:900}@media (width<=860px){.menu-head{grid-template-columns:1fr 1fr}.menu-tabs{grid-area:2/1/auto/-1;justify-content:space-between}.menu-tabs button{flex:1;padding:8px 6px}.play{grid-template-columns:1fr;overflow:auto}.play-side{overflow:visible}.play .map{min-height:50dvh}}.place-card{color:#fff;background:var(--hud);-webkit-backdrop-filter:blur(10px);pointer-events:none;border-radius:16px;align-items:flex-start;gap:10px;max-width:min(320px,70vw);padding:10px 14px 10px 10px;animation:.35s ease-out place-in;display:flex;position:absolute;top:58px;left:12px}.place-card>div{gap:1px;min-width:0;display:grid}.place-card b{font-size:1rem;line-height:1.2}.place-card span{opacity:.9;font-size:.8rem}.place-card small{letter-spacing:.04em;text-transform:uppercase;opacity:.7;font-size:.68rem;font-weight:700}.place-card small:last-child{text-transform:none;letter-spacing:0;margin-top:3px;font-weight:400}.place-icon{border-radius:50%;flex:none;place-content:center;width:40px;height:40px;font-size:1.25rem;display:grid}@keyframes place-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}button.mode{text-align:left;font:inherit;color:var(--ink);cursor:pointer;border:0;font-weight:400}button.mode:disabled{cursor:default}.mode.ready em{color:var(--accent)}.route-note{background:color-mix(in srgb, var(--bad) 16%, var(--surface));border-radius:10px;margin:0;padding:8px 12px;font-size:.85rem}.tour{gap:10px;display:grid}.tour h2,.tour p{margin:0}.tour-sketch{background:color-mix(in srgb, var(--accent,#e4572e) 7%, var(--surface));border-radius:10px;width:100%;height:auto}.tour-sketch polyline{fill:none;stroke-linecap:round;stroke-linejoin:round}.tour-sketch .way{stroke:currentColor;stroke-width:2px;opacity:.45}.tour-sketch .done{stroke:var(--accent,#e4572e);stroke-width:3px}.tour-sketch .stage{fill:var(--surface);stroke:currentColor;stroke-width:1.5px}.tour-sketch .from{fill:currentColor}.tour-sketch .to{fill:var(--accent,#e4572e)}.tour .link{color:inherit;cursor:pointer;font:inherit;opacity:.8;background:0 0;border:0;justify-self:start;padding:0;text-decoration:underline}.route-note.info{background:color-mix(in srgb, var(--accent,#e4572e) 12%, var(--surface))}.route-note .link{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.route-left{color:#ffd23f;font-weight:800}.search{gap:6px;margin-bottom:8px;display:flex}.search input{min-width:0;font:inherit;border:2px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;flex:1;padding:9px 12px}.search button{padding:9px 14px}.hits{gap:4px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;display:grid;overflow:auto}.hits button{text-align:left;background:var(--bg);width:100%;box-shadow:none;color:var(--ink);cursor:pointer;border:0;border-radius:10px;gap:1px;padding:8px 10px;font-weight:400;display:grid}.hits button:hover{outline:2px solid var(--accent)}.hits small{color:var(--muted);font-size:.75rem}.building{background:var(--bg);border-radius:10px;margin:0 0 8px;padding:10px 12px;font-size:.88rem}.building small{color:var(--muted);margin-top:3px;font-size:.75rem;display:block}.spinner{border:2px solid var(--accent);vertical-align:-1px;border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.9s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.region-chips{flex-wrap:wrap;gap:6px;max-height:96px;margin-bottom:10px;display:flex;overflow:auto}.region-chips button{box-shadow:none;background:var(--bg);color:var(--muted);cursor:pointer;border:0;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700}.region-chips button.active{background:var(--accent);color:var(--accent-ink)}.ranking{gap:3px;margin:0 0 10px;padding:0;list-style:none;display:grid}.ranking li{background:var(--bg);border-radius:8px;align-items:center;gap:8px;padding:5px 10px;font-size:.85rem;display:flex}.ranking li.you{outline:2px solid var(--accent)}.ranking .rank{width:1.4em;color:var(--muted);text-align:right;font-weight:900}.ranking i{border-radius:50%;flex:none;width:10px;height:10px}.ranking b{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ranking small{color:var(--muted)}.ranking .km{font-variant-numeric:tabular-nums;font-weight:800}.volume{color:var(--muted);align-items:center;gap:10px;font-size:.85rem;display:flex}.volume input{accent-color:var(--accent);flex:1}.garage-stage{z-index:0;pointer-events:auto;width:100vw;height:100dvh;display:block;position:fixed;inset:0}.topbar,.attribution,.menu>:not(.garage-stage){z-index:1;position:relative}.menu,.play,.menu-page{pointer-events:none}.menu-head>*,.play>*,.menu-page>*{pointer-events:auto}.attribution{color:#ffffffd1;text-shadow:0 1px 2px #0009;pointer-events:none}.attribution a{pointer-events:auto}.topbar{pointer-events:none}.topbar>*{pointer-events:auto}.logo{text-shadow:0 1px #00000040}.play{grid-template-columns:minmax(300px,380px) 1fr}.map-dock{border-radius:var(--radius);width:min(260px,100%);height:190px;box-shadow:var(--shadow);place-self:start end;transition:width .25s,height .25s;position:relative;overflow:hidden}.map-dock.big{align-self:stretch;width:100%;height:100%}.map-dock .map{height:100%;min-height:0;box-shadow:none;border-radius:0}.map-size{color:#2b2d42;background:#fff;border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:800;position:absolute;top:10px;right:10px}.menu-page{grid-template-columns:minmax(300px,380px);justify-content:start;width:auto;max-width:none;margin:0}@media (width<=860px){.menu{overflow:auto}.play{flex:none;overflow:visible}.map-dock,.map-dock.big{justify-self:stretch;width:100%;height:46dvh}.menu-page{flex:none;grid-template-columns:1fr;overflow:visible}}@media (prefers-reduced-motion:reduce){.map-dock{transition:none}}.menu>.garage-labels{z-index:1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.garage-label{pointer-events:auto;cursor:pointer;color:#fff;white-space:nowrap;will-change:transform;background:#1c1e2ee6;border:0;border-radius:14px;justify-items:center;gap:1px;padding:6px 14px 7px;transition:background-color .18s ease-out;display:grid;position:absolute;top:0;left:0;box-shadow:0 3px #00000040}.garage-label:after{content:"";pointer-events:none;background:#fff9;width:2px;height:14px;margin-left:-1px;position:absolute;top:100%;left:50%}.garage-label b{font-size:.92rem}.garage-label small{opacity:.8;font-size:.7rem}.garage-label:hover,.garage-label:focus-visible{background:var(--accent)}.garage-label.main{background:var(--accent);padding:8px 18px 9px}.garage-label.main b{font-size:1.05rem}.lobby{pointer-events:none;flex:1;align-content:end;justify-items:start;gap:8px;min-height:0;display:grid}.lobby>*{pointer-events:auto}.lobby .hero{width:min(360px,100%)}.lobby-hint{color:#ffffffd9;text-shadow:0 1px 2px #0009;pointer-events:none;margin:0;font-size:.8rem}.back-to-garage{cursor:pointer;pointer-events:auto;color:#fff;-webkit-backdrop-filter:blur(8px);background:#1c1e2ec7;border:0;border-radius:999px;align-self:start;margin-bottom:-4px;padding:6px 14px;font-size:.85rem;font-weight:800}.back-to-garage kbd{font:inherit;background:#fff3;border-radius:5px;margin-left:6px;padding:1px 6px;font-size:.68rem}@media (width<=860px){.lobby{flex:none}.garage-label small{display:none}}@media (prefers-reduced-motion:reduce){.garage-label{transition:none}}.menu-tabs button{padding:8px 13px}@media (width<=1000px){.device-chips span+span{display:none}}.lobby-go{cursor:pointer;color:#fff;background:linear-gradient(135deg,#e4572e,#f2913d);border:0;border-radius:999px;align-items:baseline;gap:10px;padding:10px 16px;display:flex;box-shadow:0 3px #b8401d}.lobby-go b{font-size:1rem}.lobby-go span{opacity:.92;font-size:.82rem}.lobby-go kbd{font:inherit;background:#ffffff38;border-radius:5px;padding:1px 6px;font-size:.68rem;font-weight:700}.lobby-go:disabled{cursor:default;filter:saturate(.6);opacity:1}.garage-label.main:after{top:auto;bottom:100%}.map-tools{gap:6px;display:flex;position:absolute;top:10px;right:10px}.map-tools button{color:#2b2d42;cursor:pointer;background:#fff;border:0;border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:800;box-shadow:0 2px #00000026}.ride-canvas{filter:saturate(1.16)contrast(1.04)}@media (width<=560px){.menu-tabs{gap:0}.menu-tabs button{padding:7px 4px;font-size:.78rem}}.ride3d{--hud:#1c1e2ee0}.bar,.chip,.exit,.tools>button,.tool-pair,.panel-toggle,.popup{box-shadow:0 3px #00000038}.exit.active{box-shadow:0 3px #b8401d}.ride-overlay{color:#fff4e0;background:#2a2433}.ride-overlay:before{content:"";border:4px solid #ffffff2e;border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;margin-bottom:14px;animation:.9s linear infinite ride-spin}@keyframes ride-spin{to{rotate:360deg}}@media (prefers-reduced-motion:reduce){.ride-overlay:before{animation:none}}.exit-kind{opacity:.8;white-space:nowrap;font-size:.62rem;font-weight:700}.exit:has(.exit-kind){max-width:260px}.feedback{z-index:40;color:#fff;background:#1c1e2eeb;border-radius:16px;gap:8px;width:min(340px,100vw - 90px);padding:10px;display:grid;position:fixed;bottom:150px;right:64px;box-shadow:0 10px 30px #00000059}.feedback img{border-radius:10px;width:100%;display:block}.feedback textarea{font:inherit;resize:vertical;color:#fff;background:#ffffff1a;border:1px solid #ffffff40;border-radius:10px;padding:8px 10px;font-size:.9rem}.feedback textarea::placeholder{color:#ffffff8c}.feedback-row{justify-content:flex-end;gap:8px;display:flex}.feedback-row button{background:var(--accent);color:#fff;border-radius:999px;width:auto;height:auto;padding:7px 14px;font-size:.85rem;font-weight:800}.feedback-row button.quiet{background:#ffffff24}.feedback-error{color:#ffb4a8}.feedback-toast{z-index:40;color:#fff;background:#1c1e2eeb;border-radius:999px;padding:7px 14px;font-size:.85rem;font-weight:800;position:fixed;bottom:210px;right:64px}.map-legend .map-legend-place{background:#c9a21e;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 1.5px #fff}
