.animate-bounce-slow { animation: bounce 3s infinite; }
@keyframes bounce { 0%, 100% { transform: translateY(-5%); } 50% { transform: translateY(0); } }
.modal-open { overflow: hidden; }

/* Efeito de "pular" nomes com desfoque de movimento */
.raffle-active {
    filter: blur(2px);
    opacity: 0.8;
    transform: scale(1.02);
    transition: none;
}

/* Efeito de parada suave e nítida */
.raffle-clear {
    filter: blur(0);
    opacity: 1;
    transform: scale(1);
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* Animação de explosão de partículas */
@keyframes particle-explode {
    0% {
        transform: translate(0, 0) scale(1.6);
        opacity: 1;
    }
    60% {
        opacity: 0.9;
    }
    100% {
        transform: translate(var(--tx), var(--ty)) scale(0);
        opacity: 0;
    }
}
.particle {
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
    z-index: 100;
    animation: particle-explode 1.2s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
}

/* Efeito de queda de confetes/bombas */
@keyframes rain-fall {
    0% {
        transform: translateY(-50px) rotate(0deg);
        opacity: 1;
    }
    100% {
        transform: translateY(105vh) rotate(360deg);
        opacity: 0.75;
    }
}
.rain-item {
    position: absolute;
    top: 0;
    pointer-events: none;
    z-index: 5;
    animation: rain-fall 4s linear forwards;
}

/* Animação da coroa flutuante */
@keyframes bounce-crown {
    0%, 100% {
        transform: translateY(0) scale(1) rotate(0deg);
    }
    50% {
        transform: translateY(-5px) scale(1.15) rotate(5deg);
    }
}
.animate-bounce-crown {
    display: inline-block;
    animation: bounce-crown 1.5s ease-in-out infinite;
}

/* Animação suave de entrada */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

