/* Animation styles */

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity var(--transition-slow),
              transform var(--transition-slow);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-left  { transform: translateX(-40px); opacity: 0; }
.reveal-right { transform: translateX(40px);  opacity: 0; }
.reveal-left.visible,
.reveal-right.visible {
  transform: translateX(0);
  opacity: 1;
}

/* Stagger animations for grids */
.stagger-grid > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--transition-slow),
              transform var(--transition-slow);
}

.stagger-grid > *.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Fade in animation */
.fade-in {
  opacity: 0;
  animation: fadeIn var(--transition-base) ease-in-out forwards;
}

@keyframes fadeIn {
  to {
    opacity: 1;
  }
}

/* Scale in animation */
.scale-in {
  transform: scale(0.9);
  opacity: 0;
  transition: all var(--transition-base);
}

.scale-in.visible {
  transform: scale(1);
  opacity: 1;
}

/* Slide up animation */
.slide-up {
  transform: translateY(40px);
  opacity: 0;
  transition: all var(--transition-slow);
}

.slide-up.visible {
  transform: translateY(0);
  opacity: 1;
}