@keyframes float {
    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-15px);
    }
}
#particles-js {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    z-index: 0;
}
@keyframes gradient-x {
    0% {
        background-position: 0% 50%;
    }

    100% {
        background-position: 100% 50%;
    }
}

@keyframes pulse {
    0%,
    100% {
        transform: scale(1);
        opacity: 0.8;
    }

    50% {
        transform: scale(1.05);
        opacity: 1;
    }
}

@keyframes ripple {
    0% {
        transform: scale(0.8);
        opacity: 1;
    }

    100% {
        transform: scale(2.5);
        opacity: 0;
    }
}

.animate-gradient-x {
    background-size: 200% 200%;
    animation: gradient-x 6s ease infinite;
}

.service-card {
    transform-style: preserve-3d;
}
.service-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: inherit;
    transform: translateZ(-1px);
    filter: blur(10px);
    opacity: 0;
    transition: opacity 0.3s;
}
.service-card:hover::before {
    opacity: 0.2;
}

.ripple {
    position: relative;
    overflow: hidden;
}

.ripple-effect {
    position: absolute;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.4);
    transform: scale(0);
    animation: ripple 600ms linear;
    pointer-events: none;
}

@media (max-width: 768px) {
    .service-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .service-grid {
        grid-template-columns: 1fr;
    }
}

@keyframes float {
    0%,
    100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-20px);
    }
}
@keyframes float-slow {
    0%,
    100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-10px);
    }
}
@keyframes bounce-slow {
    0%,
    100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-15px);
    }
}
@keyframes pulse-slow {
    0%,
    100% {
        transform: scale(1);
        opacity: 0.2;
    }
    50% {
        transform: scale(1.1);
        opacity: 0.3;
    }
}
@keyframes slide-in {
    from {
        transform: translateY(20px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}
@keyframes fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.animate-float {
    animation: float 8s ease-in-out infinite;
}
.animate-float-slow {
    animation: float-slow 6s ease-in-out infinite;
}
.animate-bounce-slow {
    animation: bounce-slow 4s ease-in-out infinite;
}
.animate-pulse-slow {
    animation: pulse-slow 8s ease-in-out infinite;
}
.animate-pulse {
    animation: pulse-slow 6s ease-in-out infinite;
}
.animate-slide-in {
    animation: slide-in 0.8s ease-out forwards;
}
.animate-fade-in {
    animation: fade-in 1s ease-out forwards;
}
@keyframes blob {
    0% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(20px, -20px) scale(1.05);
    }

    66% {
        transform: translate(-20px, 20px) scale(0.95);
    }

    100% {
        transform: translate(0, 0) scale(1);
    }
}

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

.animation-delay-2000 {
    animation-delay: 2s;
}

.animation-delay-4000 {
    animation-delay: 4s;
}

.swiper {
    overflow: hidden;
    padding: 0 10px;
}
.swiper-wrapper {
    transition-timing-function: cubic-bezier(0.17, 0.67, 0.21, 0.99);
}
.swiper-slide {
    height: auto;
    will-change: transform;
    backface-visibility: hidden;
    transform-style: preserve-3d;
}
.swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    background: #d1d5db;
    opacity: 1;
    transition: all 0.3s ease;
}
.swiper-pagination-bullet-active {
    width: 20px;
    background: #4f46e5;
    border-radius: 4px;
}
.swiper-button-disabled {
    opacity: 0.3;
    pointer-events: none;
}
