.sports-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9999; overflow: hidden; contain: strict; } .sports-symbol { position: absolute; top: -10vh; animation: sports-fall linear infinite; font-size: 3rem; /* Fallback emoji size */ opacity: 0.9; } .sports-symbol img { width: 6vh; height: auto; max-width: 60px; object-fit: contain; } .sports-confetti { position: absolute; top: -5vh; width: 10px; height: 15px; opacity: 0.8; animation: sports-confetti-fall linear infinite; border-radius: 2px; } .sports-turf { position: absolute; bottom: 0; left: 0; width: 100vw; height: 12vh; background: linear-gradient(180deg, transparent 0%, rgba(34, 139, 34, 0.4) 30%, rgba(0, 100, 0, 0.8) 100%); pointer-events: none; z-index: 10; } @keyframes sports-fall { 0% { transform: translateY(-10vh) rotate(var(--start-rot, 0deg)); opacity: 0; } 10% { opacity: 1; } 85% { opacity: 1; } 100% { transform: translateY(110vh) rotate(var(--end-rot, 360deg)); opacity: 0; } } @keyframes sports-confetti-fall { 0% { transform: translateY(-5vh) rotateX(0deg) rotateY(0deg); opacity: 0; } 5% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateY(105vh) rotateX(720deg) rotateY(360deg); opacity: 0; } }