@keyframes actionButtonNudge {
  0%,
  100% {
    transform: translateY(0);
    filter: brightness(1);
    box-shadow: 0 0 0 rgba(255, 226, 138, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.04);
  }
  50% {
    transform: translateY(-4px);
    filter: brightness(1.16);
    box-shadow: 0 0 24px rgba(255, 226, 138, 0.48), inset 0 0 18px rgba(255, 226, 138, 0.14);
  }
}

@keyframes dangerButtonNudge {
  0%,
  100% {
    transform: translateY(0);
    filter: brightness(1);
    box-shadow: var(--shadow-red), inset 0 0 0 1px rgba(255, 255, 255, 0.04);
  }
  50% {
    transform: translateY(-4px);
    filter: brightness(1.16);
    box-shadow: 0 0 26px rgba(255, 75, 67, 0.62), inset 0 0 18px rgba(255, 75, 67, 0.18);
  }
}

@keyframes actionButtonSweep {
  0%,
  24% {
    transform: translateX(-120%);
    opacity: 0;
  }
  48% {
    opacity: 1;
  }
  76%,
  100% {
    transform: translateX(120%);
    opacity: 0;
  }
}

@keyframes reactorNextPulse {
  0%,
  100% {
    border-color: rgba(255, 226, 138, 0.32);
    background: rgba(0, 0, 0, 0.32);
  }
  50% {
    border-color: rgba(255, 226, 138, 0.86);
    background: rgba(239, 184, 77, 0.34);
    box-shadow: 0 0 12px rgba(255, 226, 138, 0.36);
  }
}

@keyframes reactorChargeFill {
  0% {
    transform: scaleX(0.35);
    transform-origin: left center;
    opacity: 0.35;
  }
  70% {
    transform: scaleX(1.04);
    opacity: 1;
  }
  100% {
    transform: scaleX(1);
    opacity: 1;
  }
}

@keyframes reactorCurrentGlow {
  0%,
  100% {
    filter: brightness(1);
  }
  50% {
    filter: brightness(1.35);
  }
}

@keyframes reactorCorePulse {
  0%,
  100% {
    transform: scale(0.9);
    opacity: 0.72;
  }
  50% {
    transform: scale(1.18);
    opacity: 1;
  }
}

@keyframes resultBannerPulse {
  0%,
  100% {
    transform: translateY(0);
    filter: brightness(1);
  }
  50% {
    transform: translateY(-4px);
    filter: brightness(1.14);
  }
}

@keyframes turnBannerIntroZoom {
  0% {
    opacity: 0;
    transform: translateY(-8px) scale(0.88);
    filter: brightness(0.86) saturate(0.9);
  }
  68% {
    opacity: 1;
    transform: translateY(0) scale(1.04);
    filter: brightness(1.16) saturate(1.08);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: brightness(1);
  }
}

@keyframes resultBannerSweep {
  0%,
  24% {
    transform: translateX(-120%);
    opacity: 0;
  }
  48% {
    opacity: 1;
  }
  76%,
  100% {
    transform: translateX(120%);
    opacity: 0;
  }
}

@keyframes hintIconPulse {
  0%,
  100% {
    transform: scale(1);
    box-shadow: 0 0 0 rgba(239, 184, 77, 0);
  }
  50% {
    transform: scale(1.08);
    box-shadow: 0 0 22px rgba(239, 184, 77, 0.48);
  }
}

@keyframes hintSweep {
  0%,
  24% {
    transform: translateX(-115%);
    opacity: 0;
  }
  46% {
    opacity: 1;
  }
  76%,
  100% {
    transform: translateX(115%);
    opacity: 0;
  }
}

@keyframes cardConfirmPulse {
  0%,
  100% {
    transform: translateY(-5px) scale(1);
  }
  50% {
    transform: translateY(-8px) scale(1.02);
  }
}

@keyframes blastShake {
  0%,
  100% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-4px);
  }
  40% {
    transform: translateX(4px);
  }
  60% {
    transform: translateX(-2px);
  }
  80% {
    transform: translateX(2px);
  }
}

