/* ===================== */
/*   Animations          */
/* ===================== */

/* Boot sequence */
@keyframes bootFlicker {
  0%, 10%, 30%, 50%, 70%, 90%, 100% { opacity: 1; }
  5%, 25%, 45%, 65%, 85% { opacity: 0.97; }
}

/* Desktop icon appear */
@keyframes iconAppear {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Window open */
@keyframes windowOpen {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

/* Window shake (for error/horror) */
@keyframes windowShake {
  0%, 100% { transform: translateX(0); }
  10% { transform: translateX(-4px); }
  20% { transform: translateX(4px); }
  30% { transform: translateX(-3px); }
  40% { transform: translateX(3px); }
  50% { transform: translateX(-2px); }
  60% { transform: translateX(2px); }
  70% { transform: translateX(-1px); }
  80% { transform: translateX(1px); }
  90% { transform: translateX(0); }
}

/* Notification pulse */
@keyframes notifPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

/* Cursor blink for terminal */
@keyframes cursorBlink {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* Typing indicator dots */
@keyframes typingDots {
  0% { content: '.'; }
  33% { content: '..'; }
  66% { content: '...'; }
}

.typing-dots::after {
  content: '';
  animation: typingDots 1.2s steps(1) infinite;
}

/* Loading spinner */
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* Fade in */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Fade out */
@keyframes fadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* Slow fade to dark (accessibility alternative to flash) */
@keyframes slowDark {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Email flood animation */
@keyframes emailFlood {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Brightness pulse for LUCID/UNKNOWN_SIGNAL */
@keyframes brightnessPulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.15); }
}

/* Waveform bar animation */
@keyframes waveBar {
  0%, 100% { height: 20%; }
  50% { height: 80%; }
}

/* LUCID concentric rings pulse */
@keyframes lucidRings {
  0% { background-size: 100% 100%; }
  50% { background-size: 110% 110%; }
  100% { background-size: 100% 100%; }
}

/* Screen freeze effect */
@keyframes freezeGlitch {
  0% { filter: saturate(1) brightness(1); }
  20% { filter: saturate(2) brightness(1.2); }
  40% { filter: saturate(0) brightness(0.8); }
  60% { filter: saturate(1.5) brightness(1.1); }
  80% { filter: saturate(0.5) brightness(0.9); }
  100% { filter: saturate(1) brightness(1); }
}

/* Text typewriter for ending screens */
@keyframes typewriter {
  from { width: 0; }
  to { width: 100%; }
}

/* Gentle glow for achievement popup */
@keyframes achievementGlow {
  0%, 100% { box-shadow: 0 4px 20px rgba(212,160,58,0.2); }
  50% { box-shadow: 0 4px 30px rgba(212,160,58,0.4); }
}

/* Battery drain animation */
@keyframes batteryDrain {
  from { width: 100%; }
  to { width: 5%; }
}

/* Notification stack cascade */
@keyframes notifCascade {
  from { opacity: 0; transform: translateX(100px) scale(0.8); }
  to { opacity: 1; transform: translateX(0) scale(1); }
}
