/* ============================================================
   LAFT SARLU — Animations & Transitions
   ============================================================ */

/* ---- Keyframes ---- */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translateX(40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

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

@keyframes pulse {
  0% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(45, 122, 79, 0.4);
  }
  70% {
    transform: scale(1.05);
    box-shadow: 0 0 0 10px rgba(45, 122, 79, 0);
  }
  100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(45, 122, 79, 0);
  }
}

@keyframes float {
  0% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}

/* ---- Animation Classes ---- */
.anim-fade-in-up {
  animation: fadeInUp 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.anim-fade-in-down {
  animation: fadeInDown 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.anim-fade-in-left {
  animation: fadeInLeft 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.anim-fade-in-right {
  animation: fadeInRight 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.anim-fade-in {
  animation: fadeIn 1s ease-out forwards;
}

.anim-float {
  animation: float 4s ease-in-out infinite;
}

.anim-pulse {
  animation: pulse 2s infinite;
}

/* ---- GPU Optimization ---- */
.hero-bg img,
.sector-img,
.product-img,
.gallery-item img {
  will-change: transform;
  backface-visibility: hidden;
  transform: translateZ(0);
}

/* Page Transition Overlay */
.page-transition-overlay {
  position: fixed;
  inset: 0;
  background: var(--color-green-950);
  z-index: 9999;
  transform: translateY(100%);
  transition: transform 0.6s cubic-bezier(0.85, 0, 0.15, 1);
  pointer-events: none;
}

.page-transition-overlay.active {
  transform: translateY(0);
}
