
:root{color-scheme:dark;--yellow:#e9ff59;--muted:#93968d}*{box-sizing:border-box}body{margin:0;background:#11130f;color:#f5f5ed;font-family:Arial,Helvetica,sans-serif}header{height:78px;border-bottom:1px solid #303329;display:flex;align-items:center;justify-content:space-between;padding:0 5%;font-size:11px;letter-spacing:2px}.brand{font-size:30px;font-weight:900;color:var(--yellow);text-decoration:none;letter-spacing:-2px}.brand span{font-size:10px;color:white;letter-spacing:2px;margin-left:10px}button,select{font:inherit;color:inherit;background:#22261d;border:1px solid #4d5340;padding:12px 16px;cursor:pointer}button:hover{border-color:var(--yellow);color:var(--yellow)}button:focus-visible,select:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}main{max-width:1320px;margin:auto;padding:38px 36px}.eyebrow{color:var(--yellow);font-size:11px;letter-spacing:3px;font-weight:bold}h1{font-size:clamp(38px,5.4vw,72px);letter-spacing:-4px;margin:10px 0 28px;font-weight:900;line-height:1}h1 em{font-style:normal;color:var(--yellow)}h1 span{float:right;max-width:180px;font-size:10px;line-height:1.7;letter-spacing:2px;color:var(--muted);padding-top:20px}.cabinet{border:1px solid #50563d;padding:8px;background:#1e2319;box-shadow:0 20px 80px #0005}.screen{position:relative;aspect-ratio:1200/630;overflow:hidden;background:#0d141b}canvas{display:block;width:100%;height:100%}#menu,#result{position:absolute;inset:0;background:linear-gradient(90deg,#101811f5,#101811e8);padding:3.3% 5%;display:flex;flex-direction:column;justify-content:center}#result{align-items:center;text-align:center;background:#101811ed}#result[hidden],#menu[hidden]{display:none}.menu-top{display:flex;justify-content:space-between;align-items:flex-start;font-size:10px;letter-spacing:2px;color:var(--yellow)}.menu-top-left{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.menu-top-right{display:flex;align-items:center;gap:10px}.tag{border:1px solid #677244;padding:5px;font-size:8px}h2{font-size:clamp(23px,3.6vw,46px);letter-spacing:-2px;margin:14px 0 0}h2 em{font-style:normal;color:var(--yellow)}#menu p{font-size:12px;color:#adb5a4;margin:9px 0 18px}#roster{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}.fighter{padding:0;background:#253022;position:relative;text-align:left;overflow:hidden;border:1px solid #43503b}.fighter canvas{width:100%;height:auto;aspect-ratio:1.35}.fighter strong{display:block;font-size:11px;padding:10px 8px;background:#131b11;min-height:34px}.fighter .badge{position:absolute;top:7px;left:7px;background:var(--yellow);color:#141a0c;padding:4px 6px;font-weight:bold;font-size:10px}.fighter.p1{border:2px solid var(--yellow)}.fighter.p2{border:2px solid #83ceff}.fighter.p2 .badge{background:#83ceff}.fighter.locked{cursor:not-allowed}.fighter.locked canvas{filter:grayscale(.5) brightness(.6)}.fighter .badge.locked{background:#0009;color:#efd187;border:1px solid #efd187}.progress-status{display:block;margin-top:6px;color:#c8cfb9;letter-spacing:1px}.options{display:flex;gap:20px;justify-content:flex-end;align-items:center}.options label{font-size:11px;color:var(--muted)}select{margin-left:8px;font-size:12px}.primary{background:var(--yellow);color:#18200c;font-weight:900;border:0;letter-spacing:1px;padding:15px 22px}.primary:hover{background:#f2ffad;color:#111}.primary span{margin-left:30px}small{color:#8c9980;font-size:10px;margin-top:14px}#result button{margin-top:16px}.cabinet-foot{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:2px;padding:10px 6px 2px;color:#b2bda3}.cabinet-foot button{border:0;padding:4px;font-size:9px;letter-spacing:1px}.controls{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid #34382c;margin:25px 0}.controls>div{position:relative;padding:0 22px 20px;border-right:1px solid #34382c}.controls>div:first-child{padding-left:0}.controls>div:last-child{border:0}h3{font-size:11px;letter-spacing:2px;margin:0 0 15px}.controls p{font-size:11px;color:#a6ad9c;line-height:1.9}.number{float:right;color:#47503d;font-size:26px;font-weight:900}kbd{display:inline-block;min-width:23px;text-align:center;padding:1px 5px;border:1px solid #4e5744;background:#23291e;border-radius:3px;margin-right:4px;color:#e9eedf;font-size:11px}.tip p{max-width:300px}footer{font-size:10px;color:#808775;line-height:1.8}footer span{float:right;letter-spacing:1px}@media(max-width:760px){main{padding:25px 12px}header{padding:0 16px}header>span,h1 span{display:none}.screen{aspect-ratio:auto;min-height:530px}canvas#game{height:auto;position:absolute;top:0;bottom:0;margin:auto}#menu{padding:20px}#roster{grid-template-columns:repeat(3,1fr)}.fighter canvas{max-height:70px}.fighter strong{font-size:10px}.options{gap:8px;flex-wrap:wrap}.controls{grid-template-columns:1fr}.controls>div{border:0;padding:12px 0}.menu-top{font-size:8px}footer span{float:none;display:block}small{line-height:1.5}}


/* Duel edition: two detailed portrait cards. */
:root{--yellow:#efd187}body{background:#101112}.brand{color:#efd187}h1 em{color:#efd187}.cabinet{background:#232321;border-color:#6b6047}.screen{background:#101620}#menu{background:linear-gradient(110deg,#131516f5,#161a1fe8)}#roster{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.fighter canvas{aspect-ratio:440/190;max-height:none}.fighter strong{font-size:18px;padding:10px 14px;background:#111719;letter-spacing:.6px}.fighter strong>span{float:right;font-size:9px;line-height:22px;letter-spacing:1px;color:#a6aeae}.fighter .badge{font-size:9px;left:12px;top:12px}.fighter.p1{border-color:#efd187}.fighter.p2{border-color:#8daec1}.primary:disabled{opacity:.5;cursor:wait}.fighter:hover{transform:translateY(-2px)}@media(max-width:760px){#roster{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.fighter strong{font-size:14px}.fighter strong>span{display:none}.fighter canvas{max-height:none}.screen{min-height:500px}}

/* Let the new stage show through the character selection. */
#menu{background:linear-gradient(110deg,#0d1116ee,#111820c9)}

/* Arena-first layout: no header, all secondary information lives in menus. */
[hidden]{display:none!important}html,body{width:100%;height:100%;overflow:hidden}body{background:#05080c}main{max-width:none;width:100%;height:100dvh;margin:0;padding:0;display:flex;align-items:center;justify-content:center}.cabinet{border:0;padding:0;box-shadow:none;background:#05080c;width:min(100vw,calc((100dvh - 38px)*1200/630))}.screen{width:100%;aspect-ratio:1200/630;min-height:0;position:relative}canvas#game{width:100%;height:100%;position:static;margin:0}.cabinet-foot{height:38px;padding:0 12px;letter-spacing:1px;gap:8px;background:#0b1016;color:#8594a2}.cabinet-foot button{background:transparent;font-size:10px;padding:8px 10px;color:#c2c9d0;white-space:nowrap}.toolbar{display:flex;gap:6px;align-items:center}.overlay{position:absolute;inset:0;z-index:2;display:flex;align-items:center;background:linear-gradient(90deg,#030913ed 0%,#03091399 50%,#03091322 100%);padding:5% 8%;overflow:auto}#home{padding-top:clamp(40px,6vh,64px);padding-bottom:clamp(40px,6vh,64px)}.home-content{max-width:470px}#padStatus:empty{display:none}#home h1{font-size:clamp(38px,min(6.7vw,12vh),105px);line-height:.92;letter-spacing:-.055em;margin:20px 0;text-shadow:0 4px 30px #0008}#home p{font-size:14px;color:#a9b5c2;margin-bottom:24px}#home nav{display:flex;flex-direction:column;gap:10px;max-width:285px}#home nav button{text-align:left;padding:14px 20px}#home small{display:block;margin-top:20px;color:#abb2bd}.home-note{position:absolute;bottom:18px;left:8%;font-size:8px;letter-spacing:1px;color:#8191a0}.game-version{margin-left:6px;font-size:inherit;color:#596575;cursor:default}#menu{padding:3% 10%;overflow:auto}#menu h2{margin-top:8px;font-size:clamp(22px,3vw,40px)}#menu p{margin-bottom:12px}#roster{gap:16px}.fighter canvas{max-height:190px;object-fit:contain}.fighter strong{font-size:16px}.selection{padding:10px 0}#help,#movesMenu{z-index:5;background:#080f19f5;padding:4% 6%}.help-content{width:100%}#help .controls{margin:20px 0 10px}#help .controls p{font-size:12px}#help h2{margin:4px 0}.help-tip{font-size:12px;color:#a5b2bf}#helpClose{font-size:11px;padding:8px 12px}#result{z-index:3}.cabinet:fullscreen{width:100vw;height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center}.cabinet:fullscreen .screen{width:min(100vw,calc((100dvh - 38px)*1200/630))}.cabinet:fullscreen .cabinet-foot{width:100%}
@media(max-height:600px){#home h1{font-size:clamp(34px,10vh,65px);margin:12px 0}#home p{margin:8px 0 12px}#home nav button{padding:9px 16px}#home small{margin-top:10px}#menu{padding:12px 7%;justify-content:flex-start}#menu h2{font-size:24px}.menu-top,.tag{font-size:8px}#menu p{margin:6px 0}#roster{max-width:650px;width:100%;align-self:center}.fighter canvas{max-height:110px}.fighter strong{padding:6px 10px}.options button,.options select{padding:8px 12px}#help .controls{margin:10px 0}#help .controls>div{padding-bottom:0}#help h3{margin-bottom:8px}}
@media(max-width:760px){.screen{min-height:0}.cabinet-foot{padding:0 4px}.cabinet-foot #status{display:none}.cabinet-foot button{font-size:9px;padding:7px}.toolbar{gap:0}#home h1{font-size:clamp(28px,8vw,60px)}#home .eyebrow,#home p,#home small,.home-note{display:none}#home nav{gap:6px}#home nav button{padding:8px 12px;font-size:11px}#home h1{margin:8px 0 14px}#menu{justify-content:flex-start;padding:12px 6%}.fighter canvas{max-height:100px}#menu>p,#menu>small,.tag{display:none}.fighter strong{font-size:12px;padding:5px 8px}.progress-status{flex-wrap:wrap}.progress-status-text{flex:1 1 100%;white-space:normal}.options{gap:5px}.options label,.options select,.options button{font-size:10px}.options select{padding:5px}#help .controls{grid-template-columns:1fr 1fr;gap:12px}#help .controls>div{padding:0;border:0}#help .controls .tip{grid-column:1/-1}#help .controls p{font-size:10px;margin:3px 0}#help .controls h3{font-size:10px}#help h2{font-size:22px}.number{display:none}}

.pad-guide{border-top:1px solid #36404b;padding-top:14px}.pad-guide h3{margin:0 0 8px}.pad-guide p{font-size:12px;line-height:1.6;color:#b7c1cc;margin:4px 0}.pad-guide b{color:#efd187}#help{align-items:flex-start}#padStatus{max-width:340px;line-height:1.5;font-size:11px}#padHelpStatus{color:#efd187}

/* Manual da arena: cartões curtos, comandos escaneáveis e boa leitura em qualquer tela. */
#help,#movesMenu{padding:0;background:radial-gradient(circle at 82% 12%,#26391466,transparent 32%),linear-gradient(135deg,#07101cf8,#090d12f8)}
.help-content{width:min(1120px,100%);margin:auto;padding:26px 34px 34px}
.help-header{position:sticky;top:-26px;z-index:2;padding:26px 0 15px;background:linear-gradient(#08101bf7 72%,#08101b00)}
#helpClose,#movesClose{background:#111c26e8;border-color:#536272}
.help-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-top:8px}
#help .help-title-row h2,#movesMenu .help-title-row h2{margin:0;font-size:clamp(28px,4vw,48px)}
.help-subtitle{max-width:520px;margin:0;color:#aeb9c4;font-size:12px;line-height:1.55;text-align:right}
.help-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}
.help-card{position:relative;overflow:hidden;border:1px solid #354151;background:linear-gradient(145deg,#121d28e8,#0d151ee8);padding:18px;box-shadow:0 12px 35px #0003}
.help-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--yellow)}
.help-card h3{display:flex;align-items:center;gap:9px;margin:0 0 14px;color:#f1f4eb;font-size:12px;letter-spacing:1.5px}
.help-card h3 span{display:grid;place-items:center;width:24px;height:24px;border:1px solid #798747;color:var(--yellow);font-size:10px}
.help-moves{grid-column:1/-1}.help-gamepad{grid-column:span 7}
.help-moves .mv-inline{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}
.help-moves .mv-inline .mv-legend{grid-column:1/-1}
#help kbd{min-width:25px;margin:0;padding:3px 6px;border-color:#526172;background:#1b2732;box-shadow:0 2px 0 #05090d;color:#fff;font-weight:800}
.command-list{gap:0}.command-item{grid-template-columns:145px 1fr;padding:6px 0}
.command-input{color:var(--yellow);font-weight:900;letter-spacing:.2px}
.command-item em{display:block;color:#71808e;font-size:9px;font-style:normal;margin-top:2px}
.help-note{margin:10px 0 0;color:#9eabb6;font-size:10px;line-height:1.7}.help-note kbd{min-width:0!important;padding:1px 5px!important}
.pad-layout{display:grid;grid-template-columns:1fr 1fr;gap:7px 12px}
.help-card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.help-card-heading h3{margin:0}
.controller-toggle{display:flex;gap:4px}.controller-toggle .toggle{min-width:0;padding:6px 8px;font-size:8px;letter-spacing:.6px}
#help [data-pad="playstation"]{display:none}#help[data-controller="playstation"] [data-pad="xbox"]{display:none}#help[data-controller="playstation"] [data-pad="playstation"]{display:inline}
.pad-action{padding:7px 9px;background:#09121b;border:1px solid #293744;color:#aebbc5;font-size:10px;line-height:1.35}
.pad-action b{display:block;margin-bottom:2px;color:#efd187;font-size:10px}
.help-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px;padding:12px 15px;border:1px solid #6c743e;background:#202711;color:#dce7b7;font-size:10px;line-height:1.5}
.help-footer strong{color:var(--yellow)}.help-footer .menu-keys{white-space:nowrap;color:#9ca990}
#padHelpStatus{display:block;margin:8px 0 0;font-size:9px;color:#efd187}
@media(max-width:900px){.help-content{padding:18px}.help-header{top:-18px;padding-top:18px}.help-title-row{align-items:flex-start;flex-direction:column;gap:5px}.help-subtitle{text-align:left}.help-gamepad{grid-column:1/-1}}
@media(max-width:600px){.help-content{padding:12px}.help-header{top:-12px;padding:12px 0 10px}.help-subtitle{display:none}.help-grid{gap:9px}.help-card{padding:12px}.help-moves .mv-inline{grid-template-columns:1fr}.command-item{grid-template-columns:115px 1fr}.pad-layout{grid-template-columns:1fr 1fr}.help-card-heading{align-items:flex-start;flex-direction:column}.help-footer{align-items:flex-start;flex-direction:column}.help-footer .menu-keys{white-space:normal}}

/* Settings menu and pause actions. */
#settings{z-index:5;background:#080f19f5;padding:4% 6%}
.settings-content{width:100%;max-width:760px}
#settings h2{margin:4px 0 14px}
.settings-list{display:flex;flex-direction:column;gap:6px}.settings-list[hidden]{display:none}.settings-tabs{display:flex;gap:8px;margin:14px 0 10px}.settings-tabs button{flex:1;padding:9px 10px;font-size:11px;font-weight:900;letter-spacing:2px;background:transparent;border-color:#2a3140}.settings-tabs button[aria-selected="true"]{background:var(--yellow);color:#18200c;border-color:var(--yellow)}
.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 14px;border:1px solid #2a3140;background:#0e1622cc}
.setting[data-active="true"]{border-color:var(--yellow);box-shadow:inset 3px 0 0 var(--yellow)}
.setting label,.setting>span{font-size:13px;font-weight:bold;letter-spacing:.5px}
.setting-control{display:flex;align-items:center;gap:10px}
.setting select{margin:0;min-width:150px}
.setting input[type=range]{width:170px;accent-color:var(--yellow)}
.setting output{min-width:42px;text-align:right;font-variant-numeric:tabular-nums;color:var(--yellow);font-size:12px}
.toggle{min-width:70px;padding:8px 12px;font-weight:bold}
.toggle[aria-pressed="true"]{border-color:var(--yellow);color:var(--yellow)}
select:disabled{opacity:.5;cursor:not-allowed}
#difficultyNote{font-size:10px;color:var(--muted);max-width:150px;line-height:1.3}
#difficultyNote:empty{display:none}
#settingsClose{font-size:11px;padding:8px 12px}
.settings-content[data-mapping="true"]>.menu-top,.settings-content[data-mapping="true"]>h2,.settings-content[data-mapping="true"]>.settings-list,.settings-content[data-mapping="true"]>.settings-tabs,.settings-content[data-mapping="true"]>.help-tip{display:none}.key-mapping>p,.gamepad-map>p,.video-settings>p{margin:4px 0 12px;color:#9ba8b5;font-size:11px}.video-settings-list{display:flex;flex-direction:column;gap:6px}.keymap-players{display:grid;grid-template-columns:1fr 1fr;gap:12px}.keymap-players>section,.gamepad-map{padding:12px;border:1px solid #2a3140;background:#0e1622cc}.keymap-players h3,.gamepad-map h3{color:var(--yellow)}.gamepad-map{margin-top:10px}.gamepad-map .keymap-grid{grid-template-columns:repeat(4,1fr)}.keymap-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.keymap-grid button{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;text-align:left;font-size:9px}.keymap-grid button[aria-pressed="true"]{border-color:var(--yellow);color:var(--yellow)}.keymap-grid kbd{margin:0;min-width:48px}.keymap-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.keymap-actions small{margin:0;color:#b9c5cf}.keymap-actions button{white-space:nowrap;font-size:9px;padding:8px 10px}#fpsCounter{position:absolute;z-index:25;top:8px;right:10px;padding:4px 7px;border:1px solid #ffffff24;background:#000b;color:#d8ff78;font:700 10px/1 monospace;letter-spacing:.5px;pointer-events:none}
#pauseMenu{position:absolute;left:50%;top:62%;transform:translateX(-50%);z-index:4;display:flex;gap:10px}
#pauseMenu button{font-size:12px;padding:10px 16px;white-space:nowrap}
@media(max-width:760px){#settings{padding:3% 4%;align-items:flex-start}#settings h2{margin-bottom:6px}.settings-list{gap:3px}.setting{padding:5px 10px;gap:8px}.setting label,.setting>span{font-size:11px}.setting input[type=range]{width:100px}.setting select{min-width:0;padding:5px}.toggle{padding:5px 10px;min-width:54px}#difficultyNote{display:none}#pauseMenu{top:60%;gap:6px}#pauseMenu button{font-size:10px;padding:7px 10px}}
@media(max-width:650px){.keymap-players{grid-template-columns:1fr}.keymap-players>section,.gamepad-map{padding:8px}.gamepad-map .keymap-grid{grid-template-columns:1fr 1fr}.keymap-grid button{padding:6px}.keymap-actions{align-items:flex-start;flex-direction:column}}
/* Gamepad highlight for menu buttons. */
button[data-pad-focus="true"]{outline:3px solid var(--yellow);outline-offset:3px}

#home{visibility:hidden}
/* Gate before the studio reveal: browsers require a real click/key/touch before audio can play, so this
   screen exists only to capture that gesture before the logo (and its sound) starts. */
#introGate{z-index:21;display:grid;place-items:center;background:#000}
.intro-gate-content{text-align:center;display:grid;gap:18px;justify-items:center}
.intro-gate-content .eyebrow{letter-spacing:6px}
.intro-gate-content .primary{padding:18px 46px;font-size:15px;letter-spacing:2px;animation:introPulse 1.8s ease-in-out infinite}
.intro-gate-content small{letter-spacing:2px}
@keyframes introPulse{0%,100%{box-shadow:0 0 0 0 #e9ff5955}50%{box-shadow:0 0 0 14px #e9ff5900}}
/* Arena Gaming / Brasil Combat opening sequence. Text stays sharp at every resolution and adds no download. */
#splash{z-index:20;display:grid;place-items:center;overflow:hidden;background:#000;transition:opacity .7s ease}
#splash.leaving{opacity:0;pointer-events:none}
#splash::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 46%,#ffd65a12 0,transparent 34%);opacity:0;animation:studioAura 2.6s .25s ease-out forwards}
.splash-stage{position:relative;z-index:1;display:grid;place-items:center;width:100%;height:100%;min-height:0;text-align:center}
.studio-mark,.game-mark{grid-area:1/1;transition:opacity .9s ease,transform 1.05s cubic-bezier(.2,.8,.2,1);will-change:opacity,transform;backface-visibility:hidden}.studio-mark{position:relative;display:grid;place-items:center;gap:0;isolation:isolate;transform:translateZ(0)}.studio-mark::before{content:"";position:absolute;z-index:0;width:68%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0,#fff9 13%,#ffe8a538 42%,transparent 72%);opacity:0;transform:translateZ(0) scale(.25);will-change:opacity,transform;animation:whiteHalo 3.8s .45s ease-in-out forwards}.studio-mark img{position:relative;z-index:1;width:clamp(180px,30vw,300px);height:auto;opacity:0;transform:translateZ(0) scale(.24);transform-origin:50% 50%;will-change:opacity,transform;backface-visibility:hidden;animation:emblemIgnite 3.7s .22s cubic-bezier(.16,.76,.18,1) forwards}.studio-mark div{position:relative;z-index:2;display:flex;gap:10px;margin-top:10px;opacity:0;animation:studioName .9s 2.15s ease-out forwards}.studio-mark strong,.studio-mark em{font-size:18px;line-height:1;letter-spacing:7px}.studio-mark em{color:#d7ad42;font-style:normal}
.game-mark{display:grid;min-height:0;opacity:0;transform:scale(.82)}.game-mark small{margin-bottom:14px;color:#9ba8a4;font-size:9px;letter-spacing:4px}.game-mark strong,.game-mark em{font-size:clamp(54px,10vw,106px);line-height:.72;letter-spacing:-4px;text-shadow:0 8px 0 #020405}.game-mark em{color:var(--yellow);font-style:normal}.game-mark span{margin-top:24px;color:#d6ddd7;font-size:13px;letter-spacing:3px;text-transform:uppercase}
.splash-stage[data-step="transition"] .studio-mark,.splash-stage[data-step="game"] .studio-mark{opacity:0;transform:translateZ(0) scale(1.22)}.splash-stage[data-step="game"] .game-mark{opacity:1;transform:translateZ(0) scale(1);animation:gameReveal 1s cubic-bezier(.16,.8,.2,1) both}
#splashContinue{position:absolute;bottom:14%;opacity:0;border:0;background:transparent;color:#f3f5ed;font-size:11px;letter-spacing:2px;animation:splashBlink 1.15s infinite}.splash-stage[data-step="game"] #splashContinue{opacity:1}
@keyframes splashBlink{50%{color:var(--yellow);text-shadow:0 0 14px #e9ff59}}@keyframes studioAura{35%{opacity:.35}70%{opacity:1}to{opacity:.55}}@keyframes whiteHalo{0%{opacity:0;transform:translateZ(0) scale(.25)}42%{opacity:.18}72%{opacity:.72;transform:translateZ(0) scale(1)}100%{opacity:.36;transform:translateZ(0) scale(.92)}}@keyframes emblemIgnite{0%{opacity:0;transform:translateZ(0) scale(.24)}42%{opacity:.64;transform:translateZ(0) scale(.7)}74%{opacity:1;transform:translateZ(0) scale(1.04)}100%{opacity:1;transform:translateZ(0) scale(1)}}@keyframes studioName{from{opacity:0;transform:translate3d(0,14px,0);letter-spacing:12px}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes gameReveal{from{opacity:0;transform:translateZ(0) scale(.68)}to{opacity:1;transform:translateZ(0) scale(1)}}
@media(max-width:600px){.studio-mark strong,.studio-mark em{font-size:14px;letter-spacing:5px}.game-mark strong,.game-mark em{font-size:52px}}

/* Identidade oficial Brasil Combat em uma marca única, legível em qualquer proporção. */
.brand-lockup{isolation:isolate}.brand-lockup img{display:block;height:auto;filter:drop-shadow(0 10px 14px #000a)}.game-mark{width:100%;height:82%;grid-template-rows:14% 1fr 14%;place-items:center}.game-mark small{align-self:end;margin:0;padding-bottom:8px;position:relative;z-index:2}
/* The logo fills its own grid row (never the raw viewport): vw/vh ignored how much the row actually got, which
   overflowed into the "PRESSIONE QUALQUER BOTÃO" prompt below on common windows/screens far from the game's
   1200×630 ratio (e.g. 1366×900) — .cabinet can scale .screen well under 100vh in those cases. */
.brand-lockup-splash{display:block;align-self:stretch;justify-self:center;min-height:0;min-width:0}.brand-lockup-splash .brand-primary-logo{width:auto;height:100%;max-width:100%;filter:drop-shadow(0 0 24px #d8b22b38) drop-shadow(0 12px 18px #000d)}.game-mark span{align-self:start;margin:8px 0 0;position:relative;z-index:2}#splashContinue{bottom:3%}
@media(max-height:600px){.game-mark{height:86%;grid-template-rows:12% 1fr 12%}.game-mark small{padding-bottom:4px}.game-mark span{margin-top:4px}#splashContinue{bottom:1%}}
@media(max-width:760px){.game-mark small{padding-bottom:4px}.game-mark span{margin-top:5px}}

/* Reflexo discreto no título textual do menu, sem competir com a arte da abertura. */
#home h1,#home h1 em{color:transparent;background-repeat:no-repeat;background-size:260% 100%;background-position:125% 0;-webkit-background-clip:text;background-clip:text;animation:homeTitleShine 5.2s ease-in-out infinite}#home h1{background-color:#e8ece9;background-image:linear-gradient(110deg,#e8ece9 0%,#e8ece9 39%,#fffbd1 46%,#e9ff59 50%,#fff 53%,#e8ece9 60%,#e8ece9 100%);filter:drop-shadow(0 4px 15px #000a)}#home h1 em{background-color:#efd187;background-image:linear-gradient(110deg,#d8b96e 0%,#efd187 39%,#fff8bd 46%,#e9ff59 50%,#fff 53%,#efd187 60%,#d8b96e 100%)}@keyframes homeTitleShine{0%,22%{background-position:125% 0}58%,100%{background-position:-45% 0}}@media(prefers-reduced-motion:reduce){#home h1,#home h1 em{animation:none;background-position:50% 0}}
.side-actions{position:absolute;right:4%;bottom:6%;display:flex;flex-direction:column;gap:10px;width:min(320px,36vw)}.side-actions>button{display:flex;flex-direction:column;gap:5px;padding:13px 15px;border:1px solid #75804466;border-left:2px solid var(--yellow);background:#09120dd1;box-shadow:0 8px 24px #0005;text-align:left;width:100%}.side-actions>button:hover{background:#121e12;border-color:var(--yellow);transform:translateY(-1px)}.side-actions>button span{color:var(--yellow);font-size:10px;font-weight:900;letter-spacing:1.2px}.side-actions>button b{color:#eef1e4;font-size:13px;font-weight:700;letter-spacing:.2px}.side-actions>button small{margin:0;color:#a2ae9b;font-size:10px;line-height:1.4;letter-spacing:.2px}.support-dev{position:relative;overflow:hidden;border-color:#ffd75e88;border-left-color:#ffd75e;background:#181605e8;box-shadow:0 0 18px #ffd75e45,0 0 42px #e9ff5924,0 10px 28px #0008;animation:supportGlow 2.8s ease-in-out infinite}.support-dev::after{content:"";position:absolute;inset:-45%;pointer-events:none;background:linear-gradient(115deg,transparent 38%,#fff4a733 49%,transparent 60%);transform:translateX(-65%);animation:supportShine 3.8s ease-in-out infinite}.support-dev:hover{background:#272208;box-shadow:0 0 24px #ffd75e88,0 0 54px #e9ff5940,0 10px 30px #0009}.support-dev span{color:#ffe875;text-shadow:0 0 10px #ffd75e99}@keyframes supportGlow{50%{border-color:#ffe875cc;box-shadow:0 0 24px #ffd75e66,0 0 52px #e9ff5933,0 10px 28px #0008}}@keyframes supportShine{0%,55%{transform:translateX(-65%)}85%,100%{transform:translateX(65%)}}@media(prefers-reduced-motion:reduce){.support-dev,.support-dev::after{animation:none}}@media(max-width:600px){.side-actions{right:3%;width:min(240px,46vw);gap:6px}.side-actions>button{padding:9px 11px;gap:3px}.side-actions>button b{font-size:11px}.side-actions>button small{display:none}}
#support{z-index:8;background:#0a0d07f8;padding:3% 5%;align-items:flex-start;overflow:auto}.support-content{width:100%;max-width:760px;margin:auto}.support-header{margin:8px 0 16px}.support-header>span{display:block;color:var(--yellow);font-size:9px;letter-spacing:2px}.support-header h2{margin:5px 0 4px}.support-header p{margin:0;color:#8998a5;font-size:11px}.support-body{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:start;padding:16px;border:1px solid #40512e;background:#0f150ccc}.support-qr{display:grid;place-items:center;padding:12px;background:#fff}.support-qr canvas{display:block;width:180px;height:180px;image-rendering:pixelated}.pix-error{margin:0;width:180px;color:#333;font-size:10px;text-align:center}.support-info p{margin:0 0 12px;color:#aab6bf;font-size:11px;line-height:1.55}.pix-label{display:block;color:#8fa0ad;font-size:9px;font-weight:900;letter-spacing:1.2px;margin-bottom:5px}.pix-key-row{display:flex;gap:8px}#pixKeyText{flex:1 1 auto;min-width:0;padding:8px 10px;border:1px solid #354653;background:#081018;color:#edf1ec;font:12px/1.3 Arial;letter-spacing:.2px}#pixCopy{padding:8px 14px;font-size:10px;white-space:nowrap}#pixCopyStatus{display:block;margin:7px 0 0;color:#9ba895;font-size:10px}@media(max-width:650px){#support{padding:3% 4%}.support-body{grid-template-columns:1fr;justify-items:center;text-align:center;gap:14px}.support-info p{text-align:left}}
#community{z-index:8;background:#070e16f8;padding:3% 5%;align-items:flex-start;overflow:auto}.community-content{width:100%;max-width:920px;margin:auto}.community-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:8px 0 12px}.community-head h2{margin:0}.community-head p{margin:5px 0 0;color:#8998a5;font-size:11px}.community-score{display:grid;padding:9px 13px;border:1px solid #40512e;background:#101a0d;text-align:right}.community-score b{color:var(--yellow);font-size:25px}.community-score span{font-size:7px;letter-spacing:1.3px;color:#91a078}.review-compose{margin-bottom:12px;padding:13px;border:1px solid #334452;background:#0b141dcc}.review-compose p{margin:0 0 10px;color:#aab6bf;font-size:11px}.review-fields{display:grid;grid-template-columns:1fr auto;gap:12px}.review-compose label,.recommend-choice>span{display:grid;gap:5px;color:#8fa0ad;font-size:8px;font-weight:900;letter-spacing:1.2px}.review-compose input,.review-compose textarea{width:100%;padding:8px 10px;border:1px solid #354653;background:#081018;color:#edf1ec;font:12px Arial}.review-compose textarea{min-height:75px;margin-top:5px;resize:vertical}.recommend-choice{display:grid;grid-template-columns:1fr 1fr;gap:5px}.recommend-choice>span{grid-column:1/-1}.recommend-choice button{padding:8px;font-size:9px}.recommend-choice button[aria-pressed="true"]{border-color:var(--yellow);background:#263416;color:var(--yellow)}.review-submit{display:flex;align-items:center;justify-content:space-between;gap:12px}.review-submit small{margin:0}.review-submit button{padding:9px 13px;font-size:9px}.community-list{display:grid;grid-template-columns:1fr 1fr;gap:9px}.community-list>p{grid-column:1/-1;padding:18px;border:1px dashed #334452;text-align:center;color:#82919d}.community-review{display:grid;grid-template-rows:auto 1fr auto;min-height:145px;padding:12px;border:1px solid #2d3b47;background:#0a121a}.community-review header{display:grid;grid-template-columns:1fr auto;gap:3px 8px}.community-review header b{color:#91e296;font-size:9px}.community-review[data-recommended="false"] header b{color:#e97a72}.community-review header strong{grid-row:2;font-size:11px}.community-review time{grid-row:1/3;grid-column:2;color:#697985;font-size:9px}.community-review p{white-space:pre-wrap;overflow-wrap:anywhere;color:#b9c4cc;font-size:11px;line-height:1.55}.community-review footer{text-align:right}.community-review footer button{padding:4px 6px;border:0;background:transparent;color:#687985;font-size:8px}.community-review footer button:not(:disabled):hover{color:#e97a72}@media(max-width:650px){#community{padding:3%}.community-head p{display:none}.review-fields{grid-template-columns:1fr}.community-list{grid-template-columns:1fr}.community-review{min-height:125px}}

/* Online room. */
/* Translucent, not the near-opaque flat fill this used to be: the arena (chosen stage + rain, already drawn
   on the game canvas behind every menu screen — see menuRainActive()/arena() in game.js) shows through
   instead of being hidden. Darker at the very top/bottom so the heading and the room-code/ready row stay
   readable; the open middle band is where the big versus portraits sit, which carry their own text-shadow. */
/* .overlay (the shared base class) never sets justify-content, so its one child (.online-content) just packs
   to the flex row's start (left) whenever its max-width caps it below the available width — on a wide screen
   that left the whole online room, lobby included, hugging the left edge with a dead empty band on the right
   instead of actually being centered. */
/* Mesmo tratamento da tela de escolha de modo (#modeSelect): fundo fotográfico com o mesmo degradê, só troca
   a imagem. Vale apenas para o estado "escolhendo modo/buscando" — a lobby (:has(#onlineLobby) logo abaixo)
   mantém seu próprio fundo dedicado, intacto. */
#online{z-index:5;justify-content:center;--online-screen-bg:url("assets/ui/jogar online/fundo-saguao-industrial.webp");background:linear-gradient(180deg,#040912b0 0%,#0409124d 30%,#0409124d 62%,#040912d0 100%),var(--online-screen-bg) center 36%/cover no-repeat,radial-gradient(ellipse at 50% 35%,#1b2430 0%,#060a10 70%);padding:4% 6%}
/* Same fix #home already has: the 4% top padding above shrinks right along with the cabinet outside
   fullscreen (a short browser window), and the "Jogar online" heading's own font-size doesn't shrink nearly
   as fast — past a point that clips its top. A clamped minimum keeps real breathing room regardless. */
#online{padding-top:clamp(40px,6vh,64px);padding-bottom:clamp(40px,6vh,64px)}
/* Lobby only (mode-select keeps the live arena+rain behind it): a background made for this exact screen
   instead of reusing whatever stage happens to be loaded. Same vignette gradient as before, now layered over
   the image instead of over the canvas — listed first so it paints on top, for the same top/bottom legibility. */
#online:has(#onlineLobby:not([hidden])){background:linear-gradient(180deg,#05090ff2 0%,#05090f6e 16%,#05090f45 50%,#05090f6e 84%,#05090ff2 100%),url("assets/maps/Tela de escolhe de personagem.webp") center/cover no-repeat}
.online-content{width:100%;max-width:780px}
.online-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:8px 0 14px}.online-heading h2{margin:0;text-shadow:0 3px 18px #000c}.online-heading p{margin:4px 0 0;color:#cdd6de;font-size:11px;text-shadow:0 1px 8px #000d}.online-count{display:grid;grid-template-columns:auto auto;align-items:center;column-gap:6px;padding:8px 12px;border:1px solid #344452;background:#0b141dd9}.online-count i{grid-row:span 2;width:8px;height:8px;background:#8d9a84;box-shadow:0 0 10px #8d9a84}.online-count b{font-size:17px;color:var(--yellow)}.online-count span{margin:0;font-size:7px;letter-spacing:1.5px}
/* Once you're already in the lobby, how many players are online elsewhere stops being useful — it was only
   ever relevant while still picking a mode/searching for a match. */
#online:has(#onlineLobby:not([hidden])) .online-count{display:none}
/* Cards de modo (Partida Rápida/Salas Públicas/Sala Privada): mesma receita visual do .mode-card da tela de
   escolha de modo (arte de fundo + degradê inferior pro texto + borda/brilho coloridos ao passar o mouse), só
   mesmo dimensionamento (3:4, altura limitada pelo container), só ativo enquanto a lobby não está aberta. */
#online:not(:has(#onlineLobby:not([hidden]))){container-type:size;--mode-gap:clamp(14px,2.2cqw,34px)}
#online:not(:has(#onlineLobby:not([hidden]))) .online-content{max-width:none}
.online-modes{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;gap:var(--mode-gap,clamp(10px,1.6vw,20px))}
.online-mode{--online-color:#ffd75e;--online-glow:#ffd75e66;--online-tint:#3a2a06;position:relative;overflow:hidden;display:flex;height:min(68cqh,540px,calc((100cqw - 2*var(--mode-gap,20px))*4/9));aspect-ratio:3/4;flex-direction:column;justify-content:flex-end;gap:6px;align-items:flex-start;text-align:left;padding:14px;background:#0b1219;border:1px solid #ffffff2b;border-bottom:3px solid var(--online-color);box-shadow:0 14px 34px #0009;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.online-mode .online-art{position:absolute;inset:0;background:var(--online-art,none) 50% 45%/cover no-repeat,linear-gradient(160deg,var(--online-tint) 0%,#0b1219 70%);transition:transform .6s ease}
.online-mode::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#04091200 30%,#040912cc 72%,#040912f2 100%);pointer-events:none}
.online-mode>:not(.online-art){position:relative;z-index:2}
#quickMode{--online-art:url("assets/ui/jogar online/Entrada Neon ao Octógono.webp")}
#publicMode{--online-art:url("assets/ui/jogar online/Arena Subterrânea Neon Brasileira.webp");--online-color:#4fc3ff;--online-glow:#4fc3ff66;--online-tint:#06273a}
#privateMode{--online-art:url("assets/ui/jogar online/Arena Subterrânea Brasileira sob Luz Dourada.webp");--online-color:#ff8a2b;--online-glow:#ff8a2b66;--online-tint:#3a1c06}
.online-mode b{font-size:clamp(14px,1.6vw,19px);color:#fff;font-weight:900;letter-spacing:.5px;text-shadow:0 2px 12px #000d}
.online-mode b::after{content:"";display:block;width:36px;height:3px;margin-top:7px;background:var(--online-color)}
.online-mode span{flex:none;margin:0;color:#cdd6de;font-size:10px;line-height:1.5;text-shadow:0 1px 8px #000d}
.online-mode em{color:var(--online-color);font-size:9px;font-style:normal;font-weight:900;text-shadow:0 1px 8px #000d}
.online-mode:hover,.online-mode:focus-visible{color:#fff;transform:translateY(-6px);border-color:var(--online-color);box-shadow:0 22px 44px #000b,0 0 30px var(--online-glow)}
.online-mode:hover .online-art,.online-mode:focus-visible .online-art{transform:scale(1.06)}
@media(prefers-reduced-motion:reduce){.online-mode,.online-mode .online-art{transition:none}}
.online-panel{border:1px solid #344452;border-top:3px solid #ffd75e;background:#0a121ad9;padding:15px}
#onlineQuick.online-panel{border-top-color:#ffd75e}
#onlinePublic.online-panel{border-top-color:#4fc3ff}
#onlinePrivate.online-panel{border-top-color:#ff8a2b}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.panel-head span{font-size:8px;letter-spacing:1.5px;color:var(--yellow)}.panel-head h3{margin:3px 0 0;font-size:18px;letter-spacing:-.5px}.panel-head button{padding:7px 9px;font-size:9px}.private-options,.public-actions{display:flex;align-items:center;gap:10px}.private-options{justify-content:space-between}.queue-box{display:flex;align-items:center;flex-direction:column;padding:12px;text-align:center}.queue-box strong{font-size:15px}.queue-box small{margin:6px 0 13px}.queue-radar{position:relative;width:50px;height:50px;margin-bottom:10px;border:1px solid #425464;border-radius:50%}.queue-radar i{position:absolute;inset:50%;width:5px;height:5px;margin:-2px;background:var(--yellow);border-radius:50%}.queue-radar i:nth-child(2){transform:translate(16px,-9px)}.queue-radar i:nth-child(3){transform:translate(-15px,12px)}.queue-radar[data-searching="true"]{animation:queuePulse 1.1s infinite;box-shadow:0 0 25px #e9ff5930}@keyframes queuePulse{50%{transform:scale(1.1);border-color:var(--yellow)}}
.public-actions{margin-bottom:10px}.public-rooms{display:grid;gap:6px;max-height:190px;overflow:auto}.public-rooms>p{padding:18px;margin:0;border:1px dashed #344452;color:#8e9ba6;text-align:center;font-size:11px}.public-room{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:10px 12px;background:#101a23}.public-room span{margin:0}.public-room b,.public-room small{display:block}.public-room b{font-size:11px}.public-room small{margin:3px 0 0;font-size:8px}.public-room strong{font-size:9px;color:var(--yellow)}
.join-row{display:flex;gap:8px}
#joinCode{font:inherit;font-size:20px;letter-spacing:6px;text-transform:uppercase;width:170px;padding:10px 12px;background:#0e1622;color:var(--yellow);border:1px solid #4d5340}
.room-code{font-size:14px;letter-spacing:2px;color:var(--muted)}
.room-code b{font-size:34px;letter-spacing:10px;color:var(--yellow);margin-left:10px}
/* Versus row: both live portraits plus the PRONTO button, all in one compact strip right above the pick grid
   — small on purpose, so the whole lobby fits a normal windowed browser without scrolling. Selection feedback
   lives entirely here: a colored glow halo (--tab-color, set per pick in renderLobby()) behind the silhouette
   instead of a border on the small grid tiles below, which stay plain, neutral pick buttons. A pulse on the
   glow (not a box-shadow) is the fix for "hard to notice what the opponent picked" — pulseVersus() in game.js
   restarts it only on the side whose pick/ready state actually changed since the last render. */
.versus-row{display:flex;align-items:center;justify-content:center;gap:16px;max-width:620px;margin:0 auto 14px}
.versus-hero{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}
.versus-hero::before{content:"";position:absolute;top:40%;left:50%;width:80%;aspect-ratio:1;max-width:150px;transform:translate(-50%,-50%);background:radial-gradient(circle,var(--tab-color,#4a5568) 0%,transparent 70%);filter:blur(22px);opacity:.4;transition:opacity .35s ease;pointer-events:none;z-index:0}
.versus-hero canvas{position:relative;z-index:1;display:block;width:100%;max-width:120px;height:auto;filter:drop-shadow(0 8px 12px #00000090)}
/* Direction is chosen by renderOnlinePortrait: dedicated busts carry their own left/right pose, while legacy
   sheets are mirrored in the canvas fallback. Keeping the canvas itself untransformed avoids double flips. */
.versus-hero[data-empty="true"]::before{opacity:.12}
.versus-hero[data-ready="true"]::before{opacity:.7;background:radial-gradient(circle,var(--yellow) 0%,transparent 70%)}
.versus-plate{position:relative;z-index:1;width:100%;max-width:150px;display:flex;flex-direction:column;align-items:center;gap:1px;margin-top:-2px;text-align:center}
.versus-plate b{font-size:12px;color:#fff;font-weight:900;text-shadow:0 2px 10px #000d,0 0 20px #0009;letter-spacing:.3px}
.versus-plate small{margin:0;color:#b9c2cb;font-size:7px;letter-spacing:1.2px;font-weight:800;text-shadow:0 1px 6px #000d}
.versus-plate small[data-ready="true"]{color:var(--yellow)}
/* Center column: PRONTO sits between the two portraits instead of on its own row below them — the one action
   that matters most once both picks are visible, right where the eye already is. */
.versus-center{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px}
.versus-vs{color:var(--muted);font-size:10px;font-weight:900;letter-spacing:2px}
.versus-center #onlineReady{min-width:190px}
.versus-center small{max-width:190px;margin:0;color:#87949c;font-size:9px;line-height:1.3;text-align:center}
@keyframes versusPulse{0%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes versusGlowPulse{0%{opacity:1;filter:blur(16px)}100%{filter:blur(22px)}}
.versus-pulse{animation:versusPulse .45s cubic-bezier(.22,1.4,.4,1)}
/* Duelo local (24/10/2026): mesma ficha do lobby online, só que clicável — cada lado é o próprio seletor de
   quem o próximo clique no roster escolhe, sem precisar do antigo botão "ESCOLHENDO". button.versus-hero (só
   os dois botões do duelo local) zera o chrome padrão de <button> do topo do arquivo sem tocar nos
   .versus-hero div/section do lobby online. */
button.versus-hero{background:transparent;border:0;padding:0;font:inherit;color:inherit;cursor:pointer}
button.versus-hero:hover:not([aria-pressed="true"]) .versus-plate b{color:var(--yellow)}
.versus-hero[aria-pressed="true"]::before{opacity:.85;background:radial-gradient(circle,var(--yellow) 0%,transparent 70%)}
.versus-hero[aria-pressed="true"] .versus-plate small{color:var(--yellow)}
.versus-pulse::before{animation:versusGlowPulse .6s ease-out}
/* Kept narrow and centered on purpose: the content column grew wide for the versus portraits above, but a
   roster strip stretched that wide would blow each tile up again — the exact "quadrinhos gigantes" complaint,
   just spread across one row instead of two. auto-fit with a small minmax keeps tiles icon-sized and wraps
   to a second row on its own once more fighters are added, instead of needing this edited by hand again. */
.online-picks{max-width:620px;margin:0 auto 18px}
.online-picks span{display:block;font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:6px;text-align:center}
.pick-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:6px}
#roster{grid-template-columns:repeat(5,minmax(0,1fr))}
/* Picking only — no "SELECIONADO" badge/border here anymore. That feedback moved entirely to the big versus
   portrait's glow above, which is the one place it reads clearly instead of competing across six tiles. */
.online-fighter{position:relative;overflow:hidden;padding:0;background:#101923;text-align:center}.online-fighter canvas{width:100%;height:auto;aspect-ratio:180/125}.online-fighter strong{display:block;padding:4px 3px;background:#0a1118;font-size:9px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.online-fighter.locked{cursor:not-allowed}.online-fighter.locked canvas{filter:grayscale(.5) brightness(.6)}
/* Yellow = your pick, green = ready — the frame-color convention most fighting games use on a gamepad select
   screen (confirm once to pick, confirm again on the same portrait to ready, no separate button to reach).
   The big versus portrait's glow already carries this info too; this repeats it on the grid tile itself,
   which is what a gamepad player's eyes are actually on while moving the d-pad between portraits. inset
   box-shadow instead of a real border so the tile's size never shifts when the state changes. */
.online-fighter[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--yellow)}
.online-fighter.ready[aria-pressed="true"]{box-shadow:inset 0 0 0 2px #4ade80}
.online-fighter .badge{position:absolute;top:5px;left:5px;z-index:1;background:#0009;color:#efd187;border:1px solid #efd187;padding:3px 5px;font-weight:900;font-size:7px;letter-spacing:.3px}
/* Roster teaser for fighters that only have a reference photo so far (no approved sheet, no moves — see
   docs/REGRA-CRIACAO-ASSETS-PERSONAGENS.md): shown dimmed/locked in both selectors, never a real pick. Each
   reference sheet is a 4x2 pose grid at the same aspect ratio as the whole sheet, so cropping to the existing
   tile shape (object-fit:cover, anchored top) reliably lands on the first pose without per-character tuning.*/
.coming-soon{cursor:not-allowed}
.coming-soon-thumb{width:100%;background-repeat:no-repeat;background-position:0 0;background-size:400% auto;filter:grayscale(.8) brightness(.45) contrast(1.1)}
.fighter.coming-soon .coming-soon-thumb{aspect-ratio:1.35}
.online-fighter.coming-soon .coming-soon-thumb{aspect-ratio:180/125}
#onlineLobby[data-mode="quick"] .online-local{padding:15px 16px 17px;border:1px solid #34414a;background:linear-gradient(180deg,#101922,#0a1118);box-shadow:0 14px 32px #0005}
#onlineLobby[data-mode="quick"] .online-local>span{color:#dce3e7;font-weight:800}
#onlineLobby[data-mode="quick"] #onlineReady{min-width:210px}
#onlineStatus{min-height:1.4em;color:#efd187;font-size:13px}
/* Both are redundant once the lobby itself is open — the versus portraits already show who the opponent is
   and whether they're ready, and the controls/disconnect notice is the kind of thing to read once, before
   picking, not clutter under the grid every time. They're still needed for every other online screen (room
   codes, search status, errors), so this only hides them while #onlineLobby is the thing actually showing. */
#onlineLobby:not([hidden])~#onlineStatus,#onlineLobby:not([hidden])~.help-tip{display:none}
#onlineClose{font-size:11px;padding:8px 12px}
@media(max-width:760px){#online{padding:3% 4%;align-items:flex-start}.online-modes{grid-template-columns:1fr;gap:10px}.online-mode{height:auto;aspect-ratio:16/7;padding:10px}.online-heading p{display:none}.private-options{align-items:stretch;flex-direction:column}.room-code b{font-size:24px}
 /* Stacked, not side by side: portrait, then PRONTO, then the other portrait — still the same left/center/right
    order as the wide layout, just running top to bottom instead of left to right. */
 .versus-row{flex-direction:column;gap:8px}.versus-hero canvas{max-width:170px}.online-picks{max-width:none}.versus-center{width:100%}.versus-center #onlineReady,#onlineLobby[data-mode="quick"] #onlineReady{width:100%}}
@media(max-width:760px){#roster{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Character-select cursors: P1 and P2/CPU stay independent. */
.fighter.p1{box-shadow:inset 0 0 0 1px #efd187,0 0 16px #efd18755}
.fighter.p2{box-shadow:inset 0 0 0 1px #83ceff,0 0 16px #83ceff55}
.fighter.p1.p2{box-shadow:inset 0 0 0 1px #fff3bd,0 0 13px #efd18799,0 0 25px #83ceff77}
.fighter.selection-active{z-index:1;animation:fighterSelectGlow 1s ease-in-out infinite alternate;transform:translateY(-2px)}
.fighter.selection-active canvas{filter:brightness(1.1) saturate(1.08)}
@keyframes fighterSelectGlow{from{outline:2px solid #ffffff90;outline-offset:1px}to{outline:3px solid #fff4b8;outline-offset:4px;filter:brightness(1.08)}}
/* Online ranking tab (#ranking), nickname line on the online screen, rating change after a match. */
#ranking{z-index:5;background:#080f19f5;padding:3% 5%;align-items:flex-start}
.ranking-content{width:100%;max-width:980px;margin:auto}
.ranking-head{display:flex;align-items:flex-end;justify-content:space-between;margin:4px 0 14px}.ranking-head h2{margin:0}
.ranking-layout{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}
.rank-profile{display:grid;gap:7px;padding:14px;border:1px solid #354151;border-top:2px solid var(--yellow);background:#0b141dcc}
.rank-profile-label,.rank-profile label{font-size:9px;font-weight:900;letter-spacing:1.4px;color:#efd187}
.rank-profile-card{display:grid;gap:4px;padding:10px 0 12px;border-bottom:1px solid #27313b;margin-bottom:4px}
.rank-profile-card strong{font-size:20px;color:#f0f3e8}.rank-profile-card small{margin:0;font-size:11px;color:#aeb9c4;line-height:1.5}
.rank-profile-card b{color:var(--yellow);font-size:28px}
#rankName{font:inherit;font-size:14px;width:100%;min-width:0;padding:8px 10px;background:#0e1622;color:var(--yellow);border:1px solid #4d5340}
#rankNameStatus{margin:0;font-size:10px;color:#9eabb6;line-height:1.5}
.rank-rules{margin:6px 0 0;font-size:10px;line-height:1.6;color:#7f8e9b}
.rank-table-wrap{max-height:430px;overflow:auto;border:1px solid #2a3140;background:#0b141dcc}
.rank-table{width:100%;border-collapse:collapse;font-size:12px}
.rank-table th{position:sticky;top:0;background:#101a26;color:#8fa0ae;font-size:9px;letter-spacing:1.3px;text-align:left;padding:9px 10px;font-weight:900}
.rank-table td{padding:8px 10px;border-top:1px solid #1f2a35;color:#c3ccd4;white-space:nowrap}
.rank-table td:nth-child(1){color:var(--yellow);font-weight:900;width:44px}.rank-table td:nth-child(2){color:#f0f3e8;font-weight:700;white-space:normal}
.rank-table td:nth-child(3){color:#f0f3e8;font-weight:900}.rank-table th:nth-child(n+3),.rank-table td:nth-child(n+3){text-align:right}
.rank-table tr.rank-first td:nth-child(-n+2){color:#ffd45d}.rank-table tr.rank-mine td{background:#e9ff5914}
.rank-table .rank-empty{text-align:left!important;color:#8191a0;white-space:normal;padding:14px 10px}
.rank-name{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding:8px 12px;border:1px solid #293744;background:#09121b;font-size:11px;color:#c3ccd4}
.rank-name button{padding:7px 10px;font-size:10px;white-space:nowrap}
.rank-result{font-size:14px;color:var(--yellow);min-height:1em}
.rank-account{display:grid;gap:7px}.rank-account small{margin:0;font-size:11px;color:#aeb9c4;line-height:1.5;overflow-wrap:anywhere}.rank-account small:empty{display:none}
.rank-nick{display:grid;gap:7px}
@media(max-width:760px){.ranking-layout{grid-template-columns:1fr}.rank-table-wrap{max-height:none}}
#menu{z-index:2}
/* Settings fit shorter windows (e.g. 1366×768 laptops) without scrolling. */
@media(max-height:760px){#settings{padding-top:2vh;padding-bottom:2vh}#settings h2{font-size:clamp(24px,5vh,40px);margin:2px 0 8px}.settings-list{gap:4px}.setting{padding-top:4px;padding-bottom:4px}.setting select{padding-top:5px;padding-bottom:5px}.setting .toggle{padding-top:5px;padding-bottom:5px}#settings .help-tip{margin:6px 0 0}}
/* The lobby (versus portraits + ready row + pick grid, stacked under the heading) is taller than every other
   online screen. #online inherits .overlay's align-items:center, which is fine while content fits, but once
   it doesn't, centering pushes the top half above the visible area with no way to scroll back up to it — the
   heading goes missing. This isn't just a short-window thing: the cabinet locks to the 1200/630 aspect ratio,
   so a wide-but-not-very-tall window (common unmaximized size) width-constrains the cabinet to a shorter
   height than the window itself, and .screen's overflow:hidden then clips anything centered above that
   shorter box even though the browser viewport had room. Anchoring to the top (same escape hatch the
   max-width:760px mobile rule below already uses) sidesteps all of that: the heading always sits right after
   the padding-top, exactly like #home, and the rest below is free to scroll instead of stealing room from it. */
#online:has(#onlineLobby:not([hidden])){align-items:flex-start}
/* On top of always anchoring to the top (above), pull the hero portraits in tighter on short cabinets so the
   ready button and pick grid need less scrolling to reach. */
@media(max-height:820px){.online-heading{margin:4px 0 10px}.versus-row{margin:0 auto 10px}.online-picks{margin:0 auto 10px}}

/* Lobby final composition: the marked side areas are the two fighter stages. The center stays reserved for
   VS/PRONTO and the roster remains in a compact strip below, so the portraits no longer compete with it. */
#online .menu-top{position:relative;justify-content:center;padding-bottom:clamp(14px,2.2vw,24px)}
#online .menu-top>span{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:clamp(18px,2.4vw,30px);font-weight:900;letter-spacing:3px}
#online .menu-top>button{position:absolute;right:0}
#online:has(#onlineLobby:not([hidden])) .online-content{max-width:none;width:100%;height:100%;display:flex;flex-direction:column}
#online:has(#onlineLobby:not([hidden])) .online-heading{display:none}
#online:has(#onlineLobby:not([hidden])) #onlineLobby{display:flex;flex:1 1 auto;min-height:0;width:100%;flex-direction:column}
#online:has(#onlineLobby:not([hidden])) .room-code{flex:0 0 auto;margin:0 0 4px;text-align:center}
/* Fixed, mirrored geometry. Everything below depends only on the viewport, never on who is picked:
   --picks-w   width of the roster panel (.online-picks), the reference axis, centered on the screen;
   --bust-w    canvas width of the big bust; the card overlaps the canvas by --bust-w/6 so the bust base touches it;
   --plate-*   fixed card size and its minimum gap to the roster panel;
   --side-offset  distance from the row edge to each card: the bust stays flush with the outer edge when the card
                  clears the panel by --plate-gap, otherwise both cards move outward by the same amount. */
#online:has(#onlineLobby:not([hidden])) #onlineLobby{--picks-w:min(680px,100%);--bust-w:min(40.8vw,432px);--plate-w:260px;--plate-h:92px;--plate-gap:16px;--side-offset:min(calc((var(--bust-w) - var(--plate-w))/2),calc(50% - var(--picks-w)/2 - var(--plate-gap) - var(--plate-w)))}
#online:has(#onlineLobby:not([hidden])) .versus-row{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:none;min-height:0;height:clamp(480px,62vh,600px);flex:0 0 auto;margin:0}
#online:has(#onlineLobby:not([hidden])) .versus-hero{position:absolute;top:0;width:var(--plate-w);height:100%;justify-content:center;align-items:center;margin:0;padding:0}
#online:has(#onlineLobby:not([hidden])) #myHero{left:var(--side-offset)}
#online:has(#onlineLobby:not([hidden])) #onlineOpponentPanel{right:var(--side-offset)}
#online:has(#onlineLobby:not([hidden])) .versus-hero::before{width:min(32vw,420px);max-width:420px}
#online:has(#onlineLobby:not([hidden])) .versus-hero canvas{flex:0 0 auto;width:calc(var(--bust-w)*1.25);max-width:none;height:auto}
#online:has(#onlineLobby:not([hidden])) .versus-plate{flex:0 0 auto;width:100%;max-width:none;height:var(--plate-h);margin-top:calc(var(--bust-w)/-6);overflow:hidden;padding:10px 16px;border:1px solid #ffffff2b;border-top:2px solid var(--tab-color,#4a5568);background:linear-gradient(145deg,#080f17dc,#111a24c7);box-shadow:0 12px 28px #0007;align-items:flex-start;text-align:left}
#online:has(#onlineLobby:not([hidden])) #myHero .versus-plate,#online:has(#onlineLobby:not([hidden])) #onlineOpponentPanel .versus-plate{transform:none}
#online:has(#onlineLobby:not([hidden])) .versus-plate>*{max-width:100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#online:has(#onlineLobby:not([hidden])) .versus-plate b{font-size:clamp(18px,1.7vw,27px);line-height:1.05;letter-spacing:.5px}
#online:has(#onlineLobby:not([hidden])) .versus-archetype{display:block;margin-top:5px;color:var(--tab-color,#b9c2cb);min-height:11px;font-size:9px;font-weight:900;letter-spacing:1px;line-height:1.2}
#online:has(#onlineLobby:not([hidden])) .versus-plate small{margin-top:7px;font-size:8px;letter-spacing:1.4px}
/* Ready state: the card under the bust gets the same pulsing gold glow + sweeping shine as the home menu's
   "Apoie o desenvolvimento" card (.support-dev), reusing its supportGlow/supportShine keyframes. Only colors,
   box-shadow and a clipped ::after change, so the card's size and position stay fixed. */
#online:has(#onlineLobby:not([hidden])) .versus-hero[data-ready="true"] .versus-plate{border-color:#ffd75e88;border-top-color:#ffd75e;background:#181605e8;box-shadow:0 0 18px #ffd75e45,0 0 42px #e9ff5924,0 10px 28px #0008;animation:supportGlow 2.8s ease-in-out infinite}
#online:has(#onlineLobby:not([hidden])) .versus-hero[data-ready="true"] .versus-plate::after{content:"";position:absolute;inset:-45%;pointer-events:none;background:linear-gradient(115deg,transparent 38%,#fff4a733 49%,transparent 60%);transform:translateX(-65%);animation:supportShine 3.8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){#online:has(#onlineLobby:not([hidden])) .versus-hero[data-ready="true"] .versus-plate,#online:has(#onlineLobby:not([hidden])) .versus-hero[data-ready="true"] .versus-plate::after{animation:none}}
#online:has(#onlineLobby:not([hidden])) .versus-center{width:230px}
#online:has(#onlineLobby:not([hidden])) .online-picks{flex:0 0 auto;width:var(--picks-w);max-width:680px;margin:34px auto 12px}
/* Short desktop windows need a smaller side card so the name never collides with the roster. */
@media(max-height:820px) and (min-width:761px){
 #online:has(#onlineLobby:not([hidden])) .versus-row{height:clamp(420px,58vh,500px)}
 #online:has(#onlineLobby:not([hidden])) #onlineLobby{--picks-w:min(640px,100%);--bust-w:min(36vw,360px);--plate-w:240px}
 #online:has(#onlineLobby:not([hidden])) .online-picks{max-width:640px;margin-top:16px}
}
@media(max-width:760px){
 #online .menu-top{position:relative;justify-content:center;padding-bottom:clamp(14px,2.2vw,24px)}
 #online .menu-top>span{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:clamp(18px,2.4vw,30px);font-weight:900;letter-spacing:3px}
 #online .menu-top>button{position:absolute;right:0}
 #online:has(#onlineLobby:not([hidden])) .online-content{height:auto}
 #online:has(#onlineLobby:not([hidden])) #onlineLobby{display:block}
 #online:has(#onlineLobby:not([hidden])) .versus-row{display:flex;flex-direction:column;gap:8px;min-height:0;margin:0 auto 10px}
 #online:has(#onlineLobby:not([hidden])) .versus-row{position:static}
 #online:has(#onlineLobby:not([hidden])) .versus-hero{position:relative;top:auto;left:auto!important;right:auto!important;width:100%;height:auto;align-items:center}
 #online:has(#onlineLobby:not([hidden])) .versus-hero canvas{width:255px;max-width:255px;align-self:center}
 #online:has(#onlineLobby:not([hidden])) .versus-plate{width:min(100%,300px);max-width:300px;height:auto;min-height:74px;margin-top:-34px}
 #online:has(#onlineLobby:not([hidden])) .online-picks{width:100%;max-width:none;margin-top:12px}
}
#legal{z-index:21;display:flex;overflow:hidden;padding:2.5% 5%;background:linear-gradient(160deg,#0d1116,#05080c)}.legal-content{display:flex;flex-direction:column;width:100%;max-width:860px;height:100%;min-height:0;margin:auto}.legal-content>header{flex:0 0 auto;display:block;margin:4px 0 20px;text-align:center}.legal-content>header>span{display:block;color:var(--yellow);font-size:10px;letter-spacing:3px;font-weight:bold}.legal-content>header h2{margin:8px 0 6px;color:#fff;font-size:clamp(28px,4.6vw,44px);letter-spacing:-1.5px;font-weight:900}.legal-content>header h2 em{font-style:normal;color:var(--yellow)}.legal-content>header p{margin:0;color:#8c9980;font-size:11px;letter-spacing:.4px}.legal-grid{flex:1 1 auto;min-height:0;overflow-y:auto;padding:4px 18px 10px;border-top:1px solid #2b3024;border-bottom:1px solid #2b3024;scrollbar-color:#4d5340 #0b0e09;scrollbar-width:thin;display:grid;grid-template-columns:1fr 1fr;gap:2px 32px;align-content:start}.legal-grid article{padding:16px 0 16px 16px;border-left:2px solid var(--yellow);background:#0b0e0966}.legal-grid h3{margin:0 0 9px;color:var(--yellow);font-size:10px;letter-spacing:1.6px;text-align:left;font-weight:900}.legal-grid p{margin:7px 0;color:#b9c2ac;font-size:11px;line-height:1.65;text-align:left}.legal-grid a{color:var(--yellow)}.legal-note{flex:0 0 auto;margin:12px 0 10px;color:#6c7568;font-size:9px;text-align:center}.legal-actions{flex:0 0 auto;text-align:center}.legal-actions button{min-width:240px}@media(max-width:650px){#legal{padding:3% 4%}.legal-content>header{margin-bottom:12px}.legal-content>header h2{font-size:24px}.legal-grid{padding:2px 8px 8px;grid-template-columns:1fr;gap:2px}.legal-grid article{padding:12px 0 12px 12px}.legal-grid p{font-size:10px;line-height:1.55}.legal-note{margin:6px 0;font-size:8px}.legal-actions button{padding:10px 16px;min-width:0;width:100%}}
.cabinet-foot{display:none}.cabinet{width:min(100vw,calc(100dvh*1200/630))}.cabinet:fullscreen .screen{width:min(100vw,calc(100dvh*1200/630))}
/* Tela cheia preserva a proporção real do jogo. O canvas de fundo preenche as
   faixas que sobram, sem cortar HUD, personagens ou projéteis. */
.cabinet:fullscreen .screen{width:100vw;height:100dvh;aspect-ratio:auto}
.cabinet:fullscreen #fullscreenBackdrop{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(2px) saturate(.9);transform:scale(1.03);z-index:0}
.cabinet:fullscreen canvas#game{object-fit:cover;object-position:center;position:relative;z-index:1;background:transparent}
/* The Fullscreen API and F11 use different browser states. Keep the outer layout locked to the
   viewport in both cases while the gameplay canvas remains a centered 1200x630 composition. */
html.is-fullscreen,html.is-fullscreen body,html.is-fullscreen main{width:100vw!important;height:100dvh!important;min-width:0;min-height:0;margin:0;padding:0;overflow:hidden}
html.is-fullscreen main{max-width:none;display:flex;align-items:center;justify-content:center}
html.is-fullscreen .cabinet{width:100vw!important;height:100dvh!important;max-width:none;padding:0;border:0;box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center}
html.is-fullscreen .cabinet .screen{width:100vw!important;height:100dvh!important;max-width:none;max-height:none;aspect-ratio:auto;flex:0 0 auto}
html.is-fullscreen #fullscreenBackdrop{display:block;position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover;filter:blur(2px) saturate(.9);transform:scale(1.03);z-index:0}
html.is-fullscreen canvas#game{width:100%!important;height:100%!important;object-fit:cover;object-position:center;position:relative;z-index:1;background:transparent}

/* The visual-only backdrop is hidden during normal play and sits behind the
   centered fullscreen gameplay canvas. */
#fullscreenBackdrop{display:none;position:absolute;inset:0;pointer-events:none}
html.is-fullscreen #fullscreenBackdrop,.cabinet:fullscreen #fullscreenBackdrop{display:block}

/* Corner button that opens the match menu during a fight (mouse/touch; ESC and Back/Select do the same). */
#fightMenuButton{position:absolute;right:12px;bottom:12px;z-index:3;width:38px;height:38px;padding:0;font-size:13px;letter-spacing:-1px;background:#0b1016b3;border:1px solid #ffffff33;color:#e8ecef;opacity:.7}
#fightMenuButton:hover,#fightMenuButton:focus-visible{opacity:1;border-color:var(--yellow)}

/* Arena choice (#stageSelect): the chosen arena previews live on the canvas behind this light overlay. */
#stageSelect{z-index:4;background:linear-gradient(180deg,#040912e8 0%,#04091270 38%,#04091270 55%,#040912f2 100%);padding:3% 6%;align-items:flex-end}
.stage-content{width:100%;max-width:1060px;margin:0 auto}
#stageSelect h2{margin:4px 0 2px}.stage-hint{margin:0 0 12px;font-size:11px;color:#aeb9c4}
.stage-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.stage-card{display:grid;gap:3px;padding:6px 6px 9px;text-align:left;background:#0b1219d9;border:1px solid #ffffff26;color:#eef1f4}
.stage-card .stage-art{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;background:#101a26;margin-bottom:4px}
.stage-card span.stage-art{display:grid;place-items:center;font-size:42px;font-weight:900;color:var(--yellow)}
.stage-card strong{font-size:13px;letter-spacing:.3px}.stage-card small{font-size:10px;color:#9eabb6}
.stage-card[aria-pressed="true"]{border-color:var(--yellow);box-shadow:0 0 0 2px var(--yellow) inset;background:#1a1f14e6}
.stage-card:hover,.stage-card:focus-visible{border-color:#ffe28a}
.stage-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
#stageName{font-size:18px;font-weight:900;letter-spacing:1px;color:var(--yellow)}
@media(max-width:760px){.stage-list{grid-template-columns:repeat(3,1fr)}.stage-card small{display:none}#stageName{font-size:13px}}

/* Player progression: home-screen badge, character-select bar, and the end-of-match reward summary (game.js). */
.player-badge{position:absolute;top:4%;right:4%;z-index:2;display:flex;flex-direction:column;gap:5px;width:min(220px,42vw);padding:10px 13px;border:1px solid #4d5340;border-top:2px solid var(--yellow);background:#101811d9;box-shadow:0 8px 24px #0005;text-align:left}
.player-badge:hover{border-color:var(--yellow)}
.player-badge-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.player-badge-name{font-size:11px;font-weight:900;color:#eef1e4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}
.player-badge-level{font-size:9px;font-weight:900;letter-spacing:1px;color:#141a0c;background:var(--yellow);padding:2px 6px}
.player-badge-bar,.progress-status-bar,.progress-result-bar{background:#0e1710;border:1px solid #34382c;overflow:hidden}
.player-badge-bar{height:6px}.player-badge-bar>i{display:block;height:100%;width:0%;background:var(--yellow);transition:width .4s ease}
.player-badge-exp{font-size:9px;color:#a2ae9b}
.player-badge-bc{font-size:11px;font-weight:900;color:#ffd75e;display:flex;align-items:center;gap:4px}
.player-badge-bc::before{content:"◆";font-size:9px}
@media(max-width:760px){.player-badge{top:2%;right:2%;width:min(158px,44vw);padding:7px 9px;gap:3px}.player-badge-exp{display:none}}

.progress-status{display:flex;align-items:center;gap:10px;margin-top:6px;padding:0;background:none;border:0;width:100%;text-align:left}
.progress-status:hover{border:0}
.progress-status-level{font-size:9px;font-weight:900;letter-spacing:1px;color:#141a0c;background:var(--yellow);padding:2px 6px;white-space:nowrap}
.progress-status-bar{flex:1;height:6px;min-width:60px}.progress-status-bar>i{display:block;height:100%;width:0%;background:var(--yellow);transition:width .4s ease}
.progress-status-text{font-size:10px;letter-spacing:1px;color:#c8cfb9;white-space:nowrap}

.progress-result{margin:10px auto 0;padding:12px 16px;max-width:360px;border:1px solid #4d5340;border-left:3px solid var(--yellow);background:#0e1710cc;text-align:center}
.progress-result strong{display:block;font-size:16px;color:var(--yellow);letter-spacing:.5px}
.progress-result .progress-levelup{display:inline-block;margin-top:6px;font-size:11px;font-weight:900;letter-spacing:1px;color:#141a0c;background:var(--yellow);padding:4px 8px;animation:levelUpPulse 1.1s ease-in-out infinite}
.progress-result-bar{display:block;height:8px;margin-top:9px}
.progress-result-bar>i{display:block;height:100%;width:0%;background:var(--yellow)}
.progress-result small{display:block;margin-top:6px;font-size:10px;color:#a2ae9b}
.progress-result.progress-result-error{border-left-color:#e06456}
.progress-result.progress-result-error strong{color:#e8917f}
@keyframes levelUpPulse{0%,100%{box-shadow:0 0 0 #ffd75e00}50%{box-shadow:0 0 16px #ffd75eaa}}

/* Character-select mode toggle: two buttons (was a <select>) so the current choice is always visible. */
.mode-toggle{display:flex;gap:6px;flex-wrap:wrap}
.mode-button{padding:10px 14px;font-size:11px;font-weight:900;letter-spacing:.4px;white-space:nowrap}
.mode-button[aria-pressed="true"]{background:var(--yellow);color:#18200c;border-color:var(--yellow)}
.mode-button[aria-pressed="true"]:hover{color:#18200c}
@media(max-width:760px){.mode-button{padding:8px 10px;font-size:10px}}

/* Loja (api/shop.js, net/progress.js): lutadores e cosméticos comprados só com BC. Molduras/título aparecem no
   selo do menu (.player-badge) e no perfil do ranking (.rank-profile-card); a cor da barra SUPER é aplicada no
   canvas por game.js (BAR_COLOR_HEX), não aqui. */
#shop{z-index:5;background:#080f19f5;padding:3% 5%;align-items:flex-start;overflow:auto}
.shop-content{width:100%;max-width:980px;margin:auto}
.shop-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:8px 0 14px}
.shop-head h2{margin:0}
.shop-balance{display:flex;align-items:baseline;gap:6px;padding:8px 14px;border:1px solid #354151;border-top:2px solid var(--yellow);background:#0b141dcc;font-size:13px;color:#8fa0ae}
.shop-balance b{font-size:20px;color:#ffd75e}
.shop-sections{display:grid;gap:16px}
.shop-section{padding:12px 14px;border:1px solid #2a3140;background:#0b141dcc}
.shop-section h3{margin:0 0 10px;font-size:11px;letter-spacing:1.4px;color:#8fa0ae;font-weight:900}
.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.shop-item{display:grid;gap:5px;padding:10px 12px;text-align:left;border:1px solid #354151;background:#101a26}
.shop-item:disabled{opacity:.5;cursor:not-allowed}
.shop-item:disabled:hover{border-color:#354151;color:inherit}
.shop-item strong{font-size:12px;color:#f0f3e8}
.shop-item-state{font-size:10px;color:#8fa0ae;letter-spacing:.4px}
.shop-item-equipped{border-color:var(--yellow)}
.shop-item-equipped .shop-item-state{color:var(--yellow)}
@media(max-width:760px){#shop{padding:3% 4%}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}

/* Molduras: mesmo item, mesma cor, no selo do menu e no perfil do ranking. */
.player-badge[data-frame],.rank-profile-card[data-frame]{border:2px solid transparent}
.player-badge[data-frame="frame_bronze"],.rank-profile-card[data-frame="frame_bronze"]{border-color:#c17a3d;box-shadow:0 0 10px #c17a3d4d}
.player-badge[data-frame="frame_prata"],.rank-profile-card[data-frame="frame_prata"]{border-color:#cfd8dd;box-shadow:0 0 12px #cfd8dd4d}
.player-badge[data-frame="frame_ouro"],.rank-profile-card[data-frame="frame_ouro"]{border-color:#ffd75e;box-shadow:0 0 16px #ffd75e70}
.rank-profile-card[data-frame]{padding:10px 12px 12px;margin-bottom:4px}
/* Título: chip pequeno ao lado do nome, no perfil do ranking. */
.rank-title{display:inline-block;margin-left:6px;padding:2px 6px;border:1px solid var(--yellow);color:var(--yellow);font-size:8px;font-weight:900;letter-spacing:1px;vertical-align:middle}
/* ---- Tela de escolha de modo (JOGAR) ----
   Arte entra por variáveis: trocar o arquivo (mesmo caminho) basta; se faltar, o gradiente de fallback aparece.
   Os cards seguem o tamanho do próprio .screen (proporção fixa 1200/630), não o da janela: #modeSelect é container
   de tamanho e a altura do card é o menor entre 68% da altura útil, 540px e o que cabe em três colunas na
   largura útil. Proporção fixa 3:4, independente do texto. Resoluções 16:9: 1280×720 → 322×430, 1366×768 →
   344×459, 1600×900 e 1920×1080 → 405×540. Janelas quase quadradas (ex.: 1024×768) encolhem em vez de cortar. */
#modeSelect{--mode-gap:clamp(14px,2.2cqw,34px);container-type:size;--mode-art-arcade:url("assets/ui/arcade/escada-fundo.webp");--mode-art-versus:url("assets/ui/versus/arena-fundo.webp");--mode-art-survival:url("assets/ui/sobrevivencia/arena-fundo.webp");--mode-screen-bg:url("assets/ui/modo-jogo/fundo-modos.webp");z-index:5;padding:3% 6%;justify-content:center;background:linear-gradient(180deg,#040912b0 0%,#0409124d 30%,#0409124d 62%,#040912d0 100%),var(--mode-screen-bg) center/cover no-repeat,radial-gradient(ellipse at 50% 35%,#1b2430 0%,#060a10 70%)}
.mode-content{width:100%;margin:auto;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2vh,22px)}
.mode-content .menu-top{width:100%;position:relative;justify-content:center}
#modeSelect .menu-top>span{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}
#modeSelect .menu-top>button{position:absolute;right:0}
#modeSelect h2{margin:0;text-align:center}
.mode-cards{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;gap:var(--mode-gap);width:100%}
.mode-card{--mode-color:#ffd75e;--mode-glow:#ffd75e66;--mode-tint:#3a2a06;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:6px;height:min(68cqh,540px,calc((100cqw - 2*var(--mode-gap))*4/9));aspect-ratio:3/4;padding:clamp(14px,1.5vw,22px);text-align:left;color:#fff;background:#0b1219;border:1px solid #ffffff2b;border-bottom:3px solid var(--mode-color);box-shadow:0 14px 34px #0009;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.mode-card[data-mode="arcade"]{--mode-art:var(--mode-art-arcade)}
.mode-card[data-mode="versus"]{--mode-art:var(--mode-art-versus);--mode-color:#e0413a;--mode-glow:#e0413a66;--mode-tint:#3a0d0d}
.mode-card[data-mode="survival"]{--mode-art:var(--mode-art-survival);--mode-color:#ff8a2b;--mode-glow:#ff8a2b66;--mode-tint:#3a1c06}
.mode-card .mode-art{position:absolute;inset:0;background:var(--mode-art,none) 50% 45%/cover no-repeat,linear-gradient(160deg,var(--mode-tint) 0%,#0b1219 70%);transition:transform .6s ease,filter .3s ease}
.mode-card::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#04091200 30%,#040912cc 72%,#040912f2 100%);pointer-events:none}
.mode-card>:not(.mode-art){position:relative;z-index:2}
.mode-card strong{font-size:clamp(18px,2vw,30px);font-weight:900;letter-spacing:1.2px;text-shadow:0 2px 12px #000d}
.mode-card strong::after{content:"";display:block;width:44px;height:3px;margin-top:8px;background:var(--mode-color)}
.mode-card small{margin:0;color:#cdd6de;font-size:clamp(10px,.95vw,14px);line-height:1.4;text-shadow:0 1px 8px #000d}
.mode-card .badge{position:absolute;top:12px;left:12px;z-index:3;padding:4px 8px;font-size:9px;font-weight:900;letter-spacing:.8px;background:#0009;color:#efd187;border:1px solid #efd187}
.mode-card:not(.locked) .badge{display:none}
.mode-card:hover,.mode-card:focus-visible{color:#fff}
.mode-card:not(.locked):hover,.mode-card:not(.locked):focus-visible,.mode-card:not(.locked)[data-pad-focus="true"]{transform:translateY(-8px);border-color:var(--mode-color);box-shadow:0 22px 44px #000b,0 0 30px var(--mode-glow)}
.mode-card:not(.locked):hover .mode-art,.mode-card:not(.locked):focus-visible .mode-art,.mode-card:not(.locked)[data-pad-focus="true"] .mode-art{transform:scale(1.06)}
.mode-card.locked{cursor:not-allowed}
.mode-card.locked:hover{border-color:#ffffff2b;border-bottom-color:var(--mode-color)}
.mode-card.locked .mode-art{filter:grayscale(.6) brightness(.6)}
@media(prefers-reduced-motion:reduce){.mode-card,.mode-card .mode-art{transition:none}}

/* Rumo ao Poder — salão do trono (game.js chama via showCampaignHall() antes de cada confronto).
   #campaignHall já herda position/inset/z-index de .overlay; só zera o padding/gradiente padrão porque a
   própria arte de fundo cobre a tela inteira aqui, sem o gradiente lateral escuro das outras overlays. */
#campaignHall{padding:0;background:#05070a;container-type:size}
#hallStage{position:absolute;inset:0;overflow:hidden}
#hallBg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
/* Camada de escurecimento radial, centrada no slot aceso (--spot-x/--spot-y) — nunca opaca, os detalhes do
   salão continuam visíveis em qualquer ponto da imagem, só mais fracos longe do holofote. */
#hallDarken{position:absolute;inset:0;background:radial-gradient(ellipse 48% 55% at var(--spot-x,50%) var(--spot-y,50%),rgba(0,0,0,0) 0%,rgba(0,0,0,.18) 40%,rgba(0,0,0,.42) 68%,rgba(0,0,0,.58) 100%)}
/* Camada de brilho dourado, separada do escurecimento — cobre personagem + plataforma + cenário ao redor via
   mix-blend-mode:screen (soma luz em vez de só pintar uma mancha atrás do personagem). */
#hallGlow{position:absolute;inset:0;mix-blend-mode:screen;background:radial-gradient(ellipse 30% 36% at var(--spot-x,50%) var(--spot-y,50%),#ffe9b3 0%,#ffd75e 22%,#c98a2e55 48%,transparent 72%);opacity:0;transition:opacity 1.6s ease;animation:hallSpotPulse 3.2s ease-in-out infinite}
#hallGlow.lit{opacity:.85}
@keyframes hallSpotPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}
.hallSlot{position:absolute;left:var(--spot-x,50%);top:var(--spot-y,50%);transform:translate(-50%,-2%) scale(var(--slot-scale,1));transform-origin:bottom center}
/* Estado oculto: silhueta preta sólida (igual ao resto do elenco já faz com filtros CSS/Canvas, ver a aura
   azul do Bolsonaro em game.js) + contorno dourado bem discreto via drop-shadow, não uma 2ª arte. */
.hallSlot canvas{display:block;filter:brightness(0) drop-shadow(0 0 3px #ffd75eaa) drop-shadow(0 0 7px #ffd75e55);transition:filter 1.6s ease}
.hallSlot.revealed canvas{filter:brightness(1) drop-shadow(0 0 10px #ffd75e33)}
.hallSlot.defeated canvas{filter:brightness(.55) saturate(.35) drop-shadow(0 0 4px #00000066)}
#hallCaption{position:absolute;left:50%;bottom:6%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;opacity:0;transition:opacity .8s ease}
#hallCaption.shown{opacity:1}
#hallOpponentName{font-size:clamp(20px,3vw,34px);font-weight:900;letter-spacing:-1px;color:#ffd75e;text-shadow:0 4px 20px #000c}
#hallStageLabel{font-size:11px;letter-spacing:2px;color:#d8c99a}
#hallFight{margin-top:6px}
@media(prefers-reduced-motion:reduce){#hallGlow{animation:none}}
@media(max-width:760px){
 #modeSelect{align-items:flex-start;padding:3% 4%}
 .mode-cards{grid-template-columns:1fr}
 .mode-card{width:100%;height:auto;aspect-ratio:16/7}
}
/* ---- Barra de dicas de entrada (hints.js) ----
   Rodapé discreto, sem caixas: ícone + palavra. Só o item "VOLTAR" é clicável (para quem usa mouse). Os botões
   quadrados de voltar saem do visual das telas já migradas SÓ enquanto a barra está ativa (:has); sem a barra
   (hints.js ausente) o botão continua visível e quem usa mouse não fica preso. Continuam no DOM: a barra os aciona. */
.hint-bar{position:absolute;right:3%;bottom:2.4%;z-index:30;display:flex;align-items:center;gap:clamp(14px,1.6vw,26px);padding:8px 14px 8px 30px;font-size:clamp(10px,.95vw,13px);font-weight:800;letter-spacing:1.4px;color:#d8dee4;text-shadow:0 1px 8px #000d;background:linear-gradient(270deg,#040912cc 0%,#040912cc 70%,transparent 100%);pointer-events:none}
.hint-bar[hidden]{display:none}
.hint-item{display:inline-flex;align-items:center;gap:8px}
button.hint-item{pointer-events:auto;cursor:pointer;background:none;border:0;padding:2px 4px;color:inherit;font:inherit;letter-spacing:inherit;box-shadow:none;transition:color .15s ease}
button.hint-item:hover,button.hint-item:focus-visible{background:none;border:0;color:var(--yellow);transform:none}
.hint-icon{display:block;flex:0 0 auto;width:clamp(18px,1.7vw,24px);height:auto}
.hint-key{display:inline-grid;place-items:center;min-width:2.4em;padding:3px 7px;border:1.5px solid #ffffff99;border-bottom-width:3px;border-radius:5px;font-size:.92em;color:#fff;background:#ffffff14}
.screen:has(#hintBar:not([hidden])) #modeSelect .menu-top>button{display:none}
/* Fase 2 da barra de dicas: todos os botões quadrados de voltar saem do layout enquanto a barra está ativa (a barra
   os aciona); sem a barra eles continuam visíveis. --hint-h = altura reservada no rodapé para a barra. */
.screen{--hint-h:58px}
.screen:has(#hintBar:not([hidden])) :is(#menuBack,#stageBack,#onlineClose,#helpClose,#movesClose,#settingsClose,#videoSettingsClose,#keyMappingClose,#rankingClose,#shopClose,#supportClose,#communityClose){display:none}
.screen:has(#hintBar:not([hidden])) #stageSelect{padding-bottom:max(3%,var(--hint-h))}
.screen:has(#hintBar:not([hidden])) #online{padding-bottom:max(clamp(40px,6vh,64px),var(--hint-h))}

/* Tela VERSUS: todos os cards (lutadores e "em breve") têm o mesmo tamanho. Grade de 5 colunas e até 4 linhas
   cabem na arena; a imagem preenche o card (cover) e o nome fica numa faixa fixa embaixo, sem mudar a altura. */
#menu #roster{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;width:min(100%,780px);margin:0 auto;align-content:start}
#menu .fighter,#menu .fighter.coming-soon{position:relative;aspect-ratio:3/2;height:auto;min-height:0;padding:0;overflow:hidden}
#menu .fighter canvas{position:absolute;inset:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:cover}
#menu .fighter .coming-soon-thumb{position:absolute;inset:0;aspect-ratio:auto;height:100%}
#menu .fighter strong{position:absolute;left:0;right:0;bottom:0;min-height:0;padding:4px 6px;font-size:11px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#111719e6}
#menu .fighter strong>span{display:none}
#menu .fighter .badge{top:5px;left:5px;font-size:8px;padding:3px 5px}
#menu .fighter:hover{transform:none}
/* Correção do "botões descentralizados" (pedido direto, 24/10/2026): o duelo e o botão LUTAR nunca tinham a
   mesma largura/centro do #roster acima — ficavam espalhados de ponta a ponta da tela enquanto o roster já
   estava contido em 780px centralizados. Os três agora compartilham a mesma largura e o mesmo eixo central. */
#menu .versus-row{max-width:780px;margin:0 auto 16px}
#menu .options{width:min(100%,780px);margin:0 auto;justify-content:center}
@media(max-width:760px){#menu #roster{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Arena Online: a faixa de conta/ranking tem a largura exata do trio de cards (da borda do PARTIDA RÁPIDA até a
   borda do SALA PRIVADA). O wrapper assume a largura dos cards; a faixa usa largura 0 para não puxar a largura. */
.online-row{width:fit-content;max-width:100%;margin:0 auto}
.online-row .rank-name{width:0;min-width:100%;margin-bottom:12px}
.queue-online{margin:10px 0 14px;font-size:11px;letter-spacing:1px;color:#c3ccd4}
.queue-online b{color:var(--yellow)}
/* Dentro da Partida rápida / Salas / Sala privada os cards somem: a faixa volta a ocupar a largura do painel. */
.online-row:has(#onlineModes[hidden]){width:100%;max-width:none}
.online-row:has(#onlineModes[hidden]) .rank-name{width:auto;min-width:0}

/* ===== Tela GOLPES (menu de pausa) — lista por lutador, pensada para controle ===== */
#movesMenu{padding:0;align-items:stretch;justify-content:center;background:radial-gradient(circle at 85% 8%,#26391466,transparent 34%),linear-gradient(135deg,#07101cfa,#090d12fa)}
.mv-shell{--mv-color:#df5044;width:min(1180px,100%);height:100%;display:flex;flex-direction:column;padding:clamp(14px,2.2vw,30px) clamp(16px,3vw,44px) 14px;font-size:clamp(13px,1.45vw,22px);color:#e9eef2}
.mv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;border-bottom:2px solid var(--mv-color);padding-bottom:.6em}
.mv-title small{display:block;color:#8fa0ae;font-size:.62em;letter-spacing:.3em;font-weight:900}
.mv-title h2{margin:.1em 0 0;font-size:2.3em;line-height:1;letter-spacing:.03em;color:#fff;text-shadow:0 0 .6em color-mix(in srgb,var(--mv-color) 55%,transparent)}
.mv-title p{margin:.3em 0 0;color:var(--mv-color);font-size:.7em;font-weight:900;letter-spacing:.22em}
.mv-tabs{display:flex;gap:.5em;margin:.8em 0 .5em}
.mv-tab{flex:1;padding:.55em .4em;font-size:.72em;font-weight:900;letter-spacing:.18em;background:#0e161fcc;border:1px solid #2f3b49;color:#9aa8b4;cursor:pointer}
.mv-tab[aria-selected="true"]{background:var(--mv-color);border-color:var(--mv-color);color:#0b1219}
.mv-legend{margin:.2em 0 .7em;min-height:1.3em;color:#aab6c0;font-size:.78em;line-height:1.45}
.mv-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.5em;padding:2px 6px 10px 2px;scrollbar-width:thin}
.mv-move{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.2em;padding:.7em 1em;border:1px solid #2b3744;border-left:4px solid #3a4756;background:linear-gradient(145deg,#121d28ee,#0d151eee);cursor:pointer}
.mv-move[aria-selected="true"]{border-color:var(--mv-color);border-left-color:var(--mv-color);background:linear-gradient(145deg,color-mix(in srgb,var(--mv-color) 22%,#121d28),#0f1822);box-shadow:0 0 0 1px var(--mv-color),0 10px 30px #0006}
.mv-num{position:absolute;left:-.1em;top:-.5em;display:grid;place-items:center;width:1.6em;height:1.6em;background:var(--mv-color);color:#0b1219;font-weight:900;font-size:.8em}
.mv-text h3{display:flex;flex-wrap:wrap;align-items:center;gap:.5em;margin:0;font-size:1.05em;letter-spacing:.04em;color:#fff}
.mv-text p{margin:.25em 0 0;color:#b4c0ca;font-size:.78em;line-height:1.4}
.mv-tag,.mv-bars{padding:.15em .55em;font-size:.6em;font-weight:900;letter-spacing:.12em;border:1px solid #56667a;color:#cdd7df}
.mv-bars{border-color:#e9c84a;color:#0b1219;background:#e9c84a}
.mv-input{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.35em;max-width:60%}
.mv-seq{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.3em .3em}
.mv-step{display:inline-flex;align-items:center;gap:.3em}
.mv-seq em,.mv-step em{color:#7f90a0;font-style:normal;font-weight:900}
.mv-then{font-size:1.3em;color:var(--mv-color)!important}
.mv-or{margin:0 .4em;font-size:.7em;letter-spacing:.12em}
.mv-chip{display:inline-flex;flex-direction:column;align-items:center;gap:.15em;min-width:2.3em;flex-shrink:0}
.mv-chip i{font-style:normal;font-size:.46em;font-weight:900;letter-spacing:.03em;color:#8fa0ae;text-transform:uppercase;white-space:nowrap}
.mv-seq,.mv-step{flex-shrink:0}
.mv-btn svg{width:2.3em;height:2.3em}
.mv-dir b{display:grid;place-items:center;width:1.7em;height:1.7em;border:2px solid #cfd8df;border-radius:.3em;color:#fff;font-size:1.25em;line-height:1}
.mv-pill{display:grid;place-items:center;min-width:2.8em;height:1.9em;padding:0 .4em;border-radius:1em;border:2px solid #cfd8df;background:#1b2230;color:#fff;font-size:.9em;font-weight:900;letter-spacing:.05em}
.mv-empty{margin:2em 0;padding:1.5em;border:1px dashed #3a4756;color:#8fa0ae;text-align:center;font-size:.95em}
@media(max-width:760px){.mv-move{grid-template-columns:1fr}.mv-input{justify-content:flex-start;max-width:none}.mv-tabs{overflow-x:auto}.mv-tab{flex:0 0 auto;padding:.55em .9em}}

/* Manual (Como jogar): mesma lista da tela GOLPES, compacta e empilhada dentro dos cartões */
.mv-inline{--mv-color:#e9ff59;font-size:12px;color:#e9eef2;display:flex;flex-direction:column;gap:6px}
.mv-inline .mv-legend{margin:.1em 0 .4em;min-height:0;font-size:.92em}
.mv-inline .mv-move{cursor:default;grid-template-columns:1fr;gap:.5em;padding:.6em .8em;margin-bottom:0}
.mv-inline .mv-input{justify-content:flex-start;max-width:none}
.mv-inline .mv-text h3{font-size:1.05em}
.mv-inline .mv-section{margin:.9em 0 0;color:var(--yellow);font-size:.9em;letter-spacing:.22em;font-weight:900}
.mv-inline .mv-num{left:-.2em;top:-.5em}
.help-aura{grid-column:span 5}
@media(max-width:900px){.help-aura,.help-gamepad{grid-column:1/-1}}

/* ===== Tela Versus (seleção de lutador local): MK-style — retratos do duelo nos 2 lados extremos da tela, não
   empilhados em cima do roster; cabeçalho (título + alternância de modo) centralizado em vez de "puxado" pra
   esquerda (pedido direto, 24/10/2026, com print anotada mostrando onde os bustos deveriam ficar). ===== */
/* #menu já é position:absolute;inset:0 (regra de base, #menu,#result) — isso sozinho já serve de contexto de
   posicionamento pros retratos abaixo; nunca sobrescrever pra position:relative aqui, senão o painel perde o
   inset:0 e para de preencher a tela inteira (foi exatamente o bug relatado: metade virava canvas puro). */
#menu{padding:3% 2.5%}
#menu .menu-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:flex-start}
#menu .menu-top-left{grid-column:2;align-items:center;text-align:center}
#menu .menu-top-right{grid-column:3;justify-self:end}
#menu h2,#menu>p{text-align:center}
#menu .versus-row{position:absolute;inset:0;max-width:none;margin:0;display:block;pointer-events:none;z-index:1}
#menu .versus-center{display:none}
#menu .versus-hero{position:absolute;top:50%;transform:translateY(-50%);width:230px;flex:none;pointer-events:auto}
#menu #localMyHero{left:0}
#menu #localTheirHero{right:0}
#menu .versus-hero canvas{max-width:220px}
#menu .versus-hero::before{max-width:260px}
#menu #roster{width:min(100%,700px);margin-bottom:18px}
#menu .options{width:min(100%,700px)}
@media(max-width:900px){#menu{padding:3% 10%}#menu .versus-hero{display:none}#menu #roster,#menu .options{width:min(100%,780px)}#menu .menu-top{display:flex}#menu .menu-top-left{align-items:flex-start;text-align:left}}
