/* ══════════════════════════════════════════════
   ANIMATIONS
   ══════════════════════════════════════════════ */
@keyframes blink { 
  0%, 100% { opacity: 1; } 
  50% { opacity: 0; } 
}

@keyframes cursor-glow-blink {
  0%, 100% {
    opacity: 1;
    box-shadow:
      0 0 4px rgba(130,180,230,1.0),
      0 0 12px rgba(110,160,220,0.7),
      0 0 24px rgba(90,140,210,0.4),
      0 0 40px rgba(70,120,200,0.2);
  }
  50% {
    opacity: 0.08;
    box-shadow:
      0 0 2px rgba(130,180,230,0.3),
      0 0 6px rgba(110,160,220,0.15);
  }
}

@keyframes line-appear {
  from { opacity: 0; transform: translateY(3px); }
  to   { opacity: 1; transform: none; }
}

@keyframes reader-appear {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: none; }
}

@keyframes boot-flicker {
  0%, 100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
  16% {
    opacity: 0.96;
    transform: translate3d(-0.18px, 0, 0);
  }
  37% {
    opacity: 0.985;
    transform: translate3d(0.24px, 0.08px, 0);
  }
  58% {
    opacity: 0.95;
    transform: translate3d(-0.12px, -0.06px, 0);
  }
  81% {
    opacity: 0.99;
    transform: translate3d(0.14px, 0, 0);
  }
}

@keyframes divider-sweep {
  0%   { left: -100%; }
  100% { left: 200%; }
}
