/* ============================================================
   SCROLL-TRIGGERED FADE ANIMATIONS
   ============================================================ */
.fade-up,
.fade-left,
.fade-right {
  opacity: 0;
  transition: opacity 0.7s ease, transform 0.7s ease;
  transition-delay: var(--delay, 0s);
}

.fade-up    { transform: translateY(40px); }
.fade-left  { transform: translateX(-40px); }
.fade-right { transform: translateX(40px); }

.fade-up.visible,
.fade-left.visible,
.fade-right.visible {
  opacity: 1;
  transform: translate(0, 0);
}

/* ============================================================
   HERO ENTRY
   ============================================================ */
.hero-content.fade-up {
  animation: heroEntry 1s ease forwards;
  opacity: 0;
}

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

/* ============================================================
   SCROLL DOT BOUNCE
   ============================================================ */
@keyframes scrollBounce {
  0%, 100% { transform: translateY(0); opacity: 1; }
  50%       { transform: translateY(10px); opacity: .4; }
}

/* ============================================================
   CARD HOVER SHIMMER
   ============================================================ */
.service-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(201,169,110,.08) 0%, transparent 60%);
  opacity: 0;
  transition: opacity var(--transition);
  pointer-events: none;
}
.service-card { position: relative; }
.service-card:hover::before { opacity: 1; }

/* ============================================================
   NAVBAR SLIDE DOWN
   ============================================================ */
/* Navbar animation removed to keep the header static on page load. */
.navbar {
  animation: none !important;
}

/* ============================================================
   STAT NUMBER COUNT-UP PULSE
   ============================================================ */
.stat-num.counting {
  animation: pulse 0.3s ease;
}
@keyframes pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.15); }
  100% { transform: scale(1); }
}

/* ============================================================
   GALLERY IMAGE REVEAL
   ============================================================ */
.gallery-item {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
  transition-delay: var(--delay, 0s);
}
.gallery-item.visible {
  opacity: 1;
  transform: translateY(0);
}
