/* Card draw from pile */
@keyframes cardDraw {
  from { transform: translateY(60px) scale(0.5); opacity: 0; }
  to   { transform: translateY(0)    scale(1);   opacity: 1; }
}
.card-draw-anim { animation: cardDraw 0.25s ease-out forwards; }

/* Card flip (for reward) */
@keyframes cardFlip {
  0%   { transform: rotateY(90deg) scale(0.8); opacity: 0; }
  100% { transform: rotateY(0deg)  scale(1);   opacity: 1; }
}
.card-flip-anim { animation: cardFlip 0.3s ease-out forwards; }

/* Enemy shake on hit */
@keyframes shake {
  0%,100% { transform: translateX(0); }
  20%     { transform: translateX(-8px) rotate(-3deg); }
  40%     { transform: translateX(8px)  rotate(3deg); }
  60%     { transform: translateX(-5px) rotate(-2deg); }
  80%     { transform: translateX(5px)  rotate(2deg); }
}
.shake-anim { animation: shake 0.35s ease-in-out; }

/* Player damage flash */
@keyframes dmgFlash {
  0%,100% { box-shadow: none; }
  50%     { box-shadow: inset 0 0 0 6px rgba(192,57,43,0.6); }
}
.damage-flash { animation: dmgFlash 0.4s ease; }

/* Screen slide in */
@keyframes slideUp {
  from { transform: translateY(30px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
.slide-up { animation: slideUp 0.25s ease-out forwards; }

/* Bounce (for rewards, level up) */
@keyframes bounceIn {
  0%   { transform: scale(0.6); opacity: 0; }
  60%  { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(1); }
}
.bounce-in { animation: bounceIn 0.4s ease-out forwards; }

/* Pulse (current map node) */
@keyframes pulse {
  0%,100% { box-shadow: 0 0 0 4px var(--gold), 3px 3px 0 var(--ink); }
  50%     { box-shadow: 0 0 0 8px rgba(212,160,23,0.4), 3px 3px 0 var(--ink); }
}
.map-node.current { animation: pulse 1.8s ease-in-out infinite; }

/* Floating damage number */
@keyframes floatUp {
  0%   { transform: translateY(0);    opacity: 1; }
  100% { transform: translateY(-50px); opacity: 0; }
}
.float-number {
  position: absolute;
  font-size: 1.6rem; font-weight: 700;
  font-family: 'Caveat', cursive;
  pointer-events: none;
  animation: floatUp 0.8s ease-out forwards;
  z-index: 600;
}
.float-number.damage { color: var(--red); }
.float-number.heal   { color: var(--green); }
.float-number.block  { color: var(--blue); }

/* Energy burst */
@keyframes energyBurst {
  0%   { transform: scale(1);   opacity: 1; }
  100% { transform: scale(2.5); opacity: 0; }
}
.energy-burst { animation: energyBurst 0.3s ease-out forwards; }

/* Card played — scale down to nothing in place */
@keyframes cardPlayed {
  0%   { transform: scale(1) rotate(0deg);   opacity: 1; }
  50%  { transform: scale(1.2) rotate(5deg); opacity: 0.8; }
  100% { transform: scale(0)   rotate(15deg);opacity: 0; }
}
.card-played-anim { animation: cardPlayed 0.25s ease-in forwards; pointer-events: none; }

/* Enemy lunge attack */
@keyframes enemyLunge {
  0%   { transform: translateX(0); }
  30%  { transform: translateX(40px) scale(1.1); }
  60%  { transform: translateX(40px) scale(1.1); }
  100% { transform: translateX(0) scale(1); }
}
.enemy-lunge-anim { animation: enemyLunge 0.5s ease-in-out; }

/* Player hit recoil */
@keyframes playerHit {
  0%   { transform: scale(1); }
  20%  { transform: scale(0.85) translateX(10px); filter: brightness(0.7) saturate(1.5); }
  50%  { transform: scale(1.05) translateX(-5px); }
  100% { transform: scale(1) translateX(0); }
}
.player-hit-anim { animation: playerHit 0.4s ease-out; }

/* Turn banner */
.turn-banner {
  position: fixed;
  top: 35%;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Caveat', cursive;
  font-size: 3rem;
  font-weight: 700;
  color: var(--ink);
  background: var(--panel-bg);
  border: 3px solid var(--ink);
  border-radius: 8px;
  padding: 12px 40px;
  box-shadow: 4px 4px 0 var(--ink);
  z-index: 999;
  pointer-events: none;
  transition: opacity 0.4s, transform 0.4s;
  animation: bounceIn 0.3s ease-out;
}

/* Enemy death */
@keyframes enemyDeath {
  0%   { transform: scale(1); opacity: 1; }
  50%  { transform: scale(1.2) rotate(10deg); opacity: 0.5; }
  100% { transform: scale(0) rotate(30deg); opacity: 0; }
}
.enemy-death-anim { animation: enemyDeath 0.5s ease-in forwards; }
