.attack-cutin{position:absolute;inset:0;z-index:40;display:grid;place-items:center;background:#071922dc;overflow:hidden;pointer-events:auto;animation:attack-cover .2s ease-out}
.rps-reveal{position:absolute;inset:0;z-index:45;display:grid;place-items:center;padding:18px;background:#061b2eef;overflow:auto}
.rps-card{--rps-accent:#ffe18a;color:#f7fbec;text-align:center;font-weight:900}
.rps-reveal>.rps-card{width:min(610px,100%);padding:18px 24px;border:4px solid var(--rps-accent);border-radius:28px;background:linear-gradient(135deg,#234f66,#12314a);box-shadow:inset 0 2px #fff7,0 8px #031b2f,0 0 0 8px #90def318;animation:rps-arrive .25s ease-out both}
.rps-lose{--rps-accent:#ffbb96}.rps-draw{--rps-accent:#b7caff}
.rps-card h2{font-size:clamp(32px,4.7vw,48px);line-height:1.25;color:var(--rps-accent);margin:0 0 12px;text-shadow:0 3px #09253c}
.rps-match{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px}
.rps-side{display:grid;justify-items:center;gap:8px}.rps-side>span{font-size:24px}.rps-side>b{font-size:21px}
.rps-orb{width:clamp(85px,13vw,132px);aspect-ratio:1;display:grid;place-items:center;border:3px solid #bedad6;background:radial-gradient(circle at 35% 25%,#fff,#ecf6ef 65%,#a9cdd0);border-radius:50%;box-shadow:0 5px #061c31}
.rps-orb .hand-icon{width:88%;height:88%;object-fit:contain}.rps-winner .rps-orb{border-color:#ffdb61;box-shadow:0 0 0 6px #ffda6944,0 5px #061c31}.rps-loser .rps-orb{opacity:.7;transform:scale(.87)}
.rps-direction{font:900 55px/1 sans-serif;color:var(--rps-accent)}.rps-card>p{font-size:clamp(20px,2.8vw,31px);line-height:1.4;margin:16px 0 0;color:#fffdf0}
.rps-compact{padding:10px 12px;background:#173c50;border:2px solid var(--rps-accent);border-radius:16px}
.rps-compact h2{font-size:25px;margin:0 0 6px}.rps-compact .rps-match{gap:10px}.rps-compact .rps-side{gap:3px}.rps-compact .rps-side>span{font-size:15px}.rps-compact .rps-orb{width:62px}.rps-compact .rps-direction{font-size:31px}.rps-compact>p{font-size:18px;margin:9px 0 0}
.visual-duel .duel-console:has(>.rps-card){justify-content:flex-start;gap:8px;overflow:auto}.visual-duel .duel-console>.rps-card{flex:none}.visual-duel .duel-console:has(>.rps-card) .math-feedback{padding:5px;margin:0;font-size:16px}.visual-duel .duel-console:has(>.rps-card) .math-feedback span{display:none}.visual-duel .duel-console:has(>.rps-card) .duel-next{margin-top:auto;padding-top:3px}.visual-duel .duel-console:has(>.rps-card) .ability-events{margin:0}
.attack-caption:has(.cutin-rps){display:grid;grid-template-columns:1fr 205px;align-items:center;gap:15px}.cutin-rps .rps-card{padding:6px 10px}.cutin-rps .rps-card h2{font-size:19px;text-shadow:none}.cutin-rps .rps-card>p{display:none}.cutin-rps .rps-side>span{font-size:13px}.cutin-rps .rps-orb{width:42px}.cutin-rps .rps-direction{font-size:24px}.cutin-rps .rps-match{gap:6px}
.visual-duel .special-impact .damage-number,.visual-duel .special-impact .enemy-actor.hit,.visual-duel .special-impact .player-actor.attacking{animation-delay:0s}
@keyframes rps-arrive{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@media(max-width:650px){.rps-reveal{position:fixed;padding:12px}.rps-reveal>.rps-card{padding:23px 16px}.rps-match{gap:9px}.rps-orb{width:104px}.rps-direction{font-size:36px}.rps-side>span{font-size:21px}.attack-caption:has(.cutin-rps){grid-template-columns:1fr 125px;gap:8px}.cutin-rps .rps-card h2{font-size:15px}.cutin-rps .rps-card{padding:6px}.cutin-rps .rps-orb{width:32px}.cutin-rps .rps-side>span{font-size:11px}.cutin-rps .rps-direction{font-size:19px}}
@media(prefers-reduced-motion:reduce){.rps-reveal>.rps-card{animation:none}}
@media(max-width:899px){.rps-reveal,.attack-cutin{position:fixed}}
.attack-frame{position:relative;width:min(90%,860px);height:90%;display:grid;grid-template-rows:minmax(0,1fr) auto;background:#142f3e;border:4px solid #ffe8a0;border-radius:22px;overflow:hidden;box-shadow:0 14px 40px #0008;animation:attack-enter .32s cubic-bezier(.2,.9,.3,1) both}
.cutin-art{min-height:0;display:grid;place-items:center;background:radial-gradient(ellipse,#376276,#173440 70%);overflow:hidden}.cutin-art>img{display:block;width:100%;height:100%;min-height:0;object-fit:contain}.cutin-art>.enemy-sprite,.cutin-art>.sprite{width:min(65vw,330px);height:min(65vw,330px)}
.attack-caption{padding:10px 20px 16px;text-align:center;background:#12313f;color:#fff4ce;border-top:3px solid #ffe8a0}
.attack-caption span{display:block;font-size:17px;color:#a5e6de}.attack-caption strong{font-size:clamp(25px,3.4vw,42px);line-height:1.3}.enemy-cutin .attack-frame{border-color:#f4ad83;animation-name:enemy-attack-enter}.enemy-cutin .attack-caption{border-color:#f4ad83}.enemy-cutin .attack-caption span{color:#ffceb3}
.finisher-panel,.finale-panel{box-sizing:border-box;width:min(900px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);margin:auto;padding:22px 34px;border:5px solid #f6c84e;border-radius:28px;background:radial-gradient(ellipse at top,#315b71,#10293e 75%);color:#fff8de;text-align:center;overflow:auto;box-shadow:0 0 0 6px #fff0ba44,0 20px 90px #0008;font-family:inherit}
.finisher-panel::backdrop,.finale-panel::backdrop{background:#071d30e8}.finisher-panel[open]{display:grid;grid-template-columns:190px 1fr;column-gap:25px;align-items:center;animation:finisher-enter .35s ease-out}
.finisher-enemy{grid-column:1;grid-row:1/6;display:grid;place-items:center;align-self:stretch;border-right:2px solid #e9c86366}.finisher-enemy .enemy-sprite{width:190px;height:169px;filter:drop-shadow(0 14px 8px #0006)}
.finisher-panel>*:not(.finisher-enemy){grid-column:2}.finisher-kicker{font-size:17px;letter-spacing:.15em;color:#ffdf6c;margin:0}.finisher-panel h2{font-size:clamp(29px,4.5vw,47px);line-height:1.2;margin:6px 0 9px;color:#ffe781}.finisher-instruction{font-size:19px;margin:0 0 12px}.finisher-time>span{display:block;font-size:18px}.finisher-time b{font-size:25px;font-variant-numeric:tabular-nums}.finisher-time>div{height:12px;background:#091f31;border-radius:8px;overflow:hidden;margin-top:5px}.finisher-time i{display:block;width:100%;height:100%;background:#5bdbc0}.finisher-time.urgent i{background:#ff975e}.finisher-time.urgent b{color:#ffb070}
.finisher-equation{display:flex;align-items:center;justify-content:center;gap:14px;font-size:clamp(38px,5.8vw,76px);font-weight:1000;white-space:nowrap;padding:12px 0}.finisher-equation output{min-width:105px;background:#fffbe7;color:#15384c;border:4px solid #f5c952;border-radius:16px;padding:0 8px;line-height:1.5}.finisher-message{font-size:19px;min-height:28px;margin:0 0 8px;color:#ffe494}
.finisher-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.finisher-keypad button{min-height:54px;background:#f7fcf3;border:2px solid #a2c5c3;border-radius:12px;box-shadow:0 4px #689496;color:#173e4c;font-family:inherit;font-weight:900;font-size:28px;cursor:pointer}.finisher-keypad .finisher-submit{background:#ffdc58;color:#49320c;border-color:#efb432;font-size:22px}.finisher-keypad button:active{transform:translateY(3px);box-shadow:0 1px #689496}
.finale-panel[open]{display:flex;min-height:min(540px,85dvh);align-items:center;justify-content:center;flex-direction:column;overflow:hidden;animation:finisher-enter .3s both}.finale-panel>span{font-size:clamp(45px,10vw,100px);font-weight:1000;color:#ffe171;line-height:1.1}.finale-panel h2{font-size:clamp(28px,5vw,48px);margin:16px 0}.finale-panel p{font-size:32px;margin:0}.finale-enemy .enemy-sprite{width:200px;height:178px}.finale-victory{background:radial-gradient(ellipse at center,#467374,#183346 68%)}.finale-victory .finale-enemy{animation:enemy-defeated 1.4s .15s both}.finale-victory>span{animation:finish-stamp .55s .4s both}.finale-escape .finale-enemy{animation:enemy-escape 1.4s .15s both}.finale-escape>span{font-size:45px;color:#becddd}
@keyframes attack-enter{from{opacity:0;transform:translateX(-30%) rotate(-3deg)}to{opacity:1;transform:none}}@keyframes enemy-attack-enter{from{opacity:0;transform:translateX(30%) rotate(3deg)}to{opacity:1;transform:none}}@keyframes attack-cover{from{opacity:0}to{opacity:1}}@keyframes finisher-enter{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@keyframes finish-stamp{from{opacity:0;transform:scale(1.7)}to{opacity:1;transform:scale(1)}}@keyframes enemy-defeated{20%{transform:translateX(8px)}35%{transform:translateX(-8px)}55%{opacity:1;transform:scale(1.06)}to{opacity:0;transform:scale(.3) translateY(-80px)}}@keyframes enemy-escape{20%{transform:translateX(-20px) rotate(-8deg)}to{transform:translateX(650px);opacity:0}}
@media(max-width:650px){.attack-frame{width:96%;height:85%}.attack-caption{padding:12px 8px}.finisher-panel{padding:16px;border-radius:20px}.finisher-panel[open]{display:block}.finisher-enemy{display:none}.finisher-kicker{font-size:15px}.finisher-panel h2{font-size:34px}.finisher-instruction{font-size:17px}.finisher-equation{font-size:48px;gap:9px}.finisher-equation output{min-width:78px}.finisher-keypad button{min-height:56px;font-size:27px}.finisher-message{font-size:17px}.finale-panel{padding:20px 12px}.finale-panel p{font-size:27px}}
@media(max-height:620px){.finisher-panel{padding:12px 24px}.finisher-panel h2{font-size:32px}.finisher-kicker,.finisher-instruction{display:none}.finisher-equation{font-size:46px;padding:6px 0}.finisher-keypad button{min-height:44px}.finisher-keypad{gap:6px}.finisher-message{margin:0 0 4px}}
@media(prefers-reduced-motion:reduce){.attack-cutin,.attack-frame,.finisher-panel,.finale-panel,.finale-panel>*{animation:none!important;transition:none!important}}

.quiz-charge{text-align:center;margin:0 0 10px;padding:9px;border:2px solid #7daaa5;border-radius:13px;background:#f6fff1}.quiz-charge b{display:block;font-size:24px}.quiz-charge span{display:block;font-size:16px;margin:3px 0}.quiz-charge>div{font-size:23px;color:#be872a;letter-spacing:3px}.visual-duel .duel-learning-note{margin-bottom:9px}.visual-duel .math-feedback span{font-size:21px}
.battle-result{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(240px,.9fr) minmax(0,1.1fr);align-items:center;gap:55px;min-height:min(640px,calc(100dvh - 30px));height:100%;max-height:calc(100dvh - 20px);padding:45px clamp(25px,6vw,90px);border:5px solid #719a97;border-radius:26px;background:radial-gradient(ellipse at 20% 35%,#356173,#173347 65%);color:#faffed;overflow:auto;box-shadow:0 7px #173e46}
.result-victory{border-color:#e8c262;background:radial-gradient(ellipse at 20% 35%,#776731,#193e4a 65%)}
.result-art{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;min-height:350px}.result-halo{position:absolute;inset:0;z-index:-1;background:repeating-conic-gradient(from 15deg,#c7ead309 0 15deg,transparent 15deg 30deg);border-radius:50%;mask-image:radial-gradient(#000,transparent 70%)}
.result-art>.enemy-sprite{width:min(340px,100%);height:300px;filter:drop-shadow(0 15px 10px #03192377)}.result-art>.medal-coin{width:260px;margin:0;animation:medal-reveal .65s ease-out both}.result-art>span{font-size:25px;font-weight:900;color:#dceada}.result-art>b{font-size:24px;color:#ffe391}.result-escape .result-art>.enemy-sprite{opacity:.65;transform:rotate(-8deg)}
.result-kicker{font-size:20px;font-weight:900;letter-spacing:.08em;color:#f0cf79}.result-copy h2{font-size:clamp(30px,3.6vw,49px);line-height:1.35;margin:14px 0 20px;color:#fff3b5}.result-copy>p{font-size:22px;line-height:1.8;margin:0 0 30px;color:#d4e5df}.result-actions{display:grid;gap:17px;max-width:430px}.result-actions .game-button{width:100%;display:flex;justify-content:center;align-items:center;gap:10px;min-height:69px;padding:14px 18px;font-size:23px;line-height:1.4}.result-actions button>span{font-size:32px}.result-secondary{display:inline-block;padding:15px 5px;margin-top:13px;color:#d6ebe3;font-size:18px}.result-secondary:focus-visible{outline:3px solid #ffe48b}
@keyframes medal-reveal{from{opacity:0;transform:scale(.7) rotate(-18deg)}to{opacity:1;transform:none}}
@media(max-width:700px){.battle-result{grid-template-columns:1fr;gap:15px;padding:22px 18px;text-align:center;height:auto;max-height:none;min-height:100dvh;border-width:3px;border-radius:18px}.result-art{min-height:170px;gap:8px}.result-art>.enemy-sprite{width:200px;height:178px}.result-art>.medal-coin{width:170px}.result-art>span{font-size:20px}.result-art>b{font-size:21px}.result-copy h2{font-size:32px;margin:9px 0 13px}.result-kicker{font-size:17px}.result-copy>p{font-size:19px;margin-bottom:23px}.result-actions{margin:auto}.result-actions .game-button{font-size:21px;min-height:64px}}
@media(min-width:701px) and (max-height:650px){.battle-result{min-height:0;padding:25px 45px;gap:25px}.result-art{min-height:250px}.result-art>.enemy-sprite{width:260px;height:231px}.result-art>.medal-coin{width:200px}.result-copy>p{font-size:20px;margin-bottom:22px}.result-actions .game-button{min-height:57px;font-size:21px}}
@media(prefers-reduced-motion:reduce){.result-art>.medal-coin{animation:none}}
@media(min-width:900px){body[data-screen="fight"] .battle-result{height:var(--play-height);min-height:0;max-height:none;padding-block:25px}.battle-result .result-art{min-height:280px}}

/* A tactile, original battle console: bold rims, inset wells and glossy keys. */
.visual-duel .duel-console:has(.duel-hand-options){position:relative;background:linear-gradient(125deg,#245979,#17354f 65%);border:4px solid #102d45;border-radius:20px;box-shadow:inset 0 0 0 3px #60bcd8,inset 0 0 0 6px #c2edee55,inset 0 12px 20px #8ceaff11;isolation:isolate;padding:22px 17px}
.visual-duel .duel-choose-tip{color:#f6ffff;text-shadow:0 3px #10314d;font-size:25px;letter-spacing:.03em;margin:0 0 17px}
.visual-duel .duel-hand-options{gap:17px}
.visual-duel .duel-hand-options .hand-choice{--key-light:#fff7d3;--key-main:#f4b35e;--key-bottom:#d78940;position:relative;overflow:visible;border:3px solid #183b51;border-radius:21px;background:linear-gradient(175deg,var(--key-light) 0%,var(--key-main) 48%,var(--key-bottom) 50%,var(--key-main) 100%);box-shadow:inset 0 2px 0 2px #ffffffe6,inset 0 -3px 0 1px #583d332f,0 5px 0 #071f32,0 7px 0 #65d9ed88,0 10px 12px #071c354d;padding:13px 13px;gap:14px;transition:transform .12s ease-out,filter .12s}
.visual-duel .duel-hand-options .choice-1{--key-light:#e6ffc9;--key-main:#9be2a7;--key-bottom:#5fb991}.visual-duel .duel-hand-options .choice-2{--key-light:#e7f8ff;--key-main:#a2dbef;--key-bottom:#70b5dc}
.visual-duel .duel-hand-options .choice-orb{background:radial-gradient(circle at 35% 25%,#fff,#ebf5f1 60%,#9fbbc1);border:3px solid #35546b;box-shadow:inset 0 2px #fff,0 3px #527886,0 0 0 3px #ffffffe0;border-radius:50%}
.visual-duel .duel-hand-options .hand-tech-name{color:#173f54;font-size:clamp(23px,2.1vw,29px);font-weight:1000;line-height:1.32;text-shadow:0 2px 0 #fff8}
.visual-duel .duel-hand-options .choice-effect{margin-top:9px;padding:5px 7px;border-radius:9px;background:#faffedb8;box-shadow:inset 0 2px 3px #27504524;color:#244c54;font-size:16px;line-height:1.4}
.visual-duel .duel-hand-options .favorite-choice>small{right:9px;top:-13px;padding:3px 10px;border:2px solid #9d6621;border-radius:10px;background:linear-gradient(#fff9a9,#ffcf45);color:#704516;font-size:16px;text-shadow:0 1px #fff5;box-shadow:0 2px #143c56;transform:rotate(5deg)}
.visual-duel .duel-hand-options .hand-choice:disabled{filter:grayscale(1);opacity:.46;box-shadow:inset 0 2px 5px #112b4555;transform:translateY(4px)}
.visual-duel .duel-hand-options .hand-choice:focus-visible{outline:4px solid #fff3a2;outline-offset:5px}
.visual-duel .duel-hand-options .hand-choice:active:not(:disabled){transform:translateY(4px);box-shadow:inset 0 2px 0 #fff9,0 1px #061f31}
@media(hover:hover){.visual-duel .duel-hand-options .hand-choice:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-2px)}}
@media(min-width:900px) and (max-height:700px){.visual-duel .duel-console:has(.duel-hand-options){padding:15px 12px}.visual-duel .duel-choose-tip{font-size:22px;margin-bottom:12px}.visual-duel .duel-hand-options{gap:13px}.visual-duel .duel-hand-options .hand-choice{padding:9px 11px}.visual-duel .duel-hand-options .hand-tech-name{font-size:23px}.visual-duel .duel-hand-options .choice-effect{font-size:14px;margin-top:5px}}
@media(max-width:899px){.visual-duel .duel-console:has(.duel-hand-options){margin:8px;padding:18px 13px}.visual-duel .duel-hand-options .hand-choice{min-height:110px}.visual-duel .duel-hand-options .hand-tech-name{font-size:24px}}
@media(min-width:900px) and (max-height:800px){
 .visual-duel .duel-console:has(.duel-math){padding:12px}
 .visual-duel .duel-learning-note{font-size:21px;margin:0 0 8px}
 .quiz-charge{padding:5px 8px;margin-bottom:9px}
 .quiz-charge b{font-size:22px;line-height:1.3}
 .quiz-charge span{font-size:14px;margin:2px 0;line-height:1.4}
 .quiz-charge>div{font-size:20px;line-height:1.3}
 .visual-duel .duel-keypad{gap:8px}
 .visual-duel .duel-keypad button{min-height:49px}
}
.visual-duel .luck-guard-badge{position:absolute;z-index:6;left:50%;bottom:8%;transform:translateX(-50%);display:flex;align-items:center;gap:6px;white-space:nowrap;padding:5px 10px;border:2px solid #b6f4d2;border-radius:20px;background:#effff5;color:#165e48;box-shadow:0 3px 0 #183f43,0 0 15px #a0f3bc55;font-size:16px;line-height:1.2;animation:luck-guard-pop .65s ease-out both}.visual-duel .luck-guard-badge .battle-icon{width:26px;height:26px;flex:none}.visual-duel .luck-guard-badge .icon-luck{color:#16824b}.visual-duel .luck-guard-badge b{font-weight:900}@keyframes luck-guard-pop{0%{opacity:0;transform:translateX(-50%) scale(.8)}50%{opacity:1;transform:translateX(-50%) scale(1.08)}100%{opacity:1;transform:translateX(-50%) scale(1)}}@media(max-width:600px){.visual-duel .luck-guard-badge{font-size:13px;padding:4px 8px;gap:5px}.visual-duel .luck-guard-badge .battle-icon{width:22px;height:22px}}
