@keyframes pulseCorner {

    0%,
    100% {
        transform: scale(1);
        opacity: 1;
    }

    50% {
        transform: scale(1.2);
        opacity: 0.6;
    }
}

/**
 * Background particles animation
 * Partikel bergerak dari bawah ke atas dengan rotasi
 */
@keyframes particle-animation {
    0% {
        transform: translateY(0) rotate(0deg);
        opacity: 1;
    }

    100% {
        transform: translateY(-1000px) rotate(720deg);
        opacity: 0;
    }
}

/**
 * Fade in and slide up effect
 * Digunakan untuk container dan form elements
 */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/**
 * Slide in from left
 * Digunakan untuk header dan elemen yang masuk dari kiri
 */
@keyframes slideInFromLeft {
    from {
        opacity: 0;
        transform: translateX(-50px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/**
 * Floating effect
 * Efek melayang untuk logo
 */
@keyframes float {

    0%,
    100% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-10px);
    }
}

/**
 * Logo float with rotation
 * Kombinasi floating dan sedikit rotasi
 */
@keyframes logoFloat {
    0% {
        transform: translateY(0) rotate(0deg);
    }

    50% {
        transform: translateY(-10px) rotate(10deg);
    }

    100% {
        transform: translateY(0) rotate(0deg);
    }
}

/**
 * Pulse effect
 * Efek pulse untuk button atau element interaktif
 */
@keyframes pulse {

    0%,
    100% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.05);
    }
}

/**
 * Shimmer effect
 * Efek shimmer/shine yang bergerak horizontal
 */
@keyframes shimmer {
    0% {
        background-position: -1000px 0;
    }

    100% {
        background-position: 1000px 0;
    }
}

/**
 * Ripple effect
 * Efek ripple seperti gelombang air
 */
@keyframes ripple {
    0% {
        transform: scale(0.8);
        opacity: 1;
    }

    100% {
        transform: scale(2.4);
        opacity: 0;
    }
}

/**
 * Shake animation for errors
 * Efek goyang untuk menandakan error pada input
 */
@keyframes shake {

    0%,
    100% {
        transform: translateX(0);
    }

    25% {
        transform: translateX(-10px);
    }

    75% {
        transform: translateX(10px);
    }
}