:root{--game-ink:#17324d;--game-paper:#fffaf0;--game-bg:#dbe6ef;--game-coral:#f36f45;--game-gold:#f8c35a;--game-cyan:#55bdd0;--game-burgundy:#8b4650;--game-danger:#d9563f}
body{overflow-x:hidden}.screen[hidden]{display:none!important}.hero-stage{aspect-ratio:1200/760;background:var(--game-bg)}.hero-stage svg,.result-art svg{display:block;width:100%;height:100%}.intro h1{overflow-wrap:anywhere}.key-help{color:#526477;font-size:.86rem}.play{width:min(760px,100%);margin-inline:auto}.play-hud{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0 0 10px}.hud-cell{min-width:0;padding:8px 9px;border:1px solid #9aabb9;border-radius:10px;background:#fff;color:#526477;text-align:center}.hud-cell span{display:block;font-size:.68rem;font-weight:800;letter-spacing:.04em}.hud-cell b{display:block;color:var(--game-ink);font-size:1.05rem;line-height:1.2}.playfield-wrap{position:relative}.playfield{position:relative;aspect-ratio:1200/760;min-height:342px;border:2px solid var(--game-ink);border-radius:20px;background:var(--game-bg);box-shadow:7px 8px 0 #17324d26;overflow:hidden;touch-action:manipulation;isolation:isolate}.world,.cart-layer,.effect-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.world{z-index:0}.decision-lane{position:absolute;z-index:1;left:16%;right:16%;top:43%;height:17%;border-block:3px solid var(--game-ink);background:#fffaf0d9}.decision-line{position:absolute;z-index:2;left:25%;top:39%;height:25%;border-left:6px solid #fff;filter:drop-shadow(2px 0 0 var(--game-ink));pointer-events:none}.decision-line::after{content:"DECIDE";position:absolute;left:-31px;top:-24px;padding:2px 6px;border-radius:5px;background:var(--game-ink);color:#fff;font-size:.66rem;font-weight:900;letter-spacing:.07em}.cart-layer{z-index:4}.rider-cart{transition:opacity .16s}.rider-cart.is-wrong{filter:drop-shadow(0 0 10px var(--game-danger))}.rider-cart.is-correct{filter:drop-shadow(0 0 12px var(--game-gold))}.switches{position:absolute;z-index:7;inset:0;pointer-events:none}.route-switch{position:absolute;width:56px;height:56px;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;filter:drop-shadow(3px 4px 0 #17324d2b);touch-action:manipulation}.route-switch svg{width:100%;height:100%;overflow:visible}.route-switch[data-stage="heat"]{left:21%;top:14%}.route-switch[data-stage="air"]{right:21%;top:14%}.route-switch[data-stage="cold"]{left:calc(50% - 28px);bottom:8%}.route-switch:hover{transform:translateY(-1px)}.route-switch:active,.route-switch.is-pressed{transform:translateY(3px);filter:none}.route-switch:focus-visible{outline:5px solid var(--game-gold);outline-offset:4px;border-radius:50%}.route-switch[aria-pressed="true"]{filter:drop-shadow(0 0 8px var(--game-gold))}.stage-label{position:absolute;z-index:6;padding:4px 8px;border-radius:7px;background:var(--game-paper);color:var(--game-ink);font-size:.72rem;font-weight:900;letter-spacing:.04em;box-shadow:0 2px 0 #17324d26;pointer-events:none}.stage-label.heat{left:8%;top:25%}.stage-label.air{right:8%;top:25%}.stage-label.cold{left:50%;bottom:2%;transform:translateX(-50%)}.coach{box-sizing:border-box;position:relative;z-index:12;width:100%;margin:0 0 8px;padding:8px 12px;border-left:5px solid var(--game-gold);border-radius:0 8px 8px 0;background:#17324d;color:#fff;font-size:.8rem;font-weight:900;line-height:1.35;text-align:center;pointer-events:none}.feedback{min-height:2.8em;margin:12px 0 0;padding:10px 14px;border-left:5px solid var(--game-cyan);background:#fff;color:var(--game-ink);font-weight:800}.feedback[data-mode="good"]{border-color:#28527a}.feedback[data-mode="bad"]{border-color:var(--game-danger)}.pop{position:absolute;z-index:20;left:50%;top:50%;max-width:82%;transform:translate(-50%,-50%);padding:12px 18px;border:3px solid var(--game-ink);border-radius:13px;background:var(--game-paper);color:var(--game-ink);box-shadow:6px 7px 0 #17324d30;font-size:clamp(1rem,4vw,1.45rem);font-weight:950;text-align:center;animation:pop-away .85s both;pointer-events:none}.result-art{aspect-ratio:1200/760;border-radius:18px;overflow:hidden;background:var(--game-bg)}.result-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.result-stats p{margin:0;padding:10px;border-left:4px solid var(--game-cyan);background:#fff}.score-explain{padding:10px 12px;border:1px solid #9aabb9;border-radius:10px;background:#fffaf0;color:var(--game-ink);font-size:.9rem}.score-explain strong{display:block}.news-links{display:flex;flex-wrap:wrap;gap:10px 18px}.disclaimer{color:#526477;font-size:.78rem}.error{padding:24px}.is-playing{overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes pop-away{0%{opacity:0;transform:translate(-50%,-42%) scale(.9)}18%,72%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-58%) scale(1.04)}}
@media(max-width:680px){.play{width:100%}.play-hud{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.hud-cell{padding:6px 4px}.hud-cell:nth-child(4),.hud-cell:nth-child(5){grid-column:span 1}.playfield{min-height:0;border-radius:14px}.route-switch{width:52px;height:52px}.route-switch[data-stage="heat"]{left:16%;top:11%}.route-switch[data-stage="air"]{right:16%;top:11%}.route-switch[data-stage="cold"]{left:calc(50% - 26px);bottom:5%}.stage-label.heat{left:3%;top:24%}.stage-label.air{right:3%;top:24%}.stage-label.cold{bottom:0}.decision-lane{left:8%;right:8%}.decision-line{left:22%}.feedback{font-size:.9rem}.result-stats{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.pop{animation:none}.rider-cart{transition:none}}

.rule-example{margin-top:10px;padding:8px 10px;border-left:4px solid var(--game-gold);border-radius:0 7px 7px 0;background:#fff;color:var(--game-ink);font-size:.9rem;font-weight:900}
.coach{display:grid;place-items:center;height:58px;margin:10px 0 0;padding:7px 12px;overflow:hidden}.coach.is-compact{border-left-color:var(--game-cyan)}
.route-switch.is-suggested{outline:5px solid #fff;outline-offset:3px;border-radius:50%;filter:drop-shadow(0 0 8px var(--game-gold));animation:hint-pulse .75s ease-in-out infinite alternate}
@keyframes hint-pulse{from{outline-color:#fff;filter:drop-shadow(0 0 6px var(--game-gold))}to{outline-color:var(--game-gold);filter:drop-shadow(0 0 15px var(--game-gold))}}
@media(max-width:680px){.coach{height:64px;font-size:.76rem}}
@media(prefers-reduced-motion:reduce){.route-switch.is-suggested{animation:none}}

.switch-window{position:absolute;z-index:2;left:25%;top:39%;width:22.5%;height:25%;box-sizing:border-box;border-inline:3px dashed #b97800;background:#f8c35a55;box-shadow:inset 0 0 22px #f8c35a88;pointer-events:none}
.switch-window span{position:absolute;left:50%;bottom:5px;transform:translateX(-50%);padding:3px 7px;border-radius:6px;background:#6b4600;color:#fff;font-size:.68rem;font-weight:950;letter-spacing:.04em;white-space:nowrap}
.decision-line{z-index:3}.rider-cart.is-routed{filter:drop-shadow(0 0 10px var(--game-cyan))}.route-switch.is-denied{outline:5px solid var(--game-danger);outline-offset:3px;border-radius:50%;filter:drop-shadow(0 0 12px var(--game-danger))}
@media(max-width:680px){.switch-window span{bottom:3px;font-size:.58rem}}

.route-switch{width:72px;height:72px;padding:7px;border:3px solid var(--game-ink);border-radius:50%;background:#fff;box-shadow:0 6px 0 var(--game-ink);filter:none}
.route-switch::after{content:attr(data-label);position:absolute;left:50%;bottom:-20px;transform:translateX(-50%);min-width:max-content;padding:3px 7px;border:2px solid var(--game-ink);border-radius:7px;background:var(--game-paper);color:var(--game-ink);font-size:.66rem;font-weight:950;line-height:1;white-space:nowrap}
.route-switch:active,.route-switch.is-pressed{transform:translateY(5px);box-shadow:0 1px 0 var(--game-ink)}
.route-switch[data-stage="cold"]{left:calc(50% - 36px)}.stage-label{display:none}
@media(max-width:680px){.route-switch{width:64px;height:64px;padding:6px}.route-switch[data-stage="heat"]{left:14%;top:9%}.route-switch[data-stage="air"]{right:14%;top:9%}.route-switch[data-stage="cold"]{left:calc(50% - 32px);bottom:7%}.route-switch::after{bottom:-17px;font-size:.58rem;padding:3px 5px}}

.rider-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0 0 9px}.rider-chip{min-width:0;padding:5px 6px;border-left:5px solid;background:#ffffffc9;color:var(--game-ink)}.rider-chip b,.rider-chip span{display:block;overflow-wrap:anywhere}.rider-chip b{font-size:.72rem}.rider-chip span{margin-top:2px;color:#526477;font-size:.61rem;font-weight:850;line-height:1.15}.rider-chip.rider-1{border-color:#f36f45}.rider-chip.rider-2{border-color:#55bdd0}.rider-chip.rider-3{border-color:#f8c35a}.rider-chip.rider-4{border-color:#8b4650}.rider-chip[data-stage="3"]{background:#e3f4ea}.rider-chip[data-stage="3"] span{color:#28527a}
.rush-progress{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;margin:0 0 9px;padding:7px 10px;border-left:5px solid var(--game-gold);background:#ffffffc9;color:var(--game-ink);font-size:.72rem;font-weight:950}.rush-track{height:12px;border:2px solid var(--game-ink);border-radius:999px;background:#fff;overflow:hidden}.rush-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--game-coral),var(--game-gold));transition:width .18s ease-out}
.choice-burst{position:absolute;z-index:25;max-width:52%;transform:translate(-50%,-50%);padding:7px 10px;border:3px solid var(--game-ink);border-radius:9px;background:#fff;color:var(--game-ink);box-shadow:4px 5px 0 #17324d33;font-size:clamp(.72rem,2.8vw,1rem);font-weight:950;text-align:center;pointer-events:none;animation:choice-burst 1s ease-out both}.choice-burst.good{border-color:#28527a;background:#e3f4ea}.choice-burst.bad{border-color:var(--game-danger);background:#fff0eb}.route-switch.is-choice-correct{outline:6px solid #67c58a;outline-offset:3px}.route-switch.is-choice-wrong{outline:6px solid var(--game-danger);outline-offset:3px}.rider-cart.is-choice-correct{filter:drop-shadow(0 0 14px #67c58a)}.rider-cart.is-choice-wrong{filter:drop-shadow(0 0 14px var(--game-danger))}.playfield.is-choice-correct{animation:playfield-good .42s ease-out}.playfield.is-choice-wrong{animation:playfield-bad .42s ease-out}
@keyframes choice-burst{0%{opacity:0;transform:translate(-50%,-40%) scale(.8)}14%,76%{opacity:1;transform:translate(-50%,-58%) scale(1)}100%{opacity:0;transform:translate(-50%,-78%) scale(1.04)}}
@keyframes playfield-good{0%,100%{box-shadow:7px 8px 0 #17324d26}45%{box-shadow:inset 0 0 0 9px #67c58a,7px 8px 0 #17324d26}}
@keyframes playfield-bad{0%,100%{box-shadow:7px 8px 0 #17324d26}45%{box-shadow:inset 0 0 0 9px var(--game-danger),7px 8px 0 #17324d26}}
@media(max-width:680px){.rider-progress{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-bottom:7px}.rider-chip{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:5px;padding:5px 6px;border-left-width:4px}.rider-chip b{font-size:.68rem}.rider-chip span{margin-top:0;font-size:.59rem}.choice-burst{max-width:64%;padding:6px 8px}}
@media(prefers-reduced-motion:reduce){.choice-burst{animation:none;opacity:1}}

/* Desktop keeps the switches over their illustrated stations. Mobile turns the
   same controls into a stable, thumb-reachable dock below the moving carts. */
.switches{inset:auto;top:0;left:0;width:100%;aspect-ratio:1200/760}
@media(max-width:680px){.switches{box-sizing:border-box;position:relative;inset:auto;width:100%;height:94px;aspect-ratio:auto;margin:8px 0 0;padding:9px 10px 21px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;justify-items:center;gap:8px;border:1px solid #9aabb9;border-radius:14px;background:#fffaf0;box-shadow:0 4px 0 #17324d26;pointer-events:auto}.route-switch,.route-switch[data-stage="heat"],.route-switch[data-stage="cold"],.route-switch[data-stage="air"]{position:relative;inset:auto;left:auto;right:auto;top:auto;bottom:auto;margin:0;width:60px;height:60px;padding:6px}.route-switch::after{bottom:-18px;font-size:.62rem}.coach{margin-top:8px}}

.decision-line::after{content:attr(data-label)}
.switch-window{overflow:hidden;transition:background .2s,border-color .2s}.route-state-effect{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-size:clamp(2.1rem,7vw,4rem);font-weight:950;opacity:.72;pointer-events:none}.route-state-effect::before{display:block;filter:drop-shadow(0 2px 0 #fff8)}.switch-window[data-route="none"] .route-state-effect::before{content:"?";color:#6b7280}.switch-window[data-route="heat"]{border-color:#d75b38;background:#f36f4555}.switch-window[data-route="heat"] .route-state-effect::before{content:"♨";color:#b64027;animation:route-steam .9s ease-in-out infinite alternate}.switch-window[data-route="cold"]{border-color:#2386a2;background:#55bdd055}.switch-window[data-route="cold"] .route-state-effect::before{content:"≈";color:#176b85;animation:route-wave .75s ease-in-out infinite alternate}.switch-window[data-route="air"]{border-color:#527f65;background:#b8d9c355}.switch-window[data-route="air"] .route-state-effect::before{content:"≋";color:#37684d;animation:route-air .7s ease-in-out infinite alternate}.switch-window span{z-index:2}.route-switch.is-selected{background:var(--game-gold);box-shadow:0 2px 0 var(--game-ink);transform:translateY(4px)}.route-switch.is-selected::after{background:var(--game-ink);color:#fff}.choice-burst.route-change{border-color:var(--game-cyan);background:#eefbff}
@keyframes route-steam{from{transform:translateY(5px) scale(.92);opacity:.45}to{transform:translateY(-5px) scale(1.08);opacity:.9}}@keyframes route-wave{from{transform:translateX(-8px) scaleX(.9)}to{transform:translateX(8px) scaleX(1.08)}}@keyframes route-air{from{transform:translateX(-12px) skewX(-8deg);opacity:.45}to{transform:translateX(12px) skewX(8deg);opacity:.9}}
@media(prefers-reduced-motion:reduce){.switch-window .route-state-effect::before{animation:none!important}}

/* Keep the right-hand approach lane clear; the illustrated track owns the
   three exits on the left. */
.decision-lane{left:25%;right:0}
