:root {
    --season-primary: #e50914;
    --season-secondary: #1a1a1a;
    --season-accent: #ffd700;
    --season-bg: #0a0a0a;
    --season-text: #f5f5f5;
}

.particle {
    position: absolute;
    top: -10%;
    font-size: 1.6rem;
    user-select: none;
    will-change: transform, opacity;
    opacity: 0.9;
}

@keyframes floatUpRotate {
    0% { transform: translateY(0) rotate(0deg); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translateY(-110vh) rotate(360deg); opacity: 0; }
}
@keyframes driftSide {
    0% { transform: translate(0,0); opacity: 0; }
    10% { opacity: 1; }
    50% { transform: translate(40px,-50vh); }
    100% { transform: translate(-40px,-110vh); opacity: 0; }
}
@keyframes fallSway {
    0% { transform: translate(0,-10vh) rotate(0deg); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translate(30px, 110vh) rotate(180deg); opacity: 0; }
}
@keyframes floatRandomRotate {
    0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translateY(-110vh) rotate(-360deg) scale(1.2); opacity: 0; }
}
@keyframes floatRotateSlow {
    0% { transform: translateY(0) rotate(0deg); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translateY(-100vh) rotate(180deg); opacity: 0; }
}
@keyframes floatScale {
    0% { transform: translateY(0) scale(0.8); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translateY(-110vh) scale(1.3); opacity: 0; }
}
@keyframes fallDrift {
    0% { transform: translate(0,-10vh); opacity: 0; }
    10% { opacity: 1; }
    100% { transform: translate(-60px, 110vh); opacity: 0; }
}
@keyframes floatSide {
    0% { transform: translate(0,0); opacity: 0; }
    10% { opacity: 1; }
    50% { transform: translate(-30px, -55vh); }
    100% { transform: translate(30px, -110vh); opacity: 0; }
}

.anim-float-rotate { animation-name: floatUpRotate; animation-timing-function: linear; animation-iteration-count: infinite; }
.anim-drift-side { animation-name: driftSide; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }
.anim-fall-sway { animation-name: fallSway; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }
.anim-float-random-rotate { animation-name: floatRandomRotate; animation-timing-function: linear; animation-iteration-count: infinite; }
.anim-float-rotate-slow { animation-name: floatRotateSlow; animation-timing-function: linear; animation-iteration-count: infinite; }
.anim-float-scale { animation-name: floatScale; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }
.anim-fall-drift { animation-name: fallDrift; animation-timing-function: linear; animation-iteration-count: infinite; }
.anim-float-side { animation-name: floatSide; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }