/* ═══════════════════════════════════════════
   ANIMATIONS — All @keyframes Definitions
   ═══════════════════════════════════════════ */

/* ── Hero scroll hint bounce ── */
@keyframes bob {
    0%, 100% { transform: translate(-50%, 0); }
    50%       { transform: translate(-50%, 8px); }
}

/* ── Flip clock digit flip ── */
@keyframes flipCard {
    0%   { transform: rotateX(0); }
    50%  { transform: rotateX(-90deg); background: #1a0a12; }
    100% { transform: rotateX(0); }
}

/* ── Notification toast glow pulse ── */
@keyframes notifGlow {
    0%, 100% { box-shadow: 0 10px 40px rgba(255, 42, 133, 0.2); }
    50%       { box-shadow: 0 10px 55px rgba(255, 42, 133, 0.45); }
}

/* ── Exam card celebrate flash ── */
@keyframes examCelebrate {
    0%   { box-shadow: 0 0 0 rgba(255, 42, 133, 0); }
    30%  { box-shadow: 0 0 60px rgba(255, 42, 133, 0.55); }
    100% { box-shadow: 0 20px 60px rgba(255, 42, 133, 0.12); }
}

/* ── Confetti particles rise ── */
@keyframes confettiRise {
    0%   { transform: translateY(0) rotate(0deg); opacity: 0; }
    15%  { opacity: 1; }
    100% { transform: translateY(-160px) rotate(45deg); opacity: 0; }
}

/* ── Loading spinner (diploma download button) ── */
@keyframes spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ── Quiz option select pop ── */
@keyframes optionPop {
    0%   { transform: scale(1); }
    45%  { transform: scale(1.045); }
    100% { transform: scale(1); }
}

/* ── Diploma card one-shot light sweep on reveal ── */
@keyframes shineSweep {
    0%   { transform: translateX(-160%) rotate(8deg); opacity: 0; }
    35%  { opacity: 0.55; }
    100% { transform: translateX(160%) rotate(8deg); opacity: 0; }
}

/* ── Slow decorative ring rotation (finale medallion) ── */
@keyframes slowSpin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ── Quiz question/result entrance ── */
@keyframes quizFadeIn {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}
