/* ============================================================
   LA MELLERYSIENNE – Animations
   ============================================================ */

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes glowDrift {
    from { transform: translate(0, 0) scale(1); }
    to { transform: translate(5%, 5%) scale(1.1); }
}

@keyframes btnPulse {
    0%, 100% { box-shadow: 0 0 8px rgba(255, 59, 59, 0.4), 0 0 16px rgba(255, 59, 59, 0.2); }
    50% { box-shadow: 0 0 16px rgba(255, 59, 59, 0.7), 0 0 32px rgba(255, 59, 59, 0.4); }
}

@keyframes neonPulse {
    0%, 100% { filter: drop-shadow(0 0 12px rgba(255, 59, 59, 0.5)); }
    50% { filter: drop-shadow(0 0 24px rgba(255, 59, 59, 0.8)); }
}

@keyframes starTwinkle {
    0%, 100% { opacity: 0.4; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.2); }
}

@keyframes strokeCircle {
    to { stroke-dashoffset: 0; }
}

@keyframes strokeCheck {
    to { stroke-dashoffset: 0; }
}

@keyframes modalIn {
    from { opacity: 0; transform: scale(0.95) translateY(10px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

@keyframes barGrow {
    from { width: 0; }
    to { width: var(--pct); }
}

@keyframes podiumRise {
    from { transform: translateY(30px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

@keyframes confettiFall {
    0% { transform: translateY(-20px) rotate(0deg); opacity: 1; }
    100% { transform: translateY(60px) rotate(360deg); opacity: 0; }
}

@keyframes pieSliceIn {
    from { opacity: 0; transform-origin: center; transform: scale(0.8); }
    to { opacity: 0.85; transform: scale(1); }
}

.fade-in {
    animation: fadeIn 0.7s ease forwards;
    opacity: 0;
}

.fade-in--delay-1 { animation-delay: 0.15s; }
.fade-in--delay-2 { animation-delay: 0.3s; }
.fade-in--delay-3 { animation-delay: 0.45s; }
.fade-in--delay-4 { animation-delay: 0.6s; }

.fade-in-up {
    animation: fadeInUp 0.5s ease forwards;
    opacity: 0;
}

.neon-pulse {
    animation: neonPulse 4s ease-in-out infinite;
}

.merci__confetti::before,
.merci__confetti::after {
    content: '★';
    position: absolute;
    font-size: 1.5rem;
    animation: confettiFall 1.5s ease forwards;
}

.merci__confetti::before {
    left: 30%;
    color: var(--neon-red);
    animation-delay: 0.6s;
}

.merci__confetti::after {
    right: 30%;
    color: var(--neon-gold);
    animation-delay: 0.8s;
}

.pie-slice {
    animation: pieSliceIn 0.8s ease forwards;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
