Felladrin's picture
Add the simulator files
17fd0c2 verified
@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;
}
}