html.snow-active::before,
html.snow-active::after,
body.snow-active::before,
body.snow-active::after {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9999;
    background-image:
        radial-gradient(3px 3px at 20px 30px, rgba(255,255,255,0.9), transparent),
        radial-gradient(3px 3px at 70px 50px, rgba(255,255,255,0.85), transparent),
        radial-gradient(4px 4px at 130px 80px, rgba(255,255,255,0.88), transparent),
        radial-gradient(4px 4px at 190px 40px, rgba(255,255,255,0.85), transparent),
        radial-gradient(5px 5px at 240px 120px, rgba(255,255,255,0.88), transparent);
    background-size: 220px 220px, 280px 280px, 340px 340px, 400px 400px, 460px 460px;
    animation: snowFall 11s linear infinite;
    background-blend-mode: screen;
}

body.snow-active::after {
    animation-duration: 15s;
    opacity: 0.75;
    filter: blur(0.35px);
}

@keyframes snowFall {
    0% { transform: translateY(-22%); }
    100% { transform: translateY(22%); }
}

