@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Bebas Neue', cursive; background: #000; overflow: hidden; } .cinematic-number { position: relative; font-size: 30vw; font-weight: 900; color: transparent; background: linear-gradient(145deg, #8B0000, #B22222, #DC143C); -webkit-background-clip: text; background-clip: text; text-shadow: 0 0 30px rgba(220, 20, 60, 0.8), 0 0 60px rgba(220, 20, 60, 0.6), 0 0 90px rgba(220, 20, 60, 0.4), 4px 4px 0px #000, 8px 8px 15px rgba(0, 0, 0, 0.8); transform-style: preserve-3d; perspective: 1000px; } .cinematic-number::before { content: attr(data-number); position: absolute; top: 0; left: 0; color: rgba(139, 0, 0, 0.3); z-index: -1; transform: translateZ(-30px) scale(1.1); filter: blur(15px); } .cinematic-number::after { content: ''; position: absolute; top: -10%; left: -10%; right: -10%; bottom: -10%; background: radial-gradient(circle at center, rgba(220, 20, 60, 0.1) 0%, transparent 70%); z-index: -2; border-radius: 20%; animation: ambientGlow 3s ease-in-out infinite alternate; } @keyframes ambientGlow { 0% { opacity: 0.3; transform: scale(0.95); } 100% { opacity: 0.7; transform: scale(1.05); } } /* Animation Classes */ .zoom-in { animation: zoomIn 3s ease-out forwards; } @keyframes zoomIn { 0% { transform: scale(0.1) rotateX(90deg); opacity: 0; } 50% { transform: scale(1.1) rotateX(0deg); opacity: 1; } 100% { transform: scale(1) rotateX(0deg); opacity: 1; } } .bounce-in { animation: bounceIn 1.5s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards; } @keyframes bounceIn { 0% { transform: scale(0) translateY(100vh); opacity: 0; } 60% { transform: scale(1.2) translateY(-20px); opacity: 1; } 80% { transform: scale(0.95) translateY(10px); } 100% { transform: scale(1) translateY(0); opacity: 1; } } .smoke-reveal { animation: smokeReveal 4s ease-out forwards; } @keyframes smokeReveal { 0% { transform: scale(0.5) translateY(50px); opacity: 0; filter: blur(20px); } 30% { transform: scale(1.1) translateY(-10px); opacity: 0.5; filter: blur(10px); } 60% { transform: scale(0.95) translateY(5px); opacity: 0.8; filter: blur(5px); } 100% { transform: scale(1) translateY(0); opacity: 1; filter: blur(0); } } .glitch-flicker { animation: glitchFlicker 2.5s ease-out forwards; } @keyframes glitchFlicker { 0% { transform: scale(0.8); opacity: 0; filter: hue-rotate(0deg); } 20% { transform: scale(1.1); opacity: 1; filter: hue-rotate(90deg); } 40% { transform: scale(0.9) translateX(-10px); filter: hue-rotate(180deg); } 60% { transform: scale(1.05) translateX(10px); filter: hue-rotate(270deg); } 80% { transform: scale(0.95); filter: hue-rotate(360deg); } 100% { transform: scale(1); opacity: 1; filter: hue-rotate(0deg); } } .energy-pulse { animation: energyPulse 3s ease-out forwards; } @keyframes energyPulse { 0% { transform: scale(0.5); opacity: 0; } 30% { transform: scale(1.3); opacity: 1; text-shadow: 0 0 50px rgba(220, 20, 60, 1), 0 0 100px rgba(220, 20, 60, 0.8), 0 0 150px rgba(220, 20, 60, 0.6); } 50% { transform: scale(1.1); text-shadow: 0 0 30px rgba(220, 20, 60, 0.8), 0 0 60px rgba(220, 20, 60, 0.6), 0 0 90px rgba(220, 20, 60, 0.4); } 100% { transform: scale(1); opacity: 1; } } /* Particle Effects */ .particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } .particle { position: absolute; width: 4px; height: 4px; background: #DC143C; border-radius: 50%; animation: floatParticle 2s ease-out forwards; } @keyframes floatParticle { 0% { transform: translate(0, 0) scale(0); opacity: 1; } 100% { transform: translate(var(--tx), var(--ty)) scale(1); opacity: 0; } }