:root{color-scheme:dark;--bg:#101019;--panel:#181822;--line:#2a2a37;--muted:#858594;--text:#f6f6f9;--mint:#a7f7cf;--runner:#72f3cb;font-family:Inter,"Segoe UI",Arial,sans-serif;font-synthesis:none}
.install-note{display:flex;align-items:center;justify-content:center;gap:12px;margin:18px 0;color:var(--muted);font-size:11px}.install-note .text-button{color:var(--mint);font-weight:600}.home-screen-app .install-note{display:none}#home-screen-dialog h3{font-size:15px;margin:20px 0 8px}#home-screen-dialog ol{padding-left:22px;color:#b2b2bf;font-size:13px;line-height:1.7}#home-screen-dialog li{padding-left:3px;margin:6px 0}#home-screen-dialog strong{color:var(--text)}@media(max-width:660px){.install-note{flex-direction:column;gap:0;text-align:center}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--mint);outline-offset:5px}button{color:inherit}button:disabled{cursor:default;opacity:.35}a{color:inherit;text-decoration:none}.app{max-width:1440px;padding:0 64px;margin:auto}.topbar{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;font-size:21px;font-weight:900;letter-spacing:-.8px}.brand>span:not(.brand-icon):not(.beta){color:var(--mint)}.brand-icon{font-size:35px;background:var(--mint);color:#14291f;width:34px;height:37px;display:grid;place-items:center;transform:skew(-8deg);border-radius:5px;margin-right:12px;line-height:1}.brand .beta{font-size:8px;letter-spacing:1.7px;margin-left:15px;border:1px solid #3a3a48;border-radius:4px;padding:6px;color:#aaaaba}nav{display:flex;gap:23px;align-items:center}.text-button{background:none;border:0;font-size:12px;color:#b2b2bf;padding:8px}.text-button span{padding-right:6px;font-size:16px}.text-button:hover{color:var(--mint)}.nav-divider{height:22px;width:1px;background:var(--line)}.icon-button{position:relative;background:#20202b;border:1px solid #343443;border-radius:8px;width:36px;height:36px;display:grid;place-items:center;font-size:21px}.sound-off{position:absolute;color:#aaaaba;font-size:24px;transform:rotate(20deg)}.intro{display:flex;justify-content:space-between;align-items:center;padding:35px 0 30px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.7px;color:#9999aa;display:flex;align-items:center;gap:8px;margin:0 0 12px}.eyebrow>span{width:6px;height:6px;border-radius:100%;background:var(--mint);box-shadow:0 0 10px #a7f7cf60}h1{font-size:48px;letter-spacing:-2px;line-height:1.15;margin:0;font-weight:780}h1 em{font-style:normal;color:var(--mint)}.intro-copy{font-size:12px;color:var(--muted);margin:12px 0 0}.personal-best{display:flex;align-items:center;gap:17px;border-left:1px solid var(--line);padding-left:28px;margin-top:10px}.trophy{font-size:29px;color:#e5bf75;background:#e5bf750d;width:55px;height:55px;border:1px solid #e5bf7520;border-radius:12px;display:grid;place-items:center}.label{font-size:8px;letter-spacing:1.5px;color:#9999aa;display:block;font-weight:700}.personal-best strong{font-size:27px;display:block;margin:5px 0;font-variant-numeric:tabular-nums}.best-sub{font-size:10px;color:var(--muted)}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:22px}.game-frame{height:528px;position:relative;isolation:isolate;border:1px solid #393248;border-radius:14px;overflow:hidden;background:#14182a}canvas{display:block;width:100%;height:100%;touch-action:none}.game-top{position:absolute;inset:18px 20px auto;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.district{font-size:9px;letter-spacing:1.4px;color:#c0bed2;display:flex;align-items:center;gap:8px;text-shadow:0 1px 5px #000}.district>span{background:#a7f7cf;width:5px;height:5px;border-radius:50%}.district small{color:#82788f;border-left:1px solid #63506c;padding-left:9px;font-size:9px}.pause-button{pointer-events:auto;background:#111323a8;border-color:#ffffff20;font-size:15px}.game-bottom{position:absolute;inset:auto 20px 18px;display:flex;align-items:center;justify-content:space-between;color:#b2aec1;font-size:8px;letter-spacing:1.4px;pointer-events:none}.game-bottom>span:first-child{display:flex;align-items:center;gap:7px}.game-bottom i{width:5px;height:5px;background:var(--mint);border-radius:50%}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:62px 20px 74px;background:linear-gradient(180deg,#14142720,#12132218 70%,#11132360)}.overlay.hidden{display:none}.title-badge{font-size:8px;letter-spacing:2px;font-weight:600;border:1px solid #d0b8dc45;background:#34273d70;color:#d8c6e5;padding:7px 12px;border-radius:20px;margin-bottom:16px}.overlay h2{font-size:74px;line-height:.91;letter-spacing:-3px;font-weight:950;text-align:center;margin:0;transform:skew(-5deg);text-shadow:0 5px 35px #1d102b}.overlay h2 span{color:var(--mint)}.overlay p{font-size:11px;color:#e1d8e8;margin:18px 0 22px;text-align:center}.play-button{background:var(--mint);border:0;color:#143629;border-radius:7px;display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 22px;font-size:11px;font-weight:850;letter-spacing:1.2px;min-width:212px;box-shadow:0 4px 30px #a7f7cf15;transition:background .2s,transform .2s}.play-button:hover{background:#c7ffdf;transform:translateY(-2px)}.play-triangle{font-size:11px}.button-arrow{font-size:18px;margin-left:10px}.start-hint{font-size:9px;color:#b3a7be;margin-top:13px}.start-hint kbd{background:none;border:none;font-size:8px;margin-left:3px;color:#ddd6e4}.sidebar{display:flex;flex-direction:column;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-heading h2{font-size:13px;letter-spacing:-.2px;margin:0}.panel-heading>span{font-size:8px;letter-spacing:1px;color:#777788}.panel-copy{font-size:10px;color:var(--muted);margin:8px 0 16px}.mode-options{display:flex;flex-direction:column;gap:7px}.mode{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #30303e;background:#1e1e29;border-radius:7px;padding:11px 13px}.mode-symbol{font-size:24px;color:#9b99ad;width:24px;text-align:center}.mode>span:nth-child(2){flex:1}.mode strong{font-size:11px;display:block;margin-bottom:4px}.mode small{font-size:9px;color:var(--muted);display:block}.mode-dot{width:12px;height:12px;border:1px solid #535363;border-radius:50%}.mode.selected{border-color:#a7f7cf70;background:#a7f7cf09}.mode.selected .mode-symbol{color:var(--mint)}.mode.selected .mode-dot{border-color:var(--mint);background:var(--mint);box-shadow:inset 0 0 0 3px #263c33}.mode:hover:not(:disabled){border-color:#a7f7cf70}.mission-panel{padding-bottom:18px}.tiny-tag{background:#262632;padding:4px 5px;border-radius:3px;font-size:7px!important}.mission{display:flex;align-items:center;gap:11px;margin-top:18px}.mission-icon{width:32px;height:34px;border-radius:6px;background:#cdb8850b;border:1px solid #cdb88520;display:grid;place-items:center;color:#d5b67a;font-size:14px;flex-shrink:0}.mission:last-child .mission-icon{color:#b5a4ed;background:#b5a4ed09;border-color:#b5a4ed22}.mission>div:last-child{flex:1;min-width:0}.mission strong{font-size:10px;display:block}.mission span{display:flex;justify-content:space-between;gap:5px;font-size:8px;color:var(--muted);margin:5px 0 7px}.mission b{font-size:8px;font-weight:400;color:#b6b3c2;font-variant-numeric:tabular-nums}.progress-track{background:#30303c;height:3px;border-radius:4px;overflow:hidden}.progress-track i{background:#d5b67a;width:0;height:100%;display:block;transition:width .15s}.mission:last-child .progress-track i{background:#b5a4ed}.runner-card{position:relative;background:linear-gradient(110deg,#242032,#1c1c28);border:1px solid #393246;border-radius:11px;display:flex;align-items:center;gap:17px;padding:17px 20px;overflow:hidden;min-height:92px}.runner-avatar{position:relative;flex-shrink:0;width:43px;height:59px;filter:drop-shadow(0 0 10px #72f3cb20)}.avatar-head{position:absolute;width:19px;height:18px;background:#b58679;left:12px;top:0;border-radius:7px 7px 4px 4px;border-top:7px solid #282232}.avatar-body{position:absolute;width:29px;height:26px;background:var(--runner);left:7px;top:16px;border-radius:8px 8px 3px 3px;box-shadow:inset -9px 0 #0002}.avatar-leg{position:absolute;top:40px;width:10px;height:18px;background:#373647;border-bottom:5px solid #cdd6e9;border-radius:2px}.avatar-leg.left{left:8px;transform:rotate(9deg)}.avatar-leg.right{right:8px;transform:rotate(-9deg)}.runner-info{position:relative;z-index:1}.runner-info strong{font-size:12px;display:block;margin:6px 0}.runner-info button{border:none;background:none;color:var(--mint);font-size:9px;padding:0}.runner-info button span{padding-left:5px}.runner-number{position:absolute;right:11px;bottom:-8px;font-size:70px;font-weight:900;letter-spacing:-5px;color:#ffffff04}.side-note{display:flex;align-items:center;gap:12px;justify-content:center;padding-top:1px}.side-note>span{color:#777184;font-size:20px}.side-note p{font-size:9px;line-height:1.8;color:#777788;margin:0}.side-note strong{color:#aaa7b7;font-weight:400}.control-strip{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:9px;padding:17px 20px;margin-top:17px;color:#8d8d9d;font-size:9px}.control-strip>div{display:flex;align-items:center;gap:22px}.control-label{font-size:8px;letter-spacing:1.2px;color:#bab9c6;font-weight:600}.control-group{display:flex;align-items:center;gap:5px}kbd{display:inline-grid;place-items:center;min-width:21px;height:21px;font-size:9px;font-family:inherit;border:1px solid #383845;border-bottom-width:2px;border-radius:4px;padding:0 5px;color:#bdbdca;background:#22222d}.swipe-hint{font-size:8px;color:#737382}footer{display:flex;justify-content:space-between;color:#666675;font-size:8px;letter-spacing:1.2px;padding:27px 0 30px}footer b{color:#9b98aa;font-weight:500}footer i{font-size:16px;color:var(--mint);font-style:normal;margin-left:10px}.hud{position:absolute;top:74px;left:24px;right:24px;display:flex;justify-content:space-between;pointer-events:none}.hud[hidden]{display:none}.hud>div>span{display:block;font-size:8px;letter-spacing:2px;color:#bcb4ce}.hud strong{display:block;font-size:28px;font-variant-numeric:tabular-nums;margin-top:4px;text-shadow:0 2px 8px #000}.hud strong span{font-size:11px;color:#bcb4ce}.coin-stat{text-align:right}.coin-stat i{font-size:22px;font-style:normal;color:#ffd582}.coin-stat b{font-weight:750}.run-results{display:flex;gap:26px;text-align:center;margin:0 0 20px}.run-results[hidden]{display:none}.run-results span{font-size:8px;display:block;color:#aaa3bb;letter-spacing:1px;margin-bottom:5px}.run-results strong{font-size:22px}.overlay.finished h2,.overlay.paused h2{font-size:54px}.overlay.finished,.overlay.paused{background:#11111dd9;backdrop-filter:blur(5px)}.live-toast{position:absolute;top:132px;left:50%;transform:translate(-50%,-10px);background:#111825e8;border:1px solid #a7f7cf80;border-radius:7px;padding:10px 18px;font-size:10px;color:var(--mint);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;text-align:center;white-space:nowrap}.live-toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#1b1b29;border:1px solid #454054;color:var(--text);border-radius:16px;padding:36px;max-width:460px;width:calc(100% - 32px);box-shadow:0 30px 100px #0008}dialog::backdrop{background:#090914c9;backdrop-filter:blur(6px)}dialog h2{font-size:29px;letter-spacing:-1px;margin:14px 0}dialog p:not(.eyebrow){color:#aaa7ba;font-size:12px;line-height:1.7}.dialog-close{position:absolute;right:12px;top:10px;font-size:26px;color:#aaa7ba;background:none;border:none;padding:5px}.help-row{display:flex;gap:16px;align-items:center;margin:19px 0}.help-row kbd{min-width:85px;height:31px;font-size:10px}.help-row span{color:#9693a7;font-size:10px;line-height:1.6}.help-row strong{display:block;font-size:12px;color:#f4f2ff}.dialog-note{font-size:10px!important;padding-top:10px;border-top:1px solid var(--line)}.dialog-done{width:100%;margin-top:22px;justify-content:space-between}.color-options{display:flex;gap:10px;margin-top:24px}.color-option{border:1px solid #464054;background:#242231;flex:1;border-radius:10px;padding:14px 4px;font-size:10px}.color-option span{display:block;width:35px;height:35px;background:var(--swatch);border-radius:50%;margin:0 auto 12px;box-shadow:0 0 20px color-mix(in srgb,var(--swatch) 20%,transparent)}.color-option.selected{border-color:var(--mint)}
@media(min-width:1450px){.app{max-width:1500px}.game-frame{height:590px}.sidebar{gap:21px}.panel{padding:24px}.mode{padding:14px}.mission{margin-top:24px}.runner-card{min-height:105px}}
@media(max-width:1150px){.app{padding:0 32px}.game-layout{grid-template-columns:minmax(0,1fr) 260px;gap:16px}.panel{padding:17px}.control-strip>div{gap:14px}.swipe-hint{display:none}.game-frame{height:515px}.overlay h2{font-size:67px}}
@media(max-width:850px){.app{padding:0 24px}.topbar{height:78px}.intro{padding:28px 0}.game-layout{grid-template-columns:minmax(0,1fr) 230px;gap:14px}.panel{padding:14px}.mode{padding:10px;gap:8px}.game-frame{height:505px}.overlay h2{font-size:56px}.overlay p{font-size:10px}.personal-best{padding-left:18px}.best-sub{display:none}.control-label{display:none}.control-strip>div{width:100%;justify-content:space-between}.runner-card{padding:14px;gap:10px}.runner-info strong{font-size:10px}.mission span{font-size:7px}.mission b{font-size:7px}.side-note p{font-size:8px}}
@media(max-width:660px){.app{padding:0 16px}.topbar{height:70px}.brand{font-size:17px}.brand-icon{width:28px;height:31px;font-size:29px;margin-right:9px}.brand .beta{display:none}nav{gap:12px}.text-button{font-size:10px}.intro{padding:26px 0 22px}.eyebrow{font-size:7px;letter-spacing:1.3px}h1{font-size:36px;letter-spacing:-1.6px}.intro-copy{font-size:10px;margin-top:8px}.personal-best{padding-left:13px;gap:0;border:0;margin-top:8px}.personal-best .trophy{display:none}.personal-best .label{font-size:7px;letter-spacing:.7px}.personal-best strong{font-size:24px;text-align:right}.game-layout{display:flex;flex-direction:column;gap:18px}.game-frame{height:min(580px,70svh);min-height:420px;border-radius:12px}.overlay h2{font-size:72px}.overlay p{font-size:11px}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mode-panel{grid-column:1/-1}.mode-options{flex-direction:row;gap:8px}.mode{padding:10px 8px;gap:6px}.mode-dot{display:none}.mode-symbol{font-size:22px;width:18px}.mode strong{font-size:10px}.mode small{font-size:7px}.panel-copy{margin-bottom:12px}.mission-panel{grid-row:span 2}.runner-card{min-height:90px;padding:12px;gap:8px}.runner-info .label{font-size:7px}.runner-avatar{transform:scale(.8);margin:-4px}.side-note{padding:0 8px;gap:7px;align-self:start}.side-note>span{font-size:15px}.control-strip{padding:12px 10px;order:1}.control-strip>div{gap:8px}.control-group{font-size:8px;gap:3px}.control-group kbd{min-width:18px;padding:0 3px;font-size:8px}.control-group:nth-last-child(1){display:none}footer{font-size:6px;letter-spacing:.6px;padding:21px 0}.game-top{inset:15px 15px auto}.game-bottom{inset:auto 15px 15px;font-size:6px;letter-spacing:1px}.hud{left:18px;right:18px}.overlay.finished h2,.overlay.paused h2{font-size:48px}}
.button-arrow,.mission-icon,.runner-info button span,footer i,.pause-button,kbd,.swipe-hint{font-family:"DejaVu Sans","Arial Unicode MS",sans-serif}.play-triangle{font-size:0;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #143629}.button-arrow{font-size:0;position:relative;width:10px;height:10px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;margin-left:12px}.button-arrow::after{content:"";position:absolute;width:13px;height:1.5px;background:currentColor;transform:rotate(-45deg);transform-origin:right center;right:0;top:-1px}.pause-button{font-size:0}.pause-button::after{content:"";width:9px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor}.pause-button[aria-label="Resume game"]::after{width:0;height:0;border:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid currentColor}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
.game-top{z-index:5}.game-tools{display:flex;gap:8px;pointer-events:auto}.fullscreen-button{background:#111323a8;border-color:#ffffff20}.fullscreen-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.collapse-icon{display:none}.fullscreen-button[aria-pressed="true"] .expand-icon{display:none}.fullscreen-button[aria-pressed="true"] .collapse-icon{display:block}.game-view-expanded{overflow:hidden;overscroll-behavior:none}
.game-tools #sound-button{background:#111323a8;border-color:#ffffff20}.sound-off[hidden]{display:none}.progress-track i{width:100%;transform:scaleX(0);transform-origin:left;transition:transform .15s}.hud #distance-value{font-weight:inherit}.game-frame .overlay.paused,.game-frame .overlay.finished{backdrop-filter:none}@media(max-width:380px){.game-frame .district small{display:none}.game-frame .district{font-size:7px;letter-spacing:.8px}.game-tools{gap:6px}}dialog{max-height:calc(100dvh - 32px);overflow:auto}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen){position:fixed;inset:0;z-index:9999;width:100vw;height:100vh;height:100dvh;max-width:none;min-height:0;margin:0;border:0;border-radius:0;overscroll-behavior:contain}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .game-top{inset:calc(16px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) auto calc(20px + env(safe-area-inset-left))}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .game-tools .icon-button{width:44px;height:44px}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .hud{top:calc(78px + env(safe-area-inset-top));left:calc(24px + env(safe-area-inset-left));right:calc(24px + env(safe-area-inset-right))}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .game-bottom{inset:auto calc(20px + env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left))}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay{padding:calc(76px + env(safe-area-inset-top)) 20px calc(76px + env(safe-area-inset-bottom))}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay h2{font-size:clamp(52px,12vmin,110px)}
.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay.finished h2,.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay.paused h2{font-size:clamp(36px,8vmin,72px)}
@media(max-width:660px),(pointer:coarse){.game-tools .icon-button{width:44px;height:44px}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .district{font-size:8px;letter-spacing:1px}}
@media(max-height:480px){.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay{padding:62px 20px 34px}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .title-badge{margin-bottom:10px;font-size:7px}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay h2{font-size:clamp(36px,12vmin,58px)}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .overlay p{margin:10px 0 14px}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .start-hint{margin-top:8px}.game-frame:is(.expanded,.native-fullscreen,:fullscreen,:-webkit-full-screen) .run-results{margin-bottom:12px}}
