/* Fixed battle geometry. Only the separate Battle Feed scrolls. */
.type-emblem{display:inline-flex;align-items:center;gap:5px;color:var(--type-color);font:800 12px/1.2 var(--pixel);white-space:nowrap;vertical-align:middle;padding:3px 6px;border:1px solid color-mix(in srgb,var(--type-color) 48%,transparent);background:color-mix(in srgb,var(--type-color) 12%,#120d1d);border-radius:4px}.type-emblem svg{width:18px;height:18px;flex:none;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--type-color) 40%,transparent))}.hud-types{display:flex;gap:5px;margin:3px 0}.moju-name{color:#ffdf80;font-weight:900;text-shadow:0 1px 0 #221128}.hud-name,.hud b{font-size:clamp(16px,1.5vw,22px);font-weight:950;letter-spacing:.025em}.roster-card b,.party-slot b,.preview-slot b{font-size:17px}.roster-card b{line-height:1.3;margin:8px 0}.summary-portrait h3,.summary-head h2,.summary-title{font-size:22px}.actor-chip{font:900 20px/1.25 var(--pixel);color:#ffe396;text-shadow:2px 2px #542735}.feed .moju-name,.log-entry .moju-name{font-size:15px}.hud{border-color:#91734c;box-shadow:3px 3px 0 #08050bbb,0 0 18px #ffc95a18}.hp,.hp-track{position:relative}.hp::after,.hp-track::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 9%,#10081955 9% 10%);pointer-events:none}.battle-heading,.feed-heading,.log-head{border-bottom:2px solid #a87b39;background:linear-gradient(100deg,#352138,#141021)}.move-choice,.move{border-left:4px solid var(--move-color,#af83da);background:linear-gradient(120deg,color-mix(in srgb,var(--move-color,#af83da) 15%,#211529),#171020);box-shadow:inset 0 1px #ffffff12}.move-choice:hover,.move:hover{box-shadow:inset 0 0 24px #ffd65015,0 0 12px #ffd65025}.move-choice b,.move b{font:900 15px/1.2 var(--pixel);color:#fff1cd}.move-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.actor-tabs{display:flex;gap:8px;align-items:center;height:32px}.actor-tabs button{font-size:14px;padding:5px 10px}.actor-tabs .selected{color:#ffe396}.action-row{margin:0;gap:8px;align-content:start}.action-row .actor-chip{flex-basis:auto}.target-description{font-size:14px;margin:0}.move-description{font-size:13px;line-height:1.3;margin-top:4px}.move-choice small{font-size:12px}.move-choices{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;gap:7px}.move-choice{padding:8px 10px!important}.move-choice .type-emblem{padding:2px 4px;font-size:11px}.move-choice .type-emblem svg{width:15px;height:15px}
body:has(#battle:not([hidden])){height:100svh;overflow:hidden}.app:has(#battle:not([hidden])){height:100svh;max-width:1600px;padding:10px;display:grid;grid-template-rows:54px minmax(0,1fr);gap:10px;overflow:hidden}.app:has(#battle:not([hidden]))>.topbar{height:54px;margin:0}.app:has(#battle:not([hidden]))>.error{position:absolute;top:8px;left:20%;right:20%}#battle.battle-layout{height:100%;min-height:0;grid-template-columns:minmax(0,1fr) 290px;overflow:hidden}.battle-layout .battle-card{display:grid;grid-template-rows:38px minmax(0,1fr) 330px;min-height:0}.battle-layout .arena{min-height:0;height:auto}.battle-layout .controls{height:330px;min-height:0;max-height:none;overflow:visible;display:grid;grid-template-rows:60px 20px minmax(0,1fr) 38px;gap:6px;padding:10px 14px}.battle-layout .dialogue{height:60px;min-height:0;padding:4px 10px;border:1px solid #896541;background:linear-gradient(110deg,#322037,#171020);border-left:4px solid #ffce4b;overflow:hidden}.battle-layout .dialogue img{height:52px}.battle-layout .dialogue p{font-size:14px;line-height:1.3;margin:2px 0}.battle-layout .control-status{margin:0;font-size:13px}.battle-layout #actionPanel{min-height:0;display:flex;flex-direction:column;gap:5px}.battle-layout .control-footer{margin:0;align-items:stretch}.battle-layout .control-footer button{padding:5px 12px}.battle-layout .feed-card{height:100%;min-height:0}.battle-layout .hud b{white-space:normal;line-height:1.15}.battle-layout .hud-types .type-emblem{font-size:10px;padding:1px 3px}.battle-layout .hud-types svg{width:13px;height:13px}.battle-layout .hud{padding:5px 8px}.battle-layout .enemy-huds,.battle-layout .ally-huds{width:77%}
body:has(#gameShell:not([hidden])){height:100svh;overflow:hidden}.app:has(#gameShell:not([hidden])){height:100svh;min-height:0;overflow:hidden;grid-template-rows:58px minmax(0,1fr) 14px}.game-shell{height:100%;min-height:0;overflow:hidden}.game-shell .battle-card{height:100%;min-height:0;grid-template-rows:minmax(0,1fr) 330px}.game-shell .arena{min-height:0}.game-shell .controls,.game-shell .controls.moves-open{height:330px;min-height:0;max-height:none;overflow:visible;padding:10px;gap:6px;grid-template-columns:minmax(0,1fr) 180px;grid-template-rows:64px 20px minmax(0,1fr) 32px}.game-shell .tamer-dialogue{height:64px;min-height:0;padding:4px 10px}.game-shell .tamer-dialogue img{height:54px}.game-shell .tamer-dialogue p{height:auto;min-height:0;overflow:visible;font-size:14px;line-height:1.3}.game-shell .tamer-dialogue b{font-size:12px;margin:0}.game-shell .prompt{margin:0;font-size:14px}.game-shell .main-actions,.game-shell .move-grid{grid-column:1;grid-row:3;min-width:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.game-shell .side-actions{grid-column:2;grid-row:3;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.game-shell .controls .back-btn{grid-row:4;grid-column:1/-1;padding:5px 10px;min-height:0}.game-shell .move{padding:7px 8px;min-height:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto 1fr;gap:3px;align-content:start}.game-shell .move b{padding:0;grid-column:1/-1;font-size:14px}.game-shell .move small{grid-column:1/-1;grid-row:3;font-size:12px;line-height:1.25;margin:0}.game-shell .move .type{position:static;padding:0;border:0;background:none;grid-column:1;grid-row:2}.game-shell .move .pp{position:static;grid-column:2;grid-row:2;font-size:10px;align-self:center}.game-shell .move .type-emblem{font-size:10px;padding:1px 3px}.game-shell .move .type-emblem svg{width:14px;height:14px}.game-shell .sidebar{height:100%;max-height:none}.game-shell .hud{width:min(360px,45%);padding:7px 10px}.game-shell .hud-name{font-size:clamp(18px,2vw,25px)}.game-shell .hud-types .type-emblem{font-size:10px;padding:1px 3px}.game-shell .hud-types svg{width:14px;height:14px}
@media(max-width:1050px){#battle.battle-layout{grid-template-columns:minmax(0,1fr) 225px}.battle-layout .controls{padding:8px}.battle-layout .dialogue p{font-size:13px}.battle-layout .hud b{font-size:16px}.game-shell{grid-template-columns:minmax(0,1fr) 230px}.game-shell .controls,.game-shell .controls.moves-open{grid-template-columns:minmax(0,1fr) 135px}.game-shell .side-actions .action b{font-size:10px}.game-shell .side-actions .action small{font-size:10px}}
@media(max-width:760px){.app:has(#battle:not([hidden])){padding:5px;gap:5px;grid-template-rows:48px minmax(0,1fr)}.app:has(#battle:not([hidden]))>.topbar{height:48px}.header-actions button{font-size:10px}#battle.battle-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 78px;gap:5px}.battle-layout .battle-card{grid-template-rows:30px minmax(0,1fr) 305px}.battle-layout .controls{height:305px;grid-template-rows:52px 18px minmax(0,1fr) 30px;gap:4px;padding:6px}.battle-layout .dialogue{height:52px}.battle-layout .dialogue img{height:44px;width:36px}.battle-layout .dialogue p{font-size:12px}.battle-layout .dialogue b{font-size:11px}.battle-layout .control-status{font-size:11px}.battle-layout .control-footer button{font-size:11px}.move-choice b{font-size:13px}.move-description{font-size:12px}.actor-chip{font-size:17px}.battle-layout .feed-heading{padding:3px 8px}.battle-layout .feed{padding:0 8px}.battle-layout .team-status{display:none}.battle-layout .enemy-huds,.battle-layout .ally-huds{width:92%}.battle-layout .hud b{font-size:14px}.battle-layout .hud-types{margin:0}.battle-layout .hud-types .type-emblem{font-size:9px}.battle-layout .scrolls{display:none}.game-shell{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 78px;gap:4px}.app:has(#gameShell:not([hidden])){grid-template-rows:48px minmax(0,1fr);gap:4px;padding:4px}.app:has(#gameShell:not([hidden])) .topbar{height:48px}.game-shell .battle-card{grid-template-rows:minmax(0,1fr) 300px}.game-shell .controls,.game-shell .controls.moves-open{height:300px;grid-template-columns:1fr;grid-template-rows:52px 18px minmax(0,1fr) 28px 28px;padding:6px;gap:4px}.game-shell .tamer-dialogue{height:52px;grid-template-columns:30px 1fr;gap:5px}.game-shell .tamer-dialogue img{height:42px;width:30px}.game-shell .tamer-dialogue p{font-size:12px}.game-shell .main-actions,.game-shell .move-grid{grid-column:1;grid-row:3}.game-shell .side-actions{grid-column:1;grid-row:4;grid-template-columns:repeat(4,1fr)}.game-shell .side-actions .action{min-height:0;padding:2px}.game-shell .side-actions small{display:none}.game-shell .controls .back-btn{grid-row:5}.game-shell .sidebar{height:78px}.game-shell .battle-tools{display:none}.game-shell .log-head{padding:4px}.game-shell .battle-log{padding:0 6px}.game-shell .hud{width:48%;padding:3px 6px}.game-shell .hud-name{font-size:16px}.game-shell .hud-types .type-emblem{font-size:9px}.game-shell .team-strip{min-height:12px;margin:0;transform:scale(.75);transform-origin:left}.game-shell .lvl{font-size:10px}.game-shell .enemy-hud{top:5px;left:5px}.game-shell .player-hud{bottom:5px;right:5px}.footer-note{display:none}}
.battle-layout .battle-card{grid-template-rows:38px minmax(0,1fr) 370px}.battle-layout .controls{height:370px}.action-row:has(.move-choices) .move-choices{flex:1 1 100%}.action-row>button{padding:5px 10px;min-height:28px}.action-row:has(.move-choices){gap:5px}.field-unit{transform-origin:50% 50%}.impact-number{position:absolute;z-index:24;pointer-events:none;font:950 clamp(24px,3vw,40px)/1 var(--pixel);color:#fff0b0;text-shadow:3px 3px #7f193f,-2px -2px #21102a,0 0 16px #ff8644;animation:impactScore .85s both}@keyframes impactScore{0%{translate:0 0;scale:.5;opacity:0}20%{scale:1.3;opacity:1}70%{opacity:1}100%{translate:0 -45px;scale:1;opacity:0}}
@media(max-width:760px){.battle-layout .battle-card{grid-template-rows:30px minmax(0,1fr) 330px}.battle-layout .controls{height:330px}.actor-tabs{height:26px}.actor-tabs button{font-size:12px;padding:3px 7px}.action-row>button{font-size:12px;padding:3px 8px}.move-choice{padding:6px 8px!important}.move-description{line-height:1.2}.move-choice small{font-size:10px}}
#actionPanel{position:relative}.actor-tabs:has(+ .action-row .move-choices){padding-right:76px}.actor-tabs+.action-row:has(.move-choices)>.actor-chip{display:none}.actor-tabs+.action-row:has(.move-choices)>button{position:absolute;top:0;right:0}.battle-layout .move-choices{width:100%}.game-shell .hud .type-emblem{color:var(--type-color)}
@media(max-width:760px){.move-category{display:none}.battle-layout .battle-card{grid-template-rows:30px minmax(0,1fr) 350px}.battle-layout .controls{height:350px}.battle-layout .move-choices{gap:5px}.battle-layout .move-choice small{white-space:nowrap}.battle-layout .actor-chip{font-size:16px}.game-shell .move .pp{font-size:9px}.game-shell .move .type-emblem{gap:2px}}
.impact-number{font-size:clamp(36px,4.5vw,64px);font-weight:900;-webkit-text-stroke:1px #200c17;paint-order:stroke fill;text-shadow:3px 3px 0 #160b20,-2px -2px 0 #160b20,0 0 16px #000;animation-duration:1.4s}
.impact-number.is-damage{color:#ff3b4e;text-shadow:3px 3px 0 #300914,-2px -2px 0 #300914,0 0 18px #ff263c66}
.impact-number.is-healing{color:#38f58a;text-shadow:3px 3px 0 #072418,-2px -2px 0 #072418,0 0 18px #20ec7766}
.battle-layout .dialogue>div{min-width:0;flex:1}.battle-layout .dialogue p{overflow-wrap:anywhere}
.hud-name-group,.battle-layout .hud-name-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.attack-boost{display:inline-flex;align-items:center;flex-shrink:0;padding:3px 5px;border:1px solid #ffd34c;border-radius:3px;background:#553611;color:#ffeb8b;font:900 10px/1.1 var(--pixel);letter-spacing:0;white-space:nowrap;text-shadow:1px 1px #211309;box-shadow:0 0 9px #ffca4438;vertical-align:middle}
.game-shell .hud-line .lvl{flex-shrink:0}
@media(max-width:760px){.attack-boost{font-size:9px;padding:2px 3px}.hud-name-group,.battle-layout .hud-name-row{gap:3px}}
.move-facts{display:flex;align-items:center;gap:3px 8px;flex-wrap:wrap;margin-top:4px;font:700 10px/1.2 Arial,sans-serif;color:#e6d7eb}
.base-power{white-space:nowrap;color:#e4d3bc}.base-power b{display:inline!important;font:900 11px/1.2 var(--pixel)!important;color:#ffe5a1}
.move-matchup{display:inline-block;font:700 10px/1.2 Arial,sans-serif}.move-matchup.strong{color:#74f2aa}.move-matchup.weak{color:#ff9da7}.move-matchup.neutral{color:#d8cfea}.move-matchup.support{color:#9eddfa}
.battle-layout .move-facts{display:grid;grid-template-columns:1fr;margin-top:3px;gap:2px}
.battle-layout .move-description{font-size:11px;line-height:1.2;margin-top:3px}
.battle-layout .move-choice b{font-size:13px}.battle-layout .move-choice{padding:5px 8px!important}
.battle-layout .battle-card{grid-template-rows:38px minmax(0,1fr) 400px}.battle-layout .controls{height:400px}
.game-shell .battle-card{grid-template-rows:minmax(0,1fr) 350px}.game-shell .controls,.game-shell .controls.moves-open{height:350px}
@media(max-width:760px){.battle-layout .battle-card{grid-template-rows:30px minmax(0,1fr) 390px}.battle-layout .controls{height:390px}.battle-layout .move-matchup{font-size:9px}.game-shell .battle-card{grid-template-rows:minmax(0,1fr) 340px}.game-shell .controls,.game-shell .controls.moves-open{height:340px}.game-shell .move-facts{font-size:9px;gap:2px 5px}.game-shell .move-matchup{font-size:9px}}
/* Keep the preparation screen fixed; the collection owns roster scrolling. */
#lobby:has(#rosterSelect){overflow:hidden;min-height:0}
#lobby:has(#rosterSelect) .lobby-main{height:100%;min-height:0;overflow:hidden;padding:clamp(14px,2.5vh,32px) clamp(14px,2.5vw,38px)}
#lobby:has(#rosterSelect) .lobby-main> :not(.mojumon-scroll){flex-shrink:0}
.mojumon-scroll{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:4px 12px 10px 0;scrollbar-width:auto;scrollbar-color:#e8b844 #211629}
.mojumon-scroll::-webkit-scrollbar{width:12px}.mojumon-scroll::-webkit-scrollbar-track{background:#211629;border:1px solid #604522;border-radius:6px}.mojumon-scroll::-webkit-scrollbar-thumb{background:linear-gradient(#ffe38a,#d8a52b);border:2px solid #211629;border-radius:6px}.mojumon-scroll::-webkit-scrollbar-thumb:hover{background:#ffdb68}
.mojumon-scroll:focus-visible{outline:2px solid #ffd44a;outline-offset:2px}
.mojumon-scroll .roster-select{align-content:start}.mojumon-scroll .lobby-tip{margin:0;padding-top:12px}
#lobby:has(#rosterSelect) .tamer-select{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:16px}
#lobby:has(#rosterSelect) .tamer-card{height:clamp(130px,20svh,248px);grid-template-rows:minmax(0,1fr) auto;min-height:0}
#lobby:has(#rosterSelect) .tamer-card img{height:100%;max-height:190px;width:100%;min-height:0}
#lobby:has(#rosterSelect) .lobby-side{height:100%;min-height:0;scrollbar-color:#e8b844 #211629}
#lobby:has(#rosterSelect) .lobby-side>*{flex-shrink:0}
#lobby:has(#rosterSelect) #enterBattle{position:sticky;bottom:0;z-index:2}
@media(max-height:950px){
 #lobby:has(#rosterSelect) h1{font-size:clamp(25px,3vw,42px)}
 #lobby:has(#rosterSelect) .mode-tabs{margin:6px 0 10px}#lobby:has(#rosterSelect) .mode-tab{padding:7px 10px;font-size:10px}
 #lobby:has(#rosterSelect) .match-help{margin-bottom:6px;font-size:12px}#lobby:has(#rosterSelect) .lobby-lead{font-size:13px;margin:9px 0 14px}
 #lobby:has(#rosterSelect) .select-head{margin-bottom:8px}#lobby:has(#rosterSelect) .select-head h2{font-size:12px}
 #lobby:has(#rosterSelect) .lobby-side{padding:14px;gap:10px}#lobby:has(#rosterSelect) .setup-card{padding:10px}
 #lobby:has(#rosterSelect) .setup-card h2{font-size:11px;margin-bottom:9px}#lobby:has(#rosterSelect) .party-preview{gap:5px}
 #lobby:has(#rosterSelect) .preview-slot{padding:5px;grid-template-columns:34px 1fr auto}#lobby:has(#rosterSelect) .preview-slot img{width:34px;height:34px}#lobby:has(#rosterSelect) .preview-slot b{font-size:13px}#lobby:has(#rosterSelect) .preview-slot small{font-size:10px}
 #lobby:has(#rosterSelect) .enemy-preview{grid-template-columns:65px 1fr}#lobby:has(#rosterSelect) .enemy-preview img{height:65px;width:65px}
 #lobby:has(#rosterSelect) .rule-row{padding:5px 0}#lobby:has(#rosterSelect) .radiant-check{padding:4px 0}#lobby:has(#rosterSelect) .radiant-check input{height:16px;width:16px;margin:2px}
 #lobby:has(#rosterSelect) .type-chart-btn{padding:7px;margin-bottom:8px}#lobby:has(#rosterSelect) #battleFormat{padding:7px;font-size:11px!important}
 #lobby:has(#rosterSelect) #partyReadyHint{padding-top:0;margin-top:auto;font-size:11px}#lobby:has(#rosterSelect) #enterBattle{padding:12px;font-size:12px;margin-top:0}
}
@media(max-width:680px){
 #lobby:has(#rosterSelect){grid-template-columns:minmax(0,1fr) 220px}
 #lobby:has(#rosterSelect) .lobby-main{padding:10px}#lobby:has(#rosterSelect) .lobby-side{padding:8px;gap:8px}
 #lobby:has(#rosterSelect) .tamer-select{gap:5px}#lobby:has(#rosterSelect) .tamer-card{padding:4px;height:120px}#lobby:has(#rosterSelect) .tamer-card b{font-size:9px}#lobby:has(#rosterSelect) .tamer-card small{display:none}
 #lobby:has(#rosterSelect) .select-head{gap:4px;flex-wrap:wrap}#lobby:has(#rosterSelect) .select-count{font-size:9px}
 #lobby:has(#rosterSelect) .roster-select{grid-template-columns:repeat(auto-fit,minmax(125px,1fr))}#lobby:has(#rosterSelect) .roster-card{display:block;min-height:190px;padding:10px}#lobby:has(#rosterSelect) .roster-card img{height:110px}
 #lobby:has(#rosterSelect) h1{font-size:23px}#lobby:has(#rosterSelect) .lobby-lead,#lobby:has(#rosterSelect) .match-help{font-size:11px}
 #lobby:has(#rosterSelect) .mode-tab{font-size:8px;padding:7px 5px}#lobby:has(#rosterSelect) .mode-tabs{gap:4px}
}
@media(max-width:450px){#lobby:has(#rosterSelect){grid-template-columns:minmax(0,1fr) 170px}#lobby:has(#rosterSelect) .lobby-main{padding:8px}#lobby:has(#rosterSelect) .tamer-select{grid-template-columns:repeat(3,minmax(0,1fr))}#lobby:has(#rosterSelect) .tamer-card{height:90px}#lobby:has(#rosterSelect) .tamer-card b{font-size:7px}#lobby:has(#rosterSelect) .enemy-preview{grid-template-columns:40px 1fr;gap:5px}#lobby:has(#rosterSelect) .enemy-preview img{width:40px;height:50px}#lobby:has(#rosterSelect) .enemy-preview p{font-size:10px}#lobby:has(#rosterSelect) .rule-row{flex-wrap:wrap}#lobby:has(#rosterSelect) .radiant-check label{font-size:8px}#lobby:has(#rosterSelect) #battleFormat{max-width:100%}#lobby:has(#rosterSelect) h1{font-size:19px}}
@media(prefers-reduced-motion:reduce){.type-emblem svg{filter:none}.impact-number{animation:none} }

/* Characterful pixel-step idles keep online battles alive without moving hit boxes. */
.unit.moju-acting>img,.field-unit.moju-acting>img,.unit.status-freeze>img,.field-unit.freeze>img,.field-unit.fainted>img{animation-play-state:paused!important}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-dracolot-fire>img{animation:idleDragon 3.4s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-titanguin>img{animation:idleEmperor 4.2s steps(7,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-bruulda>img{animation:idleHunter 3.8s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-diodewk>img{animation:idleRegal 4.8s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-faym>img{animation:idleFairy 3.7s steps(10,end) infinite;transform-origin:50% 50%}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-deus-nokturna>img{animation:idleNight 4.6s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-machina-protus-primal>img{animation:idleMachine 5.2s steps(6,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-bamavolt>img{animation:idleStaff 3.9s steps(9,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-gateaux>img{animation:idleConfection 3.3s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-xpress>img{animation:idleEngine 2.6s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-chinobi>img{animation:idleNinja 4.4s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-blazampion>img{animation:idleBoxer 2.1s steps(10,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-reapthorn>img{animation:idleReaper 5.1s steps(12,end) infinite;transform-origin:50% 50%}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-aquaflux>img{animation:idleCurrent 3.6s steps(9,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-pharoseth>img{animation:idlePharaoh 4.1s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-omnilux>img{animation:idleRadiance 4.5s steps(10,end) infinite;transform-origin:50% 65%}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-seiforr>img{animation:idleSiege 5.6s steps(6,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-gopezzio>img{animation:idlePuppet 4.3s steps(8,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-zenabun>img{animation:idleHare 3.1s steps(10,end) infinite}
:is(.unit,.field-unit)[class*="moju-idle-"].moju-idle-big-bang>img{animation:idleTitan 5.8s steps(9,end) infinite}
@keyframes idleDragon{0%,100%{transform:translateY(0)}30%{transform:translateY(-3px) rotate(-.6deg)}55%{transform:translateY(-1px) scale(1.012)}75%{transform:translateY(1px) rotate(.5deg)}}
@keyframes idleEmperor{0%,65%,100%{transform:none}25%{transform:translateY(1px) rotate(-.7deg)}40%{transform:translateY(-2px) rotate(.6deg)}}
@keyframes idleHunter{0%,100%{transform:none}35%{transform:translate(-2px,1px) rotate(-.8deg)}55%,70%{transform:translate(1px,-1px) rotate(.6deg)}}
@keyframes idleRegal{0%,100%{transform:rotate(-.5deg)}30%{transform:translateY(-2px) rotate(.4deg)}50%,70%{transform:translateY(-1px) rotate(0)}}
@keyframes idleFairy{0%,100%{transform:translate(-1px,2px) rotate(-.8deg)}25%{transform:translate(2px,-2px)}50%{transform:translate(1px,-6px) rotate(.8deg)}75%{transform:translate(-2px,-1px)}}
@keyframes idleNight{0%,100%{transform:none}30%{transform:translateY(1px) scale(1.012,.995)}50%{transform:rotate(-.7deg)}75%{transform:rotate(.7deg) translateY(-2px)}}
@keyframes idleMachine{0%,25%,65%,100%{transform:none}30%{transform:translateY(1px)}35%{transform:translateY(-1px)}70%,78%{transform:rotate(.5deg)}83%{transform:rotate(-.3deg)}}
@keyframes idleStaff{0%,100%{transform:rotate(-.7deg)}25%{transform:translateY(1px) rotate(.3deg)}50%{transform:translateY(-2px) rotate(.9deg)}75%{transform:translateY(-1px) rotate(0)}}
@keyframes idleConfection{0%,100%{transform:none}25%{transform:rotate(-.8deg) translateY(-1px)}50%{transform:translateY(1px) scale(1.008,.993)}75%{transform:rotate(.8deg) translateY(-2px)}}
@keyframes idleEngine{0%,100%{transform:none}15%{transform:translateY(-1px)}30%{transform:translateY(1px)}45%{transform:translateY(-1px)}60%{transform:translateY(0)}80%{transform:rotate(.4deg) translateY(1px)}}
@keyframes idleNinja{0%,55%,100%{transform:none}18%{transform:translate(-2px,1px) rotate(-.5deg)}28%{transform:translate(1px,-2px)}36%{transform:translateY(0)}75%{transform:rotate(.4deg)}}
@keyframes idleBoxer{0%,50%,100%{transform:translateY(0)}15%{transform:translate(-2px,-3px) rotate(-.8deg)}30%{transform:translate(-1px,1px)}65%{transform:translate(2px,-3px) rotate(.8deg)}80%{transform:translate(1px,1px)}}
@keyframes idleReaper{0%,100%{transform:translate(-2px,1px) rotate(-1deg)}33%{transform:translate(1px,-5px) rotate(.2deg)}66%{transform:translate(2px,-2px) rotate(1deg)}}
@keyframes idleCurrent{0%,100%{transform:rotate(-.7deg)}25%{transform:translateY(-2px) rotate(0)}50%{transform:translateY(-3px) rotate(.9deg)}75%{transform:translateY(1px) rotate(.2deg)}}
@keyframes idlePharaoh{0%,100%{transform:none}20%,35%{transform:rotate(-.7deg)}55%{transform:translateY(-2px) rotate(.7deg)}80%{transform:translateY(-1px)}}
@keyframes idleRadiance{0%,100%{transform:translateY(1px) rotate(-.4deg)}40%{transform:translateY(-5px) scale(1.008)}65%{transform:translateY(-3px) rotate(.6deg)}85%{transform:translateY(-1px)}}
@keyframes idleSiege{0%,45%,100%{transform:none}18%{transform:translateY(2px) scale(1.006,.994)}28%{transform:translateY(-1px)}68%,78%{transform:rotate(-.4deg)}88%{transform:rotate(.2deg)}}
@keyframes idlePuppet{0%,100%{transform:rotate(-.8deg)}20%{transform:translateY(-2px) rotate(.6deg)}40%{transform:rotate(0)}60%{transform:translateY(-1px) rotate(1deg)}80%{transform:translateY(1px) rotate(-.4deg)}}
@keyframes idleHare{0%,45%,100%{transform:none}12%{transform:translateY(1px)}22%{transform:translateY(-4px) rotate(-.5deg)}32%{transform:translateY(-1px)}65%{transform:translateY(-2px) rotate(.5deg)}78%{transform:translateY(1px)}}
@keyframes idleTitan{0%,100%{transform:none}30%{transform:translateY(2px) scale(1.008,.997)}50%{transform:rotate(-.35deg)}70%{transform:translateY(-1px) rotate(.35deg)}}
.unit[class*="moju-idle-"]{animation:none}.unit[class*="moju-idle-"]>img,.field-unit[class*="moju-idle-"]>img{transform-origin:50% 88%;will-change:transform;animation-duration:1.8s;animation-timing-function:steps(4,end);animation-iteration-count:infinite}
.moju-idle-ready>img{animation-name:mojuIdleReady}.moju-idle-weight>img{animation-name:mojuIdleWeight;animation-duration:2.2s}.moju-idle-float>img{animation-name:mojuIdleFloat;animation-duration:2.4s}.moju-idle-prowl>img{animation-name:mojuIdleProwl;animation-duration:2s}.moju-idle-perch>img{animation-name:mojuIdlePerch;animation-duration:2.3s}.moju-idle-flicker>img{animation-name:mojuIdleFlicker;animation-duration:1.45s}.moju-idle-sway>img{animation-name:mojuIdleSway;animation-duration:2.1s}.moju-idle-breathe>img{animation-name:mojuIdleBreathe}
@keyframes mojuIdleReady{0%,100%{transform:translate(0,0) rotate(0)}35%{transform:translate(-2px,2px) rotate(-1deg) scale(1.015,.985)}65%{transform:translate(2px,-3px) rotate(1deg)}}
@keyframes mojuIdleWeight{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(2px) scale(1.025,.975)}60%{transform:translateY(-2px) scale(.99,1.01)}}
@keyframes mojuIdleFloat{0%,100%{transform:translateY(2px) rotate(-1deg)}50%{transform:translateY(-7px) rotate(1deg)}}
@keyframes mojuIdleProwl{0%,100%{transform:translate(0,0) rotate(0)}40%{transform:translate(-3px,2px) rotate(-1deg) scale(1.018,.982)}65%{transform:translate(2px,-2px) rotate(1deg)}}
@keyframes mojuIdlePerch{0%,100%{transform:translateY(0) rotate(0)}42%{transform:translateY(-3px) rotate(-1deg)}50%{transform:translateY(-6px) rotate(1deg)}58%{transform:translateY(-3px)}}
@keyframes mojuIdleFlicker{0%,100%{transform:translateY(0) scale(1)}35%{transform:translateY(-4px) scale(.985,1.02)}70%{transform:translateY(1px) scale(1.025,.98)}}
@keyframes mojuIdleSway{0%,100%{transform:rotate(-1.5deg) translateY(0)}50%{transform:rotate(1.5deg) translateY(-4px)}}
@keyframes mojuIdleBreathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.012)}}
@media(prefers-reduced-motion:reduce){.unit[class*="moju-idle-"]>img,.field-unit[class*="moju-idle-"]>img{animation:none!important}}
/* Compact communicator portraits keep the battle controls at their existing height. */
.game-shell .tamer-dialogue,.battle-layout .dialogue{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;padding:3px 10px 3px 4px;border:2px solid #80dafa;border-left:4px solid #ffe080;background:linear-gradient(110deg,#182e4c,#121525 65%);box-shadow:inset 0 0 0 1px #081421,inset 0 -3px #284867;align-items:center}
.tamer-mugshot{display:block;position:relative;width:56px;height:50px;overflow:hidden;border:2px solid #a2e7fa;background:repeating-linear-gradient(0deg,#193d53 0 3px,#17364c 3px 6px);box-shadow:inset 0 0 0 2px #061926}
.game-shell .tamer-dialogue .tamer-mugshot img,.battle-layout .dialogue .tamer-mugshot img{position:absolute;width:230%;height:auto;max-width:none;left:-60%;top:-2px;object-fit:initial;image-rendering:pixelated;filter:none;mix-blend-mode:normal}
.tamer-mugshot img[src*="tamer-senseicj"]{left:-51%!important}
.tamer-mugshot img[src*="tamer-jin"]{left:-35%!important}
.tamer-mugshot img[src*="tamer-kano"]{top:-17px!important}
.tamer-mugshot img[src*="tamer-hooper"]{left:-43%!important}
.tamer-mugshot img[src*="tamer-sora"]{left:-78%!important}
.tamer-mugshot img[src*="tamer-rook"]{left:-69%!important}
.tamer-mugshot img[src*="tamer-iona"]{left:-30%!important}
.game-shell .tamer-dialogue>div,.battle-layout .dialogue>div{min-width:0}
.game-shell .tamer-dialogue b,.battle-layout .dialogue b{display:block;font:900 11px/1.2 var(--pixel);letter-spacing:.06em;color:#ffe080;margin:0 0 3px}
.game-shell .tamer-dialogue p,.battle-layout .dialogue p{font-family:var(--pixel);font-size:13px;line-height:1.3;margin:0;max-height:34px;overflow-y:auto;overflow-wrap:anywhere}
.tamer-dialogue:has([aria-busy="true"]) .tamer-mugshot,.dialogue:has([aria-busy="true"]) .tamer-mugshot{border-color:#ffe080}
@media(max-width:600px){.game-shell .tamer-dialogue,.battle-layout .dialogue{gap:8px}.game-shell .tamer-dialogue p,.battle-layout .dialogue p{font-size:11px}}
.finisher-meter{display:block;position:relative;height:13px;margin-top:3px;overflow:hidden;border:1px solid #9473b9;background:#211630;color:#fff5cf;text-align:center;font:800 9px/11px var(--pixel)}
.finisher-meter>span{position:relative;z-index:1;text-shadow:1px 1px #110d20}
.finisher-meter>i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#6850b8,#ac79e4);transition:width .3s}
.finisher-meter.ready{border-color:#ffe080}.finisher-meter.ready>i{background:linear-gradient(90deg,#985529,#bb8635)}
.game-shell .move-grid,.battle-layout .move-choices{overflow-y:auto;grid-auto-rows:minmax(82px,auto);align-content:start}
.game-shell .move.finisher-choice,.battle-layout .move-choice.finisher-choice{grid-column:1/-1;border:2px solid #ddb968;background:linear-gradient(110deg,#3c244d,#30273b)}
.finisher-choice:disabled{opacity:.6}
.finisher-announcement{position:fixed;z-index:2200;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;pointer-events:none;animation:finisherTitle 1.5s both;filter:drop-shadow(0 5px 0 #140a23)}
.finisher-announcement strong{max-width:96vw;text-align:center;font:1000 clamp(28px,7vw,100px)/1 Impact,"Arial Black",sans-serif;font-style:italic;letter-spacing:-.025em;color:#ffe98d;-webkit-text-stroke:2px #382050;text-shadow:3px 3px 0 #ec752c,6px 6px 0 #130f29;padding:18px 22px;background:linear-gradient(110deg,transparent,#17182ee8 18% 82%,transparent);border-block:3px solid #ffe99d}
.finisher-announcement small{color:white;background:#19122de8;border:1px solid #e8c56c;padding:8px 18px;font:900 clamp(12px,2vw,22px)/1.3 var(--pixel);text-align:center;max-width:90vw}
@keyframes finisherTitle{0%{opacity:0;transform:scale(1.7) rotate(-5deg)}15%{opacity:1;transform:scale(.96) rotate(-2deg)}24%,72%{opacity:1;transform:scale(1) rotate(-2deg)}100%{opacity:0;transform:scale(1.06) translateY(-12px)}}
#battle .hud .finisher-meter{height:1.1cqw;font-size:.72cqw;line-height:.95cqw;margin-top:.2cqw}
@media(prefers-reduced-motion:reduce){.finisher-announcement{animation:none;transform:none}.finisher-meter>i{transition:none}}
.switch-types{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.switch-matchup{display:flex;flex-direction:column;gap:2px;margin-top:5px;font:12px/1.35 Arial,sans-serif;color:#d8cedf}.switch-matchup b{font-size:12px;color:#fff1d4}.match-good{color:#75edb2}.match-risk{color:#ff9f99}.battle-layout .switch-reserve{display:grid;grid-template-columns:80px minmax(0,1fr);gap:10px;align-items:center;text-align:left;flex:1 1 260px;padding:12px;border:1px solid #77628b;background:#21162d;min-width:0}.switch-reserve img{width:80px;height:90px;object-fit:contain;image-rendering:pixelated}.switch-details{display:block;min-width:0}.switch-details>small{display:block}.switch-reserve .type-emblem,.party .switch-types .type-emblem{font-size:11px}.party-slot>div{min-width:0}@media(max-width:480px){.party .party-slot{grid-template-columns:60px minmax(0,1fr);gap:8px}.party .party-slot>img{width:60px}.party .party-slot>button{grid-column:1/-1}}
.finish-ready-badge{display:inline-block;margin-left:7px;padding:3px 5px;border:1px solid #ffdf72;background:#4d3211;color:#fff0a2;font:900 11px/1.2 var(--pixel);vertical-align:middle;white-space:nowrap;text-shadow:none}.hud-name-row{flex-wrap:wrap}#battle .finish-ready-badge{font-size:.85cqw;padding:.2cqw .4cqw;margin-left:.4cqw}
.ko-announcement{position:fixed;inset:0;z-index:2300;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;pointer-events:none;animation:koSlam 1.3s both}.ko-announcement:before{content:'';position:absolute;width:min(55vw,430px);aspect-ratio:1;border:5px solid #ffbd64;border-radius:50%;box-shadow:0 0 0 12px #ff703733;animation:koRing 1.3s both}.ko-announcement strong{position:relative;font:1000 clamp(100px,21vw,260px)/.9 Impact,"Arial Black",sans-serif;font-style:italic;color:#ffe095;-webkit-text-stroke:3px #521b31;text-shadow:5px 6px #ed573d,10px 12px #190d28;filter:drop-shadow(0 0 20px #110822);letter-spacing:-.055em}.ko-announcement small{position:relative;padding:8px 22px;background:#211126ef;border:2px solid #ffbd64;color:#fff2d4;font:900 clamp(14px,2.5vw,24px)/1.3 var(--pixel);max-width:90vw;text-align:center}@keyframes koSlam{0%{opacity:0;transform:scale(2.3) rotate(-12deg)}14%{opacity:1;transform:scale(.93) rotate(3deg)}23%{transform:scale(1.06) rotate(-3deg)}32%,76%{opacity:1;transform:scale(1) rotate(-2deg)}100%{opacity:0;transform:scale(1.15) translateY(-20px)}}@keyframes koRing{0%{opacity:0;transform:scale(.2)}18%{opacity:.9}65%,100%{opacity:0;transform:scale(1.8)}}@media(prefers-reduced-motion:reduce){.ko-announcement{animation:none}.ko-announcement:before{display:none}}
.ready-announcement{position:fixed;inset:0;z-index:2250;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;pointer-events:none;animation:readyBurst 1.5s both}.ready-announcement strong{font:1000 italic clamp(35px,8vw,110px)/1 Impact,"Arial Black",sans-serif;letter-spacing:-.025em;color:#fff2a8;-webkit-text-stroke:2px #322049;text-shadow:4px 4px #ba6c29,7px 7px #140d22;padding:16px 24px;background:linear-gradient(100deg,transparent,#372258eb 20% 80%,transparent);border-block:3px solid #ffe480;text-align:center}.ready-announcement small{font:900 clamp(20px,4vw,44px)/1.2 var(--pixel);color:#fff;padding:9px 24px;background:#211332ed;border:2px solid #bda0f5;text-align:center;max-width:95vw}@keyframes readyBurst{0%{opacity:0;transform:scale(.6) translateY(25px)}18%{opacity:1;transform:scale(1.08)}28%,75%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.06) translateY(-20px)}}@media(prefers-reduced-motion:reduce){.ready-announcement{animation:none}}
.gear-selector{display:block;grid-column:1/-1;width:100%;padding:9px 10px;border-top:1px solid #715078;color:#ffe097;font:900 11px/1.4 var(--pixel)}.gear-selector select{display:block;width:100%;margin:5px 0;padding:7px;min-height:36px;border:1px solid #847095;background:#17101f;color:#fff;font:14px Arial,sans-serif}.gear-selector small{display:block;white-space:normal;color:#d5c4de;font:12px/1.4 Arial,sans-serif}.held-gear{padding:10px;border:1px solid #806084;background:#21172b;font:13px/1.45 Arial,sans-serif}.held-gear b{color:#ffe097}
/* Finisher portrait reveal: fixed pacing, then the existing attack sequence. */
.moju-cut-in{position:fixed;inset:0;z-index:100020;overflow:hidden;pointer-events:auto;background:rgba(3,4,13,.82);opacity:0;display:flex;align-items:center;justify-content:center;isolation:isolate}
.moju-cut-slash{position:absolute;left:-5%;top:22%;width:110%;height:49%;transform:translateX(-110%) rotate(-7deg);background:linear-gradient(110deg,#08070b 5%,var(--cut-color) 52%,#08070b);border-top:12px solid #fff;border-bottom:12px solid #fff;clip-path:polygon(0 12%,8% 6%,12% 11%,24% 0,29% 8%,44% 2%,51% 8%,65% 0,70% 7%,85% 0,89% 7%,100% 0,100% 89%,90% 96%,84% 90%,73% 100%,65% 92%,50% 100%,44% 94%,30% 100%,24% 91%,10% 100%,6% 93%,0 100%);overflow:hidden;box-shadow:0 0 0 8px #050407}
.moju-cut-portrait{position:absolute;left:50%;top:50%;width:auto;height:var(--face-zoom,330%);max-width:none;max-height:none;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(-14px 8px 0 #08070b);translate:calc(0% - var(--face-x,50%)) calc(0% - var(--face-y,35%));transform-origin:var(--face-x,50%) var(--face-y,35%)}
.moju-cut-copy{position:absolute;left:7%;bottom:13%;right:5%;opacity:0;text-transform:uppercase;color:white;text-shadow:4px 4px 0 #000,-2px -2px 0 #000;transform:rotate(-4deg);font-family:var(--pixel);line-height:1.15}
.moju-cut-copy small{display:block;color:var(--cut-color);font-size:clamp(20px,3.2vw,44px);font-weight:900;-webkit-text-stroke:1px #fff}
.moju-cut-copy strong{display:block;font-size:clamp(30px,6vw,88px);font-style:italic;letter-spacing:-.05em}
.moju-cut-copy span{display:block;margin-top:12px;font-size:clamp(16px,2.4vw,32px);color:#fff0b3}
@media(max-width:600px){.moju-cut-slash{top:27%;height:38%}.moju-cut-copy{bottom:18%;left:5%}}
@media(prefers-reduced-motion:reduce){.moju-cut-slash{transform:rotate(-7deg)}}
.moju-ready-sparkles{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:visible}.moju-ready-sparkles i{position:absolute;left:calc(9% + mod(var(--spark-i)*37,83)*1%);top:calc(8% + mod(var(--spark-i)*29,77)*1%);color:#fff7ab;font:normal clamp(16px,2vw,30px) serif;text-shadow:0 0 8px #ffde54,0 0 14px #fff;animation:moju-ready-twinkle 1.9s ease-in-out infinite;animation-delay:calc(var(--spark-i)*-.27s)}
@keyframes moju-ready-twinkle{0%,100%{opacity:0;transform:translateY(7px) scale(.25) rotate(0)}45%{opacity:1;transform:translateY(-3px) scale(1.1) rotate(35deg)}80%{opacity:0;transform:translateY(-12px) scale(.35) rotate(70deg)}}
@media(prefers-reduced-motion:reduce){.moju-ready-sparkles i{animation:none;opacity:.8}}
.ko-tamer-talk{position:fixed;z-index:100025;left:50%;top:50%;transform:translate(-50%,-50%);width:min(760px,92vw);min-height:190px;display:flex;align-items:center;gap:24px;padding:24px;border:3px solid #ffdf69;background:linear-gradient(120deg,#30203e,#100b19);box-shadow:0 0 0 100vmax #080510b3,0 10px 60px #000;color:white}.ko-tamer-talk img{width:150px;height:170px;object-fit:cover;object-position:top;image-rendering:pixelated;border:2px solid #aa86c9;background:#171123}.ko-tamer-talk strong{font:900 22px var(--pixel);color:#ffe079}.ko-tamer-talk p{font:20px/1.5 Arial,sans-serif;min-height:3em}.ko-tamer-talk>div{flex:1}@media(max-width:600px){.ko-tamer-talk{gap:12px;padding:15px}.ko-tamer-talk img{width:85px;height:130px}.ko-tamer-talk p{font-size:16px}.ko-tamer-talk strong{font-size:18px}}
.hud-mon-portrait{width:44px!important;height:44px!important;flex:0 0 44px;object-fit:contain;image-rendering:pixelated;background:radial-gradient(ellipse,#52415e,#151120);border:1px solid #8c729c;border-radius:8px;padding:3px;vertical-align:middle}.hud-name-group,.hud-name-row{display:flex;align-items:center;gap:9px;min-width:0}.hud-name-group .hud-name,.hud-name-row b{min-width:0;overflow-wrap:anywhere}
.hud .hp-track,.hud .hp{height:14px!important;border:2px solid #241a31!important;border-radius:8px!important;background:#332a40!important;overflow:hidden;box-shadow:inset 0 2px 4px #0007;margin:8px 0 5px!important;position:relative}
.hud .hp-fill,.hud .hp>i{height:100%;display:block;border-radius:5px;background-image:linear-gradient(180deg,#ffffff55,transparent 45%,#00000025)!important;box-shadow:0 0 9px #54dd9c66;transition:width .65s cubic-bezier(.2,.8,.2,1)}
.hud .hp-fill{background-color:#44d79a}.hud .hp-fill.warn{background-color:#efbd49}.hud .hp-fill.danger{background-color:#ef617e}.hud .hp-numbers{font-weight:800;letter-spacing:.02em}.hud .hp-numbers:before{content:'HP ';font-size:.85em;opacity:.7}
@media(max-width:600px){.hud-mon-portrait{width:32px!important;height:32px!important;flex-basis:32px}.hud-name-group,.hud-name-row{gap:5px}}
.island-banner{grid-column:1/-1;display:block;min-height:190px;padding:25px;color:#fff;text-decoration:none;border:1px solid #9273a8;background:linear-gradient(90deg,#0b0816ed 5%,#13091d99 55%,transparent),url('https://mojumon-artwork.senseicjdojo.workers.dev/assets/devoratos-island.png') center 48%/cover;position:relative;overflow:hidden}.island-banner h2{font:900 clamp(24px,3vw,42px) var(--pixel);color:#f3ceff;margin:12px 0}.island-banner p{font:16px/1.5 Arial,sans-serif}.island-banner small{letter-spacing:.12em;color:#e1b9f4}.island-banner b{color:#ffdf8d;font-size:14px}.island-banner:hover{border-color:#f3ceff}.adventure-link{grid-column:1/-1;display:block;padding:13px 20px;background:#25172f;color:#ffe599;border:1px solid #665176;text-decoration:none;font-weight:800}

/* Guardian dialogue uses the same face crop as its HUD, independent of tamer framing. */
.tamer-mugshot.guardian-mugshot{background-repeat:no-repeat;image-rendering:pixelated}
.tamer-mugshot.guardian-mugshot img{visibility:hidden}

/* Leave room for italic letter overhang, strokes and shadows during KO playback. */
.ko-announcement{padding:24px;overflow:visible;box-sizing:border-box}
.ko-announcement strong{font-size:clamp(72px,min(19vw,30svh),240px);line-height:1.25;padding:.08em .2em .14em;overflow:visible;flex-shrink:0}
.ko-announcement small{box-sizing:border-box;max-width:min(84vw,800px);overflow-wrap:anywhere;line-height:1.5;flex-shrink:0}
.ko-tamer-talk{box-sizing:border-box;max-height:calc(100svh - 32px);overflow:auto}
.ko-tamer-talk>div{min-width:0}
.ko-tamer-talk strong,.ko-tamer-talk p{overflow-wrap:anywhere;line-height:1.5}
@keyframes koSlam{0%{opacity:0;transform:scale(1.12) rotate(-6deg)}14%{opacity:1;transform:scale(.93) rotate(3deg)}23%{transform:scale(1.04) rotate(-3deg)}32%,76%{opacity:1;transform:scale(1) rotate(-2deg)}100%{opacity:0;transform:scale(1.06) translateY(-20px)}}
/* Role labels use distinct emblems and high-contrast, readable lettering. */
.role-badge{--role-ink:#ffad94;--role-bg:#451c23;display:inline-flex;align-items:center;gap:7px;padding:6px 10px;margin:8px 0 2px;border:1px solid var(--role-ink);border-radius:6px;background:var(--role-bg);color:var(--role-ink);font:900 16px/1.3 Arial,sans-serif;letter-spacing:.03em;box-shadow:inset 0 1px #ffffff18,0 2px 8px #0004;text-transform:uppercase;white-space:nowrap}.role-defense{--role-ink:#a9dcff;--role-bg:#173451}.role-support{--role-ink:#ffe58a;--role-bg:#413416}.role-badge svg{width:22px;height:22px;flex:none}.roster-card .role-badge{display:flex;width:max-content;max-width:100%}

/* Compact roles on selection cards; keep names and sprites dominant. */
.roster-card .role-badge{gap:4px;padding:3px 6px;margin:6px 0 0;font-size:12px;line-height:1.3;letter-spacing:.01em;border-radius:4px;box-shadow:none}.roster-card .role-badge svg{width:15px;height:15px}
.card-lock{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:3px;color:#eadbb0;background:#16101ee8;border:1px solid #947744;border-radius:4px;padding:3px 5px;font:700 10px/1.2 Arial,sans-serif;z-index:1}.card-lock svg{width:14px;height:14px}.card-lock span{display:inline}.roster-card .card-lock{pointer-events:none}

/* Soul Chip anger follows current HP, including healing, switches and fainting. */
/* Heroic Light follows live HP in singles and doubles; never affects layout. */
.unit.hylordan-lit,.field-unit.hylordan-lit{isolation:isolate}
.hylordan-lit::before{content:"";position:absolute;inset:3% -7% -2%;z-index:-1;pointer-events:none;border-radius:48%;background:radial-gradient(ellipse at 50% 65%,#ddff5844,#ffd34b33 42%,transparent 70%);box-shadow:inset 0 -10px 20px #e5ff6355;animation:hylordan-light-pulse 1.4s steps(8,end) infinite alternate}
.hylordan-lit::after{content:"";position:absolute;left:14%;top:55%;width:5px;height:5px;background:#fff6ad;box-shadow:24px -35px #caff65,48px 18px #ffde59,85px -60px #fff6ad,112px -10px #caff65,135px -42px #ffde59;pointer-events:none;z-index:3;animation:hylordan-light-rise 1.8s steps(12,end) infinite}
.hylordan-lit>img{filter:drop-shadow(0 0 5px #e0ff63) drop-shadow(0 -3px 8px #ffd54a99)}
@keyframes hylordan-light-pulse{from{opacity:.5;transform:scale(.94)}to{opacity:1;transform:scale(1.04)}}
@keyframes hylordan-light-rise{0%{opacity:0;transform:translateY(20px)}20%{opacity:1}80%{opacity:.8}100%{opacity:0;transform:translateY(-65px)}}
@media(prefers-reduced-motion:reduce){.hylordan-lit::before,.hylordan-lit::after{animation:none;opacity:.7}}
.unit.marro-enraged,.field-unit.marro-enraged{isolation:isolate;}
.marro-enraged::before{content:"";position:absolute;inset:8% -10% -4%;z-index:-1;pointer-events:none;border-radius:48% 48% 38% 38%;background:radial-gradient(ellipse at 50% 72%,#ff183c77 0%,#db072d44 35%,#ff143522 52%,transparent 70%);box-shadow:inset 0 -12px 25px #ff17354d;animation:marro-anger 1.1s ease-in-out infinite alternate;}
.marro-enraged>img{filter:drop-shadow(0 0 7px #ff153c) drop-shadow(0 -4px 12px #b80025aa);}
@keyframes marro-anger{from{opacity:.55;transform:translateY(2%) scale(.94,.96)}to{opacity:1;transform:translateY(-3%) scale(1.05,1.08)}}
@media(prefers-reduced-motion:reduce){.marro-enraged::before{animation:none;opacity:.75;}}

/* Short, readable summary effects in both battle formats. */
.summary-points{margin:.55rem 0 .8rem;padding-left:1.2rem;text-align:left;font-size:.9375rem;line-height:1.5;list-style:disc}
.summary-points li{margin:.3rem 0;padding-left:.15rem;color:inherit;overflow-wrap:anywhere}
.summary-move .summary-points{color:#e3eaf5}.kit-strategy{line-height:1.5}

.summary-team-guide{margin:14px 0;padding:12px;border:1px solid #78628f;border-radius:6px;background:#191524;color:#eae4f4;text-align:left;font:16px/1.5 sans-serif}.summary-team-guide p{margin:0 0 10px}.summary-tier{display:inline-block;border-radius:4px;background:#ffd15c;color:#211426;padding:2px 8px;margin-right:6px}.summary-team-guide h4{margin:10px 0;font-size:16px}.summary-team-guide ul{padding-left:20px;margin:8px 0}.summary-team-guide li{margin:8px 0}.summary-team-guide small{display:block;font-size:14px;color:#c7bfd5}

#summaryName,#summaryTitle{display:flex;align-items:center;flex-wrap:wrap;gap:8px}#summaryName .summary-tier,#summaryTitle .summary-tier{font:700 16px/1.4 sans-serif;white-space:nowrap}#summaryName small,#summaryTitle small{font:14px/1.4 sans-serif}.combo-preset{padding:12px 0;border-bottom:1px solid #59466d}.combo-members{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.combo-members>span{text-align:center;min-width:0}.combo-members img{display:block;width:100%;height:70px;object-fit:contain;image-rendering:pixelated}.combo-members b{display:block;font-size:14px;overflow-wrap:anywhere}.combo-preset p{font-size:15px;margin:10px 0}.combo-preset button{width:100%;min-height:44px;background:#ffd15c;color:#211426;border:1px solid #ffdf88;border-radius:5px;padding:10px;font:700 16px/1.4 sans-serif;cursor:pointer}.combo-preset button:disabled{background:#352d43;color:#c3b9cf;border-color:#6c5c80;cursor:default}.combo-preset button:focus-visible{outline:3px solid #85dcff;outline-offset:2px}.combo-feedback:empty{display:none}

.combo-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.combo-nav{display:flex;align-items:center;gap:8px}.combo-nav button{min-width:44px;min-height:44px;background:#30233d;color:#ffe08a;border:1px solid #9479ad;border-radius:5px;font:700 26px/1 sans-serif;cursor:pointer}.combo-nav button:focus-visible{outline:2px solid #85dcff;outline-offset:2px}.combo-nav span{font:14px/1.4 sans-serif;white-space:nowrap}.combo-preset[hidden]{display:none!important}

.summary-team-guide{border:2px solid #e8ba4a;background:linear-gradient(135deg,#4d3811,#281e0d);color:#fff4d5;box-shadow:inset 0 0 0 1px #ffdc7a33,0 3px 14px #0003;border-radius:10px;padding:16px}.summary-team-guide h4{color:#ffdb73}.summary-team-guide small{color:#eed7a4}.summary-team-guide .combo-preset{border-color:#a17b35}.summary-team-guide .combo-nav button{background:#634918;border-color:#e8ba4a;color:#fff0bc}.summary-team-guide .combo-preset button:disabled{background:#44361f;color:#d5c6a6;border-color:#9b7e47}

.hibaran-sparks{position:absolute;inset:0;pointer-events:none;z-index:4}.hibaran-sparks i{position:absolute;width:3px;height:3px;background:#fff6a0;box-shadow:3px 0 #ffae20,-3px 0 #ffae20,0 3px #ffae20,0 -3px #ffae20;opacity:0;animation:hibaran-spark 1.9s steps(9,end) infinite}.hibaran-sparks:not(.short-fuse) i:nth-child(n+7){display:none}.hibaran-sparks.short-fuse i{animation-duration:1.05s;box-shadow:3px 0 #ffad16,-3px 0 #ffad16,0 3px #ffad16,0 -3px #ffad16,0 6px #ec4b19}@keyframes hibaran-spark{0%,65%,100%{opacity:0;transform:translate(0,0) scale(.5)}10%{opacity:1;transform:translate(0,0) scale(1)}55%{opacity:0;transform:translate(var(--sx),var(--sy)) scale(.5)}}@media(prefers-reduced-motion:reduce){.hibaran-sparks i{animation:none;opacity:.6}.hibaran-sparks i:nth-child(n+5){display:none}}
