.battle-v2-live-shell {
  --bg: #050b14;
  --panel: rgba(10, 22, 39, .86);
  --panel-strong: rgba(7, 15, 28, .96);
  --line: rgba(122, 206, 255, .20);
  --cyan: #63e6ff;
  --blue: #3d8cff;
  --red: #ff5f72;
  --violet: #a47cff;
  --gold: #ffd67a;
  --text: #f5f9ff;
  --muted: #8da7c1;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  box-sizing: border-box;
  color: var(--text);
  font-family: Pretendard, Inter, system-ui, sans-serif;
  background:
    radial-gradient(circle at 10% 12%, rgba(38,137,255,.16), transparent 35%),
    radial-gradient(circle at 88% 24%, rgba(157,78,255,.13), transparent 32%),
    linear-gradient(180deg,#06101f 0%,#050b14 68%,#03070e 100%);
}
.battle-v2-live-shell *, .battle-v2-live-shell *::before, .battle-v2-live-shell *::after { box-sizing:border-box; }
.battle-v2-shell { width: min(1560px, 100%); margin: 0 auto; padding: 28px 24px calc(44px + var(--safe-bottom)); }
.battle-v2-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.battle-v2-header p, .battle-v2-explain > small, .battle-v2-log header small { margin: 0 0 7px; color: var(--cyan); font-weight: 900; letter-spacing: .18em; font-size: 12px; }
.battle-v2-header h1 { margin: 0; font-size: clamp(34px, 5vw, 62px); letter-spacing: -.055em; }
.battle-v2-header span { display: block; margin-top: 8px; color: var(--muted); font-weight: 700; }
.battle-v2-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.battle-v2-badges b { padding: 9px 12px; border: 1px solid var(--line); border-radius: 999px; background: rgba(8, 20, 36, .8); color: #b7d8f4; font-size: 11px; letter-spacing: .08em; }
.battle-v2-status { min-height: 48px; display: flex; align-items: center; padding: 13px 17px; margin-bottom: 14px; border: 1px solid var(--line); border-radius: 16px; background: rgba(9, 21, 38, .76); color: #b9d1e7; font-weight: 800; }
.battle-v2-status.error { border-color: rgba(255, 94, 113, .45); color: #ffb1bb; }
.battle-v2-scoreboard { display: grid; grid-template-columns: 1fr auto 1fr; gap: 16px; align-items: stretch; margin-bottom: 14px; }
.team-summary { min-height: 112px; padding: 18px 20px; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(145deg, rgba(11, 29, 51, .93), rgba(7, 15, 28, .94)); position: relative; overflow: hidden; }
.team-summary::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--cyan); box-shadow: 0 0 28px var(--cyan); }
.team-summary.team-b::before { inset: 0 0 0 auto; background: var(--red); box-shadow: 0 0 28px var(--red); }
.team-summary header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.team-summary header small { color: var(--muted); font-weight: 800; letter-spacing: .12em; }
.team-summary header strong { font-size: 22px; }
.team-summary dl { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 16px 0 0; }
.team-summary dl div { min-width: 0; }
.team-summary dt { color: #718ba5; font-size: 11px; font-weight: 800; }
.team-summary dd { margin: 3px 0 0; font-size: 17px; font-weight: 900; white-space: nowrap; }
.battle-v2-center-mark { align-self: center; display: grid; place-items: center; min-width: 105px; }
.battle-v2-center-mark span, .battle-v2-center-mark small { color: #809ab3; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.battle-v2-center-mark strong { font-size: 34px; color: var(--gold); text-shadow: 0 0 24px rgba(255, 214, 122, .3); }
.battle-v2-controls { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 14px; padding: 12px; border: 1px solid var(--line); border-radius: 18px; background: rgba(7, 16, 29, .82); }
.battle-v2-controls button, .battle-v2-controls .back-main, .battle-v2-controls select { min-height: 44px; border: 1px solid rgba(122, 206, 255, .22); border-radius: 13px; background: #0b1b30; padding: 0 16px; font-weight: 900; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.battle-v2-controls button.primary { border-color: transparent; background: linear-gradient(135deg, #00b9f8, #3978ff); box-shadow: 0 10px 28px rgba(31, 145, 255, .25); }
.battle-v2-controls button:disabled { opacity: .42; cursor: not-allowed; }
.battle-v2-controls label { margin-left: auto; display: flex; align-items: center; gap: 9px; color: var(--muted); font-weight: 800; }
.battle-v2-arena { position: relative; min-height: 650px; overflow: hidden; border: 1px solid rgba(105, 208, 255, .28); border-radius: 30px; background: linear-gradient(180deg, rgba(8, 25, 45, .98), rgba(4, 11, 21, .98)); box-shadow: 0 26px 70px rgba(0,0,0,.35), inset 0 0 80px rgba(35, 132, 255, .06); display: grid; grid-template-columns: 1fr minmax(190px, .32fr) 1fr; gap: 18px; padding: 86px 26px 28px; }
.battle-v2-arena::after { content: ''; position: absolute; inset: 56% 0 0; background: linear-gradient(180deg, transparent, rgba(54, 120, 184, .08)), repeating-linear-gradient(90deg, transparent 0 80px, rgba(97, 190, 255, .035) 81px 82px); border-top: 1px solid rgba(102, 193, 255, .11); transform: perspective(500px) rotateX(55deg) scale(1.3); transform-origin: top; pointer-events: none; }
.arena-glow { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 24% 45%, rgba(38, 169, 255, .16), transparent 28%), radial-gradient(circle at 76% 45%, rgba(255, 64, 102, .12), transparent 28%); }
.action-order { position: absolute; top: 18px; left: 50%; transform: translateX(-50%); width: min(760px, calc(100% - 40px)); height: 46px; border: 1px solid var(--line); border-radius: 999px; background: rgba(3, 10, 19, .84); display: flex; align-items: center; justify-content: center; gap: 7px; padding: 5px 12px; z-index: 8; overflow: hidden; }
.order-chip { width: 34px; height: 34px; border-radius: 50%; border: 2px solid rgba(255,255,255,.2); overflow: hidden; position: relative; flex: 0 0 auto; }
.order-chip img { width: 100%; height: 100%; object-fit: cover; }
.order-chip.a { box-shadow: 0 0 0 2px rgba(74, 204, 255, .32); }
.order-chip.b { box-shadow: 0 0 0 2px rgba(255, 83, 110, .28); }
.team-field { z-index: 3; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: 1fr 1fr; gap: 20px 11px; align-items: center; overflow: visible; }
.battle-card-v2 { position: relative; min-width: 0; height: 296px; overflow: visible; transition: transform .24s ease, filter .24s ease, opacity .24s ease; color: #fff; }
.team-field-a .battle-card-v2:nth-child(1) { grid-column: 2 / span 2; grid-row: 2; }
.team-field-a .battle-card-v2:nth-child(2) { grid-column: 4 / span 2; grid-row: 2; }
.team-field-a .battle-card-v2:nth-child(3) { grid-column: 1 / span 2; grid-row: 1; }
.team-field-a .battle-card-v2:nth-child(4) { grid-column: 3 / span 2; grid-row: 1; }
.team-field-a .battle-card-v2:nth-child(5) { grid-column: 5 / span 2; grid-row: 1; }
.team-field-b .battle-card-v2:nth-child(1) { grid-column: 2 / span 2; grid-row: 2; }
.team-field-b .battle-card-v2:nth-child(2) { grid-column: 4 / span 2; grid-row: 2; }
.team-field-b .battle-card-v2:nth-child(3) { grid-column: 1 / span 2; grid-row: 1; }
.team-field-b .battle-card-v2:nth-child(4) { grid-column: 3 / span 2; grid-row: 1; }
.team-field-b .battle-card-v2:nth-child(5) { grid-column: 5 / span 2; grid-row: 1; }
.battle-v2-frame-shell { position: relative; z-index: 8; height: 244px; display: grid; place-items: center; filter: drop-shadow(0 16px 25px rgba(0,0,0,.38)); }
.battle-v2-card-frame.card-frame { width: min(100%, 172px); height: 244px; aspect-ratio: auto; margin: 0; cursor: default; transform: none; }
.battle-v2-card-frame.card-frame:hover { transform: none; filter: none; }
.battle-v2-card-frame .card-inner { padding: 7px; }
.battle-v2-card-frame .card-header { height: 27px; }
.battle-v2-card-frame .card-header span { font-size: 12px; }
.battle-v2-card-frame .card-art img { display: block; width: 100%; height: 100%; object-fit: cover; }
.battle-v2-card-frame .card-art img.is-fallback { object-fit: contain; padding: 22%; opacity: .48; filter: grayscale(.3); }
.battle-v2-card-frame .card-footer { min-height: 51px; }
.battle-v2-card-frame .card-footer small { max-width: 100px; }
.battle-v2-card-frame .card-title { font-size: 12px; white-space: nowrap; text-overflow: ellipsis; }
.battle-v2-card-frame .card-mini-logo { width: 25px; }
.battle-v2-card-frame .breakthrough-badge { left: 6px; top: 6px; min-width: 39px; padding: 4px 7px; font-size: 9px; }
.battle-v2-card-frame .card-unique-badge { position: absolute; z-index: 22; left: auto; right: 7px; top: 33px; display: inline-flex; align-items: center; gap: 4px; max-width: calc(100% - 14px); min-height: 23px; padding: 4px 7px; border: 1px solid currentColor; border-radius: 8px; box-shadow: 0 3px 11px rgba(0,0,0,.48), inset 0 0 0 1px rgba(255,255,255,.08); line-height: 1; }
.battle-v2-card-frame .card-unique-badge i { font-size: 9px; font-style: normal; }
.battle-v2-card-frame .card-unique-badge b { font-size: 8px; font-weight: 1000; white-space: nowrap; }
.battle-v2-card-frame .card-unique-badge small { display: none; }
.stat-pills { position: absolute; z-index: 12; left: 50%; top: 52px; width: min(164px, 96%); transform: translateX(-50%); display: grid; grid-template-columns: repeat(2, 1fr); gap: 3px; opacity: 0; transition: opacity .2s ease; pointer-events: none; }
.battle-card-v2:hover .stat-pills, .battle-card-v2.is-acting .stat-pills { opacity: .95; }
.stat-pills span { padding: 3px 5px; border: 1px solid rgba(255,255,255,.09); border-radius: 6px; background: rgba(2, 8, 15, .82); color: #d5e8f8; font-size: 7px; font-weight: 900; text-align: center; backdrop-filter: blur(3px); }
.hp-stack { position: absolute; z-index: 13; left: 50%; bottom: 0; width: min(184px, 100%); transform: translateX(-50%); display: grid; gap: 3px; padding: 6px 8px 7px; border: 1px solid rgba(118,210,255,.19); border-radius: 11px; background: linear-gradient(180deg,rgba(4,13,25,.96),rgba(2,8,17,.98)); box-shadow: 0 9px 20px rgba(0,0,0,.34), inset 0 0 15px rgba(66,166,255,.04); }
.hp-caption { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #d9efff; font-size: 8px; font-weight: 900; }
.hp-caption b { color: var(--gold); }
.hp-caption span { color: #a9c4d9; }
.hp-track, .shield-track { height: 7px; border-radius: 99px; background: rgba(0,0,0,.76); overflow: hidden; border: 1px solid rgba(255,255,255,.1); box-shadow: inset 0 0 5px #000; }
.hp-track i, .shield-track i { display: block; height: 100%; width: 100%; transition: width .32s ease; }
.hp-track i { background: linear-gradient(90deg, #18c978, #80f5b8); box-shadow: 0 0 8px rgba(45,244,147,.5); }
.shield-track i { background: linear-gradient(90deg, #48c4ff, #9a82ff); box-shadow: 0 0 8px rgba(92,190,255,.55); }
.gauge-ring { position: absolute; z-index: 15; right: max(0px, calc(50% - 94px)); bottom: 22px; width: 27px; height: 27px; border-radius: 50%; background: conic-gradient(var(--gold) calc(var(--gauge, 0) * 1%), rgba(255,255,255,.12) 0); display: grid; place-items: center; box-shadow: 0 0 14px rgba(255, 214, 122, .18); }
.gauge-ring::after { content: ''; width: 18px; height: 18px; border-radius: 50%; background: #07111f; box-shadow: inset 0 0 6px #000; }
.battle-card-v2.is-acting { transform: translateY(-18px) scale(1.04); filter: brightness(1.14); z-index: 20; }
.team-field-a .battle-card-v2.is-acting { transform: translate(26px, -12px) scale(1.04); }
.team-field-b .battle-card-v2.is-acting { transform: translate(-26px, -12px) scale(1.04); }
.battle-card-v2.is-hit { animation: cardHit .42s ease; }
.battle-card-v2.is-guard-hit { animation: cardGuardHit .5s ease; }
.battle-card-v2.is-heal { animation: cardHeal .72s ease; }
.battle-card-v2.is-shield .battle-v2-card-frame { filter: brightness(1.13) drop-shadow(0 0 22px rgba(95, 220, 255, .55)); }
.battle-card-v2.is-dodge { animation: cardDodge .62s cubic-bezier(.2,.85,.2,1); }
.battle-card-v2.is-ko { opacity: .32; filter: grayscale(1) brightness(.58); transform: scale(.94); }
.battle-card-v2.is-ko::before { content: 'K.O.'; position: absolute; inset: 0 0 42px; z-index: 30; display: grid; place-items: center; font-size: 30px; font-weight: 1000; color: #fff; text-shadow: 0 3px 20px #000,0 0 18px #ff4565; }
.battle-card-v2.is-ko-burst .battle-v2-card-frame { animation: koFrameBurst .8s ease; }
.battle-card-v2.unique-card-fx-host>.unique-card-fx { z-index: 24; inset: -20% -34% 5%; }
.battle-card-v2.unique-card-fx-host>.unique-card-fx>b { bottom: 4%; }
.battle-v2-message { z-index: 7; align-self: center; text-align: center; display: grid; justify-items: center; pointer-events: none; }
.battle-v2-message small { color: var(--cyan); font-weight: 900; letter-spacing: .17em; font-size: 10px; }
.battle-v2-message strong { font-size: clamp(30px, 4vw, 54px); line-height: 1; margin: 8px 0; color: var(--gold); text-shadow: 0 0 28px rgba(255, 207, 100, .25); }
.battle-v2-message span { max-width: 220px; color: #9eb6cb; font-weight: 800; font-size: 12px; }
.battle-v2-fx { position: absolute; inset: 0; pointer-events: none; z-index: 45; overflow: visible; }
.damage-number { position: absolute; transform: translate(-50%, -50%); font-size: 28px; font-weight: 1000; color: #fff; text-shadow: 0 3px 12px #000; animation: damageFloat .9s ease forwards; }
.damage-number.critical { color: #ffd66f; font-size: 36px; }
.damage-number.heal { color: #69f0ae; }
.damage-number.shield { color: #72d7ff; }
.battle-v2-arena.flash-a::before, .battle-v2-arena.flash-b::before { content: ''; position: absolute; inset: 0; z-index: 14; pointer-events: none; animation: arenaFlash .42s ease; }
.battle-v2-arena.flash-a::before { background: linear-gradient(90deg, rgba(52, 196, 255, .22), transparent 55%); }
.battle-v2-arena.flash-b::before { background: linear-gradient(-90deg, rgba(255, 73, 106, .20), transparent 55%); }
.battle-v2-impact { position: absolute; z-index: 44; height: 5px; transform-origin: left center; border-radius: 999px; opacity: 0; animation: impactTravel .55s cubic-bezier(.2,.8,.2,1) both; }
.battle-v2-impact.impact-attack { background: linear-gradient(90deg,transparent,#fff 35%,#ff756a 62%,transparent); box-shadow: 0 0 14px #ff584d; }
.battle-v2-impact.impact-defense { background: linear-gradient(90deg,transparent,#eaffff 40%,#65dcff 65%,transparent); box-shadow: 0 0 14px #55cfff; }
.battle-v2-impact.impact-speed { height: 3px; background: linear-gradient(90deg,transparent,#fff,#7defff,transparent); box-shadow: 0 0 12px #6ae6ff; }
.battle-v2-impact.impact-hp { background: linear-gradient(90deg,transparent,#dfffe9,#58ef9a,transparent); box-shadow: 0 0 12px #58ef9a; }
.battle-v2-burst { position: absolute; z-index: 49; width: 94px; height: 94px; transform: translate(-50%,-50%); border-radius: 50%; opacity: 0; animation: impactBurst .72s ease-out both; }
.battle-v2-burst.burst-attack { background: radial-gradient(circle,#fff 0 5%,#ffd0c8 8%,#ff563e 19%,rgba(255,64,48,.25) 40%,transparent 68%); filter: drop-shadow(0 0 12px #ff5c46); }
.battle-v2-burst.burst-defense { background: radial-gradient(circle,#fff 0 5%,#b9f5ff 11%,#43cfff 23%,rgba(67,207,255,.22) 45%,transparent 70%); clip-path: polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%); }
.battle-v2-burst.burst-speed { background: conic-gradient(from 0deg,transparent,#dfffff,#66e8ff,transparent 35%,#fff,transparent 62%); filter: blur(.2px); }
.battle-v2-burst.burst-hp { background: radial-gradient(circle,#fff 0 4%,#a8ffd0 13%,rgba(70,239,145,.35) 35%,transparent 68%); }
.battle-v2-burst.burst-ko { width: 130px; height: 130px; background: repeating-conic-gradient(from 0deg,#fff 0 3deg,transparent 4deg 20deg),radial-gradient(circle,#ff4967,transparent 55%); filter: drop-shadow(0 0 14px #ff3555); }
.battle-v2-burst.is-critical { width: 126px; height: 126px; filter: drop-shadow(0 0 19px #ffd867); }
.battle-v2-arena.front-break-a { box-shadow: inset 32vw 0 90px rgba(255,58,84,.12),0 26px 70px rgba(0,0,0,.35); }
.battle-v2-arena.front-break-b { box-shadow: inset -32vw 0 90px rgba(255,58,84,.12),0 26px 70px rgba(0,0,0,.35); }
.battle-v2-arena.result-a { border-color: rgba(93,229,255,.7); box-shadow: 0 0 70px rgba(67,198,255,.2),inset 0 0 90px rgba(67,198,255,.1); }
.battle-v2-arena.result-b { border-color: rgba(255,91,118,.7); box-shadow: 0 0 70px rgba(255,64,98,.18),inset 0 0 90px rgba(255,64,98,.09); }
.battle-v2-lower { display: grid; grid-template-columns: 1.55fr .8fr; gap: 14px; margin-top: 14px; }
.battle-v2-log, .battle-v2-explain { border: 1px solid var(--line); border-radius: 22px; background: var(--panel); padding: 18px; min-height: 240px; }
.battle-v2-log header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,.08); padding-bottom: 12px; }
.battle-v2-log h2, .battle-v2-explain h2 { margin: 0; font-size: 22px; }
.battle-v2-log header span { color: var(--gold); font-weight: 900; }
#battleV2LogList { max-height: 250px; overflow: auto; padding-top: 10px; scrollbar-width: thin; }
.log-row { display: grid; grid-template-columns: 52px 1fr auto; gap: 10px; align-items: center; padding: 9px 7px; border-bottom: 1px solid rgba(255,255,255,.05); color: #afc4d8; font-size: 12px; }
.log-row b { color: var(--text); }
.log-row em { color: var(--cyan); font-style: normal; font-weight: 900; }
.battle-v2-explain ul { list-style: none; padding: 0; margin: 16px 0; display: grid; gap: 8px; }
.battle-v2-explain li { display: flex; justify-content: space-between; gap: 14px; padding: 10px 12px; border-radius: 12px; background: rgba(7, 18, 32, .75); }
.battle-v2-explain li b { color: var(--gold); }
.battle-v2-explain li span, .battle-v2-explain p { color: var(--muted); font-size: 12px; font-weight: 700; line-height: 1.6; }
@keyframes cardHit { 25% { transform: translateX(-8px) rotate(-1deg); filter: brightness(1.6); } 60% { transform: translateX(5px); } }
@keyframes cardHeal { 35% { filter: brightness(1.5) saturate(1.4); } }
@keyframes cardGuardHit { 28% { transform: scale(.96); filter: brightness(1.55) drop-shadow(0 0 20px #63dcff); } 62% { transform: scale(1.02); } }
@keyframes cardDodge { 35% { transform: translateX(-28px) skewX(-5deg); opacity:.46; } 58% { transform: translateX(15px) skewX(3deg); } }
@keyframes koFrameBurst { 30% { transform: scale(1.08); filter: brightness(2.1); } 100% { transform: scale(.92); filter: grayscale(1) brightness(.55); } }
@keyframes impactTravel { 0% { opacity:0; transform:rotate(var(--impact-angle,0deg)) scaleX(.04); } 22% { opacity:1; } 100% { opacity:0; transform:rotate(var(--impact-angle,0deg)) scaleX(1); } }
@keyframes impactBurst { 0% { opacity:0; transform:translate(-50%,-50%) scale(.18) rotate(-12deg); } 25% { opacity:1; } 100% { opacity:0; transform:translate(-50%,-50%) scale(1.55) rotate(18deg); } }
@keyframes damageFloat { 0% { opacity: 0; transform: translate(-50%, -20%) scale(.7); } 18% { opacity: 1; transform: translate(-50%, -50%) scale(1.1); } 100% { opacity: 0; transform: translate(-50%, -140%) scale(.94); } }
@keyframes arenaFlash { from { opacity: .9; } to { opacity: 0; } }
@media (max-width: 1100px) {
  .battle-v2-arena { min-height: 760px; grid-template-columns: 1fr; grid-template-rows: 1fr auto 1fr; padding-top: 78px; }
  .team-field { min-height: 280px; }
  .battle-v2-message { order: 2; }
  .team-field-a { order: 1; }
  .team-field-b { order: 3; }
  .battle-card-v2 { height: 246px; }
  .battle-v2-frame-shell { height: 198px; }
  .battle-v2-card-frame.card-frame { height: 198px; width: min(100%, 140px); }

.battle-v2-lower { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .battle-v2-shell { padding: 18px 10px calc(28px + var(--safe-bottom)); }
  .battle-v2-header { align-items: flex-start; flex-direction: column; }
  .battle-v2-badges { justify-content: flex-start; }
  .battle-v2-scoreboard { grid-template-columns: 1fr; }
  .battle-v2-center-mark { min-height: 54px; }
  .team-summary dl { grid-template-columns: repeat(2, 1fr); }
  .battle-v2-controls label { margin-left: 0; width: 100%; }
  .battle-v2-arena { min-height: 790px; padding: 74px 8px 16px; gap: 6px; border-radius: 22px; }
  .team-field { gap: 7px 4px; min-height: 300px; }
  .battle-card-v2 { height: 218px; }
  .battle-v2-frame-shell { height: 172px; }
  .battle-v2-card-frame.card-frame { height: 172px; width: min(100%, 122px); }
  .battle-v2-card-frame .card-inner { padding: 4px; }
  .battle-v2-card-frame .card-header { height: 20px; }
  .battle-v2-card-frame .card-header span { font-size: 9px; }
  .battle-v2-card-frame .card-footer { min-height: 38px; padding-top: 3px; }
  .battle-v2-card-frame .card-title { font-size: 8px; }
  .battle-v2-card-frame .card-footer small { font-size: 6px; max-width: 64px; }
  .battle-v2-card-frame .card-mini-logo { width: 17px; }
  .battle-v2-card-frame .card-unique-badge { right: 4px; top: 24px; min-height: 18px; padding: 3px 5px; }
  .battle-v2-card-frame .card-unique-badge b { font-size: 6px; }
  .hp-stack { width: min(136px, 100%); padding: 5px 6px 6px; }
  .hp-caption { font-size: 6px; }
  .gauge-ring { right: max(0px, calc(50% - 69px)); bottom: 19px; width: 22px; height: 22px; }
  .gauge-ring::after { width: 14px; height: 14px; }
  .stat-pills { display: none; }
  .team-field-a .battle-card-v2.is-acting { transform: translateY(10px) scale(1.04); }
  .team-field-b .battle-card-v2.is-acting { transform: translateY(-10px) scale(1.04); }
  .action-order { width: calc(100% - 18px); }
  .order-chip { width: 29px; height: 29px; }
}

/* v1314 responsive presentation layer */
.battle-v2-layout-note {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 42px;
  margin: -2px 0 14px;
  padding: 9px 13px;
  border: 1px solid rgba(122, 206, 255, .17);
  border-radius: 14px;
  background: rgba(5, 14, 26, .72);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.battle-v2-layout-note b {
  flex: 0 0 auto;
  color: var(--gold);
  letter-spacing: .04em;
}
.layout-control { margin-left: auto !important; }
.fullscreen-button { border-color: rgba(164,124,255,.42) !important; background: linear-gradient(135deg,rgba(53,24,92,.94),rgba(18,29,70,.96)) !important; }
.focus-battle { display: none; position: relative; z-index: 5; width: 100%; min-height: 100%; }
.focus-duel { position: relative; z-index: 5; display: grid; grid-template-areas: "a message b"; grid-template-columns: minmax(190px, 1fr) minmax(150px, .58fr) minmax(190px, 1fr); align-items: center; gap: 18px; min-height: 600px; padding: 26px 24px 20px; }
.focus-slot { min-width: 0; display: grid; place-items: center; overflow: visible; }
.focus-slot-a { grid-area: a; }
.focus-slot-b { grid-area: b; }
.focus-message { grid-area: message; }
.focus-slot .battle-card-v2 { width: min(250px, 100%); height: 388px; }
.focus-slot .battle-v2-frame-shell { height: 330px; }
.focus-slot .battle-v2-card-frame.card-frame { width: 232px; height: 330px; }
.focus-slot .battle-v2-card-frame .card-header { height: 36px; }
.focus-slot .battle-v2-card-frame .card-header span { font-size: 15px; }
.focus-slot .battle-v2-card-frame .card-footer { min-height: 66px; }
.focus-slot .battle-v2-card-frame .card-title { font-size: 15px; }
.focus-slot .battle-v2-card-frame .card-footer small { max-width: 145px; font-size: 10px; }
.focus-slot .battle-v2-card-frame .card-mini-logo { width: 32px; }
.focus-slot .battle-v2-card-frame .card-unique-badge { top: 42px; right: 9px; min-height: 28px; padding: 5px 9px; }
.focus-slot .battle-v2-card-frame .card-unique-badge b { font-size: 10px; }
.focus-slot .battle-v2-card-frame .card-unique-badge small { display: inline; max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 8px; opacity: .82; }
.focus-slot .stat-pills { top: 70px; width: 218px; opacity: 0; }
.focus-slot .battle-card-v2.is-acting .stat-pills { opacity: .96; }
.focus-slot .hp-stack { width: 246px; padding: 8px 10px 9px; }
.focus-slot .hp-caption { font-size: 10px; }
.focus-slot .hp-track, .focus-slot .shield-track { height: 9px; }
.focus-slot .gauge-ring { right: 0; bottom: 30px; width: 36px; height: 36px; }
.focus-slot .gauge-ring::after { width: 24px; height: 24px; }
.focus-roster { position: relative; z-index: 8; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding: 12px 16px; border: 1px solid rgba(122,206,255,.13); border-radius: 18px; background: rgba(2, 9, 18, .78); }
.focus-roster-b { border-color: rgba(255,95,114,.18); }
.focus-roster-a { border-color: rgba(99,230,255,.18); }
.focus-mini-card { position: relative; min-width: 0; height: 74px; display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 9px; align-items: center; padding: 7px; border: 1px solid rgba(255,255,255,.08); border-radius: 12px; background: linear-gradient(145deg,rgba(12,26,44,.96),rgba(4,11,21,.96)); transition: transform .2s ease,border-color .2s ease,filter .2s ease,opacity .2s ease; overflow: hidden; }
.focus-mini-card.side-a { box-shadow: inset 3px 0 0 rgba(99,230,255,.8); }
.focus-mini-card.side-b { box-shadow: inset 3px 0 0 rgba(255,95,114,.8); }
.focus-mini-card.is-active { transform: translateY(-3px); border-color: var(--gold); filter: brightness(1.15); box-shadow: 0 0 20px rgba(255,214,122,.18),inset 3px 0 0 var(--gold); }
.focus-mini-card.is-ko { opacity: .3; filter: grayscale(1); }
.focus-mini-image { position: relative; width: 52px; height: 58px; border-radius: 8px; overflow: hidden; border: 2px solid rgba(255,255,255,.16); background: #07111f; }
.focus-mini-image img { width: 100%; height: 100%; object-fit: cover; }
.focus-mini-image b { position: absolute; right: 3px; bottom: 3px; display: grid; place-items: center; width: 17px; height: 17px; border-radius: 50%; background: rgba(2,8,16,.88); color: var(--gold); font-size: 9px; }
.focus-mini-info { min-width: 0; display: grid; gap: 5px; }
.focus-mini-info strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.focus-mini-info small { color: #8ea7bd; font-size: 9px; font-weight: 900; }
.focus-mini-bars { display: grid; gap: 3px; }
.focus-mini-bars i { display: block; height: 5px; border-radius: 99px; background: rgba(0,0,0,.72); overflow: hidden; }
.focus-mini-bars i::before { content: ''; display: block; width: var(--value, 0%); height: 100%; transition: width .3s ease; }
.focus-mini-bars .mini-hp::before { background: linear-gradient(90deg,#18c978,#80f5b8); }
.focus-mini-bars .mini-shield::before { background: linear-gradient(90deg,#48c4ff,#9a82ff); }
.focus-mini-bars .mini-gauge::before { background: linear-gradient(90deg,#ffbd4a,#fff09a); }

/* desktop keeps the full 10-card field */
.layout-desktop .focus-battle { display: none; }
.layout-desktop .team-field,
.layout-desktop .desktop-message { display: grid; }

/* WAGo iframe: 100% width / 1750px high, focus on the current duel without reducing effects */
.layout-wago .battle-v2-shell { width: min(1180px, 100%); padding-top: 20px; }
.layout-wago .battle-v2-header { margin-bottom: 14px; }
.layout-wago .battle-v2-header h1 { font-size: clamp(34px, 5vw, 52px); }
.layout-wago .battle-v2-badges { max-width: 420px; }
.layout-wago .battle-v2-arena { min-height: 930px; display: block; padding: 76px 18px 20px; }
.layout-wago .team-field,
.layout-wago .desktop-message { display: none; }
.layout-wago .focus-battle { display: grid; grid-template-rows: auto 1fr auto; gap: 12px; }
.layout-wago .focus-duel { min-height: 690px; }
.layout-wago .action-order { width: min(760px, calc(100% - 30px)); }
.layout-wago .battle-v2-lower { grid-template-columns: 1.2fr .8fr; }

/* mobile portrait: current opponent on top, current player on bottom */
.layout-mobile-portrait .battle-v2-shell { width: 100%; padding: 12px 8px calc(24px + var(--safe-bottom)); }
.layout-mobile-portrait .battle-v2-header { align-items: flex-start; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.layout-mobile-portrait .battle-v2-header h1 { font-size: clamp(31px, 11vw, 46px); }
.layout-mobile-portrait .battle-v2-header span { font-size: 12px; }
.layout-mobile-portrait .battle-v2-badges { justify-content: flex-start; }
.layout-mobile-portrait .battle-v2-scoreboard { grid-template-columns: 1fr; }
.layout-mobile-portrait .team-summary { min-height: 94px; padding: 13px 15px; }
.layout-mobile-portrait .team-summary dl { grid-template-columns: repeat(4,1fr); gap: 5px; margin-top: 10px; }
.layout-mobile-portrait .team-summary dd { font-size: 13px; }
.layout-mobile-portrait .battle-v2-center-mark { min-height: 43px; }
.layout-mobile-portrait .battle-v2-controls { gap: 7px; padding: 9px; }
.layout-mobile-portrait .battle-v2-controls button,
.layout-mobile-portrait .battle-v2-controls .back-main,
.layout-mobile-portrait .battle-v2-controls select { min-height: 42px; padding: 0 11px; font-size: 12px; }
.layout-mobile-portrait .battle-v2-controls label { margin-left: 0 !important; width: calc(50% - 4px); display: grid; gap: 4px; font-size: 10px; }
.layout-mobile-portrait .battle-v2-controls label select { width: 100%; }
.layout-mobile-portrait .battle-v2-layout-note { align-items: flex-start; flex-direction: column; gap: 4px; }
.layout-mobile-portrait .battle-v2-arena { min-height: 1110px; display: block; padding: 68px 7px 12px; border-radius: 20px; }
.layout-mobile-portrait .team-field,
.layout-mobile-portrait .desktop-message { display: none; }
.layout-mobile-portrait .focus-battle { display: grid; grid-template-rows: auto 1fr auto; gap: 9px; }
.layout-mobile-portrait .focus-duel { grid-template-areas: "b" "message" "a"; grid-template-columns: 1fr; grid-template-rows: minmax(350px,auto) auto minmax(350px,auto); gap: 6px; min-height: 860px; padding: 8px 6px; }
.layout-mobile-portrait .focus-slot .battle-card-v2 { width: min(252px, 82vw); height: 370px; }
.layout-mobile-portrait .focus-slot .battle-v2-frame-shell { height: 312px; }
.layout-mobile-portrait .focus-slot .battle-v2-card-frame.card-frame { width: 220px; height: 312px; }
.layout-mobile-portrait .focus-message { padding: 8px 0; }
.layout-mobile-portrait .focus-message strong { font-size: 34px; }
.layout-mobile-portrait .focus-roster { gap: 4px; padding: 7px; border-radius: 13px; }
.layout-mobile-portrait .focus-mini-card { height: 72px; grid-template-columns: 1fr; gap: 0; padding: 4px; }
.layout-mobile-portrait .focus-mini-image { width: 100%; height: 46px; }
.layout-mobile-portrait .focus-mini-info strong,
.layout-mobile-portrait .focus-mini-info small { display: none; }
.layout-mobile-portrait .focus-mini-bars { gap: 2px; margin-top: 3px; }
.layout-mobile-portrait .focus-mini-bars i { height: 3px; }
.layout-mobile-portrait .action-order { top: 13px; width: calc(100% - 14px); height: 42px; gap: 4px; padding: 4px 8px; }
.layout-mobile-portrait .order-chip { width: 29px; height: 29px; }
.layout-mobile-portrait .battle-v2-lower { grid-template-columns: 1fr; }
.layout-mobile-portrait .battle-v2-explain { min-height: 0; }
.layout-mobile-portrait #battleV2LogList { max-height: 320px; }

/* mobile landscape: active cards stay left/right and the roster remains below */
.layout-mobile-landscape .battle-v2-shell { width: 100%; padding: 10px 10px calc(18px + var(--safe-bottom)); }
.layout-mobile-landscape .battle-v2-header { display: none; }
.layout-mobile-landscape .battle-v2-status { min-height: 38px; margin-bottom: 8px; padding: 8px 12px; font-size: 11px; }
.layout-mobile-landscape .battle-v2-scoreboard { display: none; }
.layout-mobile-landscape .battle-v2-controls { margin-bottom: 8px; padding: 7px; gap: 6px; }
.layout-mobile-landscape .battle-v2-controls button,
.layout-mobile-landscape .battle-v2-controls .back-main,
.layout-mobile-landscape .battle-v2-controls select { min-height: 36px; padding: 0 10px; font-size: 11px; }
.layout-mobile-landscape .battle-v2-controls label { margin-left: 0 !important; font-size: 10px; }
.layout-mobile-landscape .battle-v2-layout-note { min-height: 34px; margin-bottom: 8px; padding: 6px 10px; }
.layout-mobile-landscape .battle-v2-arena { min-height: 620px; display: block; padding: 58px 10px 10px; border-radius: 18px; }
.layout-mobile-landscape .team-field,
.layout-mobile-landscape .desktop-message { display: none; }
.layout-mobile-landscape .focus-battle { display: grid; grid-template-rows: auto 1fr auto; gap: 7px; }
.layout-mobile-landscape .focus-duel { grid-template-areas: "a message b"; grid-template-columns: minmax(180px,1fr) 140px minmax(180px,1fr); min-height: 455px; gap: 8px; padding: 7px; }
.layout-mobile-landscape .focus-slot .battle-card-v2 { width: min(205px, 27vw); height: 315px; }
.layout-mobile-landscape .focus-slot .battle-v2-frame-shell { height: 260px; }
.layout-mobile-landscape .focus-slot .battle-v2-card-frame.card-frame { width: 184px; height: 260px; }
.layout-mobile-landscape .focus-slot .battle-v2-card-frame .card-header { height: 29px; }
.layout-mobile-landscape .focus-slot .battle-v2-card-frame .card-title { font-size: 12px; }
.layout-mobile-landscape .focus-slot .battle-v2-card-frame .card-footer { min-height: 52px; }
.layout-mobile-landscape .focus-slot .hp-stack { width: 204px; }
.layout-mobile-landscape .focus-slot .gauge-ring { width: 30px; height: 30px; bottom: 27px; }
.layout-mobile-landscape .focus-slot .gauge-ring::after { width: 20px; height: 20px; }
.layout-mobile-landscape .focus-message strong { font-size: 30px; }
.layout-mobile-landscape .focus-message span { font-size: 10px; }
.layout-mobile-landscape .focus-roster { padding: 6px; gap: 5px; }
.layout-mobile-landscape .focus-mini-card { height: 55px; grid-template-columns: 38px 1fr; padding: 4px; }
.layout-mobile-landscape .focus-mini-image { width: 38px; height: 43px; }
.layout-mobile-landscape .focus-mini-info strong { font-size: 9px; }
.layout-mobile-landscape .focus-mini-info small { display: none; }
.layout-mobile-landscape .action-order { top: 9px; height: 38px; }
.layout-mobile-landscape .order-chip { width: 27px; height: 27px; }
.layout-mobile-landscape .battle-v2-lower { grid-template-columns: 1fr; }
.layout-mobile-landscape .battle-v2-explain { display: none; }

@media (max-width: 760px) {
  /* v1314 layout classes own mobile sizing; prevent the legacy 10-card shrink rules from taking over */
  .layout-mobile-portrait .battle-card-v2,
  .layout-mobile-landscape .battle-card-v2 { height: auto; }
  .layout-mobile-portrait .focus-slot .battle-card-v2,
  .layout-mobile-landscape .focus-slot .battle-card-v2 { height: var(--focus-card-height, 370px); }
  .layout-mobile-portrait .focus-slot .battle-card-v2 { --focus-card-height: 370px; }
  .layout-mobile-landscape .focus-slot .battle-card-v2 { --focus-card-height: 315px; }
  .layout-mobile-portrait .focus-slot .stat-pills,
  .layout-mobile-landscape .focus-slot .stat-pills { display: grid; }
}
/* v1318 live integration */
.modal.show.battle-modal { align-items:flex-start; overflow:auto; padding:0; background:#030811; }
.modal.show.battle-modal > .battle-v2-live-shell { max-width:none; width:100%; min-height:100vh; border-radius:0; margin:0; }
.battle-v2-live-shell.battle-v2-shell { width:min(1560px,100%); max-width:none; padding:20px 24px calc(36px + var(--safe-bottom)); overflow:visible; }
.battle-v2-live-header { display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-bottom:15px; }
.battle-v2-live-header p { margin:0 0 6px; color:var(--cyan); font-size:12px; font-weight:900; letter-spacing:.16em; }
.battle-v2-live-header h1 { margin:0; font-size:clamp(30px,4vw,50px); letter-spacing:-.05em; }
.battle-v2-live-phase { color:var(--cyan); font-style:normal; font-weight:900; letter-spacing:.08em; }
.battle-v2-live-footer { display:grid; grid-template-columns:minmax(190px,.4fr) 1fr; gap:14px; margin-top:14px; }
.battle-v2-live-progress { border:1px solid var(--line); border-radius:18px; background:var(--panel); padding:15px 18px; display:grid; gap:5px; align-content:center; }
.battle-v2-live-progress small { color:var(--cyan); font-weight:900; letter-spacing:.15em; }
.battle-v2-live-progress b { font-size:22px; }
.battle-v2-live-progress span { color:var(--muted); font-size:12px; font-weight:800; }
.battle-v2-live-result { display:none; min-height:120px; margin:0; border:1px solid rgba(255,214,122,.25); border-radius:20px; background:rgba(5,12,23,.94); padding:18px; text-align:center; position:relative; z-index:80; }
.battle-v2-live-result.is-visible { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; }
.battle-v2-live-result > strong { font-size:clamp(38px,6vw,70px); color:var(--gold); text-shadow:0 0 25px rgba(255,201,79,.35); }
.battle-v2-live-result > span { color:#c6d7e8; font-weight:800; }
.battle-v2-live-result .battle-reward-pop { margin-top:8px; }
.battle-v2-live-result button { position:relative; z-index:3; }
.battle-v2-live-shell.layout-wago { width:min(1180px,100%); padding-top:20px; }
.battle-v2-live-shell.layout-wago .battle-v2-arena { min-height:930px; display:block; padding:76px 18px 20px; }
.battle-v2-live-shell.layout-mobile-portrait { width:100%; padding:12px 8px calc(24px + var(--safe-bottom)); }
.battle-v2-live-shell.layout-mobile-landscape { width:100%; padding:10px 10px calc(18px + var(--safe-bottom)); }
.battle-v2-live-shell.layout-mobile-landscape .battle-v2-live-header,
.battle-v2-live-shell.layout-mobile-landscape .battle-v2-scoreboard { display:none; }
.battle-v2-live-shell.layout-mobile-portrait .battle-v2-live-footer,
.battle-v2-live-shell.layout-mobile-landscape .battle-v2-live-footer { grid-template-columns:1fr; }
.battle-v2-live-shell.layout-mobile-portrait .battle-v2-live-header { flex-direction:column; align-items:flex-start; }
.battle-v2-live-shell .battle-message { transform:none; }
.battle-v2-live-shell .battle-v2-card-frame .card-header b { font-size:10px; letter-spacing:.08em; }
.battle-v2-live-shell .battle-v2-card-frame .card-art img.is-fallback { object-fit:contain; padding:15%; background:#07111f; }
@media (max-width:760px){
  .modal.show.battle-modal { overflow:auto; }
  .battle-v2-live-shell .battle-v2-layout-note { font-size:10px; }
  .battle-v2-live-shell .battle-v2-layout-note em { width:100%; }
  .battle-v2-live-shell .battle-v2-live-progress { min-height:76px; }
}
/* v1318 live V2 loading shell: never flash the legacy battle screen before the server result arrives */
.battle-v2-live-loading .v2-loading-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin-top:16px; }
.battle-v2-live-loading .v2-loading-stat-grid i { height:26px; border-radius:8px; background:linear-gradient(90deg,rgba(104,191,255,.06),rgba(104,191,255,.25),rgba(104,191,255,.06)); background-size:220% 100%; animation:v2LoadingSweep 1.25s linear infinite; }
.battle-v2-live-loading .team-b .v2-loading-stat-grid i { background-image:linear-gradient(90deg,rgba(255,95,114,.05),rgba(255,95,114,.22),rgba(255,95,114,.05)); }
.v2-loading-arena { min-height:650px; align-items:center; }
.v2-loading-card-line { position:relative; z-index:4; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); align-items:center; gap:10px; }
.v2-loading-card-line i { display:block; aspect-ratio:.7; max-height:280px; border-radius:17px; border:1px solid rgba(99,230,255,.18); background:linear-gradient(115deg,rgba(8,21,38,.95) 10%,rgba(60,156,226,.25) 35%,rgba(8,21,38,.95) 60%); background-size:240% 100%; box-shadow:inset 0 0 32px rgba(61,140,255,.08); animation:v2LoadingSweep 1.35s linear infinite; animation-delay:calc(var(--delay) * -90ms); }
.v2-loading-card-line.side-b { grid-template-columns:repeat(5,minmax(0,1fr)); }
.v2-loading-card-line.side-b i { border-color:rgba(255,95,114,.18); background-image:linear-gradient(115deg,rgba(25,8,18,.95) 10%,rgba(196,58,111,.22) 35%,rgba(25,8,18,.95) 60%); }
.v2-loading-card-line.side-b i:only-child { grid-column:2 / 5; justify-self:center; width:min(220px,100%); }
@keyframes v2LoadingSweep { from{background-position:210% 0} to{background-position:-20% 0} }
.battle-v2-live-loading .battle-v2-message strong { animation:v2LoadingPulse 1s ease-in-out infinite alternate; }
@keyframes v2LoadingPulse { from{opacity:.55;transform:scale(.98)} to{opacity:1;transform:scale(1.02)} }
.battle-v2-live-loading.layout-wago .v2-loading-arena { min-height:930px; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-arena { min-height:1040px; display:grid; grid-template-columns:1fr; grid-template-rows:auto auto auto; padding:70px 18px 22px; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line { width:min(310px,86vw); margin:auto; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line i { min-height:112px; }
.battle-v2-live-loading.layout-mobile-landscape .v2-loading-arena { min-height:600px; }

/* V1319: 궁극기 오버레이가 전투 컨테이너 밖으로 확대되지 않도록 기준 영역 고정 */
.battle-v2-live-shell { position:relative; overflow:hidden; container-type:inline-size; }
@media(max-width:600px){.battle-v2-live-shell{min-height:100dvh}.battle-v2-live-shell .battle-ultimate-overlay,.battle-v2-live-shell .boss-ultimate-overlay{border-radius:0}}


/* v1320 mobile battle-first cleanup */
.battle-v2-live-header { justify-content:center; align-items:center; margin:0 0 12px; text-align:center; }
.battle-v2-live-header h1 { margin:0; font-size:clamp(28px,5vw,46px); letter-spacing:-.045em; }
.battle-v2-live-header p,
.battle-v2-live-header .battle-v2-badges,
.battle-v2-badges { display:none !important; }
.battle-v2-phase-only { justify-content:center; min-height:34px; margin:0 0 8px; padding:6px 10px; }
.battle-v2-phase-only b,
.battle-v2-phase-only span { display:none !important; }
.battle-v2-phase-only em { margin:0; color:#8ea8bf; font-size:11px; font-style:normal; font-weight:900; letter-spacing:.06em; }
.battle-v2-center-mark span,
.battle-v2-center-mark small { display:none !important; }
.battle-v2-center-mark { min-width:64px; }

.layout-mobile-portrait .battle-v2-shell { padding-top:8px; }
.layout-mobile-portrait .battle-v2-live-header { margin-bottom:7px; }
.layout-mobile-portrait .battle-v2-live-header h1 { font-size:30px; }
.layout-mobile-portrait .battle-v2-scoreboard { display:none !important; }
.layout-mobile-portrait .battle-v2-phase-only { margin-bottom:6px; }
.layout-mobile-portrait .battle-v2-arena { min-height:900px; padding-top:58px; }
.layout-mobile-portrait .focus-duel { min-height:730px; grid-template-rows:minmax(285px,auto) auto minmax(285px,auto); }
.layout-mobile-portrait .focus-slot .battle-card-v2 { width:min(218px,72vw); --focus-card-height:318px; }
.layout-mobile-portrait .focus-slot .battle-v2-frame-shell { height:264px; }
.layout-mobile-portrait .focus-slot .battle-v2-card-frame.card-frame { width:186px; height:264px; }
.layout-mobile-portrait .focus-slot .hp-stack { width:205px; }
.layout-mobile-portrait .focus-message { min-height:68px; }
.layout-mobile-portrait .focus-message small,
.layout-mobile-portrait .focus-message span { display:none; }
.layout-mobile-portrait .focus-message strong { font-size:26px; }

/* Loading must resemble the duel instead of five empty bars and oversized panels. */
.battle-v2-live-loading.layout-mobile-portrait .battle-v2-scoreboard { display:none !important; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-arena {
  min-height:760px;
  display:grid;
  grid-template-columns:1fr;
  grid-template-rows:280px 70px 280px;
  gap:12px;
  padding:58px 16px 18px;
}
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line {
  width:190px;
  height:270px;
  display:block;
  margin:auto;
}
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line i { display:none; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line i:first-child {
  display:block;
  width:190px;
  height:270px;
  min-height:0;
  border-radius:18px;
}
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line.side-b { grid-row:1; }
.battle-v2-live-loading.layout-mobile-portrait .desktop-message { grid-row:2; display:grid; min-height:62px; }
.battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line.side-a { grid-row:3; }
.battle-v2-live-loading.layout-mobile-portrait .desktop-message small { display:none; }
.battle-v2-live-loading.layout-mobile-portrait .desktop-message strong { font-size:22px; }
.battle-v2-live-loading.layout-mobile-portrait .desktop-message span { font-size:11px; }

.layout-mobile-landscape .battle-v2-live-header,
.layout-mobile-landscape .battle-v2-scoreboard,
.layout-mobile-landscape .battle-v2-phase-only { display:none !important; }
.layout-mobile-landscape .battle-v2-arena { margin-top:0; }

/* Keep server errors visible without pushing the card field below the fold. */
.layout-mobile-portrait .battle-v2-live-footer { position:relative; z-index:20; }
.layout-mobile-portrait .battle-v2-live-result.is-visible { margin-top:8px; max-height:180px; overflow:auto; }

/* v1321 PVP clean battle-first layout: desktop / WAGO / mobile */
.pvp-battle-modal .battle-v2-live-header,
.pvp-battle-modal .battle-v2-scoreboard,
.pvp-battle-modal .battle-v2-phase-only,
.pvp-battle-modal .battle-v2-message.desktop-message,
.pvp-battle-modal .battle-v2-message.focus-message,
.pvp-battle-modal .battle-v2-live-progress {
  display: none !important;
}

.pvp-battle-modal .battle-v2-live-shell {
  padding-top: 10px;
}

.pvp-battle-modal .battle-v2-arena {
  margin-top: 0;
}

/* PC: remove the unused center status column and give both five-card fields equal space. */
.pvp-battle-modal .battle-v2-live-shell.layout-desktop .battle-v2-arena,
.pvp-battle-modal .battle-v2-live-loading.layout-desktop .battle-v2-arena {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  min-height: 720px;
  padding-top: 72px;
}

.pvp-battle-modal .battle-v2-live-shell.layout-desktop .team-field-a,
.pvp-battle-modal .battle-v2-live-loading.layout-desktop .v2-loading-card-line.side-a {
  grid-column: 1;
}

.pvp-battle-modal .battle-v2-live-shell.layout-desktop .team-field-b,
.pvp-battle-modal .battle-v2-live-loading.layout-desktop .v2-loading-card-line.side-b {
  grid-column: 2;
}

/* Result area remains available, but no empty LIVE TIMELINE panel is reserved. */
.pvp-battle-modal .battle-v2-live-footer {
  display: block;
  margin-top: 10px;
}

.pvp-battle-modal .battle-v2-live-result.is-visible {
  width: 100%;
}

/* Focus layouts: remove the center message cell and let active cards face each other directly. */
.pvp-battle-modal .layout-wago .focus-duel,
.pvp-battle-modal .layout-mobile-landscape .focus-duel {
  grid-template-areas: "a b";
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.pvp-battle-modal .layout-mobile-portrait .focus-duel {
  grid-template-areas: "b" "a";
  grid-template-columns: 1fr;
  grid-template-rows: minmax(350px, auto) minmax(350px, auto);
}

/* Loading view follows the same battle-first structure on every device. */
.pvp-battle-modal .battle-v2-live-loading.layout-wago .v2-loading-arena,
.pvp-battle-modal .battle-v2-live-loading.layout-mobile-landscape .v2-loading-arena {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.pvp-battle-modal .battle-v2-live-loading.layout-mobile-portrait .v2-loading-arena {
  grid-template-rows: minmax(270px, auto) minmax(270px, auto);
}

.pvp-battle-modal .battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line.side-b { grid-row: 1; }
.pvp-battle-modal .battle-v2-live-loading.layout-mobile-portrait .v2-loading-card-line.side-a { grid-row: 2; }


/* v1325: remove non-gameplay timeline/speed status panels in PVE and PVP. */
.battle-v2-live-progress { display:none !important; }
.battle-v2-live-footer {
  display:block;
  grid-template-columns:1fr;
  min-height:0;
  padding:0;
  margin-top:8px;
}
.battle-v2-live-footer:empty { display:none; }
.battle-v2-live-result:not(.is-visible):empty,
[data-live-result-slot]:empty { display:none; }

/* v1326: mobile portrait battle fit + internal scrolling recovery */
@media (max-width: 800px) and (orientation: portrait) {
  .battle-modal .modal-panel.battle-stage.battle-v2-live-shell {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior-y: contain !important;
    touch-action: pan-y !important;
  }
  .layout-mobile-portrait.battle-v2-live-shell {
    min-height: 100dvh !important;
    height: auto !important;
  }
  .layout-mobile-portrait .battle-v2-shell {
    min-height: 100dvh;
    padding: max(8px, env(safe-area-inset-top, 0px)) 6px calc(12px + env(safe-area-inset-bottom, 0px));
  }
  .layout-mobile-portrait .battle-v2-arena {
    min-height: 610px !important;
    height: auto !important;
    padding: 54px 5px 8px !important;
    overflow: hidden !important;
  }
  .layout-mobile-portrait .focus-battle {
    display: grid !important;
    grid-template-rows: 58px minmax(430px, 1fr) 58px !important;
    gap: 5px !important;
    min-height: 550px !important;
  }
  .layout-mobile-portrait .focus-duel {
    grid-template-areas: "a message b" !important;
    grid-template-columns: minmax(0, 1fr) 46px minmax(0, 1fr) !important;
    grid-template-rows: 1fr !important;
    align-items: center !important;
    gap: 2px !important;
    min-height: 430px !important;
    padding: 4px 1px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-card-v2 {
    width: min(172px, 43vw) !important;
    height: 280px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-frame-shell {
    height: 226px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame.card-frame {
    width: min(154px, 39vw) !important;
    height: 226px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-header {
    height: 24px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-header span {
    font-size: 10px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-footer {
    min-height: 43px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-title {
    font-size: 10px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-footer small,
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-unique-badge small {
    display: none !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-mini-logo {
    width: 20px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-unique-badge {
    top: 28px !important;
    right: 4px !important;
    min-height: 20px !important;
    padding: 3px 5px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame .card-unique-badge b {
    font-size: 7px !important;
  }
  .layout-mobile-portrait .focus-slot .stat-pills {
    top: 51px !important;
    width: min(148px, 38vw) !important;
  }
  .layout-mobile-portrait .focus-slot .hp-stack {
    width: min(168px, 42vw) !important;
    padding: 5px 6px 6px !important;
  }
  .layout-mobile-portrait .focus-slot .hp-caption {
    font-size: 8px !important;
  }
  .layout-mobile-portrait .focus-slot .hp-track,
  .layout-mobile-portrait .focus-slot .shield-track {
    height: 6px !important;
  }
  .layout-mobile-portrait .focus-slot .gauge-ring {
    width: 27px !important;
    height: 27px !important;
    right: -1px !important;
    bottom: 24px !important;
  }
  .layout-mobile-portrait .focus-slot .gauge-ring::after {
    width: 18px !important;
    height: 18px !important;
  }
  .layout-mobile-portrait .focus-message {
    min-width: 0 !important;
    padding: 0 !important;
  }
  .layout-mobile-portrait .focus-message small,
  .layout-mobile-portrait .focus-message span {
    display: none !important;
  }
  .layout-mobile-portrait .focus-message strong {
    font-size: clamp(16px, 5vw, 23px) !important;
    writing-mode: horizontal-tb !important;
    margin: 0 !important;
  }
  .layout-mobile-portrait .focus-roster {
    height: 58px !important;
    gap: 3px !important;
    padding: 4px !important;
    border-radius: 11px !important;
  }
  .layout-mobile-portrait .focus-mini-card {
    height: 48px !important;
    grid-template-columns: 1fr !important;
    padding: 3px !important;
    border-radius: 8px !important;
  }
  .layout-mobile-portrait .focus-mini-image {
    width: 100% !important;
    height: 34px !important;
    border-width: 1px !important;
  }
  .layout-mobile-portrait .focus-mini-image b {
    width: 13px !important;
    height: 13px !important;
    font-size: 7px !important;
  }
  .layout-mobile-portrait .focus-mini-info strong,
  .layout-mobile-portrait .focus-mini-info small {
    display: none !important;
  }
  .layout-mobile-portrait .focus-mini-bars {
    gap: 1px !important;
    margin-top: 2px !important;
  }
  .layout-mobile-portrait .focus-mini-bars i {
    height: 2px !important;
  }
  .layout-mobile-portrait .action-order {
    top: 7px !important;
    height: 36px !important;
    width: calc(100% - 10px) !important;
    padding: 3px 5px !important;
    gap: 3px !important;
  }
  .layout-mobile-portrait .order-chip {
    width: 25px !important;
    height: 25px !important;
  }
}

@media (max-width: 380px) and (orientation: portrait) {
  .layout-mobile-portrait .focus-duel {
    grid-template-columns: minmax(0, 1fr) 36px minmax(0, 1fr) !important;
  }
  .layout-mobile-portrait .focus-slot .battle-card-v2 {
    width: min(154px, 42vw) !important;
    height: 258px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-frame-shell {
    height: 207px !important;
  }
  .layout-mobile-portrait .focus-slot .battle-v2-card-frame.card-frame {
    width: min(140px, 38vw) !important;
    height: 207px !important;
  }
}

/* v1327: PC/fullscreen uses the same focused duel stage as WAGo/mobile.
   Keep both 5-card rosters visible, but render only the current active fighter
   from each team in the center battle field. */
.layout-desktop .team-field,
.layout-desktop .desktop-message {
  display: none !important;
}
.layout-desktop .focus-battle {
  display: grid !important;
  grid-template-rows: auto minmax(620px, 1fr) auto;
  gap: 14px;
  min-height: 900px;
}
.layout-desktop .focus-duel {
  grid-template-areas: "a message b";
  grid-template-columns: minmax(260px, 1fr) minmax(130px, .42fr) minmax(260px, 1fr);
  min-height: 620px;
  gap: clamp(18px, 3vw, 48px);
  padding: 26px clamp(28px, 5vw, 88px) 20px;
}
.layout-desktop .focus-slot .battle-card-v2 {
  width: min(330px, 27vw);
  height: 500px;
}
.layout-desktop .focus-slot .battle-v2-frame-shell {
  height: 430px;
}
.layout-desktop .focus-slot .battle-v2-card-frame.card-frame {
  width: min(304px, 25vw);
  height: 430px;
}
.layout-desktop .focus-slot .hp-stack {
  width: min(320px, 26vw);
}
.layout-desktop .focus-roster {
  min-height: 94px;
  padding: 12px 18px;
  gap: 10px;
}
.layout-desktop .focus-mini-card {
  height: 78px;
}
.layout-desktop .action-order {
  width: min(860px, calc(100% - 50px));
}
@media (min-width: 1500px) {
  .layout-desktop .focus-battle {
    grid-template-rows: auto minmax(700px, 1fr) auto;
    min-height: 1020px;
  }
  .layout-desktop .focus-duel { min-height: 700px; }
  .layout-desktop .focus-slot .battle-card-v2 { width: 360px; height: 540px; }
  .layout-desktop .focus-slot .battle-v2-frame-shell { height: 466px; }
  .layout-desktop .focus-slot .battle-v2-card-frame.card-frame { width: 330px; height: 466px; }
  .layout-desktop .focus-slot .hp-stack { width: 350px; }
}

/* v1329: PVE result uses the same premium V2 result presentation as PVP. */
.battle-v2-live-result.is-visible:has(.pve-v2-result) {
  position:absolute;
  inset:0;
  z-index:160;
  width:100%;
  max-height:none;
  margin:0;
  padding:clamp(14px,3vw,34px);
  border:0;
  border-radius:inherit;
  overflow:auto;
  background:rgba(2,8,18,.88);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
}
.battle-v2-live-result .pve-v2-result { margin:auto; }
.pve-v2-result .pve-card-result-reward { grid-column:1/-1; }
.pve-v2-result .pve-card-result-reward b { font-size:16px; line-height:1.25; }
.pve-v2-result .pve-card-result-reward span { display:block; margin-top:6px; color:#8eb3ca; font-size:10px; font-weight:800; }
.pve-result-tip { margin-top:13px; padding:11px 13px; border:1px solid rgba(255,126,126,.14); border-radius:12px; background:rgba(116,33,48,.13); color:#c9d6e3; font-size:11px; line-height:1.55; }
@media(max-width:560px){
  .battle-v2-live-result.is-visible:has(.pve-v2-result){padding:max(12px,env(safe-area-inset-top)) 10px max(12px,env(safe-area-inset-bottom));}
  .pve-v2-result .pvp-result-rewards{grid-template-columns:repeat(2,minmax(0,1fr));}
  .pve-v2-result .pve-card-result-reward{grid-column:1/-1;}
}
