/* ============================================================
   ANIMATIONS — pulse, blink, fade
   ============================================================ */

.pulse  { animation: pulse 2.5s ease-in-out infinite; }
.blink  { animation: blink 1.4s steps(2) infinite; }

@keyframes pulse {
  0%, 100% { opacity: 0.35; }
  50%      { opacity: 1; }
}

@keyframes blink {
  50% { opacity: 0.2; }
}

/* Fade-in (for use with IntersectionObserver) */
.fade-in {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 600ms var(--ease), transform 600ms var(--ease);
}
.fade-in.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .pulse, .blink { animation: none; }
  .fade-in { transition: none; opacity: 1; transform: none; }
}
