/* 四種玩法各有完整場景；操作星星共用，場景配色與動態各自獨立。 */
.scene-city{cursor:pointer;outline:none}
.scene-focus{fill:none;stroke:#fcda8e;stroke-width:3;opacity:0;pointer-events:none}
.scene-city:focus-visible .scene-focus{opacity:1}
.scene-city:hover>g{filter:brightness(1.035)}
.portal-distinct #motion{flex-shrink:0}
.portal-distinct .star-caption{font-size:11.5px}
.portal-distinct[data-portal-mode="tour"]{background:#6d8c80}
.portal-distinct[data-portal-mode="tour"] .arrival-wrap{background:#e7dfc4}
.portal-distinct[data-portal-mode="tour"] .arrival-header{background:#567b71;color:#f8ecd3}
.portal-distinct[data-portal-mode="tour"] .arrival-header h1{color:#fff3da}
.portal-distinct[data-portal-mode="tour"] .arrival-header .eyebrow{color:#e0dbc0}
.portal-distinct[data-portal-mode="tour"] .arrival-invite{background:#567b71;color:#dbe2c9}
.portal-distinct[data-portal-mode="tour"] .arrival-invite b{color:#fff0c8}
.portal-distinct[data-portal-mode="tour"] .arrival-record-note{padding-top:18px}
.portal-distinct[data-portal-mode="world"]{background:#a6c88c;color:#3e653d}
.portal-distinct[data-portal-mode="world"] .fly-portal-wrap{background:#c7dcab}
.portal-distinct[data-portal-mode="world"] .fly-portal-header{background:#dae7b9}
.portal-distinct[data-portal-mode="world"] .fly-portal-header .eyebrow{color:#73835b}
.portal-distinct[data-portal-mode="world"] .fly-portal-invite{background:#dae7b9;color:#64764f}
.portal-distinct[data-portal-mode="world"] .fly-portal-invite b{color:#4a703e}
.portal-distinct[data-portal-mode="world"] .fly-record-note{color:#507448}
.portal-distinct[data-portal-mode="cross"]{background:#c7ad87;color:#79573d}
.portal-distinct[data-portal-mode="cross"] .fly-portal-wrap{background:#e7d1ab}
.portal-distinct[data-portal-mode="cross"] .fly-portal-header{background:#84654f;color:#f5e1b6}
.portal-distinct[data-portal-mode="cross"] .fly-portal-header .eyebrow{color:#e4ceaa}
.portal-distinct[data-portal-mode="cross"] .fly-portal-invite{background:#84654f;color:#ead7b8}
.portal-distinct[data-portal-mode="cross"] .fly-portal-invite b{color:#ffe8b1}
.portal-distinct[data-portal-mode="cross"] .fly-record-note{color:#7c654a}
.portal-distinct[data-portal-mode="fly"]{background:#18384f;color:#e9e8d7}
.portal-distinct[data-portal-mode="fly"] .fly-portal-wrap{background:#6d7e91}
.portal-distinct[data-portal-mode="fly"] .fly-portal-header{background:#173c55;color:#f9e9c5}
.portal-distinct[data-portal-mode="fly"] .fly-portal-header h1{color:#f9e9c5}
.portal-distinct[data-portal-mode="fly"] .fly-portal-header .eyebrow{color:#becdd0}
.portal-distinct[data-portal-mode="fly"] .fly-portal-invite{background:#173c55;color:#ced9da}
.portal-distinct[data-portal-mode="fly"] .fly-portal-invite b{color:#f7e4b4}
.portal-distinct[data-portal-mode="fly"] .star-shape{fill:#e6ece1;stroke:#e6cd99;filter:none}
.portal-distinct[data-portal-mode="fly"] .done .star-shape{fill:#f2d177;stroke:#fff0bf}
.portal-distinct[data-portal-mode="fly"] .star-number{fill:#33526a}
.portal-distinct[data-portal-mode="fly"] .star-caption,.portal-distinct[data-portal-mode="fly"] .star-route{fill:#f5eacb;stroke:#435d77;stroke-width:3px}
.portal-distinct[data-portal-mode="fly"] .fly-record-note{color:#eef0db}
.portal-distinct[data-portal-mode="fly"] .fly-help{background:#e3e9dd;color:#46606b}
.portal-distinct[data-portal-mode="fly"] .portal-stars a:focus-visible .star-hit{stroke:#ffe5a9}
.track-runner{animation:track-run 1.1s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 80%}
.track-snack{animation:track-snack 2.8s ease-in-out infinite}
.road-obstacle{animation:road-breathe 4.8s ease-in-out infinite}
.road-toss{animation:road-toss 3.7s ease-in-out infinite}
.road-steam,.sky-steam{animation:scene-steam 4s ease-out infinite}
.sky-vehicle{animation:sky-float 5.2s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 50%}
@keyframes track-run{0%,100%{transform:translate(-3px,0) rotate(-4deg)}50%{transform:translate(4px,-6px) rotate(4deg)}}
@keyframes track-snack{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes road-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes road-toss{0%,15%{transform:translate(-8px,8px);opacity:0}25%{opacity:1}60%{transform:translate(19px,-10px);opacity:1}80%,100%{transform:translate(42px,13px);opacity:0}}
@keyframes scene-steam{0%{transform:translateY(5px);opacity:0}35%{opacity:.8}100%{transform:translateY(-12px);opacity:0}}
@keyframes sky-float{0%,100%{transform:translate(0,0) rotate(-1deg)}50%{transform:translate(2px,-5px) rotate(1deg)}}
.portal-distinct[data-still="true"] main svg *{animation:none!important}
@media(prefers-reduced-motion:reduce){.portal-distinct:not([data-still="false"]) main svg *{animation:none!important}}
@media(max-width:350px){.portal-distinct .arrival-header h1,.portal-distinct .fly-portal-header h1{font-size:20px}.portal-distinct .fly-portal-header{padding-inline:12px;gap:8px}}
