/**
 * VGS Elementor Pro - Animations
 * Beautiful, modern entrance and interaction animations.
 */

/* Scroll Reveal */
[data-vgs-reveal] {
    opacity: 0;
    transition: opacity 0.85s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.85s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: opacity, transform;
}

[data-vgs-reveal].vgs-revealed { opacity: 1; transform: none; }

[data-vgs-reveal="fade-up"] { transform: translateY(50px); }
[data-vgs-reveal="fade-down"] { transform: translateY(-50px); }
[data-vgs-reveal="fade-left"] { transform: translateX(50px); }
[data-vgs-reveal="fade-right"] { transform: translateX(-50px); }
[data-vgs-reveal="zoom-in"] { transform: scale(0.82); }
[data-vgs-reveal="zoom-out"] { transform: scale(1.12); }
[data-vgs-reveal="flip-up"] { transform: perspective(700px) rotateX(30deg); }
[data-vgs-reveal="flip-down"] { transform: perspective(700px) rotateX(-30deg); }
[data-vgs-reveal="flip-left"] { transform: perspective(700px) rotateY(30deg); }
[data-vgs-reveal="flip-right"] { transform: perspective(700px) rotateY(-30deg); }
[data-vgs-reveal="blur-in"] { filter: blur(12px); transform: scale(0.95); }
[data-vgs-reveal="blur-in"].vgs-revealed { filter: blur(0); }

/* Parallax placeholder */
.vgs-parallax-yes { will-change: transform; }

/* 3D Tilt */
.vgs-tilt-yes { transform-style: preserve-3d; transform: perspective(1000px); }

/* Entrance keyframes */
@keyframes vgs-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes vgs-slide-up { from { opacity: 0; transform: translateY(35px); } to { opacity: 1; transform: translateY(0); } }
@keyframes vgs-slide-down { from { opacity: 0; transform: translateY(-35px); } to { opacity: 1; transform: translateY(0); } }
@keyframes vgs-slide-left { from { opacity: 0; transform: translateX(35px); } to { opacity: 1; transform: translateX(0); } }
@keyframes vgs-slide-right { from { opacity: 0; transform: translateX(-35px); } to { opacity: 1; transform: translateX(0); } }
@keyframes vgs-zoom-in { from { opacity: 0; transform: scale(0.8); } to { opacity: 1; transform: scale(1); } }
@keyframes vgs-zoom-out { from { opacity: 0; transform: scale(1.15); } to { opacity: 1; transform: scale(1); } }
@keyframes vgs-flip-up { from { opacity: 0; transform: perspective(700px) rotateX(25deg); } to { opacity: 1; transform: perspective(700px) rotateX(0); } }
@keyframes vgs-blur-in { from { opacity: 0; filter: blur(10px); } to { opacity: 1; filter: blur(0); } }

.vgs-animate-fade-in { animation: vgs-fade-in 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-slide-up { animation: vgs-slide-up 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-slide-down { animation: vgs-slide-down 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-slide-left { animation: vgs-slide-left 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-slide-right { animation: vgs-slide-right 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-zoom-in { animation: vgs-zoom-in 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-zoom-out { animation: vgs-zoom-out 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-flip-up { animation: vgs-flip-up 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.vgs-animate-blur-in { animation: vgs-blur-in 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards; }

/* Stagger delays */
.vgs-delay-100 { animation-delay: 0.1s; }
.vgs-delay-200 { animation-delay: 0.2s; }
.vgs-delay-300 { animation-delay: 0.3s; }
.vgs-delay-400 { animation-delay: 0.4s; }
.vgs-delay-500 { animation-delay: 0.5s; }

/* Ken Burns effect */
.vgs-ken-burns { animation: vgs-ken-burns 22s ease-in-out infinite alternate; }

@keyframes vgs-ken-burns {
    0% { transform: scale(1) translate(0, 0); }
    100% { transform: scale(1.15) translate(-2%, -2%); }
}

/* Shape dividers */
.vgs-shape-divider-top,
.vgs-shape-divider-bottom {
    position: absolute;
    left: 0; right: 0;
    width: 100%;
    overflow: hidden;
    z-index: 1;
}

.vgs-shape-divider-top { top: 0; }
.vgs-shape-divider-bottom { bottom: 0; }

/* Magnetic cursor effect */
.vgs-magnetic-yes { transition: transform 0.2s ease; }

/* Custom cursor */
.vgs-cursor-yes { cursor: none; }

/* Sticky element */
.vgs-sticky-yes { position: sticky; top: 20px; }

/* Floating animation */
.vgs-float { animation: vgs-float 3.5s ease-in-out infinite; }

@keyframes vgs-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-14px); }
}

.vgs-float-slow { animation: vgs-float 6s ease-in-out infinite; }

/* Pulse glow */
.vgs-pulse-glow { animation: vgs-pulse-glow 2s ease-in-out infinite; }

@keyframes vgs-pulse-glow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.35); }
    50% { box-shadow: 0 0 20px 8px rgba(99, 102, 241, 0.1); }
}

/* Gradient text */
.vgs-gradient-text {
    background: linear-gradient(135deg, #6366f1, #06b6d4);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    background-size: 200% auto;
    animation: vgs-gradient-flow 4s ease infinite;
}

@keyframes vgs-gradient-flow {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Swing */
.vgs-swing { animation: vgs-swing 2s ease-in-out infinite; transform-origin: top center; }

@keyframes vgs-swing {
    0%, 100% { transform: rotate(0deg); }
    20% { transform: rotate(8deg); }
    40% { transform: rotate(-6deg); }
    60% { transform: rotate(4deg); }
    80% { transform: rotate(-2deg); }
}

/* Heartbeat */
.vgs-heartbeat { animation: vgs-heartbeat 1.3s ease-in-out infinite; }

@keyframes vgs-heartbeat {
    0%, 100% { transform: scale(1); }
    14% { transform: scale(1.12); }
    28% { transform: scale(1); }
    42% { transform: scale(1.12); }
    70% { transform: scale(1); }
}

/* Shine sweep */
.vgs-shine { position: relative; overflow: hidden; }

.vgs-shine::after {
    content: '';
    position: absolute;
    top: 0; left: -100%;
    width: 100%; height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
    animation: vgs-shine-sweep 3s infinite;
}

@keyframes vgs-shine-sweep {
    0% { left: -100%; }
    40%, 100% { left: 100%; }
}

/* Bounce in */
.vgs-bounce-in { animation: vgs-bounce-in 0.85s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards; }

@keyframes vgs-bounce-in {
    0% { opacity: 0; transform: scale(0.3); }
    50% { transform: scale(1.05); }
    70% { transform: scale(0.9); }
    100% { opacity: 1; transform: scale(1); }
}

/* Tada */
.vgs-tada { animation: vgs-tada 1s ease both; }

@keyframes vgs-tada {
    0% { transform: scale(1); }
    10%, 20% { transform: scale(0.9) rotate(-3deg); }
    30%, 50%, 70%, 90% { transform: scale(1.1) rotate(3deg); }
    40%, 60%, 80% { transform: scale(1.1) rotate(-3deg); }
    100% { transform: scale(1) rotate(0); }
}

/* Wobble horizontal */
.vgs-wobble-x { animation: vgs-wobble-x 1s ease both; }

@keyframes vgs-wobble-x {
    0%, 100% { transform: translateX(0); }
    15% { transform: translateX(-25px) rotate(-5deg); }
    30% { transform: translateX(20px) rotate(3deg); }
    45% { transform: translateX(-15px) rotate(-3deg); }
    60% { transform: translateX(10px) rotate(2deg); }
    75% { transform: translateX(-5px) rotate(-1deg); }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
    [data-vgs-reveal],
    .vgs-ken-burns,
    .vgs-float,
    .vgs-float-slow,
    .vgs-pulse-glow,
    .vgs-gradient-text,
    .vgs-swing,
    .vgs-heartbeat,
    .vgs-shine::after,
    .vgs-bounce-in,
    .vgs-tada,
    .vgs-wobble-x,
    .vgs-animate-fade-in,
    .vgs-animate-slide-up,
    .vgs-animate-slide-down,
    .vgs-animate-slide-left,
    .vgs-animate-slide-right,
    .vgs-animate-zoom-in,
    .vgs-animate-zoom-out,
    .vgs-animate-flip-up,
    .vgs-animate-blur-in {
        animation: none !important;
        transition: none !important;
        transform: none !important;
        opacity: 1 !important;
        filter: none !important;
    }
}
