/* ==========================================================================
   MindCrack — Animations
   All keyframes disabled/shortened under body.reduced-motion via
   responsive.css's prefers-reduced-motion block and the manual toggle.
   ========================================================================== */

@keyframes titleGlow {
  0%,100% { text-shadow: 0 0 18px var(--glow-red); }
  50%      { text-shadow: 0 0 32px var(--glow-red), 0 0 70px rgba(155,28,28,0.35); }
}

@keyframes haloPulse {
  0%,100% { opacity: 0.6; transform: translate(-50%,-60%) scale(1); }
  50%      { opacity: 1;   transform: translate(-50%,-60%) scale(1.08); }
}

@keyframes glowPulse {
  0%,100% { opacity: 0.8; transform: translateX(-50%) scaleY(1); }
  50%      { opacity: 1;   transform: translateX(-50%) scaleY(1.1); }
}

@keyframes moveFlame {
  0%   { transform: rotate(-2.5deg) skewX(1deg); }
  25%  { transform: rotate(1.5deg) skewX(-1.5deg); }
  50%  { transform: rotate(-1deg) skewX(2deg); }
  75%  { transform: rotate(2deg) skewX(-0.5deg); }
  100% { transform: rotate(-2.5deg) skewX(1deg); }
}
@keyframes sizeFlame {
  0%,100% { transform: scaleY(1) scaleX(1); }
  35%      { transform: scaleY(1.1) scaleX(0.94); }
  70%      { transform: scaleY(0.96) scaleX(1.04); }
}

@keyframes timerFlicker {
  0%,82%,100% { opacity: 1; }
  85% { opacity: 0.1; }
  87% { opacity: 1; }
  91% { opacity: 0.04; }
  93% { opacity: 1; }
}
@keyframes timerGlitch {
  0%,88%,100% { transform: translateX(0); }
  90% { transform: translateX(-2px); }
  92% { transform: translateX(3px); }
  94% { transform: translateX(-1px); }
}

@keyframes statusPulse {
  0%,100% { opacity: 1; }
  50%      { opacity: 0.35; }
}

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

@keyframes micBreath {
  0%,100% { box-shadow: 0 0 12px rgba(155,28,28,0.2), inset 0 0 10px rgba(0,0,0,0.4); }
  50%      { box-shadow: 0 0 26px rgba(155,28,28,0.4), inset 0 0 10px rgba(0,0,0,0.4); }
}
@keyframes micPulse {
  0%,100% { box-shadow: 0 0 20px rgba(217,79,43,0.5); }
  50%      { box-shadow: 0 0 44px rgba(217,79,43,0.85); }
}

@keyframes waveAnim {
  0%,100% { transform: scaleY(0.35); opacity: 0.45; }
  50%      { transform: scaleY(1);    opacity: 1; }
}

@keyframes countPop {
  0%   { transform: scale(1.4); opacity: 0; }
  60%  { transform: scale(0.92); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes breathCueFade {
  0%   { opacity: 0; transform: translateY(4px); }
  20%  { opacity: 1; transform: translateY(0); }
  80%  { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

@keyframes toastIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes toastOut {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(-6px); }
}

/* One slow expand-and-release cycle for the return ritual's single breath step */
@keyframes breathRing {
  0%   { transform: scale(0.8); opacity: 0.5; }
  40%  { transform: scale(1.35); opacity: 1; }
  60%  { transform: scale(1.35); opacity: 1; }
  100% { transform: scale(0.8); opacity: 0.5; }
}
