/* =============================================
   ANIMATIONS.CSS — Awan background, gelembung, dan animasi global
   Berisi semua animasi latar belakang website.
   ============================================= */

/* --- Animated Clouds Background (awan bergerak di latar belakang) --- */
.clouds-container {
    position: fixed;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}

.cloud {
    position: absolute;
    background: radial-gradient(ellipse at center, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.6) 40%, transparent 70%);
    border-radius: 50%;
    filter: blur(1px);
    animation: cloudFloat linear infinite;
}

.cloud-1 {
    width: 300px;
    height: 120px;
    top: 10%;
    left: -300px;
    animation-duration: 60s;
    opacity: 0.7;
}

.cloud-2 {
    width: 200px;
    height: 80px;
    top: 25%;
    left: -200px;
    animation-duration: 45s;
    animation-delay: -10s;
    opacity: 0.5;
}

.cloud-3 {
    width: 350px;
    height: 140px;
    top: 40%;
    left: -350px;
    animation-duration: 70s;
    animation-delay: -20s;
    opacity: 0.6;
}

.cloud-4 {
    width: 180px;
    height: 70px;
    top: 55%;
    left: -180px;
    animation-duration: 50s;
    animation-delay: -5s;
    opacity: 0.4;
}

.cloud-5 {
    width: 250px;
    height: 100px;
    top: 70%;
    left: -250px;
    animation-duration: 55s;
    animation-delay: -15s;
    opacity: 0.5;
}

.cloud-6 {
    width: 280px;
    height: 110px;
    top: 15%;
    left: -280px;
    animation-duration: 65s;
    animation-delay: -30s;
    opacity: 0.6;
}

.cloud-7 {
    width: 220px;
    height: 90px;
    top: 45%;
    left: -220px;
    animation-duration: 48s;
    animation-delay: -25s;
    opacity: 0.5;
}

.cloud-8 {
    width: 320px;
    height: 130px;
    top: 80%;
    left: -320px;
    animation-duration: 58s;
    animation-delay: -35s;
    opacity: 0.4;
}

@keyframes cloudFloat {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(calc(100vw + 400px));
    }
}

/* --- Bubbles Container (gelembung mengambang) --- */
.bubbles-container {
    position: fixed;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 1;
}

.bubble {
    position: absolute;
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.2));
    border-radius: 50%;
    animation: bubbleRise linear infinite;
    box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.5);
}

@keyframes bubbleRise {
    0% {
        transform: translateY(100vh) scale(0);
        opacity: 0;
    }

    10% {
        opacity: 0.6;
        transform: translateY(90vh) scale(1);
    }

    90% {
        opacity: 0.6;
    }

    100% {
        transform: translateY(-100px) scale(0.8);
        opacity: 0;
    }
}

/* --- Typing Cursor (kursor ketik di hero subtitle) --- */
.cursor-blink {
    display: inline-block;
    color: var(--sky-400);
    animation: blink 1s step-end infinite;
    margin-left: 2px;
    font-weight: 300;
}

@keyframes blink {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}

/* --- Click Burst Particles (partikel klik) --- */
.click-particle {
    position: absolute;
    width: 8px;
    height: 8px;
    background: var(--sky-300);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9999;
    animation: burstFade 0.8s ease-out forwards;
}

@keyframes burstFade {
    0% {
        transform: translate(0, 0) scale(1);
        opacity: 1;
    }

    100% {
        transform: translate(var(--tx), var(--ty)) scale(0);
        opacity: 0;
    }
}