:root{color-scheme:light;--bg: #f4efe6;--surface: #fffdf8;--surface-2: #ebe4d6;--text: #1d2230;--muted: #586070;--line: #cfc5b3;--accent: #c2410c;--on-accent: #ffffff;--accent-soft: #fde6d6;--amber: #b45309;--amber-soft: #fdf0d5;--danger: #b91c1c;--on-danger: #ffffff;--ok: #15803d;--lot: #4a5061;--lot-edge: #3a3f4d;--lot-mark: rgb(255 255 255 / .09);--glass: rgb(219 238 255 / .92);--sky-a: #cfe6f5;--sky-b: #f8e9d0;--block: #e6d6bf;--block-2: #d9c4a6;--sun: #ffd27a;--shadow: 0 1px 2px rgb(29 34 48 / .08), 0 6px 18px rgb(29 34 48 / .08);--c-R: #e5484d;--c-B: #3b76f6;--c-G: #1f9d5f;--c-Y: #f5bf2a;--c-P: #8b5cf6;--c-O: #ee7a22;--c-K: #e2589a;--c-C: #0fa3b5;--ease-out: cubic-bezier(.2, .8, .2, 1);--font: "Nunito", ui-rounded, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #12151c;--surface: #1b1f28;--surface-2: #272c38;--text: #eef0f5;--muted: #a3aaba;--line: #3a4150;--accent: #fb923c;--on-accent: #1c0d02;--accent-soft: #3a2416;--amber: #fbbf24;--amber-soft: #392c10;--danger: #f87171;--on-danger: #2a0606;--ok: #4ade80;--lot: #2b303c;--lot-edge: #20242e;--lot-mark: rgb(255 255 255 / .06);--glass: rgb(186 216 250 / .85);--sky-a: #1b2742;--sky-b: #3a2f45;--block: #2c3346;--block-2: #252b3b;--sun: #f3e6b5;--shadow: 0 1px 2px rgb(0 0 0 / .35), 0 6px 18px rgb(0 0 0 / .3)}}:root[data-theme=dark]{color-scheme:dark;--bg: #12151c;--surface: #1b1f28;--surface-2: #272c38;--text: #eef0f5;--muted: #a3aaba;--line: #3a4150;--accent: #fb923c;--on-accent: #1c0d02;--accent-soft: #3a2416;--amber: #fbbf24;--amber-soft: #392c10;--danger: #f87171;--on-danger: #2a0606;--ok: #4ade80;--lot: #2b303c;--lot-edge: #20242e;--lot-mark: rgb(255 255 255 / .06);--glass: rgb(186 216 250 / .85);--sky-a: #1b2742;--sky-b: #3a2f45;--block: #2c3346;--block-2: #252b3b;--sun: #f3e6b5;--shadow: 0 1px 2px rgb(0 0 0 / .35), 0 6px 18px rgb(0 0 0 / .3)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{overscroll-behavior:none}button{font-family:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--text);outline-offset:2px}#app{height:100%}.screen{height:100dvh;max-width:520px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));display:grid;gap:12px}.screen.level{grid-template-rows:auto auto auto minmax(0,1fr) auto auto;grid-template-areas:"top" "line" "hint" "lot" "stop" "dock"}.level .topbar{grid-area:top}.level .line{grid-area:line}.level .hint{grid-area:hint}.level .lot{grid-area:lot}.level .stop{grid-area:stop}.level .dock{grid-area:dock}.screen.home{grid-template-rows:auto auto minmax(140px,1fr) auto auto;grid-template-areas:"top" "settings" "scene" "world" "dock";overflow-y:auto}.home .topbar{grid-area:top}.home .settings{grid-area:settings}.home .scene{grid-area:scene}.home .world{grid-area:world}.home .dock{grid-area:dock;min-height:0}.topbar{display:flex;align-items:center;justify-content:space-between;min-height:52px}.title{margin:0;font-size:21px;font-weight:900;display:flex;align-items:center;gap:8px}.icon-btn{width:48px;height:48px;border:0;border-radius:16px;background:var(--surface);box-shadow:var(--shadow);display:grid;place-items:center}.ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.badge{font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;background:var(--danger);color:var(--on-danger);padding:3px 9px;border-radius:999px}[data-color=R]{--c: var(--c-R);--on-c: #ffffff}[data-color=B]{--c: var(--c-B);--on-c: #ffffff}[data-color=G]{--c: var(--c-G);--on-c: #ffffff}[data-color=Y]{--c: var(--c-Y);--on-c: #3a2a00}[data-color=P]{--c: var(--c-P);--on-c: #ffffff}[data-color=O]{--c: var(--c-O);--on-c: #ffffff}[data-color=K]{--c: var(--c-K);--on-c: #ffffff}[data-color=C]{--c: var(--c-C);--on-c: #ffffff}.line{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 14px 6px 8px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.queue{flex:1;min-width:0;display:flex;gap:6px;padding:5px;margin:-5px;overflow:hidden}.rider{flex:none;width:30px;height:30px;border-radius:50%;background:var(--c);display:grid;place-items:center;box-shadow:inset 0 -3px #0000002e}.rider .sym{width:16px;height:16px;fill:var(--on-c)}.rider.front{box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--c)}.loop{flex:none;display:flex;gap:6px;margin:-4px 2px -4px -4px;padding:4px 6px;border-radius:999px;background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.hitch{position:absolute;left:calc(var(--hx) * var(--cell));top:calc(var(--hy) * var(--cell));width:calc(var(--cell) * .55);height:calc(var(--cell) * .2);transform:translate(-50%,-50%);border-radius:999px;background:#2b2f3a;box-shadow:0 0 0 2px #f5f2ea,0 2px 0 3px #0000004d;pointer-events:none;z-index:1}.hitch[data-axis=y]{width:calc(var(--cell) * .2);height:calc(var(--cell) * .55)}.left{flex:none;font-weight:800;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}.hint{margin:0;padding:10px 14px;border-radius:14px;background:var(--accent-soft);font-weight:700;line-height:1.35;animation:rise .36s var(--ease-out)}.hint[hidden]{display:none}.lot{min-height:0;display:grid;place-items:center}.board{position:relative;border-radius:18px;background-color:var(--lot);background-image:linear-gradient(var(--lot-mark) 1px,transparent 1px),linear-gradient(90deg,var(--lot-mark) 1px,transparent 1px);background-size:var(--cell) var(--cell);box-shadow:inset 0 0 0 4px var(--lot-edge),var(--shadow);overflow:hidden;touch-action:none;user-select:none}.board.won{animation:cheer .8s var(--ease-out)}.vehicle{position:absolute;left:calc(var(--x) * var(--cell) + 4px);top:calc(var(--y) * var(--cell) + 4px);width:calc(var(--w) * var(--cell) - 8px);height:calc(var(--h) * var(--cell) - 8px);padding:0;border:0;border-radius:calc(var(--cell) * .3);background:var(--c);box-shadow:inset 0 -5px #0003,inset 0 2px #ffffff47,0 3px #0000004d;display:grid;place-items:center;touch-action:none}.vehicle .sym{width:calc(var(--cell) * .42);height:calc(var(--cell) * .42);fill:var(--on-c);filter:drop-shadow(0 1px 0 rgb(0 0 0 / .2))}.vehicle .glass{position:absolute;background:var(--glass);border-radius:calc(var(--cell) * .1)}.vehicle[data-dir=N] .glass{top:8%;left:18%;right:18%;height:calc(var(--cell) * .2)}.vehicle[data-dir=S] .glass{bottom:8%;left:18%;right:18%;height:calc(var(--cell) * .2)}.vehicle[data-dir=E] .glass{right:8%;top:18%;bottom:18%;width:calc(var(--cell) * .2)}.vehicle[data-dir=W] .glass{left:8%;top:18%;bottom:18%;width:calc(var(--cell) * .2)}.vehicle.flash{animation:flash .5s var(--ease-out)}.vehicle.nudge:after,.vehicle.target:after{content:"";position:absolute;inset:-5px;border-radius:calc(var(--cell) * .34);border:3px solid #ffffff;animation:ring 1.4s var(--ease-out) infinite;pointer-events:none}.board.lifting .vehicle{box-shadow:inset 0 -5px #0003,0 0 0 2px #ffffff8c,0 6px 10px #00000059}.stop{padding:10px;border-radius:20px;background:var(--surface);box-shadow:var(--shadow)}.slots{display:flex;justify-content:center;gap:8px}.slot{flex:1 1 0;max-width:78px;height:62px;border-radius:14px;border:2px dashed var(--line);display:grid;place-items:center;transition:border-color .3s var(--ease-out),background-color .3s var(--ease-out)}.slot.taken{border-color:transparent}.slot.last{border:2px solid var(--amber);background:var(--amber-soft);animation:pulse 1.6s var(--ease-out) infinite}.slot.last:after{content:"Last spot";font-size:12px;font-weight:900;color:var(--amber);text-align:center;line-height:1.1}.chip{width:100%;height:100%;border-radius:12px;background:var(--c);box-shadow:inset 0 -4px #0000002e;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}.chip .sym{width:18px;height:18px;fill:var(--on-c)}.seats{display:grid;grid-template-columns:repeat(4,7px);gap:3px}.seat{width:7px;height:7px;border-radius:50%;background:#00000040;transition:background-color .15s var(--ease-out),transform .15s var(--ease-out)}.seat.on{background:var(--on-c);transform:scale(1.15)}.dock{min-height:116px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px}.dock-empty,.note{margin:0;text-align:center;font-weight:700;color:var(--muted)}.note{font-size:14px;animation:rise .3s var(--ease-out)}.boosters{display:flex;justify-content:center;gap:10px}.boosters .booster{flex:1 1 0;max-width:160px}.booster{position:relative;min-height:68px;border:0;border-radius:18px;background:var(--surface);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:13px;font-weight:800}.booster:disabled{opacity:.45;cursor:default}.booster.new{box-shadow:0 0 0 3px var(--accent),var(--shadow)}.count{position:absolute;top:6px;right:8px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:12px;font-weight:900;display:grid;place-items:center}.count.empty{background:var(--surface-2);color:var(--muted)}.panel{display:grid;gap:12px;padding:16px;border-radius:22px;background:var(--surface);box-shadow:var(--shadow);animation:rise .34s var(--ease-out)}.panel h2{margin:0;font-size:20px;font-weight:900}.panel p{margin:3px 0 0;color:var(--muted);font-weight:700}.panel.win{border-top:5px solid var(--ok)}.panel.lose{border-top:5px solid var(--danger)}.panel.info{border-top:5px solid var(--accent)}.actions{display:grid;gap:8px}.btn{min-height:54px;padding:0 18px;border:0;border-radius:16px;font-size:17px;font-weight:800;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 10px}.btn.primary{background:var(--accent);color:var(--on-accent);box-shadow:inset 0 -4px #0000002e}.btn.secondary{background:var(--surface-2)}.btn.danger{background:var(--danger);color:var(--on-danger)}.btn.small{min-height:44px;font-size:15px}.btn .sub{font-size:13px;font-weight:700;opacity:.85}.play{width:100%;min-height:62px;font-size:20px}.play .badge{background:#00000038;color:inherit}.rating{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.rate{min-height:54px;border:0;border-radius:14px;background:var(--surface-2);font-size:19px;font-weight:900}.wordmark{font-size:28px;font-weight:900;letter-spacing:-.02em;color:var(--accent)}.scene{position:relative;min-height:180px;border-radius:24px;overflow:hidden;background:linear-gradient(var(--sky-a),var(--sky-b));box-shadow:var(--shadow)}.sun{position:absolute;top:18%;right:14%;width:46px;height:46px;border-radius:50%;background:var(--sun);box-shadow:0 0 40px var(--sun)}.block{position:absolute;bottom:calc(22% + 44px);border-radius:10px 10px 0 0;background:var(--block)}.b1{left:8%;width:22%;height:min(34%,120px)}.b2{left:34%;width:16%;height:min(50%,170px);background:var(--block-2)}.b3{left:56%;width:26%;height:min(28%,100px)}.road{position:absolute;left:0;right:0;bottom:22%;height:46px;background:var(--lot)}.road:after{content:"";position:absolute;left:0;right:0;top:50%;height:3px;margin-top:-1.5px;background:repeating-linear-gradient(90deg,rgb(255 255 255 / .55) 0 18px,transparent 18px 36px)}.bus{position:absolute;left:-90px;bottom:calc(22% + 7px);width:66px;height:32px;border-radius:9px;background:var(--c);box-shadow:inset 0 -4px #0003;animation:drive var(--t) linear infinite;animation-delay:var(--d)}.bus:before{content:"";position:absolute;top:6px;right:6px;bottom:10px;width:12px;border-radius:3px;background:var(--glass)}.world{align-self:end;padding:16px;border-radius:22px;background:var(--surface);box-shadow:var(--shadow)}.eyebrow{margin:0;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.world h2{margin:4px 0 12px;font-size:24px;font-weight:900}.progress{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}.progress span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .6s var(--ease-out)}.road-map{list-style:none;margin:14px 0 0;padding:0;display:flex;justify-content:space-between;gap:4px}.node{width:40px;height:40px;border-radius:50%;background:var(--surface-2);color:var(--muted);font-weight:900;display:grid;place-items:center}.node.done{background:color-mix(in srgb,var(--ok) 18%,var(--surface));color:var(--ok)}.node.current{background:var(--accent);color:var(--on-accent);transform:scale(1.12)}.node.hard{box-shadow:inset 0 0 0 3px var(--danger)}.settings{gap:2px}.setting{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:800}.seg{display:flex;gap:4px;padding:4px;border-radius:14px;background:var(--surface-2)}.seg button{min-width:62px;min-height:44px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:14px;font-weight:800;transition:background-color .25s var(--ease-out),color .25s var(--ease-out)}.seg button[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.switch{position:relative;width:64px;height:44px;border:0;border-radius:999px;background:var(--surface-2);transition:background-color .25s var(--ease-out)}.switch span{position:absolute;top:5px;left:5px;width:34px;height:34px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow);transition:transform .25s var(--ease-out)}.switch[aria-checked=true]{background:var(--ok)}.switch[aria-checked=true] span{transform:translate(20px)}.pair{display:flex;gap:8px}.privacy{margin:6px 0 0;font-size:13px;line-height:1.4}@keyframes rise{0%{transform:translateY(14px);opacity:0}}@keyframes flash{40%{filter:brightness(1.35);box-shadow:0 0 0 3px #fff,0 3px #0000004d}}@keyframes ring{0%{opacity:.95;transform:scale(.94)}to{opacity:0;transform:scale(1.14)}}@keyframes pulse{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--amber) 28%,transparent)}}@keyframes cheer{40%{box-shadow:inset 0 0 0 4px var(--ok),0 0 0 6px color-mix(in srgb,var(--ok) 30%,transparent)}}@keyframes drive{to{transform:translate(720px)}}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{animation:none!important;transition:none!important}.reduce-motion .bus{left:var(--sx)}@media (max-height: 700px){.scene{min-height:120px}.dock{min-height:104px}.slot{height:54px}}
