/* Advanced Animations for Esprit Créatif */

/* Particle effect animation */
@keyframes particleFloat {
    0%, 100% {
        transform: translate(0, 0) rotate(0deg);
        opacity: 0.3;
    }
    25% {
        transform: translate(10px, -10px) rotate(90deg);
        opacity: 0.5;
    }
    50% {
        transform: translate(-5px, -20px) rotate(180deg);
        opacity: 0.7;
    }
    75% {
        transform: translate(-15px, -10px) rotate(270deg);
        opacity: 0.5;
    }
}

.animate-particle {
    animation: particleFloat 8s ease-in-out infinite;
}

/* Gradient border animation */
@keyframes borderGlow {
    0%, 100% {
        border-color: rgba(242, 236, 212, 0.3);
        box-shadow: 0 0 20px rgba(242, 236, 212, 0.2);
    }
    50% {
        border-color: rgba(242, 236, 212, 0.6);
        box-shadow: 0 0 40px rgba(242, 236, 212, 0.4);
    }
}

.animate-border-glow {
    animation: borderGlow 3s ease-in-out infinite;
}

/* Text reveal animation */
@keyframes textReveal {
    from {
        opacity: 0;
        transform: translateY(30px);
        filter: blur(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

.animate-text-reveal {
    animation: textReveal 1s ease-out forwards;
}

/* Scale pulse animation */
@keyframes scalePulse {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
}

.animate-scale-pulse {
    animation: scalePulse 2s ease-in-out infinite;
}

/* Glow pulse animation */
@keyframes glowPulse {
    0%, 100% {
        filter: drop-shadow(0 0 10px rgba(242, 236, 212, 0.3));
    }
    50% {
        filter: drop-shadow(0 0 30px rgba(242, 236, 212, 0.6));
    }
}

.animate-glow-pulse {
    animation: glowPulse 3s ease-in-out infinite;
}

/* Bounce in animation */
@keyframes bounceIn {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    50% {
        opacity: 1;
        transform: scale(1.05);
    }
    70% {
        transform: scale(0.9);
    }
    100% {
        transform: scale(1);
    }
}

.animate-bounce-in {
    animation: bounceIn 0.6s ease-out forwards;
}

/* Rotate glow animation */
@keyframes rotateGlow {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

.animate-rotate-glow {
    animation: rotateGlow 8s linear infinite;
}

/* Wave animation */
@keyframes wave {
    0%, 100% {
        transform: translateY(0) translateX(0);
    }
    25% {
        transform: translateY(-10px) translateX(10px);
    }
    50% {
        transform: translateY(0) translateX(20px);
    }
    75% {
        transform: translateY(10px) translateX(10px);
    }
}

.animate-wave {
    animation: wave 4s ease-in-out infinite;
}

/* Spotlight effect */
@keyframes spotlight {
    0%, 100% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
}

.animate-spotlight {
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(242, 236, 212, 0.1) 25%,
        rgba(242, 236, 212, 0.2) 50%,
        rgba(242, 236, 212, 0.1) 75%,
        transparent 100%
    );
    background-size: 200% 100%;
    animation: spotlight 5s ease-in-out infinite;
}

/* Typewriter effect */
@keyframes typewriter {
    from {
        width: 0;
    }
    to {
        width: 100%;
    }
}

.animate-typewriter {
    overflow: hidden;
    border-right: 2px solid;
    white-space: nowrap;
    animation: typewriter 3s steps(40) forwards, blink 0.75s step-end infinite;
}

@keyframes blink {
    50% {
        border-color: transparent;
    }
}

/* Morph animation */
@keyframes morph {
    0%, 100% {
        border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    }
    50% {
        border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%;
    }
}

.animate-morph {
    animation: morph 8s ease-in-out infinite;
}

/* Reveal line animation */
@keyframes revealLine {
    from {
        width: 0;
        opacity: 0;
    }
    to {
        width: 100%;
        opacity: 1;
    }
}

.animate-reveal-line {
    animation: revealLine 1s ease-out forwards;
}

/* Flip animation */
@keyframes flip {
    0% {
        transform: perspective(400px) rotateY(0);
    }
    100% {
        transform: perspective(400px) rotateY(360deg);
    }
}

.animate-flip {
    animation: flip 2s ease-in-out infinite;
}

/* Parallax scroll effect */
.parallax-slow {
    transform: translateZ(-1px) scale(2);
}

.parallax-medium {
    transform: translateZ(-0.5px) scale(1.5);
}

/* Blur in animation */
@keyframes blurIn {
    from {
        filter: blur(20px);
        opacity: 0;
    }
    to {
        filter: blur(0);
        opacity: 1;
    }
}

.animate-blur-in {
    animation: blurIn 1s ease-out forwards;
}

/* Slide diagonal animation */
@keyframes slideDiagonal {
    from {
        transform: translate(-50px, -50px);
        opacity: 0;
    }
    to {
        transform: translate(0, 0);
        opacity: 1;
    }
}

.animate-slide-diagonal {
    animation: slideDiagonal 0.8s ease-out forwards;
}

/* Background pan animation */
@keyframes bgPan {
    0% {
        background-position: 0% 0%;
    }
    100% {
        background-position: 100% 100%;
    }
}

.animate-bg-pan {
    background-size: 200% 200%;
    animation: bgPan 15s linear infinite;
}

/* Elastic animation */
@keyframes elastic {
    0% {
        transform: scale(0);
    }
    55% {
        transform: scale(1.2);
    }
    75% {
        transform: scale(0.9);
    }
    100% {
        transform: scale(1);
    }
}

.animate-elastic {
    animation: elastic 1s ease-out;
}

/* Swing animation */
@keyframes swing {
    0%, 100% {
        transform: rotate(0deg);
    }
    20% {
        transform: rotate(15deg);
    }
    40% {
        transform: rotate(-10deg);
    }
    60% {
        transform: rotate(5deg);
    }
    80% {
        transform: rotate(-5deg);
    }
}

.animate-swing {
    transform-origin: top center;
    animation: swing 2s ease-in-out infinite;
}

/* Neon glow animation */
@keyframes neonGlow {
    0%, 100% {
        text-shadow:
            0 0 10px rgba(242, 236, 212, 0.5),
            0 0 20px rgba(242, 236, 212, 0.3),
            0 0 30px rgba(242, 236, 212, 0.2);
    }
    50% {
        text-shadow:
            0 0 20px rgba(242, 236, 212, 0.8),
            0 0 30px rgba(242, 236, 212, 0.6),
            0 0 40px rgba(242, 236, 212, 0.4),
            0 0 50px rgba(242, 236, 212, 0.2);
    }
}

.animate-neon-glow {
    animation: neonGlow 2s ease-in-out infinite;
}
