/* ============================================================================
   KEYFRAME ANIMATIONS (css/animations.css)
   ============================================================================ */

@keyframes floatUpFade {
    0% { opacity: 0; transform: translate(-50%, 8px) scale(0.88); }
    10% { opacity: 1; transform: translate(-50%, 0px) scale(1.04); }
    72% { opacity: 1; transform: translate(-50%, -22px) scale(1.0); }
    100% { opacity: 0; transform: translate(-50%, -48px) scale(0.96); }
}

/* Tactile bounce & spin-flare animation on token tap */
@keyframes titleTokenTapBoing {
    0%   { transform: translateY(0) scale(1.1); }
    22%  { transform: translateY(-14px) scale(1.26, 0.86) rotate(-10deg); }
    50%  { transform: translateY(3px) scale(0.92, 1.18) rotate(8deg); }
    75%  { transform: translateY(-4px) scale(1.14, 1.04) rotate(-3deg); }
    100% { transform: translateY(0) scale(1.1) rotate(0deg); }
}
.title-token-piece.token-tap-boing {
    animation: titleTokenTapBoing 0.42s cubic-bezier(0.22, 1, 0.36, 1) forwards !important;
}

/* Expanding ripple ring spawned inside the slot on tap */
@keyframes titleSlotRipple {
    0%   { transform: scale(0.75); opacity: 0.95; }
    100% { transform: scale(1.75); opacity: 0; }
}

/* Unison flash when the secret code is unlocked */
@keyframes secretUnlockPulse {
    0%, 100% { transform: translateY(0) scale(1.1); filter: brightness(1); }
    40%      { transform: translateY(-10px) scale(1.3); filter: brightness(1.65); }
}

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

@keyframes tutorialPulseBorder {
    0%, 100% {
        border-color: #fbbf24;
        box-shadow:
            0 0 0 9999px rgba(5, 4, 9, 0.82),
            0 0 24px rgba(251, 191, 36, 0.75),
            inset 0 0 14px rgba(251, 191, 36, 0.3);
    }
    50% {
        border-color: #2dd4bf;
        box-shadow:
            0 0 0 9999px rgba(5, 4, 9, 0.82),
            0 0 32px rgba(45, 212, 191, 0.85),
            inset 0 0 18px rgba(45, 212, 191, 0.45);
    }
}
