/* Entrance Animations & Scroll Progress */
.fade-in-element {
  opacity: 0;
  transform: translateY(80px);
  transition: opacity 1.8s cubic-bezier(0.22, 1, 0.36, 1), transform 1.8s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.fade-in-element.is-visible {
  opacity: 1;
  transform: translateY(0);
}

#scroll-progress-bar { 
  transition: width .12s linear; 
}

/* Project card scroll entrance */
.project-card-animate {
  opacity: 0;
  transform: translateY(40px) scale(0.97);
  transition: opacity 1.4s cubic-bezier(0.22, 1, 0.36, 1),
              transform 1.4s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--stagger, 0ms);
  will-change: opacity, transform;
}
.project-card-animate.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}
