*{box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}body{margin:0;background:#090c15;color:#f6f4e7;font-family:DM,'Arial',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #ffe430;outline-offset:4px}button:disabled{cursor:wait;opacity:.55}.play-header{max-width:1240px;margin:auto;padding:24px 28px;display:flex;align-items:center;justify-content:space-between}.wordmark img{width:100px;height:auto}.play-header>a:last-child{font-size:14px;color:#c2c8d6;min-height:44px;display:flex;align-items:center;gap:12px}main{max-width:1184px;margin:auto;padding:8px 28px 40px}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:24px 0}.kicker{color:#ffe430;font-size:12px;letter-spacing:2px;font-weight:700;margin:0 0 10px}h1,h2,p{margin-top:0}h1{font-size:clamp(32px,5vw,64px);font-weight:900;line-height:1;letter-spacing:-2px;margin:0}h1 em{font-style:normal;color:#ffe430}.page-heading>p{color:#aab3c8;font-size:14px;margin:0 0 4px}.arcade{border:1px solid #353a47;border-radius:20px;overflow:hidden;background:#101722;box-shadow:0 22px 90px #0006}.game-hud{display:flex;align-items:center;gap:36px;padding:16px 24px;background:#111824}.game-hud>div>span{display:block;font-size:10px;letter-spacing:1.4px;color:#aab3c8;margin-bottom:4px}.game-hud strong{font-size:22px;font-variant-numeric:tabular-nums}.game-hud small{font-size:13px;font-weight:400}.hud-controls{display:flex;gap:10px;margin-left:auto}.hud-controls button{border:1px solid #465061;color:#e4e9f3;background:#1b2432;border-radius:9px;min-height:44px;padding:8px 12px;font-size:12px}.hud-controls svg{width:20px;height:20px;stroke:currentColor;stroke-width:3;fill:none;display:block}.stage{position:relative;aspect-ratio:16/10;max-height:640px;overflow:hidden;background:#0c1020}canvas{display:block;width:100%;height:100%;touch-action:none;image-rendering:pixelated}.game-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:22px;background:linear-gradient(90deg,#090c15db,#090c1550)}.game-overlay[hidden]{display:none}.overlay-panel{text-align:center;max-width:430px;padding:28px;background:#0a101ee8;border:1px solid #ffe43045;border-radius:16px;box-shadow:0 12px 60px #0007}.overlay-panel h2{font-size:clamp(28px,4vw,42px);letter-spacing:-1px;margin:12px 0}.overlay-panel>p:not(.kicker){font-size:16px;line-height:1.6;color:#c7cfdd}.gold-button{width:100%;background:#ffe430;color:#0b1019;font-weight:800;font-size:17px;border:0;border-radius:10px;padding:16px 24px;min-height:52px}.gold-button:hover{background:#fff27e}.quiet-button{display:block;background:none;border:0;color:#e1e6f0;font-size:14px;min-height:44px;margin:8px auto 0}.overlay-panel #load-note{font-size:12px;margin:10px 0 0;color:#aab3c8}.result-line{color:#ffe430!important}.game-controls{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;gap:20px}.game-controls p{font-size:14px;line-height:1.5;margin:0;color:#e1e6f0}.game-controls span{color:#aab3c8;font-size:12px}#jump{background:#ffe430;color:#0b1019;border:0;min-height:52px;border-radius:9px;padding:12px 34px;display:flex;align-items:center;gap:20px;font-weight:800;touch-action:none;user-select:none}#jump svg{width:20px;height:20px;stroke:currentColor;stroke-width:2;fill:none}.route-progress{height:4px;background:#283243}.route-progress>div{height:100%;width:0;background:#ffe430;transition:width .15s linear}.game-toast{position:absolute;left:50%;top:18px;transform:translateX(-50%);background:#ffe430;color:#121620;border-radius:30px;font-size:14px;padding:10px 18px;opacity:0;pointer-events:none;white-space:nowrap}.game-toast.show{opacity:1}.locker{margin-top:44px;scroll-margin-top:20px}.locker-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.locker h2{font-size:30px;letter-spacing:-1px;margin:0}.locker-heading>span{font-size:14px;color:#aab3c8}.hat-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.hat-card{background:#121a27;border:1px solid #303b4d;border-radius:12px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}.hat-card.equipped{border-color:#ffe430;background:#242617}.hat-card canvas{width:100%;max-width:128px;height:auto;aspect-ratio:1;image-rendering:pixelated}.hat-card h3{font-size:14px;margin:8px 0}.hat-card p{font-size:12px;color:#aab3c8;line-height:1.5;margin:0 0 10px;min-height:36px}.hat-card button{width:100%;font-size:13px;min-height:40px;margin-top:auto;padding:8px;background:#202d40;border:1px solid #455167;border-radius:7px;color:#fff}.hat-card.equipped button{color:#ffe430;border-color:#ffe430}.hat-card button:disabled{cursor:default}.hat-progress{width:100%;height:3px;background:#303b4d;margin:2px 0 12px}.hat-progress span{display:block;height:100%;background:#ffe430}.save-note{font-size:12px;color:#8e9ab0;margin-top:16px}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #263143;margin-top:30px;padding-top:24px;font-size:12px;color:#8e9ab0}footer a{color:#ffe430;min-height:44px}
@media(max-width:700px){.play-header{padding:14px 18px}.wordmark img{width:80px}main{padding:0 12px 24px}.page-heading{margin:12px 6px 20px;display:block}.page-heading>p{margin-top:12px;font-size:13px}.page-heading h1{font-size:38px}.game-hud{padding:12px;gap:16px}.game-hud strong{font-size:18px}.game-hud>div>span{font-size:9px;letter-spacing:.5px}.hud-controls{gap:6px}.hud-controls button{padding:6px 8px;font-size:11px}.stage{aspect-ratio:4/5;max-height:none}.arcade{border-radius:14px}.overlay-panel{padding:22px 18px;width:100%}.game-overlay{padding:18px}.overlay-panel .kicker{font-size:10px}.overlay-panel h2{font-size:30px}.game-controls{padding:12px}.game-controls p{font-size:12px}#jump{padding:12px 22px;gap:12px}.hat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hat-card{padding:10px 8px}.hat-card h3{font-size:12px}.hat-card p{font-size:11px}.locker{margin-top:30px}.locker h2{font-size:26px}.locker-heading>span{font-size:12px}footer{flex-direction:column;gap:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.route-progress>div{transition:none}}

/* Arcade upgrade: readable instructions, illustrated panels and reward progress. */
.start-character{display:block;width:82px;height:88px;object-fit:contain;margin:0 auto 8px;filter:drop-shadow(0 4px 12px #ffe43030)}
.tutorial{text-align:left;font-size:14px;line-height:1.5;padding:12px 12px 12px 30px;margin:12px 0;background:#172237;border-radius:8px;color:#d8e3f3}.tutorial li+li{margin-top:5px}.tutorial[hidden]{display:none}
.next-unlock{border-top:1px solid #ffffff22;padding-top:10px;font-size:14px!important;color:#ffe430!important;line-height:1.4!important;margin:12px 0 0}
#help{min-width:36px;min-height:44px}.game-overlay,.overlay{overflow:auto;align-items:safe center}.overlay-panel,.panel{max-height:100%;overflow:auto}
.hat-card p,.hat-card h3,.hat-card button,.accent span,.accent small{font-size:14px}.hat-card p{min-height:42px}.hat-card button{min-height:44px}.hat-card.equipped{box-shadow:inset 0 3px #ffe430}
.accent canvas{display:block;width:90px;height:90px;margin:auto}.accent progress{width:100%;height:5px;accent-color:var(--accent);margin-top:9px}.accent.active:disabled{opacity:1}.accent:disabled{cursor:default}
.district-strip{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 24px;background:#182237;font-size:14px}.district-strip strong{color:#ffe430}.district-strip span{color:#bcc9dd}.boss-meter.enraged span{color:#ffc173}.boss-meter.enraged i{background:#ffab52}
@media(max-width:600px){.start-character{width:60px;height:62px}.panel,.overlay-panel{padding:16px}.panel h2,.overlay-panel h2{font-size:25px;margin:8px 0}.tutorial{font-size:14px;padding-top:8px;padding-bottom:8px}.next-unlock{font-size:13px!important}.district-strip{padding:10px 12px;flex-wrap:wrap;font-size:13px}.game-hud{gap:10px;flex-wrap:wrap}.hud{gap:8px;flex-wrap:wrap}.hud-controls{gap:5px}.hat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-toast{white-space:normal;width:max-content;max-width:90%;text-align:center}}

/* Keep a sustained game touch from opening selection or image callouts. */
.arcade,.arcade *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.arcade img{-webkit-user-drag:none}
#route-level{display:block;width:100%;margin:14px 0;padding:12px;background:#102238;color:#ffe430;border:1px solid #ffe430;border-radius:8px;font-size:16px}

/* Rooftop Run V1: quick retry, per-level records and a fair phone camera. */
.shield-status{margin-left:auto;font-size:12px;color:#91eff3;white-space:nowrap;border:1px solid #67b8c366;border-radius:99px;padding:7px 10px}.shield-status[data-active="false"]{color:#c4cad5;border-color:#555d6b}.hud-controls{margin-left:0}.result-card{border:1px solid #ffe43050;border-radius:12px;background:#182339;padding:13px 16px;margin:14px 0}.result-card[hidden]{display:none}.result-total{display:flex;align-items:baseline;justify-content:center;gap:9px;color:#ffe430}.result-total strong{font-size:40px;font-variant-numeric:tabular-nums;line-height:1.1}.result-total span{font-size:11px;letter-spacing:1px}.result-card dl{margin:12px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.result-card dl>div+div{border-left:1px solid #ffffff20}.result-card dt{font-size:11px;color:#b9c5d8}.result-card dd{margin:5px 0 0;font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}.result-card p{color:#e9de9b;font-size:12px;line-height:1.4;margin:0}#scores{color:#ffe430;text-decoration:underline;text-underline-offset:4px}#overlay[data-screen="result"] .start-character,#overlay[data-screen="pause"] .start-character,#overlay[data-screen="pause"] #scores,#overlay[data-screen="pause"] #open-locker,#overlay[data-screen="pause"] #next-unlock{display:none}#overlay[data-screen="result"] .overlay-panel{max-width:480px}#overlay[data-screen="result"] #overlay-copy{font-size:14px;line-height:1.4;margin-bottom:10px}#overlay[data-screen="result"] #route-level{margin:10px 0}.game-overlay .overlay-panel{scrollbar-width:thin}.game-toast{font-size:13px;max-width:calc(100% - 24px)}
@media(max-width:700px){.page-heading{margin:6px 4px 12px}.page-heading h1{font-size:30px}.page-heading>p{display:none}.play-header{padding:10px 18px}.wordmark img{width:66px}.stage{aspect-ratio:4/5}.game-hud{padding:10px 12px;column-gap:16px;row-gap:9px}.game-hud>div>span{font-size:9px}.game-hud strong{font-size:18px}.shield-status{order:3;font-size:11px;padding:5px 8px;margin:0}.hud-controls{margin-left:auto;order:4}.game-hud .hud-controls button{min-height:36px}.game-overlay{padding:12px}.overlay-panel{padding:16px;max-width:400px}.overlay-panel>p:not(.kicker){font-size:14px;line-height:1.4}.result-card{padding:11px;margin:10px 0}.result-total strong{font-size:33px}.result-card dl{margin:9px 0;gap:5px}.result-card dd{font-size:17px}.result-card dt{font-size:10px}#overlay[data-screen="result"] #open-locker,#overlay[data-screen="result"] #next-unlock{display:none}#overlay[data-screen="result"] #load-note{font-size:11px}.game-controls{min-height:75px}.district-strip{font-size:12px;gap:5px}.district-strip span{font-size:11px}#jump{min-width:112px;min-height:52px}}
@media(max-height:600px) and (orientation:landscape){.play-header,.page-heading{display:none}main{padding-top:8px}.stage{aspect-ratio:2.7;max-height:calc(100svh - 160px);min-height:240px}.game-hud{padding:7px 12px}.game-controls{padding:7px 12px}.district-strip{padding:6px 12px}.game-overlay .overlay-panel{padding:12px;max-width:650px}.start-character,.next-unlock{display:none}.tutorial{font-size:12px;margin:7px 0}.overlay-panel h2{font-size:25px}.overlay-panel .kicker{margin-bottom:4px}.result-card{display:flex;gap:16px;align-items:center;margin:8px 0}.result-card[hidden]{display:none}.result-card dl{flex:1;margin:0}.result-card p{display:none}#overlay-copy{margin-bottom:7px}#route-level{padding:8px;margin:8px 0}.gold-button{min-height:42px;padding:11px}#scores{min-height:32px;margin-top:4px}#open-locker{display:none}}
#overlay[data-best="true"][data-screen="result"] .result-card{border-color:#ffe430;box-shadow:0 0 25px #ffe4301f}#overlay[data-best="true"][data-screen="result"] .result-total:before,#overlay[data-best="true"][data-screen="result"] .result-total:after{content:'✦';font-size:19px;color:#ffe430}
/* Keep the primary action visible even on a short portrait stage. */
#overlay[data-screen="pause"] #route-level{display:none}
@media(max-width:700px){
 .overlay-panel{display:flex;flex-direction:column}.overlay-panel .start-character{display:none}
 #overlay-kicker{order:1}#overlay-title{order:2}#overlay-copy{order:3}#result{order:3}#route-level{order:4}#start{order:5}#tutorial{order:6}#scores{order:7}#retry-assets{order:8}#load-note{order:9}#open-locker{order:10}#next-unlock{order:11}
 #overlay[data-screen="result"] #overlay-copy{display:none}#overlay[data-screen="result"] #start{order:4}#overlay[data-screen="result"] #scores{order:5}#overlay[data-screen="result"] #route-level{order:6}
}
.game-toast{top:86px}

/* V1 title screen: one clear way into the nighttime city. */
.title-best{font-size:11px!important;letter-spacing:1.1px;color:#aab8ca!important;margin:2px 0}.title-best strong{font-size:20px;letter-spacing:0;color:#ffe430;margin-left:10px}.title-secondary{display:flex;justify-content:center;gap:22px}.title-secondary .quiet-button{font-size:13px;margin:0;min-height:36px}#title-sound{color:#c7d5e7}
#overlay[data-screen="title"]{background:linear-gradient(100deg,#050b17c4,#08132074)}
#overlay[data-screen="title"] .overlay-panel{display:grid;grid-template-columns:112px minmax(0,1fr);column-gap:18px;row-gap:10px;max-width:510px;width:100%;background:#07101ddd;border-color:#84a3c645;padding:28px;overflow:auto}
#overlay[data-screen="title"] .start-character{display:block;grid-column:1;grid-row:1/4;align-self:center;width:112px;height:150px;margin:0;filter:drop-shadow(0 0 20px #80dcff33)}
#overlay[data-screen="title"] #overlay-kicker{grid-column:2;grid-row:1;text-align:left;font-size:9px;letter-spacing:1.4px;margin:0;align-self:end}
#overlay[data-screen="title"] #overlay-title{grid-column:2;grid-row:2;text-align:left;margin:0;font-size:52px;line-height:.88;letter-spacing:-2px;font-weight:900;transform:none}
#overlay[data-screen="title"] #overlay-title span{display:block;font-size:.59em;letter-spacing:-.7px;margin-bottom:7px}
#overlay[data-screen="title"] #overlay-title em{font-style:normal;font-size:1.32em;letter-spacing:-3px;color:#ffe430;text-shadow:0 5px #735c172e}
#overlay[data-screen="title"] #overlay-copy{grid-column:2;grid-row:3;text-align:left;font-size:14px;line-height:1.4;color:#d7e2ef;margin:0;align-self:start}
#overlay[data-screen="title"] #start{grid-column:1/-1;grid-row:4;font-size:19px;margin-top:8px;min-height:54px}
#overlay[data-screen="title"] #route-level{grid-column:1/-1;grid-row:5;margin:0;background:#15283b;border-color:#557181;color:#e7edf6;font-size:14px;padding:10px}
#overlay[data-screen="title"] #title-best{grid-column:1/-1;grid-row:6;margin:0}
#overlay[data-screen="title"] .title-secondary{grid-column:1/-1;grid-row:7}
#overlay[data-screen="title"] #tutorial{grid-column:1/-1;grid-row:8;margin:0}
#overlay[data-screen="title"] #load-note,#overlay[data-screen="title"] #retry-assets{grid-column:1/-1}
#overlay[data-screen="title"][data-loaded="true"] #load-note,#overlay[data-screen="title"] #open-locker,#overlay[data-screen="title"] #next-unlock{display:none}
#overlay:not([data-screen="title"]) #title-best,#overlay:not([data-screen="title"]) #title-sound{display:none}
#overlay[data-screen="pause"] .title-secondary{display:none}
@media(max-width:700px){
 #overlay[data-screen="title"] .overlay-panel{padding:20px 18px;grid-template-columns:87px minmax(0,1fr);column-gap:13px;row-gap:9px}
 #overlay[data-screen="title"] .start-character{width:87px;height:133px}
 #overlay[data-screen="title"] #overlay-title{font-size:45px}#overlay[data-screen="title"] #overlay-title span{font-size:.57em}#overlay[data-screen="title"] #overlay-kicker{font-size:8px;letter-spacing:.8px}#overlay[data-screen="title"] #overlay-copy{font-size:12px}
 #overlay[data-screen="title"] #start{margin-top:3px;min-height:52px}#overlay[data-screen="title"] #route-level{padding:10px}
 #overlay[data-screen="result"] .title-secondary{order:5}
}
@media(max-height:600px) and (orientation:landscape){
 #overlay[data-screen="title"] .overlay-panel{grid-template-columns:90px 1fr 220px;grid-template-rows:auto auto auto;max-width:720px;padding:14px;gap:10px 18px}
 #overlay[data-screen="title"] .start-character{width:90px;height:125px}#overlay[data-screen="title"] #overlay-title{font-size:42px}
 #overlay[data-screen="title"] #start{grid-column:3;grid-row:1;margin:0}#overlay[data-screen="title"] #route-level{grid-column:3;grid-row:2}#overlay[data-screen="title"] #title-best{grid-column:3;grid-row:3}#overlay[data-screen="title"] .title-secondary{grid-column:1/-1;grid-row:4}#overlay[data-screen="title"] #tutorial{grid-row:5}
}
