/* Keep combat feedback independent of cached general battle styles.
   Increment this stylesheet's URL version in index.html when changing it. */
.in-battle .damage-float.enemy-damage {
  inset:auto; width:max-content; max-width:24%; padding:2px;
  color:#fff4ca; font-size:clamp(20px,6.5cqw,30px); line-height:1.2;
  font-variant-numeric:tabular-nums; white-space:nowrap; border-radius:0;
  background:none;
  /* Crisp warm-brown outline and a short, unblurred drop shadow, no panel. */
  text-shadow:-1px -1px 0 #38251b,0 -1px 0 #38251b,1px -1px 0 #38251b,
    -1px 0 0 #38251b,1px 0 0 #38251b,
    -1px 1px 0 #38251b,0 1px 0 #38251b,1px 1px 0 #38251b,
    0 2px 0 #241810;
  transform:translate(-50%,0); animation:enemy-damage-float var(--feedback-duration,600ms) linear forwards;
}
.in-battle .damage-float.support {
  inset:8px 8px auto; font-size:clamp(14px,4.5cqw,20px); line-height:1.4;
  animation:support-feedback 1600ms linear forwards;
}
.in-battle .enemy.defeated {
  opacity:1; cursor:default; animation:enemy-defeat 1000ms ease-out forwards;
}
/* Fade the entire enemy group once: sprite, HP, turn badge and selection marks.
   Cancel the old sprite-only rule even if a cached general stylesheet has it. */
.in-battle .enemy.defeated .enemy-art { animation:none; }
@keyframes enemy-damage-float {
  /* Transform has only start/end keys: keep rising until the fade finishes. */
  0% { opacity:1; transform:translate(-50%,0); }
  75% { opacity:1; }
  100% { opacity:0; transform:translate(-50%,calc(0px - var(--feedback-rise-end,12px))); }
}
@keyframes support-feedback { 0%,85% { opacity:1; } 100% { opacity:0; } }
@keyframes enemy-defeat {
  0%,20% { opacity:1; }
  100% { opacity:0; }
}
@media(prefers-reduced-motion:reduce) {
  .in-battle .damage-float.enemy-damage,.in-battle .damage-float.support,
  .in-battle .enemy.defeated { animation:none!important; }
}
