/* ===== Tile Pop (letter input) ===== */
@keyframes pop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.1); }
  100% { transform: scale(1); }
}

/* ===== Tile Flip - Phase 1 (front to edge) ===== */
@keyframes flip-in {
  0%   { transform: rotateX(0deg); }
  100% { transform: rotateX(-90deg); }
}

/* ===== Tile Flip - Phase 2 (edge to back, with new color) ===== */
@keyframes flip-out {
  0%   { transform: rotateX(-90deg); }
  100% { transform: rotateX(0deg); }
}

/* ===== Row Shake (invalid word) ===== */
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%      { transform: translateX(-4px); }
  20%      { transform: translateX(4px); }
  30%      { transform: translateX(-4px); }
  40%      { transform: translateX(4px); }
  50%      { transform: translateX(-4px); }
  60%      { transform: translateX(4px); }
  70%      { transform: translateX(-4px); }
  80%      { transform: translateX(4px); }
  90%      { transform: translateX(-4px); }
}

/* ===== Win Bounce (celebration) ===== */
@keyframes bounce {
  0%, 20%  { transform: translateY(0); }
  40%      { transform: translateY(-30px); }
  50%      { transform: translateY(5px); }
  60%      { transform: translateY(-15px); }
  80%      { transform: translateY(2px); }
  100%     { transform: translateY(0); }
}

/* ===== Utility Classes ===== */
.pop {
  animation: pop 0.1s ease-in-out;
}

.flip-in {
  animation: flip-in 0.25s ease-in forwards;
}

.flip-out {
  animation: flip-out 0.25s ease-in forwards;
}

.shake {
  animation: shake 0.6s ease-in-out;
}

.bounce {
  animation: bounce 1s ease;
}
