/* Animation CSS */

/* Utility Classes for Scroll Animations */
.animate-on-scroll {
    opacity: 0;
    transition: all 0.8s ease;
}

.animate-on-scroll.animated {
    opacity: 1;
}

/* Slide Animations */
.slide-from-left {
    transform: translateX(-50px);
}

.slide-from-left.animated {
    transform: translateX(0);
}

.slide-from-right {
    transform: translateX(50px);
}

.slide-from-right.animated {
    transform: translateX(0);
}

.slide-from-bottom {
    transform: translateY(50px);
}

.slide-from-bottom.animated {
    transform: translateY(0);
}

/* Fade Animations */
.anim-fade-in-left {
    animation: fadeInLeft 1s ease forwards;
}

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-50px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Hover Effects */
.hover-lift {
    transition: transform 0.3s ease;
}

.hover-lift:hover {
    transform: translateY(-5px);
}

.hover-icon-wiggle:hover i {
    animation: wiggle 0.5s ease;
}

@keyframes wiggle {

    0%,
    100% {
        transform: rotate(0);
    }

    25% {
        transform: rotate(-10deg);
    }

    75% {
        transform: rotate(10deg);
    }
}

/* Pulse Effect */
.interactive-pulse-border {
    position: relative;
}

.interactive-pulse-border::before {
    content: '';
    position: absolute;
    top: -5px;
    left: -5px;
    right: -5px;
    bottom: -5px;
    border-radius: inherit;
    border: 2px solid var(--primary-color);
    opacity: 0;
    animation: pulseBorder 2s infinite;
}

@keyframes pulseBorder {
    0% {
        transform: scale(1);
        opacity: 0.5;
    }

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

/* Typing Cursor */
.cursor {
    display: inline-block;
    width: 2px;
    background-color: var(--primary-color);
    animation: blink 1s infinite;
}

@keyframes blink {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}

/* Blob Animation */
@keyframes blobFloat {
    0% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(30px, -50px) scale(1.1);
    }

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

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