/* Background Effects Container */
#background-effect-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 1;
    /* Behind everything */
    overflow: hidden;
}

/* Snow */
.snowflake {
    position: absolute;
    top: -10px;
    background: white;
    border-radius: 50%;
    opacity: 0.8;
    animation: fall linear infinite;
}

@keyframes fall {
    to {
        transform: translateY(100vh);
    }
}

/* Autumn & Flowers */
.leaf,
.flower {
    position: absolute;
    top: -20px;
    font-size: 20px;
    animation: fall-rotate linear infinite;
}

@keyframes fall-rotate {
    0% {
        transform: translateY(-20px) rotate(0deg) translateX(0);
    }

    100% {
        transform: translateY(100vh) rotate(360deg) translateX(50px);
    }
}

/* Dust */
.dust-particle {
    position: absolute;
    background: rgba(255, 255, 255, 0.5);
    border-radius: 50%;
    animation: float-dust linear infinite;
}

@keyframes float-dust {
    0% {
        transform: translateY(0) translateX(0);
        opacity: 0;
    }

    50% {
        opacity: 1;
    }

    100% {
        transform: translateY(-100px) translateX(50px);
        opacity: 0;
    }
}

/* Stars */
.effect-stars {
    background: #000;
    /* Dark background for stars */
}

.star {
    position: absolute;
    background: white;
    border-radius: 50%;
    animation: twinkle linear infinite;
}

@keyframes twinkle {

    0%,
    100% {
        opacity: 0.3;
        transform: scale(0.8);
    }

    50% {
        opacity: 1;
        transform: scale(1.2);
    }
}

/* Fireworks */
.firework {
    position: absolute;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    animation: explode 1s ease-out forwards;
    box-shadow: 0 0 10px 2px currentColor;
}

@keyframes explode {
    0% {
        transform: scale(1);
        opacity: 1;
    }

    100% {
        transform: scale(30);
        opacity: 0;
    }
}

/* Fog */
.effect-fog {
    background: #000;
}

.fog-layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 200%;
    height: 100%;
    background: url('https://raw.githubusercontent.com/danielstuart14/CSS_FOG_ANIMATION/master/fog1.png') repeat-x;
    background-size: 50% 100%;
    animation: fog-move 60s linear infinite;
    opacity: 0.5;
}

@keyframes fog-move {
    0% {
        transform: translate3d(0, 0, 0);
    }

    100% {
        transform: translate3d(-50%, 0, 0);
    }
}

/* Sparks */
.spark {
    position: absolute;
    bottom: -10px;
    width: 4px;
    height: 4px;
    background: #ffaa00;
    border-radius: 50%;
    box-shadow: 0 0 5px #ffaa00;
    animation: rise-spark linear infinite;
}

@keyframes rise-spark {
    to {
        transform: translateY(-100vh);
        opacity: 0;
    }
}

/* Bubbles */
.bubble {
    position: absolute;
    bottom: -20px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.3);
    animation: rise-bubble linear infinite;
}

@keyframes rise-bubble {
    0% {
        transform: translateY(0) translateX(0);
    }

    50% {
        transform: translateY(-50vh) translateX(20px);
    }

    100% {
        transform: translateY(-120vh) translateX(-20px);
    }
}

/* Shooting Star */
.shooting-star {
    position: absolute;
    width: 150px;
    height: 2px;
    background: linear-gradient(90deg, rgba(255, 255, 255, 1), transparent);
    animation: shoot 3s linear infinite;
    transform: rotate(-45deg);
    opacity: 0;
}

@keyframes shoot {
    0% {
        transform: translateX(0) translateY(0) rotate(-45deg);
        opacity: 1;
    }

    20% {
        transform: translateX(-300px) translateY(300px) rotate(-45deg);
        opacity: 0;
    }

    100% {
        transform: translateX(-300px) translateY(300px) rotate(-45deg);
        opacity: 0;
    }
}

/* Footprints */
.footprint {
    position: absolute;
    font-size: 24px;
    color: rgba(0, 0, 0, 0.2);
    transform: rotate(90deg);
    opacity: 0;
    animation: footprint-fade 4s linear forwards;
}

@keyframes footprint-fade {
    0% {
        opacity: 0;
    }

    20% {
        opacity: 0.5;
    }

    80% {
        opacity: 0.5;
    }

    100% {
        opacity: 0;
    }
}