| | @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; |
| | } |
| | } |
| |
|