

    @keyframes sandhillDiceRoll {
        0% { transform: rotate(0deg) scale(0.86); }
        20% { transform: rotate(110deg) scale(1.08); }
        40% { transform: rotate(220deg) scale(0.94); }
        60% { transform: rotate(330deg) scale(1.12); }
        80% { transform: rotate(430deg) scale(0.98); }
        100% { transform: rotate(540deg) scale(1); }
    }

@keyframes slotBounce {
    0% { transform: translateY(-10px) scale(0.94); opacity: 0.58; }
    50% { transform: translateY(0) scale(1); opacity: 1; }
    100% { transform: translateY(10px) scale(0.94); opacity: 0.58; }
}

@keyframes slideUpPanel {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

@keyframes pulseDice {
    0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 159, 28, 0.7); }
    50% { transform: scale(1); box-shadow: 0 0 0 15px rgba(255, 159, 28, 0); }
    100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 159, 28, 0); }
}

@keyframes stampIn {
    0% { transform: scale(3) rotate(-15deg); opacity: 0; }
    50% { transform: scale(0.9) rotate(5deg); opacity: 1; }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

@keyframes screenShake {
    0%, 100% { transform: translate(0, 0); }
    10%, 30%, 50%, 70%, 90% { transform: translate(-10px, 0); }
    20%, 40%, 60%, 80% { transform: translate(10px, 0); }
}

@keyframes qpFlyOut {
    0% { transform: translate(-50%, -50%) scale(1); opacity: 1; }
    50% { transform: translate(40%, -150%) scale(0.7); opacity: 1; }
    100% { transform: translate(220%, -320%) scale(0.1); opacity: 0; }
}

@keyframes qpFlyIn {
    0% { transform: translate(-220%, -320%) scale(0.1) rotate(-35deg); opacity: 0; }
    50% { transform: translate(-50%, -140%) scale(0.7) rotate(-12deg); opacity: 1; }
    100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); opacity: 1; }
}

@keyframes qpDotBounce {
    0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
    30% { transform: translateY(-4px); opacity: 1; }
}

@keyframes qpSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes returnPlaneFly {
    0% { opacity: 0; transform: translate(64px, -18px) rotate(16deg) scale(0.84); }
    28% { opacity: 1; transform: translate(30px, -8px) rotate(6deg) scale(0.96); }
    72% { opacity: 1; transform: translate(8px, -2px) rotate(-3deg) scale(1); }
    100% { opacity: 0; transform: translate(-8px, 0) rotate(-8deg) scale(0.76); }
}

@keyframes returnBubbleOpen {
    0% { opacity: 0; transform: translateX(24px) scale(0.34) rotate(-10deg); }
    54% { opacity: 0; transform: translateX(14px) scale(0.48) rotate(-6deg); }
    100% { opacity: 1; transform: translateX(0) scale(1) rotate(0deg); }
}

@keyframes slideUp {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

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

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

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