/* Platty Maps - Animations */

/* Fade In */
@keyframes platty-fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.platty-animate-fadeIn {
    animation: platty-fadeIn 0.6s ease-in-out forwards;
    opacity: 0;
}

/* Slide In Up */
@keyframes platty-slideInUp {
    from {
        transform: translateY(30px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.platty-animate-slideInUp {
    animation: platty-slideInUp 0.6s ease-out forwards;
    opacity: 0;
}

/* Slide In Down */
@keyframes platty-slideInDown {
    from {
        transform: translateY(-30px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.platty-animate-slideInDown {
    animation: platty-slideInDown 0.6s ease-out forwards;
    opacity: 0;
}

/* Slide In Left */
@keyframes platty-slideInLeft {
    from {
        transform: translateX(-30px);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

.platty-animate-slideInLeft {
    animation: platty-slideInLeft 0.6s ease-out forwards;
    opacity: 0;
}

/* Slide In Right */
@keyframes platty-slideInRight {
    from {
        transform: translateX(30px);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

.platty-animate-slideInRight {
    animation: platty-slideInRight 0.6s ease-out forwards;
    opacity: 0;
}

/* Zoom In */
@keyframes platty-zoomIn {
    from {
        transform: scale(0.8);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

.platty-animate-zoomIn {
    animation: platty-zoomIn 0.6s ease-out forwards;
    opacity: 0;
}

/* Rotate In */
@keyframes platty-rotateIn {
    from {
        transform: rotate(-20deg);
        opacity: 0;
    }
    to {
        transform: rotate(0);
        opacity: 1;
    }
}

.platty-animate-rotateIn {
    animation: platty-rotateIn 0.6s ease-out forwards;
    opacity: 0;
}

/* Bounce In */
@keyframes platty-bounceIn {
    0% {
        transform: scale(0);
        opacity: 0;
    }
    50% {
        transform: scale(1.1);
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

.platty-animate-bounceIn {
    animation: platty-bounceIn 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
    opacity: 0;
}

/* Delay utilities */
.platty-animate-delay-100 {
    --animation-delay: 0.1s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-200 {
    --animation-delay: 0.2s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-300 {
    --animation-delay: 0.3s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-400 {
    --animation-delay: 0.4s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-500 {
    --animation-delay: 0.5s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-600 {
    --animation-delay: 0.6s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-700 {
    --animation-delay: 0.7s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-800 {
    --animation-delay: 0.8s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-900 {
    --animation-delay: 0.9s;
    animation-delay: var(--animation-delay);
}

.platty-animate-delay-1000 {
    --animation-delay: 1s;
    animation-delay: var(--animation-delay);
}

/* Map entrance animation */
@keyframes platty-mapEntrance {
    from {
        opacity: 0;
        filter: blur(5px);
    }
    to {
        opacity: 1;
        filter: blur(0);
    }
}

.platty-maps-container[data-animation] .platty-maps-map {
    animation: platty-mapEntrance 0.8s ease-out;
}
