html,body{height:100%;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;touch-action:manipulation;background:linear-gradient(#86cdf2 0%,#bfe6f7 60%,#e9f7ef 100%);font-family:Andika,system-ui,sans-serif}#stage{position:fixed;inset:0}#stage canvas{display:block}.labels{pointer-events:none;position:absolute;inset:0}.sign{border:4px solid var(--c);color:#3b2f2a;letter-spacing:.5px;white-space:nowrap;opacity:0;transform-origin:50% 100%;background:#fffaf0;border-radius:999px;align-items:center;gap:6px;padding:6px 16px 6px 12px;font-size:20px;font-weight:700;transition:opacity .15s,transform .15s;display:flex;position:relative;transform:translateY(0)scale(.4);box-shadow:0 3px #3c281440}.sign.show{opacity:1;transition:opacity .12s,transform .35s cubic-bezier(.34,1.56,.64,1);animation:.35s cubic-bezier(.34,1.56,.64,1) sign-pop;transform:translateY(-14px)scale(1)}@keyframes sign-pop{0%{opacity:0;transform:translateY(0)scale(.4)}}@media (prefers-reduced-motion:reduce){.sign,.sign.show{transition:none;animation:none}}.sign:after{content:"";border:9px solid #0000;border-top-color:var(--c);border-bottom:0;margin-left:-9px;position:absolute;bottom:-14px;left:50%}.toybtn{z-index:5;touch-action:manipulation;cursor:pointer;background:linear-gradient(#fff,#f1f6fa);border:0;border-radius:26px;place-items:center;width:80px;height:80px;padding:0;transition:transform 80ms,box-shadow 80ms;display:grid;position:fixed;box-shadow:0 6px #c7d6e2,0 10px 18px #1e3c5a2e}.toybtn:active{transform:translateY(5px);box-shadow:0 1px #c7d6e2,0 4px 8px #1e3c5a2e}.toybtn:focus-visible{outline-offset:4px;outline:4px solid #3aa58f}.toybtn[hidden]{display:none}.fs{top:max(18px, env(safe-area-inset-top));right:max(18px, env(safe-area-inset-right));opacity:.9;border-radius:22px;width:64px;height:64px}.home{top:calc(max(18px, env(safe-area-inset-top)) - 8px);right:calc(max(18px, env(safe-area-inset-right)) + 64px + 16px)}.no-fs .home{right:max(18px, env(safe-area-inset-right))}.fs .exit,.fs.on .enter{display:none}.fs.on .exit{display:block}#fade{opacity:0;pointer-events:none;z-index:4;background:#f4fbff;transition:opacity .26s;position:fixed;inset:0}#fade.on{opacity:1}.sign.word{padding:8px 20px;font-size:26px}.sign[data-stars]:not([data-stars=""]):before{content:attr(data-stars);color:#f6c341;letter-spacing:2px;text-shadow:0 2px #b8860b44;font-size:20px;position:absolute;top:-22px;left:50%;transform:translate(-50%)}#hud{z-index:3;pointer-events:none;color:#3b2f2a;font-family:Andika,system-ui,sans-serif;position:fixed;inset:0}#hud>*{pointer-events:auto}.hud-btn{color:#3b2f2a;touch-action:manipulation;cursor:pointer;background:linear-gradient(#fff,#f1f6fa);border:0;border-radius:24px;place-items:center;min-width:76px;min-height:76px;padding:8px 16px;font:700 22px Andika,system-ui,sans-serif;transition:transform 80ms,box-shadow 80ms;display:inline-grid;box-shadow:0 6px #c7d6e2,0 10px 18px #1e3c5a2e}.hud-btn:active{transform:translateY(5px);box-shadow:0 1px #c7d6e2,0 4px 8px #1e3c5a2e}.hud-btn.primary{color:#fff;background:linear-gradient(#5fd0a8,#3aa58f);box-shadow:0 6px #2b7f6d,0 10px 18px #1e3c5a33}.hud-btn.big{border-radius:30px;min-width:112px;min-height:112px;font-size:26px}.hud-row{align-items:center;gap:16px;display:flex;position:fixed}.hud-row.bottom{left:50%;bottom:max(18px, env(safe-area-inset-bottom));transform:translate(-50%)}.hud-row.left{left:max(18px, env(safe-area-inset-left));bottom:max(18px, env(safe-area-inset-bottom))}.hud-row.right{right:max(18px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom))}.hud-row.topleft{left:max(18px, env(safe-area-inset-left));top:max(18px, env(safe-area-inset-top))}.caption{z-index:6;top:max(20px, env(safe-area-inset-top));color:#3b2f2a;text-align:center;pointer-events:none;background:#fffaf0;border:4px solid #3aa58f;border-radius:28px;max-width:min(70vw,760px);padding:14px 28px;font:700 30px Andika,system-ui,sans-serif;transition:transform .3s cubic-bezier(.34,1.56,.64,1);position:fixed;left:50%;transform:translate(-50%,-140%);box-shadow:0 6px #1e5a4640}.caption.show{transform:translate(-50%)}.confetti{z-index:7;pointer-events:none;border-radius:3px;width:12px;height:18px;animation:1.5s ease-in forwards confetti;position:fixed;top:-20px}@keyframes confetti{to{transform:translate(var(--dx), 105vh) rotate(var(--rot))}}body.loading:after{content:"";z-index:9;border:7px solid #fffa;border-top-color:#3aa58f;border-radius:50%;width:54px;height:54px;margin:-27px;animation:.8s linear infinite spin;position:fixed;top:50%;left:50%}@keyframes spin{to{transform:rotate(360deg)}}#rotate{z-index:10;background:linear-gradient(#86cdf2,#e9f7ef);place-items:center;display:none;position:fixed;inset:0}@media (orientation:portrait){#rotate{display:grid}}#rotate .tilt{transform-origin:60px 52px;animation:2.4s ease-in-out infinite tilt}@keyframes tilt{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}[hidden]{display:none!important}.voice-check{z-index:30;color:#3b2f2a;background:#fffaf0ee;border-radius:14px;max-width:46vw;max-height:80vh;padding:10px 12px;position:fixed;top:12px;left:12px;overflow:auto;box-shadow:0 4px 14px #0003}.voice-check pre{white-space:pre-wrap;margin:0 0 8px;font:13px/1.35 ui-monospace,monospace}#ridehud .hud-btn{grid-template-rows:auto auto;gap:2px}.ride-icon{font-size:40px;line-height:1}.ride-label{font-size:22px}.roadsign{color:#fff;white-space:nowrap;pointer-events:none;background:#2f8f5a;border:3px solid #fff;border-radius:8px;padding:4px 12px;font:700 18px Andika,system-ui,sans-serif}.tripcard{left:50%;bottom:max(18px, env(safe-area-inset-bottom));z-index:5;align-items:center;gap:16px;display:flex;position:fixed;transform:translate(-50%)}.tripcard-go{color:#fff;touch-action:manipulation;cursor:pointer;background:linear-gradient(#5fd0a8,#3aa58f);border:0;border-radius:30px;grid-template-rows:auto auto auto;place-items:center;gap:2px;min-width:190px;padding:14px 24px;font:700 30px Andika,system-ui,sans-serif;display:grid;box-shadow:0 6px #2b7f6d,0 10px 18px #1e3c5a33}.tripcard-go:active{transform:translateY(5px);box-shadow:0 1px #2b7f6d}.tripcard-icon{font-size:64px;line-height:1}.tripcard-by{opacity:.95;font-size:20px}.tripcard-no{min-width:76px;min-height:76px;font-size:30px}.snd{top:calc(max(18px, env(safe-area-inset-top)) + 76px);right:max(18px, env(safe-area-inset-right));opacity:.9;border-radius:22px;width:64px;height:64px}.snd .cross{display:none}.snd.off .cross{display:inline}.snd.off .wave,body[data-zone] .snd{display:none}.region-banner{opacity:0;z-index:7;color:#3b2f2a;letter-spacing:.04em;pointer-events:none;background:#fffaf0;border:5px solid #3aa58f;border-radius:34px;align-items:center;gap:18px;padding:18px 40px;font:700 54px Andika,system-ui,sans-serif;animation:.45s cubic-bezier(.34,1.56,.64,1) forwards banner-in;display:flex;position:fixed;top:38%;left:50%;transform:translate(-50%,-50%)scale(.6);box-shadow:0 10px #1e5a4640}.region-banner.out{animation:.5s forwards banner-out}.region-banner-icon{font-size:64px;line-height:1}@keyframes banner-in{to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes banner-out{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-60%)scale(.9)}}@media (prefers-reduced-motion:reduce){.region-banner,.region-banner.out{opacity:1;animation:none;transform:translate(-50%,-50%)}}.map-btn{z-index:5;left:max(18px, env(safe-area-inset-left));top:max(18px, env(safe-area-inset-top));cursor:pointer;touch-action:manipulation;background:linear-gradient(#fff,#f1f6fa);border:0;border-radius:24px;width:80px;height:80px;padding:8px;position:fixed;box-shadow:0 5px #c7d6e2,0 8px 14px #1e3c5a33}.map-btn:active{transform:translateY(4px);box-shadow:0 1px #c7d6e2}.map-btn svg{width:100%;height:100%;display:block}body[data-zone] .map-btn{display:none}.worldmap{z-index:8;padding-bottom:max(12px, env(safe-area-inset-bottom));background:#28465a73;place-items:end center;display:grid;position:fixed;inset:0}.worldmap-paper{filter:drop-shadow(0 10px 18px #1e283259);width:min(94vw,166.667vh - 286.667px);animation:.28s cubic-bezier(.34,1.56,.64,1) wm-in;position:relative}@keyframes wm-in{0%{opacity:0;transform:scale(.85)rotate(-2deg)}to{opacity:1;transform:none}}.worldmap-svg{width:100%;height:auto;font-family:Andika,system-ui,sans-serif;display:block}.worldmap-title{z-index:1;color:#5a4a3a;letter-spacing:.08em;pointer-events:none;background:#fff7d6;border-radius:10px;padding:4px 26px;font:700 clamp(22px,3.4vw,36px) Andika,system-ui,sans-serif;position:absolute;top:3.4%;left:3%;transform:rotate(-2deg);box-shadow:0 3px #e6d6a4}.worldmap-close{min-width:76px;min-height:76px;font-size:30px;position:absolute;top:2.6%;right:1.6%}.wm-ink,.wm-ink path{fill:none;stroke:#4b433d;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round}.wm-ghost,.wm-ghost path{stroke-width:1.4px;opacity:.45}.wm-hit{fill:#0000}.wm-region,.wm-vehicle{cursor:pointer}.wm-region.unseen .wm-ink{opacity:.38}.wm-region.unseen .wm-ghost{opacity:.2}.wm-name{text-anchor:middle;fill:#3b2f2a;font-size:30px;font-weight:700}.wm-stars{text-anchor:middle;fill:#c98a00;font-size:22px;font-weight:700}.wm-region.unseen .wm-name{fill:#8a8078}.wm-region.unseen .wm-stars{fill:#a59a8f;font-size:28px}.wm-sea-word{fill:#6f9fbd;letter-spacing:.1em;font-size:24px;font-style:italic}.wm-k{text-anchor:middle;fill:#6a625a;font-size:20px;font-weight:700}.wm-road-edge{fill:none;stroke:#6a625a;stroke-width:15px;stroke-linecap:round}.wm-road-mid{fill:none;stroke:#fbf5e6;stroke-width:10px;stroke-linecap:round}.wm-rail{fill:none;stroke:#6a625a;stroke-width:2.4px}.wm-ties{fill:none;stroke:#6a625a;stroke-width:12px;stroke-dasharray:2.5 9}.wm-searoute{fill:none;stroke:#4f86a8;stroke-width:3px;stroke-dasharray:3 10;stroke-linecap:round}.wm-here{fill:none;stroke:#d93a32;stroke-width:5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:.9s ease-out .25s forwards wm-draw}@keyframes wm-draw{to{stroke-dashoffset:0}}.wm-here-text{text-anchor:middle;fill:#d93a32;transform-box:fill-box;transform-origin:50%;font-size:26px;font-style:italic;font-weight:700;transform:rotate(-3deg)}.wm-pop,.wm-vehicle{transform-box:fill-box;transform-origin:50%}.wm-bounce{animation:.45s cubic-bezier(.34,1.56,.64,1) wm-bounce}@keyframes wm-bounce{0%{scale:1}40%{scale:1.12}to{scale:1}}@media (prefers-reduced-motion:reduce){.worldmap-paper,.wm-bounce{animation:none}.wm-here{stroke-dashoffset:0;animation:none}}.worldmap~.caption{z-index:9}body:has(.worldmap) .caption{z-index:9}@media (prefers-reduced-motion:reduce){.confetti{display:none}body.loading:after{animation-duration:2.4s}#rotate .tilt{animation:none;transform:rotate(-90deg)}}.perf-hud{z-index:20;color:#fff;pointer-events:none;background:#000a;border-radius:10px;padding:6px 10px;position:fixed;bottom:8px;left:8px}.perf-hud pre{margin:0;font:12px/1.35 ui-monospace,monospace}.perf-hud button{pointer-events:auto;border:0;border-radius:8px;min-height:36px;margin-top:4px;padding:2px 10px;font:700 13px system-ui,sans-serif}
