/* ============================================================
   BlogSphere AI — animations.css
   Lightweight, dependency-free scroll-reveal system (stands in
   for AOS). Elements with [data-reveal] fade/rise into view via
   an IntersectionObserver in app.js. Respects reduced-motion.
   ============================================================ */

[data-reveal] {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 500ms ease, transform 500ms ease;
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1; transform: none; transition: none; }
}

/* Hover lift used by cards, buttons already covered inline; extra flourishes below */
@keyframes fade-in {
  from { opacity: 0; } to { opacity: 1; }
}
.fade-in { animation: fade-in 400ms ease; }

@keyframes spin {
  to { transform: rotate(360deg); }
}
.spin { animation: spin 900ms linear infinite; }

@keyframes pulse-dot {
  0%, 100% { opacity: 1; } 50% { opacity: 0.35; }
}
.pulse-dot { animation: pulse-dot 1.6s ease infinite; }
