/* animations.css — All @keyframes for Mind Blink */

@keyframes bgShift {
  0%, 100% { background-position: 0% 50%; }
  25% { background-position: 50% 0%; }
  50% { background-position: 100% 50%; }
  75% { background-position: 50% 100%; }
}

@keyframes gradientText {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes dotPulse {
  0%, 100% { opacity: 0.2; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}

@keyframes loadBarFill {
  0% { width: 0%; }
  60% { width: 85%; }
  100% { width: 100%; }
}

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

@keyframes dailyGlow {
  0%, 100% { box-shadow: 0 0 8px rgba(var(--gold-rgb), 0.2); }
  50% { box-shadow: 0 0 24px rgba(var(--gold-rgb), 0.5), 0 0 48px rgba(var(--gold-rgb), 0.15); }
}

@keyframes levelCardIn {
  from { opacity: 0; transform: translateY(16px) scale(0.92); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes canUnlockPulse {
  0%, 100% { box-shadow: 0 0 4px rgba(var(--green-rgb), 0.1); }
  50% { box-shadow: 0 0 16px rgba(var(--green-rgb), 0.35); }
}

@keyframes flipIn {
  0% { transform: perspective(600px) rotateY(90deg); opacity: 0; }
  100% { transform: perspective(600px) rotateY(0); opacity: 1; }
}

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

@keyframes scoreBounce {
  0% { transform: scale(1); }
  50% { transform: scale(1.3); color: #fff; }
  100% { transform: scale(1); }
}

@keyframes comboPop {
  0% { transform: scale(0.4) rotate(-10deg); }
  50% { transform: scale(1.5) rotate(5deg); }
  100% { transform: scale(1) rotate(0); }
}

@keyframes cdPop {
  0% { transform: scale(0.3); opacity: 0; }
  50% { transform: scale(1.3); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes feedbackFloat {
  0% { opacity: 1; transform: translate(-50%, -50%) scale(0.4); }
  30% { opacity: 1; transform: translate(-50%, -70%) scale(1.3); }
  100% { opacity: 0; transform: translate(-50%, -120%) scale(0.8); }
}

@keyframes heartShatter {
  0% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  25% { transform: translate(-50%, -50%) scale(1.4); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(0.1) rotate(60deg); }
}

@keyframes shakeIt {
  0%, 100% { transform: translateX(0); }
  15% { transform: translateX(-10px) rotate(-0.5deg); }
  30% { transform: translateX(10px) rotate(0.5deg); }
  45% { transform: translateX(-7px); }
  60% { transform: translateX(7px); }
  75% { transform: translateX(-3px); }
}

@keyframes resultScoreIn {
  0% { transform: scale(0); opacity: 0; }
  60% { transform: scale(1.2); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes particleBurst {
  0% { opacity: 1; transform: translate(0, 0) scale(0); }
  40% { opacity: 1; transform: translate(calc(var(--dx, 0) * 100px), calc(var(--dy, 0) * -100px)) scale(1.2); }
  100% { opacity: 0; transform: translate(calc(var(--dx, 0) * 160px), calc(var(--dy, 0) * 60px)) scale(0.3); }
}

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

@keyframes chainNumIn {
  from { opacity: 0; transform: scale(0) rotate(-20deg); }
  to { opacity: 1; transform: scale(1) rotate(0); }
}

@keyframes memBlink {
  0%, 100% { opacity: 0.35; }
  50% { opacity: 0.7; }
}

@keyframes tileFlash {
  from { transform: scale(0.7); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

@keyframes scramblePulse {
  0%, 100% { filter: brightness(1); letter-spacing: 8px; }
  50% { filter: brightness(1.2); letter-spacing: 10px; }
}

@keyframes heartBeat {
  0%, 100% { transform: scale(1); }
  14% { transform: scale(1.25); }
  28% { transform: scale(1); }
  42% { transform: scale(1.15); }
  70% { transform: scale(1); }
}

@keyframes adBtnGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--cyan-rgb), 0.5), 0 4px 20px rgba(var(--cyan-rgb), 0.25); }
  50% { box-shadow: 0 0 0 8px rgba(var(--cyan-rgb), 0), 0 4px 28px rgba(var(--cyan-rgb), 0.45); }
}

@keyframes goTitlePulse {
  0%, 100% { text-shadow: 0 0 24px rgba(var(--pink-rgb), 0.3); }
  50% { text-shadow: 0 0 40px rgba(var(--pink-rgb), 0.6); }
}

@keyframes heroFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}

@keyframes playBtnPulse {
  0%, 100% {
    box-shadow: 0 0 10px rgba(0,245,255,0.25), 0 0 0 0 rgba(0,245,255,0.2);
  }
  50% {
    box-shadow: 0 0 22px rgba(0,245,255,0.55), 0 0 40px rgba(0,245,255,0.1);
  }
}

@keyframes playScan {
  0%   { left: -120%; }
  60%  { left: 160%; }
  100% { left: 160%; }
}

@keyframes iconGlow {
  0%, 100% { filter: drop-shadow(0 0 12px rgba(var(--cyan-rgb), 0.4)); }
  50% { filter: drop-shadow(0 0 24px rgba(var(--cyan-rgb), 0.7)); }
}
