/* ==========================================================================
   MASTERCLASS ANIMATIONS & MICRO-INTERACTIONS
   ========================================================================== */

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

@keyframes fadeInScale {
  from {
    opacity: 0;
    transform: scale(0.94);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes pulseBeacon {
  0% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(171, 115, 83, 0.7);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 0 0 10px rgba(171, 115, 83, 0);
  }
  100% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(171, 115, 83, 0);
  }
}

@keyframes floatBounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-6px);
  }
}

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

/* Scroll Reveal Classes (IntersectionObserver) */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s cubic-bezier(0.2, 0.8, 0.2, 1),
              transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1);
  will-change: opacity, transform;
}

[data-reveal="fade-in"] {
  transform: none;
}

[data-reveal="scale-up"] {
  transform: scale(0.93);
}

[data-reveal].revealed {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* Stagger Delays */
[data-delay="100"] { transition-delay: 0.1s; }
[data-delay="200"] { transition-delay: 0.2s; }
[data-delay="300"] { transition-delay: 0.3s; }
[data-delay="400"] { transition-delay: 0.4s; }
[data-delay="500"] { transition-delay: 0.5s; }

/* Micro-Interactions on Interactive Elements */
.interactive-hover {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.interactive-hover:hover {
  transform: translateY(-4px);
}

/* Smooth Tap on Mobile */
@media (hover: none) {
  .btn:active, .service-card:active, .cert-card:active {
    transform: scale(0.98);
  }
}
