@keyframes fadeSlideIn { 0% { opacity: 0; transform: translateY(10px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes fadeSlideInRight { 0% { opacity: 0; transform: translateX(10px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes fadeSlideInCenter { 0% { opacity: 0; transform: translateX(-50%) translateY(-10px); } 100% { opacity: 1; transform: translateX(-50%) translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes glowPulse { 0%, 100% { text-shadow: 0 0 4px currentColor, 0 0 8px currentColor; } 50% { text-shadow: 0 0 6px currentColor, 0 0 14px currentColor, 0 0 20px currentColor; } } @keyframes borderGlow { 0%, 100% { border-color: rgba(100, 200, 255, 0.15); box-shadow: 0 0 8px rgba(0, 240, 255, 0.05); } 50% { border-color: rgba(100, 200, 255, 0.3); box-shadow: 0 0 16px rgba(0, 240, 255, 0.1); } } @keyframes dotBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } @keyframes shimmer { 0% { background-position: -100% 0; } 100% { background-position: 200% 0; } } @keyframes eventSlideIn { 0% { opacity: 0; transform: translateX(-20px); max-height: 0; } 100% { opacity: 1; transform: translateX(0); max-height: 30px; } } @keyframes generationFlash { 0% { color: var(--neon-cyan); text-shadow: 0 0 10px var(--neon-cyan), 0 0 20px var(--neon-cyan), 0 0 40px var(--neon-cyan); } 100% { color: var(--neon-cyan); text-shadow: 0 0 4px var(--neon-cyan), 0 0 8px var(--neon-cyan); } } @keyframes announcementPulse { 0% { background: rgba(0, 240, 255, 0.1); border-color: rgba(0, 240, 255, 0.3); } 50% { background: rgba(0, 240, 255, 0.15); border-color: rgba(0, 240, 255, 0.5); } 100% { background: rgba(0, 240, 255, 0.1); border-color: rgba(0, 240, 255, 0.3); } } @keyframes breathe { 0%, 100% { opacity: 0.85; } 50% { opacity: 0.95; } } @keyframes scanLine { 0% { transform: translateY(-100%); } 100% { transform: translateY(200%); } } @keyframes dataPop { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.3); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } #panel-stats { animation: fadeSlideIn 0.5s ease-out both; animation-delay: 0.1s; } #panel-performance { animation: fadeSlideInRight 0.5s ease-out both; animation-delay: 0.2s; } #panel-generation { animation: fadeSlideInCenter 0.6s ease-out both; animation-delay: 0.05s; } #panel-events { animation: fadeSlideIn 0.5s ease-out both; animation-delay: 0.3s; } #panel-charts { animation: fadeSlideInRight 0.5s ease-out both; animation-delay: 0.4s; } .hud-panel { animation: borderGlow 4s ease-in-out infinite; } .stat-value { animation: glowPulse 3s ease-in-out infinite; } .event-entry { animation: eventSlideIn 0.3s ease-out both; } .live-indicator { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--neon-green); margin-right: 6px; animation: dotBlink 1.5s ease-in-out infinite; } .generation-flash { animation: generationFlash 1s ease-out; } .announcement { position: fixed; top: 60px; left: 50%; transform: translateX(-50%); z-index: var(--z-announcements); padding: 8px 24px; border-radius: 8px; border: 1px solid var(--neon-cyan); background: rgba(6, 6, 15, 0.9); backdrop-filter: blur(12px); font-family: var(--font-mono); font-size: 13px; color: var(--neon-cyan); white-space: nowrap; pointer-events: none; animation: announcementPulse 2s ease-in-out; opacity: 0; transition: opacity 0.3s ease; } .announcement.visible { opacity: 1; } @media (prefers-reduced-motion: reduce) { .hud-panel, .stat-value, .event-entry, .live-indicator, .announcement { animation: none !important; } .announcement { transition: none !important; } }