.deck select{max-width:235px;min-height:38px;background:#211c35;color:#e7f4ff;border:1px solid #695979;border-radius:4px;padding:5px;font:14px system-ui}
.deck input[type=range]{accent-color:#75e8f0;width:82px}
.difficulty-choice{max-width:440px;margin:12px auto;text-align:center}.difficulty-choice label{font:600 16px system-ui;margin-right:12px}.difficulty-choice select{min-height:44px;background:#101b30;color:#e7f4ff;border:1px solid #408cff;border-radius:4px;padding:6px 12px;font:16px system-ui}.difficulty-choice select:focus-visible{outline:3px solid #ffe000;outline-offset:3px}#difficulty-copy{font:14px/1.4 system-ui;color:#c9daed;margin:8px 0 4px}#difficulty-reset{display:block;font:12px/1.35 system-ui;color:#b2c0d1}
.deck{row-gap:8px}.track{min-height:35px}
/* Controls float above the game; no opaque strip or reserved control height. */
.touch{position:absolute;inset:0;z-index:4;min-height:0;padding:0 max(16px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:transparent;align-items:flex-end;justify-content:space-between;gap:20px;pointer-events:none;touch-action:none}
/* Keep tap/hold/repeat gestures on the game controls, never page zoom. */
#joystick-zone,#touch-fire,#touch-shield,#game{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
#joystick-zone{position:relative;width:180px;height:150px;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;overflow:hidden;border-radius:20px}
#joystick-base{position:absolute;left:50%;top:50%;width:120px;height:120px;margin:-60px 0 0 -60px;border:2px solid #9aece080;border-radius:50%;background:#14333d38;pointer-events:none}
#joystick-knob{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border:2px solid #c1fff0aa;border-radius:50%;background:#5bbcb84d;will-change:transform}
#joystick-zone>span{position:absolute;bottom:0;width:100%;text-align:center;font:10px system-ui;letter-spacing:2px;color:#b5e5e8aa;pointer-events:none}
.touch-actions{display:flex;align-items:flex-end;gap:10px;padding-bottom:20px}
.touch #touch-shield{width:72px;height:64px;min-height:64px;pointer-events:auto;border:2px solid #00cfff99;color:#b8f5ff;background:#08394766;font-size:12px}
.touch #touch-shield[data-state=ACTIVE]{background:#0086af66;border-color:#00cfff;color:white}
.touch #touch-shield[data-state=RECHARGING]{border-color:#ffb00099;color:#ffda80;background:#47330966}
.touch #touch-fire{width:84px;height:84px;min-height:84px;border:2px solid #f594d799;color:#ffe1f6cc;background:#45274055;font-size:17px}
.touch #touch-fire[aria-pressed=true]{background:#c577a280;border-color:#ffd2f3;color:white}
.touch-utility{position:absolute;right:max(16px,env(safe-area-inset-right));top:max(52px,env(safe-area-inset-top));display:flex;gap:8px}
.touch #touch-pause,.touch #touch-view{width:76px;height:44px;min-height:44px;background:#10233566;color:#dffcf5cc;border-color:#8accc880;font-size:12px}
.touch button:hover{background:#36556e80}.touch button:focus-visible{outline:2px solid #fff2ac}
#overlay{overflow:auto;z-index:3}#overlay:not([hidden])~.touch #joystick-zone,#overlay:not([hidden])~.touch #touch-fire,#overlay:not([hidden])~.touch #touch-shield{visibility:hidden}
#stage{--hud-left:env(safe-area-inset-left,0px);--hud-right:env(safe-area-inset-right,0px)}
body.game-focused{overflow:hidden;overscroll-behavior:none}
body.game-focused header,body.game-focused .deck,body.game-focused .track,body.game-focused footer{visibility:hidden}
#stage.play-focus,#stage:fullscreen{position:fixed;inset:0;z-index:50;margin:0;width:100%;height:100vh;height:100dvh;max-height:none!important;aspect-ratio:auto;display:block;border:0;border-radius:0;background:#000}
#stage.play-focus #game,#stage:fullscreen #game{height:100%;width:100%;max-height:none;aspect-ratio:auto;object-fit:contain}
#stage.play-focus .touch{display:flex}
#rotate-hint{display:none;position:absolute;top:18%;left:20px;right:20px;text-align:center;color:#cbeee5;font:14px/1.5 system-ui;pointer-events:none}
@media(any-pointer:coarse){.touch{display:flex}}
@media(any-pointer:coarse) and (orientation:landscape){#joystick-zone{height:136px;width:190px}.touch-actions{padding-bottom:16px}}
@media not all and (any-pointer:coarse){#stage.play-focus #joystick-zone,#stage.play-focus #touch-fire,#stage.play-focus #touch-shield{display:none}}
@media(orientation:portrait){#stage.play-focus #rotate-hint{display:block}}
#city-menu{box-sizing:border-box;width:min(1080px,94vw);max-height:90dvh;overflow:auto;background:#0c1324;color:#e4f5ef;border:2px solid #75cdc4;border-radius:12px;padding:24px;font:16px/1.5 system-ui}
#city-menu::backdrop{background:#02050deb}.city-menu-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.city-menu-heading h2{margin:0;font-size:1.7rem}.city-menu-heading .eyebrow{margin:0 0 4px}#city-menu-copy{margin:16px 0 20px;color:#b8ced2}#city-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.city-choice{display:flex;flex-direction:column;gap:8px;text-align:left;padding:16px;background:#121f32;color:#d7eae8;border:1px solid #46666e;border-radius:8px;white-space:normal;min-height:160px;font:14px/1.4 system-ui}.city-choice strong{font-size:16px;color:#f0fff5}.city-ready{color:#91f0d6}.city-pair{color:#b9c9d7}.city-key{margin-top:auto;color:#f4d58c}.city-choice:hover{background:#1a3044;border-color:#baf1df}.city-choice:focus-visible,#city-menu button:focus-visible,#levels:focus-visible{outline:3px solid #ffda88;outline-offset:3px}#overlay-levels{margin:8px;background:#19343f;color:#bdeee7;border:1px solid #73bdb9}
@media(max-width:850px){#city-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){#city-menu{padding:16px}#city-grid{grid-template-columns:1fr}.city-menu-heading{align-items:flex-start;flex-wrap:wrap}.city-choice{min-height:0}}
#build-status,#overlay-build{color:#b9f6e6;font:600 14px system-ui;letter-spacing:.04em}#build-status{display:block;margin-top:4px}#overlay-build{margin:6px 0 10px}
@media(max-width:700px){.deck label{font-size:13px}.deck select{max-width:180px}.deck input[type=range]{width:65px}}
@media(max-height:550px) and (orientation:landscape){main{padding:4px 10px}header{margin-bottom:4px}header strong{font-size:17px}header small{display:none}.deck{padding:4px;gap:6px}.deck button,.deck .file{min-height:30px;padding:4px 8px}.track{padding:4px;font-size:12px;min-height:24px}#stage{max-height:calc(100dvh - 145px);aspect-ratio:16/9;margin:auto}footer{padding:4px;font-size:12px}#stage:fullscreen{max-height:none}}
/* The original concert artwork, with a compact game-native title menu. */
[hidden]{display:none!important}
body.at-title{background:#03080c}
body.at-title>main{display:none}
#title-screen{min-height:100dvh;max-width:1440px;margin:auto;background:#03080c;color:#dceaf3;text-align:center;font-family:system-ui,sans-serif;padding-bottom:20px}
.title-art{width:100%;aspect-ratio:1672/635;overflow:hidden;line-height:0}.title-art img{display:block;width:100%;height:auto}
.title-controls{width:min(620px,92%);margin:0 auto;display:grid;gap:8px}
.title-controls button,.title-controls summary{border:1px solid #59788a;background:linear-gradient(#203340,#080e15);border-radius:0;color:#ebf4fa;font-size:14px;letter-spacing:.08em;min-height:40px}
.title-controls .title-primary{width:76%;margin:0 auto;min-height:48px;font-size:20px;font-weight:800;letter-spacing:.13em;clip-path:polygon(8% 0,100% 0,92% 100%,0 100%)}
.title-controls p{margin:0;font-size:14px;line-height:1.4;color:#aebdcc}
.title-controls #title-progress{color:#d4e3ef}
.title-difficulty{border:0;padding:0;margin:0}.title-difficulty legend{font-size:14px;letter-spacing:.12em;margin:auto;padding:3px}
.title-difficulty>div{display:flex;gap:5px}.title-difficulty button{flex:1;padding:6px;font-size:13px}
.title-difficulty button[aria-pressed=true]{background:#163a5a;border-color:#ffe2a0;box-shadow:0 0 8px #ffc65e40;color:#fff2bd}
.title-difficulty p{margin-top:5px;font-size:13px;min-height:2.8em}
.title-settings{display:flex;align-items:end;justify-content:center;gap:10px}.title-settings label{display:flex;flex:1;align-items:center;justify-content:space-between;gap:8px;font-size:14px}.title-settings select{background:#101d2b;color:#eff8ff;border:1px solid #59788a;font:14px system-ui;padding:10px;max-width:68%}
.title-controls details{text-align:center}.title-controls summary{padding:10px;cursor:pointer;list-style:none}.title-controls details p{text-align:left;padding:12px;background:#0b1520;font-size:16px}
#title-screen button:focus-visible,#title-screen summary:focus-visible,#title-screen select:focus-visible{outline:3px solid #f9d778;outline-offset:3px}
#title-screen button:disabled{cursor:default;opacity:.6}
#title-status{color:#ffe395}.title-controls #title-build{font-size:13px;letter-spacing:.04em;margin:0;color:#b6ccda}
@media(max-width:600px){.title-settings{flex-wrap:wrap}.title-settings label{min-width:70%}.title-difficulty button{font-size:12px}.title-art img{max-height:none}}
/* Flat concert console: no ticket frame, notches, concept title or logo. */
body:not(.at-title){background:#05090c}body:not(.at-title) main{max-width:1920px;padding:12px 16px}
.concert-menu.deck{display:block;position:relative;padding:0;border:0;border-radius:0;background:#020709;color:#eaf5fb;margin-bottom:18px}
.concert-stats{display:grid;grid-template-columns:1.2fr .94fr .94fr 1.18fr 1.32fr;padding:12px 0 10px;gap:0}
.concert-stats>div{padding:0 20px;min-width:0;border-right:1px solid #64ceec}.concert-stats>div:first-child{padding-left:10px}.concert-stats>div:last-child{border:0}
.concert-menu h2{font:700 15px/1.2 'Arial Narrow',Impact,sans-serif;letter-spacing:2px;margin:0 0 9px;color:#9ebdd0}
.score-line{display:flex;gap:12px;align-items:center}.score-line h2{color:white;font-size:18px;letter-spacing:1px;margin-bottom:0}.score-bolt{color:#ffe000;font:90px/.9 Impact,sans-serif}
#hud-score{font:700 clamp(32px,3.4vw,62px)/1.05 Impact,'Arial Narrow',sans-serif;letter-spacing:1px;color:#ffe000;font-variant-numeric:tabular-nums}
.location-line{display:flex;align-items:center;gap:8px;border-top:1px solid #007fae;margin-top:9px;padding-top:5px;font:700 13px/1.3 'Arial Narrow',sans-serif;text-transform:uppercase;white-space:nowrap}.location-line>span:first-child,.location-divider{color:#00acff}#hud-city{overflow:hidden;text-overflow:ellipsis}
.fans-panel h2{color:#fff;letter-spacing:1px;white-space:nowrap;margin:8px 0 12px}.fans-panel output{font:700 28px Impact,sans-serif;color:#ffe000;margin-left:7px;font-variant-numeric:tabular-nums}
.fans-display{display:flex;align-items:center;gap:12px}.fans-hand{color:#00a9ff;font:42px/1 sans-serif}#hud-fan-bars{display:flex;gap:3px;flex:1}#hud-fan-bars i{height:27px;flex:1;background:#133346}#hud-fan-bars i.lit{background:#ffe000}
.concert-menu small{font:11px/1.3 system-ui;letter-spacing:.6px;color:#849caa;margin-top:8px}
.picks-row{display:flex;justify-content:space-between;gap:8px;text-align:center}.pick-icon{display:flex;align-items:center;justify-content:center;width:53px;height:64px;border-radius:48% 48% 48% 48% / 32% 32% 68% 68%;border:3px solid #f2303e;background:#771018;color:#fff;font:700 16px/1.1 'Arial Narrow',sans-serif;box-shadow:inset 0 3px 0 #ffffff24}.pick-icon.todd{border-color:#00a6ff;background:#053660}.pick-icon.phil{border-color:#ffe000;background:#bba000;color:#071015}.picks-row output{display:block;font:700 17px/1.2 system-ui;margin-top:3px}
.weapon-row{display:flex;align-items:center;gap:10px;border:1px solid #779eae;padding:6px 9px;margin-bottom:6px;min-height:43px}.weapon-row>div{flex:1;min-width:0}.weapon-row strong{display:block;font:700 13px/1.2 'Arial Narrow',sans-serif;white-space:nowrap}.weapon-row>span:last-child{font:700 10px/1.2 system-ui;max-width:62px;text-align:right}.weapon-icon{font-size:27px;color:#e8f8ff}.secondary .weapon-icon{color:#f32b3d}.secondary{color:#82939e}.weapon-row meter{appearance:none;width:100%;height:8px;display:block;margin-top:5px;background:#183340;border:0;border-radius:2px}.weapon-row meter::-webkit-meter-bar{background:#183340;border:0;border-radius:2px}.weapon-row meter::-webkit-meter-optimum-value{background:#00b5ed}
.secondary.active{color:#fff;border-color:#00b5ed}#hud-multi-meter::-webkit-meter-optimum-value{background:#b56cff}#hud-missile-meter::-webkit-meter-optimum-value{background:#ff7020}
.now-track{display:flex;align-items:center;gap:12px;font:700 20px/1.2 'Arial Narrow',sans-serif}.now-track>span:first-child{font:38px/1 sans-serif;color:#009fff}#track{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
#hud-equalizer{height:41px;display:flex;align-items:flex-end;gap:3px;margin-top:8px}#hud-equalizer i{flex:1;min-width:2px;height:3px;background:repeating-linear-gradient(to top,#00b6ff 0 3px,transparent 3px 5px);border-radius:1px}
.concert-actions{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #008fc4;padding:12px 8px 0}
.audio-actions,.game-actions{display:flex;align-items:center;gap:12px}.concert-menu button,.concert-menu .file,.concert-menu summary{border:1px solid #008bd1;background:linear-gradient(#071621,#02090e);border-radius:0;min-height:40px;padding:9px 13px;font:700 13px/1.2 'Arial Narrow',system-ui;text-transform:uppercase;white-space:nowrap;cursor:pointer}
.concert-menu .file{display:flex;gap:12px;color:#00b7ff}.audio-actions button{color:#00b7ff}.concert-menu button:hover,.concert-menu .file:hover,.concert-menu summary:hover{background:#0b293b}.concert-menu button:disabled{cursor:default}
#menu-settings{position:relative}#menu-settings summary{list-style:none;border-color:#ed293c;color:#f3f6fa;min-width:122px;text-align:center}#menu-settings summary::-webkit-details-marker{display:none}#menu-settings summary::after{content:' ▾';color:#ff2639}#menu-settings[open] summary::after{content:' ▴'}
.settings-panel{position:absolute;right:0;top:49px;width:330px;max-width:calc(100vw - 32px);z-index:12;border:1px solid #65a6c3;background:#030c13;padding:16px;box-shadow:0 12px 28px #000b}
.concert-menu .settings-panel>label{display:flex;justify-content:space-between;gap:14px;margin-bottom:12px;font:13px/1.4 system-ui}.settings-panel input[type=range]{width:145px;accent-color:#00b6ff}.settings-checks{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.concert-menu .settings-checks label{font-size:12px}.concert-menu input[type=checkbox]{width:16px;height:16px}.settings-panel select{max-width:175px!important;min-height:32px!important;background:#071923!important}.settings-panel [hidden]{display:none!important}#stage{border-color:#152a34;border-radius:0}
@media(max-width:1250px){.concert-stats>div{padding:0 12px}.concert-actions{gap:8px}.audio-actions,.game-actions{gap:6px}.concert-menu button,.concert-menu .file,.concert-menu summary{padding:9px;font-size:12px}.pick-icon{width:44px;height:55px;font-size:14px}.concert-menu h2{font-size:12px}.location-line{font-size:11px}.weapon-row{gap:5px;padding:5px}.now-track{font-size:16px}.weapon-row strong{font-size:11px}}
@media(max-width:1000px){.concert-stats{grid-template-columns:1fr 1fr 1fr}.concert-stats>div{padding:10px 14px}.concert-stats>div:nth-child(3){border:0}.weapons-panel,.now-panel{margin-top:8px;border-top:1px solid #183b4c;padding-top:14px!important}.now-panel{grid-column:span 2}.concert-actions{flex-wrap:wrap}.game-actions{margin-left:auto}#hud-score{font-size:44px}.concert-menu h2{font-size:14px}}
@media(max-width:600px){body:not(.at-title) main{padding:6px}.concert-stats{grid-template-columns:1fr 1fr}.concert-stats>div{border:0;padding:8px}.picks-panel{border-top:1px solid #183b4c!important}.weapons-panel{margin-top:0}.now-panel{margin-top:0;padding-top:10px!important}.concert-actions{padding:10px 0 0}.audio-actions,.game-actions{flex-wrap:wrap;margin-left:0;width:100%;gap:6px}.concert-menu button,.concert-menu .file,.concert-menu summary{font-size:12px;min-height:42px;padding:8px}.game-actions #menu-settings{margin-left:auto}.settings-panel{width:min(330px,calc(100vw - 12px))}.score-bolt{font-size:60px}#hud-score{font-size:34px}.location-line{font-size:10px}.concert-stats .fans-panel{border-left:1px solid #23546a}.pick-icon{width:48px;height:53px}}
body.at-title #menu-settings{display:none}
