/* ============================================
   Modern Animations & Micro-interactions
   Lightweight, GPU-friendly, no extra JS libs
   ============================================ */

/* Smooth base transitions on interactive elements */
a, button, .btn, .theme-btn, .card, .service-card, .box,
.book-item, .testimonial-item, img {
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1),
              background-color 0.3s ease,
              color 0.3s ease,
              border-color 0.3s ease;
}

/* Buttons: subtle lift + glow on hover */
.btn:hover, .theme-btn:hover, button[type="submit"]:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}
.btn:active, .theme-btn:active {
  transform: translateY(0);
}

/* Cards / boxes: soft lift on hover */
.card:hover, .service-card:hover, .box:hover,
.book-item:hover, [class*="-item"]:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 32px rgba(0, 0, 0, 0.12);
}

/* Images inside cards: gentle zoom on hover */
.card:hover img, .service-card:hover img, .box:hover img,
.book-item:hover img, [class*="-thumb"]:hover img {
  transform: scale(1.06);
}

/* Links: animated underline sweep */
.animated-link {
  position: relative;
  display: inline-block;
}
.animated-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0;
  height: 2px;
  background: currentColor;
  transition: width 0.3s ease;
}
.animated-link:hover::after {
  width: 100%;
}

/* Fade + rise-in utility (pairs with AOS or standalone via .reveal-in) */
.reveal-in {
  opacity: 0;
  transform: translateY(24px);
  animation: revealIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
@keyframes revealIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Gentle floating effect for hero/decorative shapes */
.float-shape {
  animation: floatY 4s ease-in-out infinite;
}
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}

/* Smooth pulse for badges/icons to draw attention subtly */
.pulse-soft {
  animation: pulseSoft 2.4s ease-in-out infinite;
}
@keyframes pulseSoft {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

/* Respect users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
