body { font-family: 'Segoe UI', Arial, sans-serif; }
.card-hover { transition: transform .15s ease, box-shadow .15s ease; }
.card-hover:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(0,0,0,0.12); }
.badge-free { background: #16a34a; color: #fff; }
.badge-paid { background: #5b93e8; color: #0b1f3f; }

/* Subtle "NEW" indicator for the Education Updates nav item -- a gentle
   pulse, not a flashing distraction. Respects reduced-motion preference. */
.badge-new-pulse {
  animation: badge-new-pulse 2.2s ease-in-out infinite;
}
@keyframes badge-new-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.55; transform: scale(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .badge-new-pulse { animation: none; }
}

/* Premium academic hero carousel (homepage) -- subtle floating motion for the
   decorative feature cards on the visual side of each slide, and a gentle
   fade/rise for each slide's text+visual when it becomes active. Both
   respect reduced-motion, same pattern as .badge-new-pulse above. */
.hero-float {
  animation: hero-float 5s ease-in-out infinite;
}
.hero-float-delay {
  animation-delay: 1.1s;
}
@keyframes hero-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.hero-slide-content {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s ease, transform .6s ease;
}
.hero-slide-content.is-active {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .hero-float, .hero-float-delay { animation: none; }
  .hero-slide-content { transition: none; opacity: 1; transform: none; }
}
