/* ── Cell Animations ── */
@keyframes cellReveal {
  0% {
    transform: scale(0.85);
    opacity: 0.5;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes explode {
  0% {
    transform: scale(1);
    filter: brightness(1);
  }
  30% {
    transform: scale(1.25);
    filter: brightness(2.5);
  }
  100% {
    transform: scale(1);
    filter: brightness(1);
  }
}

/* ── Neon Pulse ── */
@keyframes neonPulse {
  0%, 100% {
    opacity: 1;
    text-shadow: var(--glow-cyan-strong);
  }
  50% {
    opacity: 0.8;
    text-shadow: var(--glow-cyan);
  }
}

/* ── Flag Bounce ── */
@keyframes flagBounce {
  0% { transform: scale(0.3); opacity: 0; }
  60% { transform: scale(1.15); }
  100% { transform: scale(1); opacity: 1; }
}

.cell--flagged::after {
  animation: flagBounce 0.25s ease;
}

/* ── Screen Transitions ── */
.screen--active {
  animation: screenFadeIn 0.3s ease;
}

@keyframes screenFadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ── Game Over Entrance ── */
.gameover-panel {
  animation: gameoverSlide 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes gameoverSlide {
  from {
    opacity: 0;
    transform: scale(0.9) translateY(20px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* ── Title Glow ── */
.game-title {
  animation: titleGlow 3s ease-in-out infinite alternate;
}

@keyframes titleGlow {
  0% {
    filter: drop-shadow(0 0 8px rgba(0, 245, 255, 0.3));
  }
  100% {
    filter: drop-shadow(0 0 16px rgba(255, 45, 149, 0.3));
  }
}

/* ── Cascade reveal delay ── */
.cell--cascade-0 { animation-delay: 0ms; }
.cell--cascade-1 { animation-delay: 15ms; }
.cell--cascade-2 { animation-delay: 30ms; }
.cell--cascade-3 { animation-delay: 45ms; }
.cell--cascade-4 { animation-delay: 60ms; }
.cell--cascade-5 { animation-delay: 75ms; }
.cell--cascade-6 { animation-delay: 90ms; }
.cell--cascade-7 { animation-delay: 105ms; }
.cell--cascade-8 { animation-delay: 120ms; }
.cell--cascade-9 { animation-delay: 135ms; }

/* ── Board shake on mine hit (classic mode) ── */
.board--shake {
  animation: boardShake 0.4s ease;
}

@keyframes boardShake {
  0%, 100% { transform: translateX(0); }
  10% { transform: translateX(-4px) rotate(-0.5deg); }
  30% { transform: translateX(4px) rotate(0.5deg); }
  50% { transform: translateX(-3px); }
  70% { transform: translateX(3px); }
  90% { transform: translateX(-1px); }
}

/* ── Winning glow on board ── */
.board--win {
  animation: boardWin 1s ease;
  border-color: var(--neon-green) !important;
  box-shadow: 0 0 10px rgba(57, 255, 20, 0.4), 0 0 30px rgba(57, 255, 20, 0.15) !important;
}

@keyframes boardWin {
  0% { filter: brightness(1); }
  50% { filter: brightness(1.3); }
  100% { filter: brightness(1); }
}
