/* 战斗演出仅为展示层：不接管输入，不改变世界时钟。 */
.battle { isolation:isolate; }
.ultimate-overlay { position:absolute; top:48px; right:max(18px,var(--safe-right)); width:29%; height:60%; pointer-events:none; z-index:2; }
.ultimate-overlay img { position:absolute; width:100%; height:100%; object-fit:contain; object-position:right top; opacity:.43; mask-image:linear-gradient(to bottom,#000 80%,transparent 100%); }
.ultimate-overlay[data-character="liang"] img { object-fit:contain; object-position:right top; mask-image:linear-gradient(to bottom,#000 80%,transparent 100%); }
.ultimate-overlay[data-character="xie"] img { object-fit:contain; object-position:right top; mask-image:linear-gradient(to bottom,#000 80%,transparent 100%); }
.ultimate-caption { position:absolute; top:8%; left:0; right:auto; text-align:left; color:#f2d69e; text-shadow:0 1px 6px #0c1018; }
.ultimate-caption small { display:block; font-size:10px; letter-spacing:3px; }
.ultimate-caption strong { display:block; font:clamp(21px,3vw,42px) SimSun,serif; letter-spacing:4px; margin-top:8px; }
.ultimate-overlay[data-character="liang"] .ultimate-caption { left:0; right:auto; text-align:left; }
.ultimate-overlay[data-character="xie"] .ultimate-caption { left:0; right:auto; text-align:left; }
.battle-hud,.field-caption,#joystick,.control-hint { z-index:3; }
.team-vital { display:none; }
button.party-slot { text-align:left; color:inherit; font:inherit; touch-action:manipulation; }
button.party-slot { display:grid; grid-template-rows:16px 12px 4px 4px 11px; row-gap:3px; align-content:center; }
button.party-slot .meter { margin:0; }
button.party-slot small { float:none; margin:0; }
button.party-slot .skill-status { position:static; display:block; margin:0; }
button.party-slot:disabled { opacity:1; cursor:default; }
.party-slot.ultimate-ready { border-color:#ffe0a0; box-shadow:inset 0 0 18px #d8b36933,0 0 10px #e7bd6966; cursor:pointer; }
.party-slot .energy-meter { height:4px; margin-top:4px; }
.party-slot .energy-meter i { background:linear-gradient(90deg,#b7833c,#ffdd91); }
.party-slot .skill-status { white-space:nowrap; font-size:9px; letter-spacing:0; }
.party-slot.ultimate-ready .skill-status { color:#ffe0a0; }
.combat-buffs { position:absolute; top:65px; left:50%; transform:translateX(-50%); display:flex; justify-content:center; flex-wrap:wrap; gap:5px; width:min(65%,520px); pointer-events:none; z-index:3; }
.combat-buffs span { padding:5px 9px; border:1px solid #a0875477; background:#121a22d9; color:#f6d995; border-radius:2px; font-size:11px; white-space:nowrap; }
.combat-buffs span[hidden] { display:none; }
#supplyBuff { color:#dcf1b8; border-color:#a7bb8277; }
#supplyPending { color:#ffd09b; border-color:#cb9a5c88; }
.battle-hud #soundToggle { font-size:16px; width:36px; min-width:36px; height:34px; padding:0; letter-spacing:0; }
.battle-hud #soundToggle[aria-pressed="false"] { color:#9a9d9a; }
.party-slot.royal-shielded { box-shadow:inset 0 2px 0 #f3d28ba6,inset 0 0 18px #c8a45c20; }
.party-slot.supply-hasted .energy-meter { border-color:#bdd49a88; }
@media(max-height:500px) {
  .combat-buffs { top:45px; gap:4px; }
  .combat-buffs span { font-size:9px; padding:3px 6px; }
  .battle-hud #soundToggle { width:29px; min-width:29px; height:30px; font-size:13px; margin-right:-8px; }
  button.party-slot { padding:4px 5px 4px 40px; }
  button.party-slot { grid-template-rows:13px 9px 3px 3px 9px; row-gap:2px; }
  .party-slot img { width:40px; }
  .party-slot b { font-size:12px; letter-spacing:1px; }
  .party-slot small { font-size:7px; letter-spacing:0; white-space:nowrap; }
  .ultimate-overlay { top:40px; height:62%; width:29%; }
  .ultimate-caption small { font-size:8px; letter-spacing:1px; }
  .ultimate-caption strong { font-size:21px; letter-spacing:2px; margin-top:3px; }
  .party-slot .energy-meter { height:3px; margin-top:3px; }
  button.party-slot .energy-meter { margin-top:0; }
  .party-slot .skill-status { left:40px; font-size:8px; }
}
