/* ──────────────────────────────────────────────
   Micro-animations — campus vibe
   ────────────────────────────────────────────── */

/* Fade + slide up on page load */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Subtle pulse for loading / attention */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

/* Scale-in for modal panels */
@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* Utility classes */
.anim-fade-in {
  animation: fadeInUp 0.4s ease both;
}

.anim-pulse {
  animation: pulse 1.8s ease-in-out infinite;
}

/* Card hover lift */
.card-lift {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card-lift:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}

/* Button press feedback */
.btn:active {
  transform: scale(0.97);
  transition: transform 0.1s ease;
}

/* Modal panel entrance */
.modal:not([hidden]) .modal-panel {
  animation: scaleIn 0.25s ease both;
}

/* Staggered child animation */
.stagger-children > *:nth-child(1) { animation-delay: 0.03s; }
.stagger-children > *:nth-child(2) { animation-delay: 0.08s; }
.stagger-children > *:nth-child(3) { animation-delay: 0.13s; }
.stagger-children > *:nth-child(4) { animation-delay: 0.18s; }
.stagger-children > *:nth-child(5) { animation-delay: 0.23s; }
.stagger-children > *:nth-child(6) { animation-delay: 0.28s; }
