.battlefield{position:relative;overflow:hidden;flex:1;min-height:180px;border-radius:16px;border:2px solid rgba(255,246,223,.8);background:center/cover no-repeat;box-shadow:inset 0 0 80px rgba(0,0,0,.45);order:1}
.battlefield:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.05),rgba(0,0,0,.35));pointer-events:none}
.enemy{position:absolute;left:50%;top:50%;width:min(72vw,230px);height:min(40dvh,230px);display:flex;align-items:center;justify-content:center;--enemy-scale:1;--enemy-ox:0%;--enemy-oy:0%;transform:translate(calc(-50% + var(--enemy-ox)),calc(-50% + var(--enemy-oy))) scale(var(--enemy-scale));z-index:2;text-align:center;filter:drop-shadow(0 16px 18px rgba(0,0,0,.75));font-size:88px;animation:enemyIdle 1.8s ease-in-out infinite}
.enemy img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;display:block;margin:auto}
.enemy[data-enemy-id*="orc"],.enemy[data-enemy-id*="minotaur"]{width:min(80vw,260px);height:min(44dvh,260px)}
.enemy.hit{animation:battleHit .36s ease!important}.enemy.defeated{animation:battleDefeat .8s ease forwards!important}
.damage{position:absolute;left:50%;top:24%;transform:translateX(-50%);z-index:5;font-size:28px;color:#fff;text-shadow:0 0 10px #f00,3px 3px #000;opacity:0;font-weight:900}
.enemy-speech{position:absolute;left:50%;top:8%;transform:translateX(-50%);z-index:7;max-width:82%;background:rgba(0,0,0,.72);border:2px solid var(--gold);border-radius:14px;padding:8px 14px;color:#fff;font-size:14px;font-weight:700;text-align:center;line-height:1.4;opacity:0;pointer-events:none}
.enemy-speech.on{animation:speechPop 2.6s ease}
@keyframes speechPop{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.92)}12%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}82%{opacity:1}100%{opacity:0;transform:translateX(-50%) translateY(-6px) scale(.98)}}
.damage.on{animation:damage 1.3s ease}
.defeat{position:absolute;inset:0;display:none;align-items:center;justify-content:center;z-index:6;font-size:48px;color:var(--gold);text-shadow:4px 4px #000,0 0 22px var(--gold);font-weight:900;font-family:var(--font-battle,var(--font-base,inherit))}
.defeat.on{display:flex;animation:pop .35s ease}
@keyframes enemyIdle{0%,100%{transform:translate(calc(-50% + var(--enemy-ox)),calc(-50% + var(--enemy-oy))) scale(var(--enemy-scale))}50%{transform:translate(calc(-50% + var(--enemy-ox)),calc(-50% + var(--enemy-oy) - 5px)) scale(var(--enemy-scale))}}
@keyframes battleHit{0%,100%{transform:translate(-50%,-50%)}20%{transform:translate(calc(-50% - 12px),calc(-50% - 4px))}40%{transform:translate(calc(-50% + 12px),calc(-50% + 2px))}60%{transform:translate(calc(-50% - 7px),-50%)}80%{transform:translate(calc(-50% + 5px),-50%)}}
@keyframes battleDefeat{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}45%{opacity:.85;transform:translate(-50%,-50%) scale(1.08)}100%{opacity:0;transform:translate(-50%,calc(-50% + 20px)) scale(.7)}}
@keyframes damage{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}20%{opacity:1;transform:translate(-50%,0) scale(1.2)}100%{opacity:0;transform:translate(-50%,-55px) scale(.95)}}

/* ===== 撃破演出：スタイル切替（管理画面「💥 撃破演出」で選択） ===== */
/* スタイル1: pop（既定）は上の .defeat.on だけで完結、追加要素なし */

/* スタイル2: フラッシュ（画面全体が白→赤で明滅） */
#defeatFxOverlay{position:absolute;inset:0;z-index:6;pointer-events:none;opacity:0}
#defeatFxOverlay.style-flash.on{animation:defeatFlash .55s ease}
@keyframes defeatFlash{
  0%{background:rgba(255,255,255,0)}
  18%{background:rgba(255,255,255,.9)}
  45%{background:rgba(255,70,70,.4)}
  100%{background:rgba(255,255,255,0)}
}

/* スタイル3: リング（衝撃波が敵の位置から広がる） */
#defeatRing{position:absolute;left:50%;top:50%;width:10px;height:10px;border:4px solid var(--gold);border-radius:50%;transform:translate(-50%,-50%);opacity:0;z-index:6;pointer-events:none}
#defeatRing.on{animation:defeatRingPop .7s ease-out}
@keyframes defeatRingPop{
  0%{width:10px;height:10px;opacity:.9;border-width:6px}
  100%{width:300px;height:300px;opacity:0;border-width:1px}
}

/* 撃破画像ポップ（倒した敵の画像・撃破スタンプ画像などを表示） */
.defeat-image-pop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.6);max-width:62%;max-height:62%;object-fit:contain;z-index:7;opacity:0;pointer-events:none;filter:drop-shadow(0 8px 16px rgba(0,0,0,.6))}
.defeat-image-pop.on{animation:defeatImagePop 1.15s ease}
@keyframes defeatImagePop{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}
  22%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}
  78%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.12)}
}
