/* Fonts loaded via HTML <link> for better performance */

/* Fade Up Animation */
.fade-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-up.show {
    opacity: 1;
    transform: translateY(0);
}

/* Font Classes - Poppins */
.poppins-light {
    font-family: "Poppins", sans-serif;
    font-weight: 300;
    font-style: normal;
}

.poppins-regular {
    font-family: "Poppins", sans-serif;
    font-weight: 400;
    font-style: normal;
}

.poppins-medium {
    font-family: "Poppins", sans-serif;
    font-weight: 600;
    font-style: normal;
}

.poppins-bold {
    font-family: "Poppins", sans-serif;
    font-weight: 700;
    font-style: normal;
}

/* Font Classes - Edu */
.edu-nsw-act-cursive {
    font-family: "Edu NSW ACT Cursive", cursive;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
}

.edu-qld-beginner {
    font-family: "Edu QLD Beginner", cursive;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
}

/* Marquee Animation */
@keyframes marquee {
    0% {
        transform: translateX(0%);
    }

    100% {
        transform: translateX(-50%);
    }
}

.animate-marquee {
    animation: marquee 20s linear infinite;
}

/* Spread From Center Animation */
@keyframes spreadFromCenter {
    0% {
        transform: translate(0, 0) scale(0.7);
        opacity: 0;
    }

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

@keyframes floatOrganic {
    0% {
        transform: translate(var(--tx), var(--ty)) scale(1);
    }

    40% {
        transform: translate(calc(var(--tx) + 4px),
                calc(var(--ty) - 6px)) scale(1.01);
    }

    70% {
        transform: translate(calc(var(--tx) - 5px),
                calc(var(--ty) + 3px)) scale(0.99);
    }

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

.value-box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform-origin: center;
    opacity: 0;

    animation:
        spreadFromCenter 1.1s cubic-bezier(.22, .61, .36, 1) forwards,
        floatOrganic 9s ease-in-out infinite;

    animation-delay:
        var(--delay),
        calc(var(--delay) + 1.1s);
}

/* Navigation Links */
.nav-link {
    transition: all 0.3s ease;
    opacity: 0.6;
    position: relative;
}

.nav-link.active {
    opacity: 1;
}

.nav-link.active::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -6px;
    width: 100%;
    height: 1px;
    background-color: #9d7a6a;
}

.nav-link-mobile {
    opacity: 0.7;
    transition: all 0.3s ease;
}

.nav-link-mobile.active {
    opacity: 1;
    letter-spacing: 0.4em;
}

/* Loader Animation */
@keyframes loaderLine {
    0% {
        transform: translateX(-100%);
    }

    100% {
        transform: translateX(200%);
    }
}

.animate-loader-line {
    animation: loaderLine 1.2s ease-in-out infinite;
}

/* Snowfall Effect */
@keyframes snow {
    0% {
        transform: translateY(-10px);
        opacity: 1;
    }

    100% {
        transform: translateY(300px);
        opacity: 0;
    }
}

.snowfall {
    pointer-events: none;
    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 5;
}

.snowfall span {
    position: absolute;
    top: -10px;
    border-radius: 50%;
    background: rgba(255, 200, 215, 0.8);
    /* warna pink keputihan */
    animation: snow linear infinite;
}

.snowfall span:nth-child(odd) {
    width: 6px;
    height: 6px;
}

.snowfall span:nth-child(even) {
    width: 4px;
    height: 4px;
}