/* Keyframes */
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

/* Animations Classes */
.animate-fade-in {
  animation: fadeIn var(--transition-slow) forwards;
}

.animate-fade-in-up {
  animation: fadeInUp var(--transition-slow) forwards;
}

.animate-scale-in {
  animation: scaleIn var(--transition-normal) forwards;
}

/* Scroll Reveal Triggers (to be controlled by animations.js) */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.reveal.active {
  opacity: 1;
  transform: translateY(0);
}

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

.reveal-left.active {
  opacity: 1;
  transform: translateX(0);
}

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

.reveal-right.active {
  opacity: 1;
  transform: translateX(0);
}

/* Shimmer Loading placeholders (for lazyloaded content) */
.shimmer-placeholder {
  background: linear-gradient(90deg, var(--bg-dark-300) 25%, var(--bg-dark-400) 37%, var(--bg-dark-300) 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}

/* Custom interactive hover highlights */
.underline-hover {
  position: relative;
}

.underline-hover::after {
  content: '';
  position: absolute;
  width: 100%;
  transform: scaleX(0);
  height: 2px;
  bottom: 0;
  left: 0;
  background: linear-gradient(90deg, var(--primary), var(--secondary));
  transform-origin: bottom right;
  transition: transform var(--transition-normal) ease-out;
}

.underline-hover:hover::after {
  transform: scaleX(1);
  transform-origin: bottom left;
}
