/* The scene owns the viewport; every control is an overlay inside it. */
body[data-menu-screen="characters"]:not(:has(.in-game)){overflow:hidden;background:#101B2C}
body[data-menu-screen="characters"] .app-shell:not(.in-game){padding:0;max-width:none}
body[data-menu-screen="characters"] .app-shell:not(.in-game)>.site-header,body[data-menu-screen="characters"] .site-footer{display:none}
body[data-menu-screen="characters"] .game-menu{padding:0;min-height:0}
.character-screen{position:relative;height:100dvh;overflow:hidden;color:#FFF;background:#101B2C}
.character-screen .menu-step{position:absolute;inset:18px 20px auto;z-index:6;color:#BCD9FF;font-size:10px}
.character-screen .menu-step .soft-button{background:#102039D9;border:1px solid #728AAD;color:white;min-height:42px}
.character-screen .step-title{position:absolute;top:18px;left:20%;right:20%;z-index:5;margin:0;text-align:center;color:#FFF;text-shadow:0 2px 8px #06152B;font-size:clamp(19px,2.3vw,30px);pointer-events:none}
.character-screen .step-title em{color:#FFB27D}
.selection-layout,.selection-center{display:block;position:absolute;inset:0;max-width:none;margin:0}
.roster-stage{position:absolute;inset:0;max-width:none;aspect-ratio:auto;border:0;border-radius:0;background:#101B2C}
.roster-stage>canvas{width:100%;height:100%;display:block}
.selection-panel{position:absolute;z-index:4;top:92px;bottom:auto;width:clamp(200px,20vw,260px);max-height:calc(100dvh - 210px);overflow:auto;background:linear-gradient(135deg,#0B1B33F0,#14283BEF);box-shadow:0 10px 30px #0005;border:1px solid #B9D0EC55;border-top:3px solid #FFB27D;border-radius:7px;padding:17px;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s}
.character-stats{left:20px}.weapon-stats{right:20px}.has-selection .selection-panel{opacity:1;visibility:visible;transform:none}
.selection-panel h3{font-size:20px}.selection-panel h4{margin:13px 0 8px}.selection-panel dl{margin:12px 0}.selection-panel dl>div{font-size:11px;padding:6px 0}.selection-description{margin:12px 0;font-size:11px;line-height:1.55}.selection-nemesis{font-size:10px}.selection-panel li{font-size:11px}.selection-panel .selection-special{margin-top:10px}.selection-panel .selection-special p{margin-bottom:8px}#weapon-icon{float:right;width:30px;height:30px;margin:8px 0}
.selection-center>.menu-action{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:6;margin:0;width:min(420px,80%);min-height:50px;background:#FF793E;border-color:#E05523;box-shadow:0 4px 0 #9C3A20;color:#101F34}
.selection-center>.menu-action:disabled{background:#1C3048;color:#B6C4D5;border-color:#728AAD}
.selection-stage-caption{bottom:90px;left:18%;right:18%;text-shadow:0 2px 5px #06152B}
.selection-controls{display:none}.roster-person{height:auto;min-height:44px;max-width:15%;border-radius:8px}.roster-name{font-size:10px;max-width:150px;white-space:nowrap;color:#FFF;background:#07162DCC;padding:4px 7px}.roster-person.selected .roster-name{color:#FFC99C}.roster-person kbd{background:#10243F;font-size:9px}
.selection-tabs{display:none}
.app-shell.in-game{padding:0!important;position:relative;height:100dvh;max-width:none}
.in-game>.site-header,.in-game>.site-footer{display:none!important}
.in-game .game-view{position:relative;height:100dvh;width:100%;padding:0;overflow:hidden}
.in-game .arena-wrap{height:100dvh;min-height:0;max-height:none;border:0;border-radius:0;flex:none;width:100%}
.in-game .game-topline{position:absolute;z-index:20;top:0;left:0;right:0;height:50px;padding:8px 16px;color:#F1F5FA;background:linear-gradient(#06152BF0,#06152B90);pointer-events:none}.game-topline>div{pointer-events:auto}
.in-game .game-topline .icon-button,.in-game .inventory-button{background:#10243FE6;color:#EAF2FF;border-color:#BCD9FF50}
.in-game .wave-status{top:60px;left:14px;max-width:calc(100% - 28px)}.in-game .boss-health{top:108px}.in-game .scene-intro{top:24%}
.elite-announcement{position:absolute;z-index:30;top:12%;left:50%;transform:translateX(-50%) rotate(-2deg);width:min(540px,90%);padding:15px 32px 18px;background:radial-gradient(#07172F22 1px,transparent 1.6px) 0 0/7px 7px,#FFC66F;border:4px solid #102039;box-shadow:8px 9px 0 #102039C0;color:#102039;text-align:center;pointer-events:none;animation:comic-entry .32s cubic-bezier(.16,1,.3,1)}
.elite-announcement:before,.elite-announcement:after{content:'!';position:absolute;font:900 65px var(--heading);color:#FF6B35;-webkit-text-stroke:2px #102039;top:14px;left:-13px;transform:rotate(-17deg)}.elite-announcement:after{left:auto;right:-13px;transform:rotate(17deg)}.elite-announcement>span{display:block;font:800 10px var(--heading);letter-spacing:2px}.elite-announcement strong{display:block;font:900 clamp(19px,3vw,32px)/1.15 var(--heading);margin:7px 0}.elite-announcement b{font:900 15px var(--heading);letter-spacing:2px}.elite-announcement small{display:block;font:600 11px var(--body);margin-top:6px}
@keyframes comic-entry{from{opacity:0;transform:translate(-50%,-40px) rotate(-8deg) scale(.7)}to{opacity:1;transform:translateX(-50%) rotate(-2deg)}}
.player-name-dialog{width:min(460px,calc(100% - 32px));padding:30px;border:1px solid #8CABCC;border-radius:16px;background:#102039;color:#EAF2FF;box-shadow:0 20px 90px #0008}.player-name-dialog::backdrop{background:#06152BC9;backdrop-filter:blur(5px)}.player-name-dialog h2{font:800 28px/1.2 var(--heading);color:#FFF}.player-name-dialog label{display:block;font-size:12px;margin:18px 0}.player-name-dialog input{display:block;margin-top:8px;width:100%;font:600 20px var(--body);padding:12px;border:1px solid #9AB4D6;border-radius:7px;background:#07172F;color:white}.player-name-dialog p{font-size:12px;line-height:1.7;color:#BDD0E7}.player-name-dialog .soft-button{background:#FF793E;color:#07172F;width:100%;min-height:46px;font-weight:800}.player-name-dialog .name-cancel{margin-top:8px;background:transparent;color:#AFC6E4}.country-flag{display:inline-block;margin-right:6px}
@media(max-width:1099px){.character-screen .menu-step>span{display:none}.character-screen .step-title{top:24px;left:25%;right:4%;font-size:22px;text-align:right}.selection-tabs{display:flex;position:absolute;top:82px;left:20px;right:20px;justify-content:center;gap:8px;z-index:6;visibility:hidden}.has-selection .selection-tabs{visibility:visible}.selection-tabs button{display:flex;align-items:center;gap:9px;background:linear-gradient(#193653F5,#0B1B33F5);border:1px solid #B0D5FF;border-bottom:3px solid #4E759F;border-radius:9px;color:#EAF2FF;font:700 11px var(--body);padding:10px 12px;min-height:56px;text-align:left;box-shadow:0 3px 12px #0005;touch-action:manipulation}.selection-tabs button:hover{background:#254865}.selection-tabs button:focus-visible{outline:3px solid #FFBF91;outline-offset:3px}.selection-tabs strong{display:block;font-size:11px}.selection-tabs small{display:block;color:#FFBF91;font-size:10px;margin-top:4px}.selection-tab-icon{display:grid;place-items:center;width:25px;height:25px;flex:none;border:1px solid #BCD9FF88;border-radius:50%;font:800 16px var(--heading);color:#FFBF91}.selection-chevron{font-size:22px;color:#FFBF91;margin-left:2px;transition:transform .15s}.selection-tabs button[aria-expanded=true] .selection-chevron{transform:rotate(180deg)}.selection-tabs button[aria-expanded=true] small,.selection-tabs button[aria-expanded=true] .selection-tab-icon,.selection-tabs button[aria-expanded=true] .selection-chevron{color:#102039}.selection-tabs button[aria-expanded=true] .selection-tab-icon{border-color:#10203966}.selection-tabs button[aria-expanded=true]{background:#FFB27D;color:#102039}.has-selection .selection-panel{visibility:hidden;opacity:0}.character-screen[data-panel="character"] .character-stats,.character-screen[data-panel="weapon"] .weapon-stats{visibility:visible;opacity:1;top:148px;width:280px;max-width:calc(100% - 32px);max-height:calc(100dvh - 250px);left:16px;right:auto}.character-screen[data-panel="weapon"] .weapon-stats{left:auto;right:16px}.roster-name{font-size:9px}.selection-stage-caption{left:6%;right:6%}.selection-stage-caption>span{font-size:12px}}
@media(max-width:600px){.character-screen .menu-step{top:14px;left:12px}.character-screen .step-title{top:16px;left:32%;font-size:18px}.selection-tabs{top:76px;left:12px;right:12px;gap:7px}.selection-tabs button{flex:1;max-width:210px;padding:9px;gap:7px}.roster-name{font-size:8px;padding:3px 4px;max-width:95px;white-space:normal}.selection-stage-caption{bottom:86px}.selection-stage-caption p{font-size:10px}.selection-center>.menu-action{width:90%;bottom:20px}.in-game .game-topline{height:46px;padding:6px 10px}.elite-announcement{padding:12px 20px}.elite-announcement b{font-size:12px}.in-game .wave-status{top:52px}.in-game .boss-health{top:95px}}
@media(max-height:600px) and (min-width:600px){.character-screen .step-title{font-size:21px}.selection-panel{top:70px;max-height:calc(100dvh - 100px)}.selection-stage-caption{bottom:67px}.selection-stage-caption p{display:none}.selection-center>.menu-action{bottom:12px;min-height:42px}.roster-name{font-size:8px}.selection-tabs{top:62px}.character-screen[data-panel] .selection-panel{top:126px;max-height:calc(100dvh - 186px)}}
@media(prefers-reduced-motion:reduce){.elite-announcement{animation:none;transform:translateX(-50%)}.selection-panel{transition:none}}

.selection-center>.menu-action:hover:not(:disabled){transform:translateX(-50%);background:#FF965C;color:#102039}
.elite-announcement.hidden:before,.elite-announcement.hidden:after{content:none}
