:root{--bg: #ffffff;--surface: #f8fafc;--ink: #181d26;--ink-soft: #41454d;--line: #dddddd;--sea: #f8fafc;--land: #ffffff;--land-stroke: #dddddd;--land-far: #eef0f3;--land-far-stroke: #e2e5ea;--park: #e6f2ec;--accent: #ffdc58;--on-accent: #000000;--accent-ink: #181d26;--on-livery: #ffffff;--link: #1b61c9;--focus: #458fff;--heat-amber: #f4d35e;--heat-orange: #fcab79;--heat-hot: #d9a441;--heat-max: #aa2d00;--boost-gold: #d9a441;--difficulty-easy: #006400;--difficulty-medium: #254fad;--difficulty-hard: #aa2d00;--difficulty-expert: #181d26;--on-difficulty: #ffffff;--danger: #aa2d00;--livery-kmb: #d71920;--livery-ctb: #fdb913;--livery-nlb: #00934b;--livery-mtr: #007dc5;--shadow-color: var(--ink);--shadow: 3px 3px 0 0 var(--shadow-color);--shadow-lg: 6px 6px 0 0 var(--shadow-color);--border-strong: var(--ink);--glass: color-mix(in srgb, var(--surface) 80%, transparent);--font-head: "Archivo Black", "Helvetica Neue", "PingFang HK", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-sans: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "PingFang HK", "PingFang TC", "Microsoft JhengHei", sans-serif;--fs-2xs: .6875rem;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .875rem;--fs-base: .9375rem;--fs-lg: 1rem;--fs-xl: 1.0625rem;--fs-2xl: 1.1875rem;--fs-3xl: 1.375rem;--fs-4xl: 1.5rem;--fs-5xl: 1.625rem;--fs-6xl: 1.75rem;--r-xs: .125rem;--r-sm: .375rem;--r-md: .625rem;--r-lg: .75rem;--r-xl: .75rem;--r-2xl: .75rem;--r-3xl: .75rem;--r-pill: 9999px;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--kb-inset: 0px;color-scheme:light}body.dark{--bg: #181d26;--surface: #262a34;--ink: #ffffff;--ink-soft: #9297a0;--line: #333840;--sea: #131720;--land: #1d1f25;--land-stroke: #2e333d;--land-far: #171b23;--land-far-stroke: #232833;--park: #1f2a26;--accent: #ffdc58;--on-accent: #000000;--accent-ink: #ffdc58;--danger: #fcab79;--difficulty-easy: #39bf45;--difficulty-medium: #458fff;--difficulty-hard: #d9a441;--difficulty-expert: #ffffff;--on-difficulty: #181d26;--heat-max: #d71920;--shadow-color: rgba(0, 0, 0, .6);--border-strong: #4a5262;--glass: color-mix(in srgb, var(--surface) 80%, transparent);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);transition:background .25s ease,color .25s ease}h1,h2{font-family:var(--font-head);font-weight:400}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none;padding:0}button:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}.app-shell{min-height:100dvh;display:flex;flex-direction:column}main{flex:1;width:min(1080px,100%);margin:0 auto;padding:0 20px}.hidden-typing-input{position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;border:none;padding:0}.topbar{width:min(1080px,100%);margin:0 auto;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-weight:400;letter-spacing:.02em;font-size:var(--fs-base);white-space:nowrap}.brand-mark{width:24px;height:24px;display:block}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0;max-width:70%}.top-actions{display:flex;gap:8px;margin-left:auto}.top-actions-desktop{display:flex;gap:8px}.top-actions-mobile{display:none}.location-picker{position:relative}.location-current{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:190px;margin:0;padding:6px;list-style:none;display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}.location-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 10px;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:600;text-align:left}.location-option:not(:disabled):hover{background:var(--bg)}.location-option.active{color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 18%,transparent)}.location-option:disabled{cursor:default;color:var(--ink-soft)}.location-soon{flex:none;font-size:var(--fs-2xs);font-weight:700;color:var(--ink-soft);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 7px;white-space:nowrap}.location-group-header{display:flex;align-items:stretch;gap:2px}.location-group-play{flex:1;font-weight:700}.location-group-toggle{flex:none;display:flex;align-items:center;padding:0 8px;border-radius:var(--r-sm);color:var(--ink-soft)}.location-group-toggle:hover{background:var(--bg)}.location-group-chevron{transition:transform .15s ease}.location-group-toggle.open .location-group-chevron{transform:rotate(180deg)}.location-sublist{padding:0 0 0 10px;list-style:none;display:flex;flex-direction:column;gap:2px;border-left:2px solid var(--line);margin:2px 0 2px 12px}.location-option-child{font-weight:500}.icon-button{display:flex;align-items:center;gap:5px;padding:8px 10px;border-radius:var(--r-md);background:var(--surface);border:2px solid var(--border-strong);box-shadow:var(--shadow);font-size:var(--fs-xs);font-weight:700;transition:transform .12s ease,border-color .12s ease}.icon-button:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--ink) 25%,var(--line))}.map-lights-inline.on{color:var(--boost-gold);border-color:color-mix(in srgb,var(--boost-gold) 55%,var(--border-strong));box-shadow:0 0 12px color-mix(in srgb,var(--boost-gold) 40%,transparent),var(--shadow)}footer{width:min(1080px,100%);margin:40px auto 0;padding:22px 20px 30px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;color:var(--ink-soft);font-size:var(--fs-xs)}.footer-brand{display:flex;flex-direction:column;gap:8px}.footer-wordmark{font-weight:500;letter-spacing:.04em;color:var(--ink)}.footer-lines{display:flex;gap:4px}.footer-lines i{width:16px;height:5px;border-radius:3px}.footer-meta{text-align:right}.footer-meta p{margin:4px 0}.footer-label{font-weight:700;margin-right:6px;letter-spacing:.06em}.footer-sep{margin:0 6px}footer a{color:var(--link)}.footer-nav{display:flex;flex-wrap:wrap;gap:2px;align-items:center;justify-content:flex-end}.footer-nav button{padding:0;border:0;background:none;cursor:pointer;font:inherit;color:var(--link)}.loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:80px 0;color:var(--ink-soft)}.loading span{width:16px;height:16px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent-ink);animation:spin .8s linear infinite}.data-error{margin:60px auto;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:24px;display:flex;flex-direction:column;gap:10px;text-align:center;box-shadow:var(--shadow)}.data-error button{align-self:center;padding:8px 18px;border-radius:var(--r-md);background:var(--accent);color:var(--on-accent);font-weight:700}.hk-map{width:100%;height:100%;display:block;background:var(--sea)}.hk-land{fill:var(--land);stroke:var(--land-stroke)}.hk-terrain{pointer-events:none}.hk-context{fill:var(--land-far);stroke:var(--land-far-stroke)}.hk-parks{fill:var(--park);stroke:none}.hk-water{fill:var(--sea);stroke:var(--land-stroke)}.hk-route polyline{fill:none;stroke-linecap:round;stroke-linejoin:round;transition:opacity .25s ease}@keyframes overspeed-pulse{50%{box-shadow:0 0 14px color-mix(in srgb,var(--heat-hot) 55%,transparent)}}@keyframes overspeed-tremble{25%{transform:translate(.6px,-.4px)}75%{transform:translate(-.6px,.4px)}}.game-streak.streak-tier-1 strong{color:var(--heat-amber)}.game-streak.streak-tier-2 strong{color:var(--heat-orange)}.game-streak.streak-tier-2{animation:overspeed-pulse .7s ease-in-out infinite}.game-streak.streak-tier-3 strong{color:var(--heat-max)}.game-streak.streak-tier-3{animation:overspeed-pulse .35s ease-in-out infinite,overspeed-tremble .12s linear infinite}.hk-map.overview .hk-route polyline{opacity:.7}.hk-map.overview .hk-route:hover polyline{opacity:1}.hk-route.dimmed polyline{opacity:.18}.hk-route.unplayed polyline:not(.hk-route-hit){stroke:color-mix(in srgb,var(--ink) 22%,var(--bg))}body.dark .hk-map.overview .hk-route:not(.unplayed):not(.dimmed) polyline:not(.hk-route-hit){filter:brightness(1.18) saturate(1.25) drop-shadow(0 0 .5px var(--line-color)) drop-shadow(0 0 2px var(--line-color)) drop-shadow(0 0 6px var(--line-color))}.hk-backdrop{pointer-events:none}.hk-backdrop.dimmed{opacity:.25}.backdrop-line{fill:none;stroke:color-mix(in srgb,var(--ink) 14%,var(--bg));stroke-width:calc(.27px * var(--unit-scale, 1));stroke-linecap:round;stroke-linejoin:round}.backdrop-glow{fill:none;stroke:var(--livery);stroke-width:calc(.27px * var(--unit-scale, 1));stroke-linecap:round;stroke-linejoin:round}.backdrop-lit-chunk{opacity:0}.hk-backdrop.all-lit .backdrop-lit-chunk{opacity:1}.hk-backdrop.lamp-armed .backdrop-lit-chunk{will-change:opacity}@media (prefers-reduced-motion: no-preference){.hk-route.daily:not(.dimmed) polyline:not(.hk-route-hit){animation:daily-blink 2.8s ease-in-out infinite}body.dark .hk-route.daily:not(.dimmed) polyline:not(.hk-route-hit){animation-name:daily-blink-dark}.backdrop-lit-chunk{transition:opacity .38s ease var(--chunk-delay-rev, 0s)}.hk-backdrop.all-lit .backdrop-lit-chunk{transition-delay:var(--chunk-delay, 0s)}.hk-route polyline:not(.hk-route-hit){transition:stroke .5s ease var(--draw-delay, 0s),filter 0s linear var(--draw-delay, 0s)}.landing-map .hk-route polyline:not(.hk-route-hit),.landing-map .backdrop-line{stroke-dasharray:1;stroke-dashoffset:1;animation:draw-route .9s ease-out var(--draw-delay, 0s) forwards}.landing-map .hk-route.selected polyline:not(.hk-route-hit){animation:draw-route .45s ease-out forwards}.landing-map .hk-route.daily:not(.dimmed) polyline:not(.hk-route-hit){animation:draw-route .9s ease-out var(--draw-delay, 0s) forwards,daily-blink 2.8s ease-in-out 1.2s infinite}body.dark .landing-map .hk-route.daily:not(.dimmed) polyline:not(.hk-route-hit){animation:draw-route .9s ease-out var(--draw-delay, 0s) forwards,daily-blink-dark 2.8s ease-in-out 1.2s infinite}}@keyframes draw-route{to{stroke-dashoffset:0}}@keyframes daily-blink{0%,to{filter:saturate(1) brightness(1) drop-shadow(0 0 1px var(--line-color, #e60012))}50%{filter:saturate(.3) brightness(1.7) drop-shadow(0 0 6px var(--line-color, #e60012))}}@keyframes daily-blink-dark{0%,to{filter:saturate(1) brightness(1) drop-shadow(0 0 1px var(--line-color, #e60012))}50%{filter:saturate(.85) brightness(1.4) drop-shadow(0 0 7px var(--line-color, #e60012))}}.hk-route-hit{stroke:transparent;stroke-width:14;cursor:pointer;pointer-events:stroke}.hk-station{fill:var(--surface);stroke:var(--line-color, var(--accent))}.hk-station.done{fill:var(--line-color, var(--accent))}.hk-train{transition:transform .6s cubic-bezier(.35,.85,.35,1);pointer-events:none}.hk-train-body{transform-box:fill-box;transform-origin:center}.hk-train-body.shake{animation:train-shake .18s ease}@keyframes train-shake{25%{transform:translateY(-1.6px) rotate(-5deg)}75%{transform:translateY(1.6px) rotate(5deg)}}.hk-train-body.boost{animation:train-boost-pop .5s ease-out}@keyframes train-boost-pop{30%{transform:scale(1.35)}}.hk-train-boost-ring{fill:none;stroke:var(--boost-gold);animation:train-boost-ring .5s ease-out}@keyframes train-boost-ring{0%{r:8;stroke-width:2.2;opacity:.9}to{r:22;stroke-width:.3;opacity:0}}.station-sign{pointer-events:none}.station-sign-pop{animation:station-sign-pop 1.4s ease both}.station-sign text{font-family:inherit;text-anchor:middle}.station-sign-en{font-size:15px;font-weight:700;fill:#15181c}.station-sign-zh{font-size:17px;font-weight:600;fill:#15181c}.station-sign-metro-zh{font-size:18px;font-weight:700;fill:#fff}.station-sign-metro-en{font-size:10px;font-weight:600;fill:#fff}.station-sign-twrail-zh{font-size:18px;font-weight:700;fill:#10305c}.station-sign-twrail-en{font-size:10px;font-weight:600;fill:#4a5a72}.station-sign-ca-en{font-size:15px;font-weight:700;fill:#fff}.station-sign-ca-dark{font-size:15px;font-weight:700;fill:#1b1d22}@keyframes station-sign-pop{0%{opacity:0;transform:translateY(12px)}16%{opacity:1;transform:translateY(-3px)}26%{transform:translateY(0)}78%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}main:has(>.globe-landing){display:flex;flex-direction:column}main:has(>.globe-landing) .globe-landing{flex:1}.globe-landing{display:flex;flex-direction:column;align-items:center;min-height:calc(100dvh - 110px);text-align:center;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);overflow:hidden}.landing-hero{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;max-width:720px;padding:min(5vh,40px) 20px 0}.landing-slogan{width:100%;margin:0;font-family:var(--font-head);font-size:clamp(1.75rem,6vw,3.3rem);line-height:1.06;letter-spacing:-.01em;text-wrap:balance}.landing-tagline{width:100%;max-width:34ch;margin:0;color:var(--ink-soft);font-size:var(--fs-base);line-height:1.5;text-wrap:balance}.landing-cta{margin-top:4px;padding:15px 28px}.run-total-title{margin:0;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.4;font-variant-numeric:tabular-nums}.globe-landing .globe-landing-credits{position:static;margin:0;padding:0 20px 18px}.globe{--globe-sea: #cfe3f2;--globe-lake: #bcd9ef;--globe-land: #d7e8c6;--globe-mountain: #c6d8ae;--globe-desert: #f2e3c9;--globe-ice: #ffffff;--globe-coast: #7d9a86;--globe-rim: #9db6c6;position:relative;width:min(86vw,540px,72vh);aspect-ratio:1;overflow:visible}.globe-svg{display:block;width:100%;height:100%}.globe-sea{fill:var(--globe-sea);stroke:var(--globe-coast);vector-effect:non-scaling-stroke}.globe-land{fill:var(--globe-land);stroke:none}.globe-mountain{fill:var(--globe-mountain);stroke:none}.globe-desert{fill:var(--globe-desert);stroke:none}.globe-ice{fill:var(--globe-ice);stroke:none}.globe-lake{fill:var(--globe-lake);stroke:var(--globe-coast);vector-effect:non-scaling-stroke}.globe-coast{fill:none;stroke:var(--globe-coast);stroke-linejoin:round;vector-effect:non-scaling-stroke}.globe-shade{pointer-events:none;opacity:.5}.globe-shade-lit{stop-color:#fff;stop-opacity:.55}.globe-shade-mid{stop-color:#fff;stop-opacity:0}.globe-shade-limb{stop-color:#181d26;stop-opacity:.16}body.dark .globe-shade-lit{stop-opacity:.08}body.dark .globe-shade-limb{stop-color:#000;stop-opacity:.3}.globe-rim{fill:none;stroke:var(--globe-rim);vector-effect:non-scaling-stroke}body.dark .globe{--globe-sea: var(--sea);--globe-lake: var(--sea);--globe-land: var(--land);--globe-mountain: var(--land-far);--globe-desert: var(--land-far);--globe-ice: var(--surface);--globe-coast: var(--land-stroke);--globe-rim: var(--land-stroke)}.globe-pin{position:absolute;display:block;width:0;height:0;padding:0;border:0;background:none;color:var(--ink);cursor:pointer}.globe-pin-dot{position:absolute;top:0;left:0;width:15px;height:15px;margin:-7.5px 0 0 -7.5px;border:2px solid var(--livery-kmb);border-radius:50%;background:var(--bg);pointer-events:auto}.globe-pin-dot:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid var(--livery-kmb);border-radius:50%;animation:globe-pin-pulse 2.2s ease-out infinite}@keyframes globe-pin-pulse{0%{opacity:.65;transform:scale(1)}70%,to{opacity:0;transform:scale(2.1)}}.globe-pin-label{position:absolute;bottom:12px;left:50%;transform:translate(-50%);padding:3px 10px;border:2px solid var(--border-strong);border-radius:999px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow);font-size:var(--fs-xs);font-weight:700;white-space:nowrap;pointer-events:auto}.globe-pin-below .globe-pin-label{top:12px;bottom:auto;left:0;transform:translate(-14px)}.globe-pin:hover .globe-pin-label,.globe-pin:focus-visible .globe-pin-label{background:var(--accent);color:var(--on-accent)}.globe-pin-soon{cursor:default}.globe-pin-soon .globe-pin-dot{border-color:var(--ink-soft);background:var(--bg)}.globe-pin-soon .globe-pin-dot:after{content:none}.globe-pin-soon .globe-pin-label{border-color:var(--line);color:var(--ink-soft);font-weight:600;box-shadow:none}.globe-pin-tag{margin-left:5px;font-size:var(--fs-2xs);font-weight:500;opacity:.85}.earth-edge{--edge-sea: #cfe3f2;--edge-land: #d7e8c6;--edge-ice: #ffffff;--edge-coast: #7d9a86;--edge-rim: #9db6c6;--edge-road: var(--ink);--edge-road-ahead: var(--ink-soft);width:100%;height:clamp(210px,38vh,400px);pointer-events:none}.earth-edge-svg{display:block;width:100%;height:100%;overflow:hidden}.earth-edge-sea{fill:var(--edge-sea)}.earth-edge-land{fill:var(--edge-land)}.earth-edge-ice{fill:var(--edge-ice)}.earth-edge-coast{fill:none;stroke:var(--edge-coast);stroke-width:2;stroke-linejoin:round}.earth-edge-shade{opacity:.55}.earth-edge-lit{stop-color:#fff;stop-opacity:0}.earth-edge-limb{stop-color:#24486a;stop-opacity:.42}.earth-edge-rim{fill:none;stroke:var(--edge-rim);stroke-width:3}.earth-edge-road-ahead{fill:none;stroke:var(--edge-road-ahead);stroke-width:3;stroke-dasharray:2 14;stroke-linecap:round;opacity:.5}.earth-edge-brick{animation:earth-edge-drop .26s cubic-bezier(.22,1.4,.4,1) both}@keyframes earth-edge-drop{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.earth-edge-brick-top,.earth-edge-brick-stud{fill:var(--edge-road)}.earth-edge-stop-post{stroke:var(--edge-road-ahead);stroke-width:3;stroke-linecap:round}.earth-edge-stop-dot{fill:var(--bg);stroke:var(--edge-road-ahead);stroke-width:3}.earth-edge-stop{opacity:.5;transition:opacity .2s ease}.earth-edge-stop-done{opacity:1}.earth-edge-stop-done .earth-edge-stop-dot{fill:var(--accent);stroke:var(--edge-road)}.earth-edge-stop-done .earth-edge-stop-post{stroke:var(--edge-road)}.earth-edge-caret{fill:var(--edge-road);animation:earth-edge-blink 1s steps(2,start) infinite}@keyframes earth-edge-blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}.earth-edge-bus-body{fill:var(--livery-kmb);stroke:var(--ink);stroke-width:2.5}.earth-edge-bus-window{fill:var(--bg);stroke:var(--ink);stroke-width:1.5}.earth-edge-bus-wheel{fill:var(--bg);stroke:var(--edge-road);stroke-width:2.5}body.dark .earth-edge{--edge-sea: #131720;--edge-land: #242a34;--edge-ice: #333a46;--edge-coast: #3d4553;--edge-rim: #3d4553;--edge-road: var(--ink);--edge-road-ahead: var(--ink-soft)}body.dark .earth-edge-lit{stop-color:#fff;stop-opacity:.06}body.dark .earth-edge-limb{stop-color:#000;stop-opacity:.5}@media (prefers-reduced-motion: reduce){.earth-edge-caret,.earth-edge-brick{animation:none}}@media (prefers-reduced-motion: reduce){.globe-pin-dot:after{animation:none}}.landing{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1}.landing:focus{outline:none}.landing-map{position:absolute;top:0;right:0;bottom:0;left:0}.topbar.floating{position:fixed;top:0;left:0;right:0;z-index:20;width:100%}.landing-credits{position:absolute;right:12px;bottom:6px;z-index:5;margin:0;font-size:var(--fs-2xs);color:var(--ink-soft)}.landing-credits a{color:inherit}.landing-credits-link{padding:0;border:0;background:none;cursor:pointer;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:2px}.map-lights-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:2px solid var(--border-strong);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink-soft);cursor:pointer;box-shadow:var(--shadow);transition:color .3s ease,box-shadow .3s ease}.map-lights-toggle:hover{color:var(--ink)}.map-lights-toggle.on{color:var(--boost-gold);box-shadow:0 0 14px color-mix(in srgb,var(--boost-gold) 45%,transparent),var(--shadow)}@media (min-width: 641px){.map-lights-toggle{position:absolute;left:20px;bottom:40px;z-index:10;display:inline-flex}}.island{position:absolute;left:50%;bottom:calc(max(40px,calc(env(safe-area-inset-bottom) + 20px)) + var(--kb-inset));transform:translate(-50%);z-index:10;width:min(880px,calc(100% - 28px));max-height:66dvh;overflow-y:auto;padding:18px 22px;border-radius:var(--r-3xl);border:2px solid var(--border-strong);background:var(--glass);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);box-shadow:var(--shadow-lg);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease}.island.docked{transform:translate(calc(50vw + 50%));opacity:0;pointer-events:none}.island-anchor{position:absolute;left:0;right:0;bottom:calc(max(40px,calc(env(safe-area-inset-bottom) + 20px)) + var(--kb-inset));z-index:10;display:flex;justify-content:center;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease}.island-anchor>*{pointer-events:auto}.island-anchor .island{position:static;left:auto;right:auto;bottom:auto;margin:0;transform:none;transform-origin:bottom center;transition:none;border-radius:28px}.island-anchor.docked{transform:translate(100%);opacity:0;pointer-events:none}.island-start-pill{display:inline-flex;align-items:center;padding:13px 30px;border-radius:999px;border:2px solid var(--border-strong);background:var(--glass);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);box-shadow:var(--shadow-lg);color:var(--ink);font-weight:700;font-size:var(--fs-base);letter-spacing:.01em;cursor:pointer;transform-origin:bottom center}.island-start-label{line-height:1}.island:not(.game-island){background:linear-gradient(90deg,var(--livery-kmb) 0 25%,var(--livery-ctb) 25% 50%,var(--livery-nlb) 50% 75%,var(--livery-mtr) 75% 100%) top / 100% 4px no-repeat,var(--glass)}.island-handle-row{position:relative;display:flex;align-items:center}.island-handle{display:flex;justify-content:center;align-items:center;width:100%;padding:0 0 14px;color:var(--ink-soft)}.island-dock{display:inline-flex;position:absolute;top:-2px;right:0;align-items:center;justify-content:center;padding:4px;border-radius:var(--r-md);color:var(--ink-soft);transition:color .15s ease}.island-metric{display:inline-flex;position:absolute;top:-2px;right:30px;align-items:center;justify-content:center;padding:4px;border-radius:var(--r-md);color:var(--ink-soft);transition:color .15s ease}.island-metric:hover,.island-metric[aria-expanded=true],.island-dock:hover{color:var(--ink)}.island-dock-tab{position:absolute;right:12px;bottom:34px;z-index:11;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:2px solid var(--border-strong);border-radius:999px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink-soft);cursor:pointer;box-shadow:var(--shadow);transform:scale(.6);opacity:0;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease,color .15s ease}.island-dock-tab.shown{transform:scale(1);opacity:1;pointer-events:auto}.island-dock-tab:hover{color:var(--ink)}.island.collapsed .line-strip,.island.collapsed .island-controls,.island.collapsed .island-title p,.island.collapsed .operator-group,.island.collapsed .search-group,.island.collapsed .island-hint{display:none}.island.collapsed .island-title h1{font-size:var(--fs-base)}.island.collapsed.game-island .game-stats,.island.collapsed.game-island .station-names,.island.collapsed.game-island .game-progress{display:none}.island.collapsed.game-island .typing-panel{padding-top:0}.island-title h1{margin:0;font-size:var(--fs-2xl);letter-spacing:.05em}.island-title p{margin:3px 0 12px;font-size:var(--fs-sm);color:var(--ink-soft)}.line-strip{display:flex;flex-wrap:wrap;gap:8px}.island-title{position:relative}.type-switch{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.type-button{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);font-size:var(--fs-xs);font-weight:650;white-space:nowrap;transition:border-color .12s ease}.type-button:not(.active):hover{border-color:var(--line-color, var(--accent))}.type-button svg{flex:0 0 auto}.type-button.active{color:var(--line-color);border-color:var(--line-color);box-shadow:inset 0 0 0 1px var(--line-color)}.line-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 8px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface);font-size:var(--fs-sm);font-weight:650;transition:transform .12s ease,border-color .12s ease}.line-pill:hover{transform:translateY(-2px);border-color:var(--line-color)}.route-pill{padding:4px}.route-pill.named-pill{padding:5px 12px 5px 5px}.line-pill-name{font-size:var(--fs-xs);font-weight:650;white-space:nowrap}.operator-group,.random-group{margin-top:var(--sp-4)}.random-group .island-label{display:inline-flex;align-items:center;gap:5px;margin-bottom:7px}.random-button[disabled]{opacity:.5;cursor:progress}.first-run{display:flex;flex-direction:column;gap:8px;margin:var(--sp-3) 0 var(--sp-4);padding:var(--sp-3) 14px;border:2px solid var(--border-strong);border-left:4px solid var(--accent);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow)}.first-run .island-label{color:var(--accent-ink)}.first-run-cta{width:100%;gap:7px}.first-run-cta[disabled]{opacity:.6;cursor:progress}.operator-group .operator-label{display:block;margin-bottom:7px;color:var(--line-color)}.search-group{margin-bottom:var(--sp-2)}.search-field{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);border:2px solid var(--border-strong);background:var(--surface);color:var(--ink-soft);box-shadow:2px 2px 0 0 var(--shadow-color);transition:outline-color .12s ease}.search-field:focus-within{outline:2px solid var(--accent);outline-offset:2px}.search-field input{flex:1;border:none;outline:none;background:transparent;color:var(--ink);font:inherit;font-size:var(--fs-sm)}.search-status{margin:8px 0 0;font-size:var(--fs-xs);color:var(--ink-soft)}.search-results{list-style:none;margin:8px 0 0;padding:0;max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.search-result{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:var(--r-md);border:1px solid transparent;background:transparent;font-size:var(--fs-sm);font-weight:600;text-align:left}.search-result:hover,.search-result:focus-visible{border-color:var(--line);background:var(--surface)}.search-result-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-note{font-size:var(--fs-2xs);color:var(--ink-soft)}.search-result-note.error{color:var(--danger)}.difficulty-badge{flex-shrink:0;padding:1px 7px;border-radius:var(--r-pill);font-size:var(--fs-2xs);font-weight:700;line-height:1.5;color:var(--on-difficulty);white-space:nowrap;vertical-align:middle}.search-result .difficulty-badge{margin-left:auto}.try-tag{padding:1px 6px;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-size:var(--fs-2xs);font-weight:700;line-height:1.4;white-space:nowrap}.difficulty-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.difficulty-easy{background:var(--difficulty-easy)}.difficulty-medium{background:var(--difficulty-medium)}.difficulty-hard{background:var(--difficulty-hard)}.difficulty-expert{background:var(--difficulty-expert)}.leaderboard-panel{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:4px}.leaderboard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.leaderboard-list li{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;padding:8px 12px;border-radius:var(--r-sm);font-size:var(--fs-sm)}.leaderboard-list li:nth-child(odd){background:var(--surface)}.leaderboard-me{outline:2px solid var(--line-color);font-weight:700}.leaderboard-rank{width:1.4em;text-align:right;color:var(--ink-soft);font-variant-numeric:tabular-nums}.leaderboard-name{flex:1;overflow-wrap:anywhere}.leaderboard-score{color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.leaderboard-points{color:var(--accent-ink);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.island-head{display:flex;align-items:center;gap:11px}.island-head .back-button{padding:6px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface)}.island-head .line-names{flex:1;display:flex;flex-direction:column}.island-head .line-names strong{font-size:var(--fs-xl)}.island-head .line-names small{display:inline-flex;align-items:center;gap:4px;color:var(--ink-soft);font-size:var(--fs-xs)}.island-head .start-button{padding:10px 18px;font-size:var(--fs-md)}.island-controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 22px;margin-top:14px}.island-group{display:flex;flex-direction:column;gap:6px}.island-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);font-weight:700}.island .option-button,.island .direction-button{padding:7px 11px;font-size:var(--fs-xs);border-radius:var(--r-md)}.island .start-hint{margin-top:12px}.station-select{font:inherit;font-size:var(--fs-sm);font-weight:600;color:inherit;padding:8px 10px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface);min-width:170px}.start-button:disabled{background:var(--line);color:var(--ink-soft);cursor:not-allowed;box-shadow:none;filter:none}.line-chip{min-width:40px;padding:5px 7px;border-radius:var(--r-sm);color:var(--on-livery);font-weight:600;font-size:var(--fs-xs);text-align:center;letter-spacing:.04em}.line-chip.large{min-width:52px;font-size:var(--fs-base);padding:9px 8px}.line-names{display:flex;flex-direction:column;flex:1}.line-names small{color:var(--ink-soft)}.back-button{display:inline-flex;align-items:center;gap:4px;color:var(--ink-soft);font-size:var(--fs-sm);font-weight:600;align-self:flex-start}.back-button:hover{color:var(--ink)}.option-row{display:flex;flex-wrap:wrap;gap:10px}.option-row.direction-row{flex-direction:column;align-items:stretch}.option-row.direction-row button{white-space:normal;text-align:left;height:auto;min-height:0;line-height:1.35;padding-top:8px;padding-bottom:8px}.option-button,.direction-button{padding:9px 14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);font-size:var(--fs-sm);font-weight:600;display:inline-flex;align-items:center;gap:7px}.option-button.active{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.start-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:var(--r-xl);background:var(--accent);color:var(--on-accent);font-size:var(--fs-lg);font-weight:500;letter-spacing:0;box-shadow:var(--shadow);transition:filter .12s ease,transform .12s ease}.start-button:hover{filter:brightness(1.08);transform:translateY(-1px)}.start-hint{margin:0;font-size:var(--fs-xs);color:var(--ink-soft);text-align:center}.ghost-button{padding:12px 18px;border-radius:var(--r-xl);border:1px solid var(--line);background:var(--surface);font-weight:700}.game{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1}.game-map-bg{position:absolute;top:0;right:0;bottom:0;left:0;contain:layout paint}.game-top{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px}.game-top-right{display:flex;align-items:stretch;gap:8px}.quit-hint{position:absolute;top:68px;left:50%;transform:translate(-50%);z-index:21;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:8px 14px;font-size:var(--fs-sm);color:var(--accent-ink);white-space:nowrap}.game-top .back-button,.game-top .sound-button,.game-line,.game-timer{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:8px 12px}.game-line{display:flex;align-items:center;gap:9px;font-size:var(--fs-md)}.game-timer{display:flex;align-items:baseline;gap:7px;min-width:88px;justify-content:flex-end}.game-timer small{color:var(--ink-soft);font-size:var(--fs-2xs)}.game-timer strong{font-size:var(--fs-2xl);font-variant-numeric:tabular-nums;color:var(--accent-ink)}.game-island{width:min(760px,calc(100% - 28px));border-top:4px solid var(--line-color, var(--accent))}.typing-panel{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:14px}.typing-panel.shake{animation:shake .18s ease}.typing-gate{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:3;display:flex;align-items:center;justify-content:center;border:none;border-radius:12px;background:color-mix(in srgb,var(--surface) 78%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer}.typing-gate>span{padding:10px 18px;border:2px solid var(--on-accent);border-radius:999px;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:var(--fs-sm);box-shadow:3px 3px 0 var(--on-accent)}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.station-names{text-align:center}.station-names small{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}.station-names h2{margin:4px 0 0;font-size:var(--fs-6xl)}.station-names p{margin:2px 0 0;color:var(--ink-soft);font-size:var(--fs-base)}.target{display:flex;flex-wrap:wrap;justify-content:center;gap:1px;font-size:var(--fs-5xl);font-weight:700;font-family:SF Mono,Menlo,Consolas,monospace}.target-word{display:flex;gap:1px}.target-char{display:inline-block;padding:1px 2px;border-bottom:3px solid transparent;color:var(--ink-soft);white-space:pre}.target-char.typed{color:var(--line-color, var(--accent))}.target-char.current{border-bottom-color:var(--line-color, var(--accent));color:var(--ink)}body.dark .type-button.active,body.dark .operator-group .operator-label,body.dark .target-char.typed,body.dark .result-card svg{color:color-mix(in srgb,var(--line-color, var(--accent)),white 40%)}body.dark .type-button.active{border-color:color-mix(in srgb,var(--line-color, var(--accent)),white 40%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--line-color, var(--accent)),white 40%)}body.dark .target-char.current{border-bottom-color:color-mix(in srgb,var(--line-color, var(--accent)),white 40%)}@media (prefers-reduced-motion: no-preference){.target-char.current{animation:char-pop .16s ease-out;transform-origin:bottom center}.station-name-current{animation:stop-cleared .42s cubic-bezier(.34,1.56,.64,1)}}@keyframes char-pop{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes stop-cleared{0%{opacity:.2;transform:translateY(5px) scale(.96)}to{opacity:1;transform:none}}.composition{min-height:24px;font-size:var(--fs-xl);color:var(--ink-soft)}.tap-hint{display:none;margin:0;font-size:var(--fs-xs);color:var(--ink-soft)}.game-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;border-bottom:1px solid var(--line);padding-bottom:12px}.game-stats>div{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px}.game-stats small{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.game-stats strong{font-size:var(--fs-2xl);font-variant-numeric:tabular-nums;color:var(--accent-ink)}.game-progress{display:none;flex-direction:column;gap:7px}.game-progress-labels{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:var(--fs-xs);line-height:1.2}.game-progress-labels .from{color:var(--ink-soft);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-progress-labels .to{font-weight:700;color:var(--ink);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-progress-track{display:flex;align-items:center;gap:6px;height:18px}.game-progress-dot{flex:none;width:10px;height:10px;border-radius:50%;border:2px solid var(--line-color, var(--accent));background:var(--surface)}.game-progress-dot.from{background:var(--line-color, var(--accent))}.game-progress-line{position:relative;flex:1;height:3px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--line) 70%,transparent)}.game-progress-fill{position:absolute;inset:0 auto 0 0;height:100%;border-radius:var(--r-pill);background:var(--line-color, var(--accent));transition:width .12s ease-out}.game-progress-bus{position:absolute;top:50%;transform:translate(-50%,-50%) scaleX(-1);font-size:var(--fs-base);line-height:1;pointer-events:none;transition:left .12s ease-out}.result{display:flex;justify-content:center;padding:60px 0}.result-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-2xl);border-top:5px solid var(--line-color);box-shadow:var(--shadow);padding:34px 38px;display:flex;flex-direction:column;align-items:center;gap:18px;max-width:480px;width:100%}.result-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.confetti-piece{position:absolute;top:-8%;left:var(--x);width:7px;height:11px;border-radius:1px;opacity:0}.result-card svg{color:var(--line-color)}.result-card h1{margin:0;font-size:var(--fs-4xl);text-align:center;text-wrap:balance}.result-expired-note{margin:0;max-width:34ch;text-align:center;text-wrap:balance;color:var(--ink-soft);font-size:var(--fs-sm)}.result-route{display:flex;flex-direction:column;align-items:center;gap:8px;justify-content:center;margin-top:-8px;max-width:100%;text-align:center}.result-route strong{max-width:100%;overflow-wrap:break-word;text-wrap:balance}.result-run{display:flex;flex-direction:column;align-items:center;gap:4px;max-width:100%}.result-run-endpoint{display:block}.result-run-arrow{color:var(--ink-soft);flex-shrink:0}.result-mode-label{font-size:var(--fs-xs);color:var(--ink-soft);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 10px}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;width:100%;text-align:center}.route-record{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:var(--fs-xs);color:var(--ink-soft);font-variant-numeric:tabular-nums;min-height:1.2em}.route-record-label{text-transform:uppercase;letter-spacing:.08em;font-size:var(--fs-2xs)}.route-record-holder{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:12ch}.route-record-metric{color:var(--boost-gold);font-weight:600;margin-left:auto;white-space:nowrap}.route-record-empty{font-style:italic;opacity:.75}.route-record-rest{list-style:none;margin:-8px 0 10px;padding:0 40px 0 19px;display:grid;gap:3px}.route-record-rest li{display:flex;align-items:center;gap:6px;font-size:var(--fs-2xs);color:var(--ink-soft);font-variant-numeric:tabular-nums}.route-record-rank{opacity:.7;min-width:1ch}.route-record-rest .route-record-holder,.route-record-rest .route-record-metric{color:inherit;font-weight:500}.route-standing{display:flex;align-items:center;justify-content:center;gap:6px;margin:0;font-size:var(--fs-xs);color:var(--ink-soft);font-variant-numeric:tabular-nums;animation:result-rise .4s ease-out .78s both}.route-standing.is-podium{color:var(--boost-gold);font-weight:600}@media (prefers-reduced-motion: reduce){.route-standing{animation:none}}.result-stats small{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);display:block}.result-stats strong{font-size:var(--fs-5xl);font-variant-numeric:tabular-nums;color:var(--accent-ink)}.result-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.result-actions .start-button{padding:12px 18px;font-size:var(--fs-base)}@media (prefers-reduced-motion: no-preference){.landing,.game,.result{animation:screen-in .32s ease both}}@keyframes screen-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: no-preference){.result-card{animation:result-card-in .5s cubic-bezier(.22,1,.36,1) both}.result-card>svg{animation:result-bus-in .7s cubic-bezier(.22,1,.36,1) .1s both}.result-card h1{animation:result-pop .5s cubic-bezier(.34,1.56,.64,1) .22s both}.result-stat{animation:result-rise .5s ease-out both;animation-delay:calc(.12s + var(--i, 0) * .09s)}.result-card.won{animation:result-card-in .5s cubic-bezier(.22,1,.36,1) both,result-won-glow 1.7s ease-out .3s}.confetti-piece{animation:confetti-fall 1.5s cubic-bezier(.4,.1,.7,1) var(--delay) forwards}}@keyframes result-won-glow{0%,to{box-shadow:var(--shadow)}40%{box-shadow:0 0 0 1px var(--line-color),0 10px 44px -6px var(--line-color)}}@keyframes confetti-fall{0%{opacity:0;transform:translate(0) rotate(0)}12%{opacity:1}to{opacity:0;transform:translate(var(--drift),440px) rotate(var(--spin))}}@keyframes result-card-in{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}@keyframes result-bus-in{0%{opacity:0;transform:translate(-34px)}60%{opacity:1}to{opacity:1;transform:none}}@keyframes result-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@keyframes result-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (pointer: coarse){.start-hint{display:none}}@media (max-width: 640px){.topbar-left{display:contents}.brand{order:0}.top-actions{order:1;margin-left:auto;flex:0 0 auto}.location-picker{order:2;flex-basis:100%}.top-actions-desktop{display:none}.top-actions-mobile{display:flex;align-items:center;gap:8px}.island-anchor{bottom:max(48px,calc(env(safe-area-inset-bottom) + 38px))}.island{width:calc(100% - 16px);bottom:max(48px,calc(env(safe-area-inset-bottom) + 38px));padding:13px 14px;border-radius:var(--r-2xl)}.island-start-pill{padding:11px 20px}.island-title h1{font-size:var(--fs-xl)}.island-title p{margin-bottom:10px;font-size:var(--fs-xs)}.landing-credits{right:10px;font-size:var(--fs-2xs)}.game{display:flex;flex-direction:column}.game-map-bg{z-index:0}.game-top .back-button,.game-top .sound-button,.game-line,.game-timer,.game-island{backdrop-filter:none;-webkit-backdrop-filter:none;background:color-mix(in srgb,var(--surface) 94%,transparent)}.game-top{position:relative;flex-wrap:wrap;z-index:20}.game-top-right{flex:1 1 100%;flex-wrap:wrap;justify-content:flex-end}.game-island{position:relative;top:auto;bottom:auto;transform:none;left:auto;align-self:center;margin-top:8px;max-height:none;z-index:10}.game-island .game-stats,.game-island .station-names{display:none}.game-island .game-progress{display:flex}.game-island .typing-panel{padding-top:12px;gap:6px}.line-strip{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,auto);justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}.line-pill{white-space:nowrap}.island-head{gap:8px}.island-head .line-names strong{font-size:var(--fs-md)}.island-head .line-names small{font-size:var(--fs-2xs)}.island-head .start-button{padding:9px 14px;font-size:var(--fs-sm)}.select-group{flex:1 1 150px;min-width:0}.station-select{width:100%;min-width:0}.game-top{padding:10px 12px}.game-top .back-label{display:none}.game-timer{white-space:nowrap}.game-line{min-width:0;flex:1 1 100%;justify-content:center}.game-line strong{font-size:var(--fs-sm);min-width:0;overflow-wrap:anywhere}}@media (max-width: 820px){.island{padding:14px 16px}.island-head .line-names strong{font-size:var(--fs-base)}.island-controls{gap:10px 16px}.game-stats,.result-stats{grid-template-columns:repeat(2,1fr)}.station-names h2{font-size:var(--fs-4xl)}.target{font-size:var(--fs-3xl)}.tap-hint{display:block}}.auth-avatar-button .auth-avatar{width:22px;height:22px;border-radius:50%;display:block}.google-signin{display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 14px;border-radius:var(--r-md);background:#fff;color:#1f1f1f;border:2px solid var(--border-strong);box-shadow:var(--shadow);font-size:var(--fs-sm);font-weight:700;transition:transform .12s ease,border-color .12s ease}.google-signin:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--ink) 25%,var(--line))}.community-link{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-md);border:2px solid var(--border-strong);background:var(--bg);color:var(--ink);text-decoration:none;transition:transform .12s ease,border-color .12s ease}.community-link:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--ink) 25%,var(--line))}.leaderboard-name{display:inline-flex;align-items:center;flex-wrap:wrap;gap:0 6px;min-width:0}.leaderboard-avatar{width:16px;height:16px;border-radius:50%;flex-shrink:0}.leaderboard-verified{color:var(--accent-ink);font-weight:700;flex-shrink:0}.daily-card{display:flex;flex-direction:column;gap:10px;margin:var(--sp-3) 0 var(--sp-4);padding:var(--sp-3) 14px;border:2px solid var(--border-strong);border-left:4px solid var(--line-color, var(--accent));border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow)}.daily-card .island-label{display:inline-flex;align-items:center;gap:5px}.daily-route{display:flex;align-items:center;gap:8px;min-width:0}.daily-route-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);font-weight:600}.daily-play{border-color:var(--line-color, var(--accent));font-weight:700}.challenge-modal{display:flex;flex-direction:column;gap:var(--sp-3)}.challenge-map{height:180px;padding:6px;border:2px solid var(--border-strong);border-radius:var(--r-lg);background:var(--map-bg, var(--surface-sunk, var(--surface)));overflow:hidden}.challenge-map .hk-map{width:100%;height:100%}.challenge-route{align-items:center}.challenge-route .daily-route-name{white-space:normal;font-size:var(--fs-md)}.challenge-tagline{margin:0;font-size:var(--fs-sm);color:var(--ink-soft)}.challenge-actions{display:flex;gap:var(--sp-2)}.challenge-actions .challenge-play{flex:1;border-color:var(--line-color, var(--accent));font-weight:700}.daily-board{display:flex;flex-direction:column;gap:18px}.daily-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line)}.daily-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:4px 4px 10px;margin-bottom:-1px;color:var(--ink-soft);font-size:var(--fs-md);font-weight:600;border-bottom:2px solid transparent;cursor:pointer;transition:color .12s ease,border-color .12s ease}.daily-tab:hover{color:var(--ink)}.daily-tab.active{color:var(--ink);border-bottom-color:var(--ink)}.daily-fields{display:flex;flex-direction:column;gap:14px}.daily-field-row{display:flex;flex-wrap:wrap;gap:14px 22px}.daily-field{display:flex;flex-direction:column;gap:7px;min-width:0}.daily-field-label{font-size:var(--fs-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.seg{display:inline-flex;align-self:flex-start;max-width:100%;padding:3px;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.seg--fill{display:flex;align-self:stretch}.seg--fill .seg-item{flex:1;justify-content:center}.seg-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink-soft);font-size:var(--fs-sm);font-weight:600;padding:8px 15px;border-radius:var(--r-md);white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center;transition:background .12s ease,color .12s ease}.seg-item:hover{color:var(--ink)}.seg-item.active{background:var(--ink);color:var(--bg)}.daily-board .leaderboard-list{gap:4px}.daily-board .leaderboard-list li{padding:10px 12px}.daily-board-points-note{margin:0;font-size:var(--fs-xs);text-align:right}@media (max-width: 640px){.daily-board-day-list li{gap:2px 10px}.daily-board-day-list .leaderboard-points{order:1}.daily-board-day-list .leaderboard-score{order:2;flex-basis:100%;padding-left:calc(1.4em + 10px);font-size:var(--fs-xs)}}.daily-board-pager{display:flex;align-items:center;justify-content:center;gap:var(--sp-2)}.daily-board-pager .option-button{padding:5px 12px}.daily-board-pager .option-button:disabled{opacity:.4}.daily-board-pager-info{min-width:3.5em;text-align:center;font-size:var(--fs-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums}.daily-board-route{margin:0;font-size:var(--fs-xs);color:var(--ink-soft)}.leaderboard-you-pin{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}.daily-result-you{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:6px}.daily-result-rank{font-weight:700;font-variant-numeric:tabular-nums}.daily-result-points{color:var(--accent-ink);font-weight:700;font-variant-numeric:tabular-nums}.daily-result-caveat{flex-basis:100%;margin:0;font-size:var(--fs-xs)}.daily-result-top{margin-top:8px}.daily-result-error{align-items:center}.daily-result-retry{border:1px solid var(--line);border-radius:8px;padding:3px 10px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:700;color:var(--link);cursor:pointer}.gallery-score{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--sp-3)}.daily-score-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.daily-score-list li{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;padding:6px 10px;border-radius:var(--r-sm);font-size:var(--fs-sm)}.daily-score-list li:nth-child(odd){background:var(--surface)}.daily-score-day{color:var(--ink-soft);font-variant-numeric:tabular-nums}.daily-score-board{flex:1;overflow-wrap:anywhere}.daily-score-rank{color:var(--ink-soft);font-variant-numeric:tabular-nums}.daily-score-points{color:var(--accent-ink);font-weight:700;font-variant-numeric:tabular-nums}.daily-board-dialog{width:min(560px,100%);max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-2xl);box-shadow:var(--shadow-lg)}.daily-board-dialog h2{display:inline-flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-2xl)}.top-options{display:none}@media (min-width: 641px){.island-anchor .island{width:min(480px,calc(100% - 40px))}.top-options{position:fixed;top:74px;left:50%;transform:translate(-50%);z-index:25;display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}.top-option{display:flex;align-items:center;gap:var(--sp-2)}.top-option .station-select{min-width:0}.island .mode-group,.island .typing-group{display:none}}.streak-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);font-size:var(--fs-xs);font-weight:700;font-variant-numeric:tabular-nums;line-height:1;--streak-color: var(--heat-amber);color:var(--streak-color)}.streak-chip small{color:var(--ink-soft);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.08em}.streak-chip.dormant{--streak-color: var(--ink-soft);color:var(--ink-soft)}.streak-heat-1{--streak-color: var(--heat-amber)}.streak-heat-2{--streak-color: var(--heat-orange)}.streak-heat-3{--streak-color: var(--heat-hot)}.streak-heat-4{--streak-color: var(--boost-gold)}.streak-chip:not(.dormant) svg{filter:drop-shadow(0 0 6px color-mix(in srgb,var(--streak-color) 55%,transparent))}.hint-tooltip{z-index:60;max-width:15rem;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow);color:var(--ink);font-size:var(--fs-xs);font-weight:650;line-height:1.4;animation:hint-tooltip-in .12s ease-out}@keyframes hint-tooltip-in{0%{opacity:0;transform:translateY(-3px)}}@media (prefers-reduced-motion: reduce){.hint-tooltip{animation:none}}.achievements-panel{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:4px}.achievements-panel-body{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.achievements-unlocked{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.achievements-unlocked-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--boost-gold)}.achievements-unlocked-list{display:flex;flex-wrap:wrap;gap:6px}@media (prefers-reduced-motion: no-preference){.achievements-unlocked-list .achievement-badge{animation:achievement-reveal .5s cubic-bezier(.34,1.56,.64,1) both}.achievements-unlocked-list .achievement-badge:nth-child(1){animation-delay:.7s}.achievements-unlocked-list .achievement-badge:nth-child(2){animation-delay:.84s}.achievements-unlocked-list .achievement-badge:nth-child(3){animation-delay:.98s}.achievements-unlocked-list .achievement-badge:nth-child(4){animation-delay:1.12s}.achievements-unlocked-list .achievement-badge:nth-child(n+5){animation-delay:1.26s}.achievements-unlocked-list .achievement-icon{animation:achievement-icon-glow .9s ease-out both;animation-delay:inherit}}@keyframes achievement-reveal{0%{opacity:0;transform:scale(.6) translateY(6px)}to{opacity:1;transform:none}}@keyframes achievement-icon-glow{0%,to{box-shadow:0 0 0 0 transparent}45%{box-shadow:0 0 12px 1px currentColor}}.achievement-badge{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line)}.achievement-badge.compact{padding:5px 9px 5px 5px;border-radius:var(--r-pill)}.achievement-badge.locked{opacity:.55}.achievement-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--r-sm);color:var(--ink-soft);background:color-mix(in srgb,var(--ink-soft) 14%,transparent)}.achievement-badge.compact .achievement-icon{width:26px;height:26px;border-radius:50%}.achievement-icon.difficulty-easy{color:var(--difficulty-easy);background:color-mix(in srgb,var(--difficulty-easy) 16%,transparent)}.achievement-icon.difficulty-medium{color:var(--difficulty-medium);background:color-mix(in srgb,var(--difficulty-medium) 16%,transparent)}.achievement-icon.difficulty-hard{color:var(--difficulty-hard);background:color-mix(in srgb,var(--difficulty-hard) 16%,transparent)}.achievement-icon.difficulty-expert{color:var(--difficulty-expert);background:color-mix(in srgb,var(--difficulty-expert) 16%,transparent)}.achievement-icon.achievement-gold{color:var(--boost-gold);background:color-mix(in srgb,var(--boost-gold) 20%,transparent)}.achievement-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.achievement-meta strong{font-size:var(--fs-sm);font-weight:700}.achievement-badge.compact .achievement-meta strong{font-size:var(--fs-xs)}.achievement-meta small{font-size:var(--fs-2xs);color:var(--ink-soft)}.gallery-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.achievements-gallery{width:min(560px,100%);max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-2xl);box-shadow:var(--shadow-lg)}.info-panel{width:min(600px,100%)}.gallery-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.gallery-header h2{margin:0;font-size:var(--fs-2xl)}.gallery-summary{display:flex;flex-wrap:wrap;gap:10px}.gallery-stat{display:flex;flex-direction:column;gap:2px;flex:1;min-width:72px;padding:10px;border-radius:var(--r-md);background:var(--bg);text-align:center}.gallery-stat strong{font-size:var(--fs-xl);font-variant-numeric:tabular-nums}.gallery-stat small{font-size:var(--fs-2xs);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.gallery-streak{display:inline-flex;align-items:center;gap:4px;justify-content:center;color:var(--heat-orange)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}.guide-section-title{margin:0;font-size:var(--fs-xs);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.guide-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.guide-item{display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--r-md);background:var(--bg)}.guide-item-icon{display:inline-flex;flex-shrink:0;color:var(--ink-soft)}.guide-item-body{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.guide-item-body small{font-size:var(--fs-xs);color:var(--ink-soft)}.guide-flag{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;padding:1px 8px;border-radius:var(--r-pill);border:1px solid var(--line);color:var(--ink-soft);font-size:var(--fs-2xs);font-weight:700;line-height:1.6;white-space:nowrap}.guide-flag.done{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.ghost-invites-lifetime{margin:0 0 4px;padding:8px 12px;border-radius:10px;background:var(--surface, transparent);border:1px solid var(--line);font-size:var(--fs-xs);font-weight:600;color:var(--ink);text-align:center}.ghost-invites-empty{margin:0;padding:8px 2px;font-size:var(--fs-sm);color:var(--ink-soft)}.ghost-invites-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.ghost-invite{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.ghost-invite-main{display:flex;flex-direction:column;gap:2px;min-width:0}.ghost-invite-main strong{font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ghost-invite-meta{font-size:var(--fs-xs);color:var(--ink-soft)}.ghost-invite-status.expired{flex-shrink:0;font-size:var(--fs-xs);font-weight:600;color:var(--ink-soft);opacity:.8}.ghost-invite-copy{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:600;color:var(--link);cursor:pointer}.ghost-invite-copy:hover{border-color:var(--ink)}.ghost-verdict{display:inline-flex;align-items:center;gap:8px;margin:4px 0 10px;padding:6px 14px;border-radius:999px;font-size:var(--fs-sm);font-weight:700;border:1px solid var(--line)}.ghost-verdict-vs{font-weight:500;opacity:.7}.ghost-verdict-win{color:#0a7d33;border-color:#0a7d3355;background:#0a7d3312}.ghost-verdict-lose{color:#b3261e;border-color:#b3261e55;background:#b3261e10}.ghost-verdict-draw{color:var(--ink-soft)}.ghost-record-line{margin:-4px 0 8px;font-size:var(--fs-xs);color:var(--ink-soft)}body.dark .ghost-verdict-win{color:#4ade80}body.dark .ghost-verdict-lose{color:#f87171}.game-line.has-ghost{flex-wrap:wrap;justify-content:center;max-width:min(88vw,360px)}.game-line-ghost{flex-basis:100%;display:inline-flex;align-items:center;justify-content:center;gap:5px;margin-top:4px;padding-top:4px;border-top:1px solid var(--line);font-size:var(--fs-xs);font-weight:600;color:var(--link)}.ghost-typing-row{display:flex;align-items:center;justify-content:center;gap:8px;max-width:100%;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:var(--fs-sm);color:var(--ink-soft);transition:color .12s}.ghost-typing-row.error{color:#b3261e}.ghost-typing-row.done{opacity:.6}.ghost-typing-label{display:inline-flex;align-items:center;gap:4px;flex:none;font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.ghost-typing-target{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono, monospace);letter-spacing:.02em}.ghost-char{opacity:.4}.ghost-char.typed{opacity:1;color:var(--ink)}.ghost-error-banner{position:fixed;top:calc(env(safe-area-inset-top,0px) + 10px);left:50%;transform:translate(-50%);z-index:60;display:inline-flex;align-items:center;gap:10px;max-width:min(92vw,420px);padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface, #fff);box-shadow:0 6px 20px #0000001f;font-size:var(--fs-xs);color:var(--body)}.ghost-error-banner button{border:0;background:none;font:inherit;font-weight:700;color:var(--link);cursor:pointer}.ghost-share{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:14px}.ghost-share-button{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .15s,color .15s}.ghost-share-button:hover:not(:disabled){border-color:var(--ink)}.ghost-share-button:disabled{opacity:.55;cursor:not-allowed}.ghost-share-hint,.ghost-share-done{margin:0;font-size:var(--fs-xs);color:var(--ink-soft)}.ghost-share-done{display:inline-flex;align-items:center;gap:6px;color:var(--link);font-weight:600}.ghost-share-link{width:min(320px,100%);padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface, transparent);font:inherit;font-size:var(--fs-xs);color:var(--body);text-align:center}.daily-share-corner{position:absolute;top:14px;right:14px;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:999px;background:none;color:var(--ink-soft);cursor:pointer;transition:border-color .15s,color .15s}.daily-share-corner svg{color:currentColor}.daily-share-corner:hover{border-color:var(--ink);color:var(--ink)}.daily-share-corner.is-copied{border-color:var(--link);color:var(--link)}.share-copied-icon{animation:share-copied-pop .28s ease-out}@keyframes share-copied-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.share-copied-icon{animation:none}}.info-page{min-height:100dvh;display:flex;flex-direction:column}.info-page-header{width:min(760px,100%);margin:0 auto;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.info-page-actions{display:flex;align-items:center;gap:8px}.info-page-main{flex:1;width:min(760px,100%);margin:0 auto;padding:8px 20px 64px;display:flex;flex-direction:column;gap:14px}.info-back{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:6px 0;border:0;background:none;cursor:pointer;font:inherit;font-size:var(--fs-sm);color:var(--ink-soft)}.info-back:hover{color:var(--ink)}.info-page-title{margin:0;font-family:var(--font-head);font-weight:400;font-size:var(--fs-3xl);line-height:1.1}.info-page-nav{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px 18px}.info-page-nav .link-button{padding:0;border:0;background:none;cursor:pointer;font:inherit;font-size:var(--fs-sm);color:var(--link)}.info-page-nav .link-button:hover{text-decoration:underline}.info-body{display:flex;flex-direction:column;gap:10px;font-size:var(--fs-sm);line-height:1.55;color:var(--body)}.info-body p{margin:0}.info-body a{color:var(--link)}.info-section-title{margin:6px 0 0;font-size:var(--fs-xs);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.info-item-title{font-weight:600;color:var(--ink)}.info-intro{color:var(--ink)}.info-updated{font-size:var(--fs-2xs);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em}.info-disclaimer{margin-top:6px;padding-top:10px;border-top:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-soft)}.more-pill{color:var(--ink-soft);border-style:dashed}.more-pill:hover{border-color:var(--ink-soft)}.browse-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.browse-row{width:100%;display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface);font-size:var(--fs-sm);font-weight:650;text-align:left;transition:border-color .12s ease}.browse-row:hover{border-color:var(--line-color)}.browse-row:disabled{opacity:.5}.browse-row-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.install-snackbar{position:fixed;left:12px;right:12px;bottom:max(12px,calc(env(safe-area-inset-bottom,0px) + 12px));z-index:70;display:flex;align-items:center;gap:10px;padding:10px 12px;border:2px solid var(--border-strong);border-radius:12px;background:var(--bg);color:var(--ink);box-shadow:var(--shadow-lg);animation:install-snackbar-in .18s ease-out}@keyframes install-snackbar-in{0%{opacity:0;transform:translateY(12px)}}.install-snackbar-icon{width:34px;height:34px;flex-shrink:0;border-radius:8px}.install-snackbar-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1;line-height:1.2}.install-snackbar-text strong{font-family:var(--font-head, inherit);font-size:.9rem}.install-snackbar-text span{font-size:.72rem;color:var(--ink-soft)}.install-snackbar-cta{flex-shrink:0}.install-snackbar-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;color:var(--ink-soft);background:transparent}.install-snackbar-close:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}.install-ios-steps{display:flex;flex-direction:column;gap:12px;margin:4px 0 0;padding:0;list-style:none;counter-reset:install-step}.install-ios-steps li{display:flex;align-items:center;gap:10px;font-size:.9rem;line-height:1.35}.install-ios-steps li:before{counter-increment:install-step;content:counter(install-step);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:2px solid var(--border-strong);border-radius:999px;font-family:var(--font-head, inherit);font-size:.75rem}.install-ios-steps li svg{flex-shrink:0;color:var(--link)}.room-launcher{position:fixed;top:74px;right:16px;z-index:25;display:flex;flex-direction:column;align-items:stretch;gap:8px}.room-launcher-menu{display:flex;flex-direction:column;gap:6px;padding:2px 6px 16px;margin:-2px -6px -16px;overflow:hidden;max-height:0;opacity:0;transform:translateY(-6px);transition:max-height .24s ease,opacity .18s ease,transform .24s ease;pointer-events:none}.room-launcher-menu.open{max-height:260px;opacity:1;transform:none;pointer-events:auto}.room-launcher-menu .mp-note{margin:-2px 0 2px;text-align:right}.room-open-button{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow);font:inherit;font-size:var(--fs-xs);font-weight:600;color:inherit;cursor:pointer}.room-open-button:hover,.room-open-button.open{border-color:var(--ink)}@media (max-width: 640px){.room-launcher{top:124px;right:10px}.room-open-button{padding:7px 12px}}.room-code-input{width:8.5em;padding:9px 12px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:inherit}.room-roster{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.room-seat{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;font-size:var(--fs-xs)}.room-seat.empty{border-style:dashed;border-color:color-mix(in srgb,var(--ink) 18%,transparent);color:var(--ink-soft)}.room-seat.empty .room-seat-dot{background:none;border:1px dashed color-mix(in srgb,var(--ink) 30%,transparent)}.room-seat.empty .room-seat-name{font-weight:400}.room-seat.me{border-color:var(--ink)}.room-seat-dot{flex-shrink:0;width:10px;height:10px;border-radius:999px}.room-seat-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.room-seat-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.room-seat-stats{display:flex;align-items:baseline;gap:3px;font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-xs);color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-seat-stats i{font-style:normal;opacity:.5}.room-seat-tag{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--ink-soft)}.room-seat-tag.reconnecting{color:var(--link)}.room-idle-warning{margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;font-size:var(--fs-xs);text-align:center;color:var(--ink-soft)}.room-waiting{margin:0;font-size:var(--fs-xs);color:var(--ink-soft);text-align:center}.room-placement-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:6px}.room-placement{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;font-size:var(--fs-xs)}.room-placement.me{border-color:var(--ink);font-weight:600}.room-placement.dnf{color:var(--ink-soft)}.room-placement-rank{flex-shrink:0;width:1.6em;font-family:var(--font-mono, ui-monospace, monospace);font-weight:700}.room-placement-body,.room-round-body{flex:1;min-width:0;display:grid;gap:1px}.room-placement-line{display:flex;align-items:baseline;gap:6px;min-width:0}.room-placement-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-placement-stat,.room-round-stat{min-width:0;font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-xs);font-weight:400;color:var(--ink-soft)}.room-metrics b{color:var(--ink);font-weight:700}.room-metrics i{margin:0 5px;font-style:normal;opacity:.45}.room-rail{position:absolute;top:64px;right:16px;z-index:3;width:236px;padding:12px;border:2px solid color-mix(in srgb,var(--ink) 22%,transparent);border-radius:18px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 14px 36px #00000047}.room-rail ol{position:relative;list-style:none;margin:0;padding:0}.room-rail-row{position:absolute;top:0;left:0;right:0;height:44px;display:flex;align-items:center;gap:10px;padding:0 10px 0 0;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--ink) 7%,transparent);transition:transform .42s cubic-bezier(.34,1.2,.4,1)}.room-rail-row.me{background:color-mix(in srgb,var(--player-color) 30%,transparent)}.room-rail-row.dnf{opacity:.42}.room-rail-row.dnf .room-rail-name{text-decoration:line-through}.room-rail-rank{flex-shrink:0;align-self:stretch;width:34px;display:flex;align-items:center;justify-content:center;background:var(--player-color);color:#10141a;font-family:var(--font-head, inherit);font-size:1.35rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.room-rail-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.room-rail-line{display:flex;align-items:center;gap:6px;min-width:0}.room-rail-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);font-weight:700;line-height:1.15;color:var(--ink)}.room-rail-streak{flex-shrink:0;display:inline-flex;align-items:center;gap:2px;font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-xs);font-weight:700;color:var(--boost-gold, #f4d35e);animation:rail-streak-in .25s ease-out}@keyframes rail-streak-in{0%{opacity:0;transform:scale(.6)}}.room-rail-done{flex-shrink:0;color:var(--player-color)}.room-rail-stat{display:flex;align-items:baseline;gap:3px;font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-xs);line-height:1.2;color:color-mix(in srgb,var(--ink) 62%,transparent);white-space:nowrap}.room-rail-stat b{font-weight:700;color:var(--ink)}.room-rail-stat i{font-style:normal;opacity:.45}@media (prefers-reduced-motion: reduce){.room-rail-streak{animation:none}}.room-countdown{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:none}.room-countdown span{font-family:var(--font-head, inherit);font-size:clamp(4rem,22vw,9rem);font-weight:700;color:var(--ink);animation:room-count .9s ease-out}@keyframes room-count{0%{opacity:0;transform:scale(.55)}40%{opacity:1}to{opacity:.15;transform:scale(1.35)}}@media (prefers-reduced-motion: reduce){.room-countdown span{animation:none}}.mp-page{max-width:940px;margin:0 auto;padding:0 20px 60px}.mp-dialog{width:min(360px,calc(100vw - 32px));max-height:min(86vh,720px);overflow-y:auto;padding:0 16px 16px;border:2px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 24px 60px #00000059}.mp-dialog .mp-head{margin:0 -16px 4px;padding:10px 16px}.mp-dialog .mp-entry{gap:0}.mp-dialog .mp-card{display:flex;align-items:center;gap:12px;padding:12px 0;border:0;border-radius:0}.mp-dialog .mp-guest{display:block}.mp-dialog .mp-guest .mp-note{margin-top:8px;text-align:left}.mp-dialog .mp-guest .mp-auth-actions{justify-content:flex-end;margin-top:12px}.mp-dialog .mp-card+.mp-card,.mp-dialog .mp-note+.mp-card{border-top:1px solid var(--line)}.mp-dialog .mp-card h3{flex:1;min-width:0;margin:0;font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.mp-dialog .mp-card>button{flex-shrink:0}.mp-dialog .mp-join{flex:1;gap:8px}.mp-dialog .room-code-input{flex:1;width:auto;min-width:0;text-align:center}.mp-dialog .mp-note{margin:0 0 12px;text-align:right}.mp-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;margin:0 -20px 16px;padding:14px 20px;background:var(--surface);border-bottom:1px solid var(--line)}.mp-code{display:flex;align-items:center;gap:6px;padding:5px 6px 5px 14px;border:2px solid var(--line);border-radius:999px}.mp-code-value{font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-sm);font-weight:700;letter-spacing:.16em}.mp-code-copy{display:inline-flex;padding:5px;border:0;border-radius:999px;background:none;color:var(--accent-ink);cursor:pointer}.mp-code-copy:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.mp-columns{display:grid;grid-template-columns:minmax(200px,280px) 1fr;gap:20px;align-items:start}@media (max-width: 780px){.mp-columns{grid-template-columns:1fr;gap:22px}}.mp-players h3,.mp-setup>.mp-builder>h3,.mp-suggestions h3,.mp-builder-head h3{margin:0 0 8px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.mp-builder-head h3 span{text-transform:none;letter-spacing:0}.mp-setup{display:flex;flex-direction:column;gap:16px}.mp-head h2{display:flex;align-items:center;gap:8px;margin:0 auto 0 0;font-size:var(--fs-md)}.mp-head .back-button{align-self:center;padding-right:4px;border-right:1px solid var(--line)}.mp-entry{display:grid;gap:14px}.mp-card{padding:18px;border:1px solid var(--line);border-radius:14px}.mp-card h3{margin:0 0 6px;font-size:var(--fs-sm)}.mp-card>p{margin:0 0 14px;font-size:var(--fs-xs);color:var(--ink-soft)}.mp-note{margin:8px 0 0;font-size:var(--fs-xs);color:var(--ink-soft)}.mp-join,.mp-auth-actions,.room-placement-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding-top:4px}.mp-name-input{width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:none;font:inherit;color:inherit}.mp-room{display:grid;gap:16px}.mp-builder{display:flex;flex-direction:column;gap:12px}.mp-builder-head h3{display:flex;align-items:baseline;gap:8px}.mp-builder-head h3 span{font-size:var(--fs-xs);color:var(--ink-soft)}.mp-card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.mp-card-list li{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;font-size:var(--fs-xs)}.mp-card-list li.random{border-style:dashed}.mp-card-index{flex-shrink:0;width:1.4em;font-family:var(--font-mono, ui-monospace, monospace);color:var(--ink-soft)}.mp-card-name{flex:1;display:flex;align-items:center;gap:6px;min-width:0;font-weight:600}.mp-card-remove{flex-shrink:0;display:inline-flex;padding:2px;border:none;background:none;color:var(--ink-soft);cursor:pointer}.mp-card-empty{color:var(--ink-soft);border-style:dashed!important;justify-content:center}.mp-picker{display:grid;gap:10px}.mp-picker-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.mp-picker-row.wrap{flex-wrap:wrap;overflow-x:visible}.mp-chip{flex-shrink:0;background:var(--surface);padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:600;color:inherit;cursor:pointer}.mp-chip.on{border-color:var(--accent-ink);color:var(--accent-ink);box-shadow:inset 0 0 0 1px var(--accent-ink);font-weight:700}.mp-chip.random{display:inline-flex;align-items:center;gap:6px}.mp-chip:disabled{opacity:.4;cursor:default}.mp-search{width:100%;padding:9px 14px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);color:inherit}.mp-standings h3{margin:0 0 10px;font-size:var(--fs-sm)}.room-placement-points{flex-shrink:0;font-family:var(--font-mono, ui-monospace, monospace);font-weight:700}.mp-next{margin:0 0 14px;font-size:var(--fs-xs);text-align:center;color:var(--ink-soft)}.mp-table-wrap{margin:0 0 14px;overflow-x:auto}.mp-table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}.mp-table th,.mp-table td{padding:7px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}.mp-table th:first-child,.mp-table td:first-child{padding-left:0;padding-right:20px;text-align:left}.mp-table th:last-child,.mp-table td:last-child{padding-right:0}.mp-table thead th{padding-bottom:9px;font-weight:400;color:var(--ink-soft)}.mp-table td,.mp-table th{min-width:34px}.mp-table th:first-child,.mp-table td:first-child{min-width:0}.mp-table tr.me{font-weight:700}.room-result-backdrop{z-index:80;background:color-mix(in srgb,var(--bg) 72%,transparent)}.room-result-dialog{position:relative;width:min(420px,calc(100vw - 32px));max-height:min(86vh,760px);overflow-y:auto;padding:18px;border:2px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow, 0 24px 60px rgba(0, 0, 0, .35))}.room-result-dialog.final{width:min(560px,calc(100vw - 32px))}.room-result-dialog .room-placement-actions{margin-top:4px;justify-content:flex-end}.room-round-log{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:grid;gap:12px}.room-round-log h4{margin:0;font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.room-round-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.room-round-tab{display:inline-flex;align-items:center;gap:7px;flex-shrink:0;padding:6px 11px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);color:var(--ink-soft);cursor:pointer}.room-round-tab:hover{color:var(--ink)}.room-round-tab.on{border-color:var(--ink);color:var(--ink);font-weight:700}.room-round-tab .room-round-n{background:color-mix(in srgb,var(--ink) 22%,transparent);color:var(--ink)}.room-round-tab.on .room-round-n{background:var(--accent);color:var(--bg)}.room-round-n{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;background:var(--accent);color:var(--bg);font-size:11px;font-weight:700}.room-round-log ol{margin:0;padding:0;list-style:none;display:grid;gap:2px}.room-round-log li{display:flex;align-items:center;gap:8px;padding:3px 6px;border-radius:6px;font-size:var(--fs-xs);color:var(--ink-soft)}.room-round-log li.me{background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink);font-weight:700}.room-round-rank{width:14px;flex-shrink:0;font-family:var(--font-mono, ui-monospace, monospace)}.room-round-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-round-points{flex-shrink:0;font-family:var(--font-mono, ui-monospace, monospace)}.room-round-points{width:26px;text-align:right}.vehicle-label{font-family:var(--font-mono, ui-monospace, monospace);font-weight:700;paint-order:stroke;stroke:var(--bg);stroke-linejoin:round;pointer-events:none}.vehicle-label.me{fill:var(--ink)}.hk-road{--road-grey: #c3cad6;pointer-events:none}.hk-route.paved polyline:not(.hk-route-hit){display:none}.hk-road-brick:not(.paved)>rect{fill:var(--road-grey);transition:fill .18s ease}.hk-road.picking .hk-road-brick>rect{transition:none;animation:hk-road-chase 2.8s linear infinite;animation-delay:calc(var(--i, 0) * .05s)}@keyframes hk-road-chase{0%,9%{fill:var(--livery)}26%,to{fill:var(--road-grey)}}.hk-road-brick.paved>rect{fill:var(--livery);transition:fill .18s ease;animation:hk-road-flash .42s ease-out both}@keyframes hk-road-flash{0%{fill:color-mix(in oklab,var(--livery) 25%,white)}30%{fill:color-mix(in oklab,var(--livery) 65%,white)}to{fill:var(--livery)}}.hk-road-brick.paved{animation:hk-road-set .36s cubic-bezier(.24,.9,.28,1) both}@keyframes hk-road-set{0%{transform:scale(1.7)}42%{transform:scale(.88,.72)}68%{transform:scale(1.05,1.1)}to{transform:scale(1)}}.hk-road-brick.paved>rect+rect{transform-box:fill-box;transform-origin:50% 100%;animation:hk-road-flash .42s ease-out both,hk-road-stud .3s 70ms cubic-bezier(.22,1.55,.4,1) both}@keyframes hk-road-stud{0%{transform:scaleY(.1)}to{transform:scaleY(1)}}.hk-road.crashed .hk-road-brick.paved{animation:hk-road-crack .18s ease-out both}@keyframes hk-road-crack{0%{opacity:1}40%{opacity:.35}to{opacity:1}}body.dark .hk-road{--road-grey: #464e5e}@media (prefers-reduced-motion: reduce){.hk-road-brick.paved,.hk-road-brick.paved>rect,.hk-road-brick.paved>rect+rect,.hk-road.crashed .hk-road-brick.paved,.hk-road.picking .hk-road-brick>rect{animation:none}}.mp-picker-label{flex-shrink:0;align-self:center;padding-right:2px;font-size:var(--fs-xs);color:var(--ink-soft)}.mp-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto}.mp-results li button{display:flex;align-items:baseline;gap:10px;width:100%;padding:7px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font:inherit;font-size:var(--fs-xs);color:inherit;text-align:left;cursor:pointer}.mp-results li button:hover{border-color:var(--ink)}.mp-results li button:disabled{opacity:.45;cursor:default}.mp-result-code,.mp-card-code{flex-shrink:0;min-width:3em;font-family:var(--font-mono, ui-monospace, monospace);font-weight:700}.mp-result-where,.mp-card-where{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;color:var(--ink-soft)}.mp-card-flip{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:600;color:var(--ink-soft);cursor:pointer}.mp-card-flip:hover{border-color:var(--ink);color:inherit}.room-rail-row.gained{animation:rail-gained .6s ease-out}@keyframes rail-gained{0%{background:color-mix(in srgb,var(--player-color) 70%,transparent)}to{background:color-mix(in srgb,var(--ink) 7%,transparent)}}.room-rail-row.me.gained{animation:rail-gained-me .6s ease-out}@keyframes rail-gained-me{0%{background:color-mix(in srgb,var(--player-color) 80%,transparent)}to{background:color-mix(in srgb,var(--player-color) 30%,transparent)}}.mp-reactions{display:flex;justify-content:center;gap:6px;margin:0 0 12px}.mp-reactions button{padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:1rem;line-height:1;cursor:pointer;transition:transform .12s ease}.mp-reactions button:hover{transform:translateY(-2px);border-color:var(--ink)}.mp-reactions button:active{transform:translateY(1px)}.room-placement-reaction{flex-shrink:0;font-size:1rem;line-height:1;animation:reaction-pop .4s ease-out}@keyframes reaction-pop{0%{opacity:0;transform:scale(.4) translateY(6px)}60%{transform:scale(1.25)}}.room-waiting-panel{position:relative;margin:16px 0;padding:14px 14px 16px;border:1px solid var(--line);border-radius:14px}.room-waiting-panel>p{margin:0 0 10px;font-size:var(--fs-xs);color:var(--ink-soft);text-align:center}.room-waiting-panel .room-rail{position:static;width:auto;border:0;padding:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}@media (prefers-reduced-motion: reduce){.room-rail-row.gained,.room-placement-reaction,.mp-reactions button{animation:none;transition:none}}.mp-estimate{margin-top:2px;font-family:var(--font-mono, ui-monospace, monospace);color:var(--ink)}.mp-actions{display:flex;flex-direction:column;align-items:flex-end;gap:10px;padding-top:4px}.mp-actions-row{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.mp-actions .mp-note{margin:0;text-align:right}.mp-settings{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.mp-suggestions{margin-top:14px}.mp-suggestions ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.mp-suggestions li{display:flex;align-items:center;gap:10px;padding:7px 12px;border:1px dashed color-mix(in srgb,var(--ink) 22%,transparent);border-radius:12px;font-size:var(--fs-xs)}.mp-suggestion-code{flex-shrink:0;min-width:3em;font-family:var(--font-mono, ui-monospace, monospace);font-weight:700}.mp-suggestion-by{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}.mp-suggestion-take{flex-shrink:0;padding:5px 12px;border:1px solid var(--ink);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:700;color:inherit;cursor:pointer}.mp-suggestion-take:hover{background:color-mix(in srgb,var(--ink) 10%,transparent)}.mp-card-slot{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px dashed color-mix(in srgb,var(--ink) 20%,transparent);border-radius:12px;font-size:var(--fs-xs)}.mp-card-slot-hint{flex:1;color:var(--ink-soft)}.mp-card-slot-random{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:none;font:inherit;font-size:var(--fs-xs);font-weight:600;color:inherit;cursor:pointer}.mp-card-slot-random:hover{border-color:var(--ink)}.mp-card-drag{flex-shrink:0;display:inline-flex;padding:2px;border:0;border-radius:6px;background:none;color:var(--ink-soft);cursor:grab}.mp-card-drag:hover,.mp-card-drag:focus-visible{color:var(--ink);background:color-mix(in srgb,var(--ink) 10%,transparent)}.mp-card-list li.dragging{opacity:.45}.room-waiting-note{position:fixed;left:50%;bottom:18px;z-index:40;transform:translate(-50%);max-width:min(420px,calc(100vw - 32px));padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--glass, var(--surface));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:var(--fs-xs);color:var(--ink-soft);text-align:center}.room-waiting-note.last-call{border-color:var(--accent);color:var(--ink);font-weight:700}.room-stop-call{position:fixed;z-index:78;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:room-stop-fade 1.6s ease-out forwards}.room-stop-call span{font-size:clamp(2.75rem,13vw,6rem);letter-spacing:-.01em;text-align:center;animation:room-stop-word 1.6s cubic-bezier(.2,1.4,.4,1) forwards}@keyframes room-stop-word{0%{opacity:0;transform:scale(1.5)}18%{opacity:1;transform:scale(1)}75%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}@keyframes room-stop-fade{0%{opacity:0}15%,75%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.room-stop-call span{animation:none}}.room-dnf-tag{flex-shrink:0;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--ink) 12%,transparent);font-style:normal;font-size:var(--fs-xs);font-weight:400;color:var(--ink-soft)}.room-preparing{position:fixed;top:0;right:0;bottom:0;left:0;z-index:84;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.room-preparing-card{display:grid;justify-items:center;gap:10px;padding:26px 34px;border:2px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow, 0 24px 60px rgba(0, 0, 0, .35));text-align:center}.room-preparing-card strong{font-family:var(--font-head, inherit);font-size:var(--fs-lg, 1.25rem)}.room-preparing-route{font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--fs-sm);font-weight:700;color:var(--accent-ink, var(--ink))}.room-preparing-note{font-size:var(--fs-xs);color:var(--ink-soft)}.room-preparing-spinner{width:26px;height:26px;border:3px solid color-mix(in srgb,var(--ink) 18%,transparent);border-top-color:var(--ink);border-radius:50%;animation:room-preparing-spin .8s linear infinite}@keyframes room-preparing-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion: reduce){.room-preparing-spinner{animation-duration:2.4s}}.game-island-stack{position:absolute;left:50%;bottom:calc(max(40px,calc(env(safe-area-inset-bottom) + 20px)) + var(--kb-inset));transform:translate(-50%);z-index:10;width:min(880px,calc(100% - 28px));display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none}.game-island-stack>.island{position:static;left:auto;bottom:auto;transform:none;width:100%;z-index:auto;pointer-events:auto}.game-lives{display:flex;align-items:center;justify-content:center;gap:9px;padding:5px 14px;border:1px solid var(--line);border-radius:999px;background:var(--glass, var(--surface));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:var(--fs-xs);color:var(--ink-soft);pointer-events:auto}.game-lives-hearts{display:inline-flex;align-items:center;gap:4px}.game-lives .life{fill:var(--accent);color:var(--accent)}.game-lives .life.spent{fill:none;color:color-mix(in srgb,var(--ink) 30%,transparent)}.room-rail-lives{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.room-rail-lives .life{fill:var(--accent);color:var(--accent)}.room-rail-lives .life.spent{fill:none;color:color-mix(in srgb,var(--ink) 35%,transparent)}.room-rail-row.pickable{cursor:pointer}.room-rail-row.pickable:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}.room-rail-row.watching{box-shadow:inset 0 0 0 1.5px var(--player-color, var(--ink))}.room-seat-tag.ready{color:var(--ink-soft)}.room-seat-tag.ready.on{color:var(--accent-ink, var(--ink));font-weight:700}.record-island{position:absolute;left:calc(50% + 452px);top:50%;transform:translateY(-50%);z-index:10;width:264px;max-height:60dvh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:var(--r-2xl);border:2px solid var(--border-strong);background:var(--glass);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);box-shadow:var(--shadow)}.record-island-minimise{position:absolute;top:8px;right:10px;display:inline-flex;padding:3px;border:0;border-radius:var(--r-md);background:none;color:var(--ink-soft);cursor:pointer;transition:color .15s ease}.record-island-minimise:hover{color:var(--ink)}.record-block-head{display:flex;align-items:center;gap:6px;margin:0}.record-block-title{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.route-record-block{display:flex;flex-direction:column;gap:6px}.my-record{display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid var(--line)}.my-record-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0}.my-record-metric{font-family:var(--font-head, inherit);font-size:.95rem}.my-record-meta{display:flex;gap:8px;flex-wrap:wrap;margin:0;font-size:var(--fs-2xs);color:var(--ink-soft)}.my-record.retired .my-record-metric,.my-record.retired .my-record-meta{opacity:.6}.my-record-retired{font-style:italic}.my-record-empty,.my-record-nudge{flex-direction:row;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--fs-2xs);color:var(--ink-soft)}.my-record-signin{padding:3px 8px;border:1px solid var(--border-strong);border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:var(--fs-2xs);cursor:pointer}.my-record-signin:hover{filter:brightness(.96)}.my-record-trend{display:flex;align-items:flex-end;gap:8px;margin:0}.my-record-trend-label{font-size:var(--fs-2xs);color:var(--ink-soft)}.my-record-trend-bars{display:flex;align-items:flex-end;gap:3px;height:22px}.my-record-bar{width:6px;border-radius:2px 2px 0 0;background:var(--accent-ink)}.my-record-bar.unfinished{background:var(--line)}.my-record-progress{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:2px;padding:7px 10px;border:2px solid var(--border-strong);border-radius:var(--r-lg, 10px);background:var(--accent);color:var(--on-accent);font-family:var(--font-head, inherit);font-size:var(--fs-xs, .8rem);cursor:pointer;box-shadow:2px 2px 0 0 var(--shadow-color)}.my-record-progress:hover{transform:translate(1px,1px);box-shadow:1px 1px 0 0 var(--shadow-color)}.my-record-progress:active{transform:translate(2px,2px);box-shadow:none}@media (max-width: 1432px){.record-island{top:50%;left:50%;transform:translate(-50%,-50%);flex-direction:column;align-items:stretch;width:min(880px,calc(100% - 28px));max-height:66dvh;overflow-y:auto;margin:0}.my-record{padding-left:0;padding-top:8px;border-left:0;border-top:1px solid var(--line)}}.record-banner{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px 0 0;padding:10px 14px;border:2px solid var(--border-strong);border-radius:var(--r-lg, 10px);font-family:var(--font-head, inherit);animation:record-banner-in .42s cubic-bezier(.2,.8,.2,1) both}.record-banner.is-beat{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow)}.record-banner.is-miss{background:transparent;color:var(--ink-soft);border-color:var(--line);font-family:inherit;font-size:var(--fs-sm, .875rem)}@keyframes record-banner-in{0%{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.record-banner{animation:none}}.progress-panel,.records-panel{width:min(620px,100%)}.progress-head,.records-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.progress-head h2,.records-head h2{margin:0}.progress-close,.records-close{display:inline-flex;padding:4px;border:0;background:none;color:var(--ink-soft);cursor:pointer}.progress-filters,.records-filters{display:flex;flex-wrap:wrap;gap:8px 16px}.progress-filter-group,.records-filter-group{display:flex;gap:4px}.progress-filter,.records-filter{padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink-soft);font-size:var(--fs-2xs);cursor:pointer}.progress-filter.active,.records-filter.active{border-color:var(--border-strong);background:var(--accent);color:var(--on-accent)}.progress-summary{margin:0;font-size:var(--fs-xs, .8rem);color:var(--ink-soft)}.progress-empty,.records-empty{margin:0;padding:24px 0;text-align:center;color:var(--ink-soft);font-size:var(--fs-sm, .875rem)}.progress-chart{width:100%;min-height:220px}.records-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.records-row{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:10px;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:var(--r-lg, 10px);background:transparent;color:inherit;text-align:left;cursor:pointer}.records-row:hover{border-color:var(--line);background:var(--surface)}.records-route{font-family:var(--font-head, inherit);min-width:2.5rem}.records-ends{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm, .875rem);color:var(--ink-soft)}.records-metric{display:flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums;font-size:var(--fs-sm, .875rem)}.records-metric small{color:var(--ink-soft)}.records-day{font-variant-numeric:tabular-nums;font-size:var(--fs-2xs);color:var(--ink-soft)}.records-more{align-self:center;padding:6px 14px;border:2px solid var(--border-strong);border-radius:999px;background:transparent;color:inherit;font-size:var(--fs-xs, .8rem);cursor:pointer}.records-total{margin:0;text-align:center;font-size:var(--fs-2xs);color:var(--ink-soft)}@media (max-width: 640px){.records-row{grid-template-columns:auto 1fr auto;row-gap:2px}.records-day{grid-column:2 / -1}}.record-island .route-record-rest{display:flex;flex-direction:column;gap:3px;margin:0;padding:0;list-style:none}.record-island .route-record-rest li{display:grid;grid-template-columns:1.1rem 1fr auto;align-items:baseline;gap:8px;font-size:var(--fs-2xs)}.record-island .route-record-rank{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.record-island .route-record-holder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-island .route-record-metric{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.record-island .route-record-empty{margin:0;font-size:var(--fs-2xs);color:var(--ink-soft)}.my-record-trend{display:flex;align-items:flex-end;gap:8px;width:100%;margin:0;padding:2px 0;border:0;background:none;color:inherit;text-align:left;cursor:pointer}.my-record-trend:hover .my-record-trend-label,.my-record-trend:hover svg{color:var(--ink)}.my-record-trend svg{margin-left:auto;align-self:center;color:var(--ink-soft)}.runs-panel{width:min(560px,100%)}.runs-list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.runs-row{display:grid;grid-template-columns:auto auto auto 1fr auto;align-items:baseline;gap:10px;padding:7px 10px;border-radius:var(--r-lg, 10px);font-size:var(--fs-sm, .875rem);font-variant-numeric:tabular-nums}.runs-row:nth-child(odd){background:var(--surface)}.runs-row.unfinished{color:var(--ink-soft)}.runs-when{color:var(--ink-soft);font-size:var(--fs-2xs)}.runs-speed{font-family:var(--font-head, inherit);min-width:4.5rem}.runs-accuracy,.runs-stops{color:var(--ink-soft);font-size:var(--fs-2xs)}.runs-tag{padding:1px 7px;border:1px solid var(--line);border-radius:999px;font-size:var(--fs-2xs)}@media (max-width: 640px){.runs-row{grid-template-columns:auto auto 1fr auto;row-gap:2px}.runs-stops{grid-column:2 / -1}}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "PingFang HK", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--leading-snug:1.375;--radius-sm:.25rem;--radius-xl:.75rem;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--animate-spin:spin 1s linear infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--font-head:"Archivo Black", "Helvetica Neue", "PingFang HK", "PingFang TC", "Microsoft JhengHei", sans-serif}}.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{top:0;right:0;bottom:0;left:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-100{top:calc(var(--spacing) * 100)}.right-2{right:calc(var(--spacing) * 2)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.my-1{margin-block:var(--spacing)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[85vh\]{max-height:85vh}.w-64{width:calc(var(--spacing) * 64)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink{flex-shrink:1}.grow{flex-grow:1}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-my-1{scroll-margin-block:var(--spacing)}.auto-rows-min{grid-auto-rows:min-content}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-\(--card-spacing\){gap:var(--card-spacing)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.375rem}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-border{border-color:var(--border-strong)}.bg-background{background-color:var(--bg)}.bg-border{background-color:var(--border-strong)}.bg-card{background-color:var(--surface)}.bg-destructive{background-color:var(--danger)}.bg-foreground\/20{background-color:var(--ink)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\/20{background-color:color-mix(in oklab,var(--ink) 20%,transparent)}}.bg-input,.bg-muted,.bg-muted\/50{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--surface) 50%,transparent)}}.bg-popover{background-color:var(--surface)}.bg-primary{background-color:var(--accent)}.bg-secondary{background-color:var(--surface)}.bg-transparent{background-color:#0000}.p-\(--card-spacing\){padding:var(--card-spacing)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-\(--card-spacing\){padding-inline:var(--card-spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-\(--card-spacing\){padding-block:var(--card-spacing)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.font-head{font-family:Archivo Black,Helvetica Neue,PingFang HK,PingFang TC,Microsoft JhengHei,sans-serif}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--ink)}.text-destructive{color:var(--danger)}.text-destructive-foreground{color:var(--on-accent)}.text-foreground{color:var(--ink)}.text-muted-foreground{color:var(--ink-soft)}.text-popover-foreground{color:var(--ink)}.text-primary-foreground{color:var(--on-accent)}.text-secondary-foreground{color:var(--ink)}.lowercase{text-transform:lowercase}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:4px 4px 0 0 var(--tw-shadow-color,var(--shadow-color));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:2px 2px 0 0 var(--tw-shadow-color,var(--shadow-color));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--card-spacing\:--spacing\(4\)\]{--card-spacing:calc(var(--spacing) * 4)}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media (hover:hover){.hover\:translate-y-1:hover{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:bg-accent:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent:hover{background-color:color-mix(in srgb,var(--accent) 12%,var(--bg))}}.hover\:bg-destructive\/90:hover{background-color:var(--danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--danger) 90%,transparent)}}.hover\:bg-primary-hover:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary-hover:hover{background-color:color-mix(in srgb,var(--accent) 90%,var(--ink))}}.hover\:bg-secondary-hover:hover{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary-hover:hover{background-color:color-mix(in srgb,var(--surface) 90%,var(--ink))}}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:bg-accent:focus{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.focus\:bg-accent:focus{background-color:color-mix(in srgb,var(--accent) 12%,var(--bg))}}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--ink)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-primary:focus-visible{outline-color:var(--accent)}.focus-visible\:outline-ring:focus-visible{outline-color:var(--focus)}.active\:translate-x-1:active{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-2:active{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:0}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--danger)}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--ink-soft)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[position\=popper\]\:h-\(--radix-select-trigger-height\)[data-position=popper]{height:var(--radix-select-trigger-height)}.data-\[position\=popper\]\:w-full[data-position=popper]{width:100%}.data-\[position\=popper\]\:min-w-\(--radix-select-trigger-width\)[data-position=popper]{min-width:var(--radix-select-trigger-width)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:rounded[data-size=sm]{border-radius:.375rem}.data-\[size\=sm\]\:\[--card-spacing\:--spacing\(3\)\][data-size=sm]{--card-spacing:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:0}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (min-width:64rem){.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:py-3{padding-block:calc(var(--spacing) * 3)}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.data-open\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-closed\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-\(--card-spacing\).border-b{padding-bottom:var(--card-spacing)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--ink)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
