:root{color-scheme:light}
.hub-game-page{margin:0;background:#eff4f0;color:#143f38;min-height:100svh;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);font-family:system-ui,"Microsoft YaHei",sans-serif}
.game-page-header{max-width:1040px;margin:auto;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #d4e3da}
.game-page-header a{display:flex;gap:6px;align-items:center;text-decoration:none;color:inherit;min-height:44px}
.game-page-header a svg{width:18px;height:18px;transform:rotate(180deg)}
.game-page-header>span{font-size:13px;font-weight:700}
.game-page-header button,.game-page-status+button,#gameShareDialog button{border:1px solid #bacfc3;background:#fff;border-radius:12px;color:#143f38;padding:10px 14px;min-height:44px;font:inherit}
.game-page-main{max-width:920px;margin:auto;padding:18px 20px 24px}
.game-page-title h1{font-size:clamp(25px,5vw,34px);margin:7px 0}
.game-page-title p{font-size:13px;line-height:1.6;margin:4px 0;color:#547166}
.game-page-status{margin:8px 0;font-size:13px;line-height:1.6}
.game-page-status:empty{display:none}.game-page-status.is-error{color:#a33728}
.hub-game-page .route-reward{margin:8px 0;padding:20px;box-shadow:none}
.hub-game-page .route-reward.is-game-active{padding:0;border:0;background:transparent}
.route-reward.is-game-active>.route-reward-heading,.route-reward.is-game-active>.route-reward-dates,.route-reward.is-game-active>.route-reward-note,.route-reward.is-game-active>.route-reward-stock,.route-reward.is-game-active>.route-reward-overview,.route-reward.is-game-active>.route-reward-leaderboard{display:none}
.game-page-main:has(.route-reward.is-game-active)>.game-page-title{display:none}
#gameShareDialog{width:min(430px,calc(100vw - 32px));box-sizing:border-box;max-height:calc(100svh - 32px);overflow:auto;border:1px solid #bdcfc4;border-radius:20px;padding:22px;color:#143f38;background:#f6f9f5}
#gameShareDialog::backdrop{background:#12342de0}
#gameShareDialog h2{margin-top:0;font-size:23px}#gameShareDialog p{font-size:14px;line-height:1.65}
#gameShareDialog textarea{box-sizing:border-box;width:100%;min-height:130px;padding:12px;font:inherit;line-height:1.65;resize:vertical;border:1px solid #bdd0c3;border-radius:12px;background:white;color:#143f38}
#gameShareDialog>div{display:flex;gap:10px;flex-wrap:wrap}#gameShareCopy{background:#174e3e!important;color:white!important}
button:disabled{opacity:.5;cursor:wait}

/* Only running / paused / upgrade phases fill the viewport. Results remain documents. */
html.rsm-game-immersive{overflow:hidden;overscroll-behavior:none}
body.hub-game-page.rsm-game-immersive{--game-screen-height:100vh;position:fixed;inset:0;width:100%;height:var(--game-screen-height);min-height:0;overflow:hidden;padding:0;background:#132e36;overscroll-behavior:none}
@supports(height:100svh){body.hub-game-page.rsm-game-immersive{--game-screen-height:100svh}}
@supports(height:100dvh){body.hub-game-page.rsm-game-immersive{--game-screen-height:100dvh}}
body.hub-game-page.rsm-game-immersive>.game-page-header{display:none}
body.hub-game-page.rsm-game-immersive>.hub-data-notice{position:fixed;top:max(8px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));left:auto;z-index:9;border:1px solid #ffffff70;border-radius:13px;background:#153c3be8;box-shadow:none}
body.hub-game-page.rsm-game-immersive .hub-data-notice p{padding:0;line-height:1}
body.hub-game-page.rsm-game-immersive .hub-data-notice-copy{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
body.hub-game-page.rsm-game-immersive .hub-data-notice a{display:flex;align-items:center;justify-content:center;min-width:78px;min-height:44px;margin:0;padding:8px;color:#fff;font-size:11px;text-decoration:none}
body.hub-game-page.rsm-game-immersive .game-page-main{width:100%;max-width:none;height:100%;margin:0;padding:0}
body.hub-game-page.rsm-game-immersive .game-page-title,body.hub-game-page.rsm-game-immersive #gamePageStatus,body.hub-game-page.rsm-game-immersive #gamePageRetry{display:none}
body.hub-game-page.rsm-game-immersive #hubRouteRewardMount,body.hub-game-page.rsm-game-immersive .route-reward,body.hub-game-page.rsm-game-immersive .route-reward-game{width:100%;height:100%;min-height:0;max-width:none;margin:0;padding:0;border:0;border-radius:0}
body.hub-game-page.rsm-game-immersive .route-reward>.route-reward-message{display:none}
body.hub-game-page.rsm-game-immersive .sprint-shell{position:fixed;inset:0;width:100%;height:var(--game-screen-height);min-height:0;max-width:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;background:#132e36}
body.hub-game-page.rsm-game-immersive .sprint-viewport{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none;margin:0;border:0;border-radius:0!important;overflow:hidden}
body.hub-game-page.rsm-game-immersive .sprint-canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
body.hub-game-page.rsm-game-immersive .sprint-top,body.hub-game-page.rsm-game-immersive .sprint-route-header,body.hub-game-page.rsm-game-immersive .sprint-help,body.hub-game-page.rsm-game-immersive .sprint-note{display:none}
body.hub-game-page.rsm-game-immersive .sprint-footer{position:absolute;z-index:8;top:max(8px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));margin:0;display:flex;max-width:calc(100% - 24px)}
body.hub-game-page.rsm-game-immersive .sprint-footer>button:not(.sprint-close){display:none}
body.hub-game-page.rsm-game-immersive .sprint-footer .sprint-close{display:inline-flex;align-items:center;justify-content:center;min-width:72px;min-height:44px;padding:8px 12px;border:1px solid #ffffff70;border-radius:13px;background:#153c3be8;color:#fff;font-size:12px;text-decoration:none;backdrop-filter:blur(8px)}
body.hub-game-page.rsm-game-immersive .sprint-hud{top:calc(max(8px,env(safe-area-inset-top)) + 52px);left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));gap:8px}
body.hub-game-page.rsm-game-immersive .sprint-hud>div{padding:8px 10px}
body.hub-game-page.rsm-game-immersive .sprint-energy{top:calc(max(8px,env(safe-area-inset-top)) + 126px);left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));height:16px}
body.hub-game-page.rsm-game-immersive .sprint-effects{top:calc(max(8px,env(safe-area-inset-top)) + 147px);left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));font-size:11px}
body.hub-game-page.rsm-game-immersive .sprint-chaser{top:calc(max(8px,env(safe-area-inset-top)) + 170px);right:max(12px,env(safe-area-inset-right))}
body.hub-game-page.rsm-game-immersive .sprint-landmark{top:calc(max(8px,env(safe-area-inset-top)) + 208px);left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right))}
body.hub-game-page.rsm-game-immersive .sprint-controls{position:absolute;z-index:8;left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 48px 48px;gap:6px;margin:0;padding:0;background:none}
body.hub-game-page.rsm-game-immersive .sprint-controls>button{min-width:0;min-height:48px;width:auto;padding:8px 4px;font-size:12px;border:1px solid #ffffff7d;background:#f2f8f0ed;color:#153d37;border-radius:14px!important;backdrop-filter:blur(8px)}
body.hub-game-page.rsm-game-immersive .sprint-controls>.sprint-pause,body.hub-game-page.rsm-game-immersive .sprint-controls>.sprint-sound{width:48px;min-width:48px;font-size:11px}
body.hub-game-page.rsm-game-immersive .sprint-progress{position:absolute;z-index:4;left:12px;right:12px;bottom:calc(max(10px,env(safe-area-inset-bottom)) + 56px);height:3px;margin:0}
body.hub-game-page.rsm-game-immersive .sprint-feedback{bottom:calc(max(10px,env(safe-area-inset-bottom)) + 67px);margin:0;font-size:11px!important}
body.hub-game-page.rsm-game-immersive .sprint-chain{bottom:calc(max(10px,env(safe-area-inset-bottom)) + 98px)}
body.hub-game-page.rsm-game-immersive .sprint-overlay{z-index:6;padding:calc(max(8px,env(safe-area-inset-top)) + 64px) max(20px,env(safe-area-inset-right)) calc(max(10px,env(safe-area-inset-bottom)) + 80px) max(20px,env(safe-area-inset-left));overflow-y:auto;touch-action:pan-y}
body.hub-game-page.rsm-game-immersive .sprint-shell.is-upgrading .sprint-overlay{inset:auto 0 0;max-height:calc(100% - max(8px,env(safe-area-inset-top)) - 52px);padding:18px max(20px,env(safe-area-inset-right)) calc(max(10px,env(safe-area-inset-bottom)) + 72px) max(20px,env(safe-area-inset-left))}
body.hub-game-page.rsm-game-immersive .sprint-live{position:absolute;z-index:7;left:12px;right:12px;bottom:calc(max(10px,env(safe-area-inset-bottom)) + 70px);margin:0;padding:5px 8px;border-radius:8px;color:#fff;background:#153c3bd9;font-size:11px;pointer-events:none}
/* The upgrade sheet already explains that play is paused. Keep live announcements
   for assistive technology without painting a status strip across the choice cards. */
body.hub-game-page.rsm-game-immersive .sprint-shell[data-phase="upgrade"] .sprint-live{position:absolute;width:1px;height:1px;left:0;right:auto;top:0;bottom:auto;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

@media(max-width:600px){.game-page-main{padding:10px 12px 18px}.game-page-header{padding:10px 14px}.game-page-header>span{font-size:12px}.hub-game-page .route-reward{padding:16px}.game-page-title p{font-size:12px}.hub-game-page .route-reward-registration{grid-template-columns:1fr}.hub-game-page .route-reward-game{margin:0}}
@media(max-width:350px){body.hub-game-page.rsm-game-immersive .sprint-controls{gap:4px;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));grid-template-columns:repeat(3,minmax(0,1fr)) 44px 44px}body.hub-game-page.rsm-game-immersive .sprint-controls>.sprint-pause,body.hub-game-page.rsm-game-immersive .sprint-controls>.sprint-sound{width:44px;min-width:44px}body.hub-game-page.rsm-game-immersive .sprint-controls>button{font-size:11px}}
@media(orientation:landscape) and (max-height:500px){
 body.hub-game-page.rsm-game-immersive>.hub-data-notice{left:50%;right:auto;transform:translateX(-50%)}
 body.hub-game-page.rsm-game-immersive .sprint-hud{top:max(8px,env(safe-area-inset-top));left:max(150px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));justify-content:flex-end}
 body.hub-game-page.rsm-game-immersive .sprint-hud .sprint-score-cell{min-width:105px}
 body.hub-game-page.rsm-game-immersive .sprint-hud .sprint-score-cell strong{font-size:24px}
 body.hub-game-page.rsm-game-immersive .sprint-hud .sprint-time-cell strong{font-size:20px}
 body.hub-game-page.rsm-game-immersive .sprint-energy{top:calc(max(8px,env(safe-area-inset-top)) + 64px);left:auto;width:min(210px,35vw)}
 body.hub-game-page.rsm-game-immersive .sprint-effects{top:calc(max(8px,env(safe-area-inset-top)) + 87px);left:auto;width:min(240px,39vw);font-size:10px}
 body.hub-game-page.rsm-game-immersive .sprint-chaser{top:calc(max(8px,env(safe-area-inset-top)) + 111px)}
 body.hub-game-page.rsm-game-immersive .sprint-landmark{top:calc(max(8px,env(safe-area-inset-top)) + 56px);left:max(12px,env(safe-area-inset-left));right:auto;max-width:35vw}
 body.hub-game-page.rsm-game-immersive .sprint-controls{left:auto;width:min(440px,60vw)}
 body.hub-game-page.rsm-game-immersive .sprint-chain{left:max(16px,env(safe-area-inset-left));transform:none;bottom:calc(max(10px,env(safe-area-inset-bottom)) + 12px);padding:7px 12px;max-width:32vw}
 body.hub-game-page.rsm-game-immersive .sprint-chain strong{font-size:23px}
 body.hub-game-page.rsm-game-immersive .sprint-chain small{display:none}
 body.hub-game-page.rsm-game-immersive .sprint-feedback{left:12px;right:auto;max-width:32vw;bottom:calc(max(10px,env(safe-area-inset-bottom)) + 81px)}
 body.hub-game-page.rsm-game-immersive .sprint-overlay{padding-top:58px;padding-bottom:78px;justify-content:flex-start}
 body.hub-game-page.rsm-game-immersive .sprint-overlay h4{font-size:21px;margin-bottom:5px}
 body.hub-game-page.rsm-game-immersive .sprint-overlay p{font-size:12px;max-width:500px;margin:4px auto}
 body.hub-game-page.rsm-game-immersive .sprint-upgrade-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(660px,100%);gap:7px;margin-top:10px}
 body.hub-game-page.rsm-game-immersive .sprint-upgrade{min-height:60px;padding:9px 11px;font-size:13px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.game-city-intro { padding: clamp(18px,4vw,30px); margin: 0 0 20px; border: 1px solid var(--ds-line,#dfd3bd); border-radius: 24px; background: var(--ds-soft,#f7eddb); color: var(--ds-ink,#243c35); }
.game-city-intro > p:first-child { margin-top: 0; color: var(--ds-muted,#69665a); font-size: 12px; letter-spacing: .04em; }
.game-city-intro h2 { margin: 10px 0; font-size: clamp(22px,5vw,34px); line-height: 1.25; }
.game-city-intro p { line-height: 1.65; }
.game-city-intro ol { display: grid; gap: 12px; padding-left: 24px; }
.game-city-intro .game-city-disclosure { border-top: 1px solid var(--ds-line,#dfd3bd); padding-top: 14px; font-size: 13px; }
.rsm-game-immersive .game-city-intro { display: none; }
.city-puzzle-registration{display:grid;gap:16px;padding:24px;background:#f6f1e6;border:1px solid #d9c8ab;border-radius:20px;max-width:720px;margin:20px auto;color:#253d3d}
.city-puzzle-registration h2{margin:0;font-size:clamp(28px,6vw,44px)}
.city-puzzle-registration p{margin:0;line-height:1.75}
.city-puzzle-registration form{display:grid;gap:12px}
.city-puzzle-registration input{box-sizing:border-box;width:100%;min-height:48px;padding:12px;border:1px solid #a7b6ab;border-radius:8px;font:inherit;background:#fff;color:inherit}
.city-puzzle-registration button{min-height:48px;padding:12px 18px;border:1px solid #2d5e54;border-radius:10px;background:#24594f;color:#fff;font:inherit;cursor:pointer}
.city-puzzle-registration button:disabled{opacity:.5;cursor:wait}
.city-puzzle-registration [hidden]{display:none!important}

/* Keep the independent city game's warm paper surfaces and readable long labels. */
.hub-game-page{background:#f2eee3;color:#3e463e}
.game-page-header{border-color:#d8d1c1;flex-wrap:wrap}
.game-page-header a,.game-page-header button{overflow-wrap:break-word}
.game-page-title h1{font-size:clamp(32px,7vw,48px);line-height:1.15;color:#365e4f;overflow-wrap:break-word}
.game-page-title p{color:#696d61}
.game-city-intro{border-color:#dfd3bd;background:#f7eddb;color:#3e463e}
.game-city-intro>p:first-child{color:#69665a}
.city-puzzle-registration{min-width:0;overflow-wrap:break-word}
#gameShareDialog{color:#3e463e;background:#fbf8f0;border-color:#d8cdb7}
#gameShareDialog h2,#gameShareDialog p,#gameShareDialog button{overflow-wrap:break-word}
html[data-theme="dark"] .hub-game-page{background:#252722;color:#eee7d8}
html[data-theme="dark"] .game-page-title h1{color:#eee7d8}
html[data-theme="dark"] .game-page-title p{color:#c2bdaf}
html[data-theme="dark"] .game-city-intro,html[data-theme="dark"] .city-puzzle-registration,html[data-theme="dark"] #gameShareDialog{color:#eee7d8;background:#30342e;border-color:#585b4f}
html[data-theme="dark"] .game-city-intro>p:first-child{color:#c2bdaf}
