/* ===================================================================
   LUXE INTERIORS — Animations
   Subtle, premium, GPU-friendly. CSS + JS-triggered reveals.
   =================================================================== */

/* ---------- Keyframes ---------- */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes heroZoom {
  from { transform: scale(1.12); }
  to   { transform: scale(1); }
}
@keyframes floatPulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(37,211,102,.5); }
  50%     { box-shadow: 0 0 0 14px rgba(37,211,102,0); }
}

/* WhatsApp gentle pulse */
.float-wa { animation: floatPulse 2.6s infinite; }

/* ---------- Scroll reveal (toggled by main.js) ---------- */
[data-animate] {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity .9s var(--ease), transform .9s var(--ease);
  will-change: opacity, transform;
}
[data-animate].in-view { opacity: 1; transform: none; }

/* Variants */
[data-animate="fade"]       { transform: none; }
[data-animate="up"]         { transform: translateY(50px); }
[data-animate="left"]       { transform: translateX(-50px); }
[data-animate="right"]      { transform: translateX(50px); }
[data-animate="zoom"]       { transform: scale(.92); }
[data-animate="zoom"].in-view { transform: scale(1); }

/* Staggered children delays */
[data-delay="1"] { transition-delay: .1s; }
[data-delay="2"] { transition-delay: .2s; }
[data-delay="3"] { transition-delay: .3s; }
[data-delay="4"] { transition-delay: .4s; }
[data-delay="5"] { transition-delay: .5s; }
[data-delay="6"] { transition-delay: .6s; }

/* ---------- Hero text intro ---------- */
.hero-slide.active .hero-text .eyebrow,
.hero-slide.active .hero-text h1,
.hero-slide.active .hero-text p,
.hero-slide.active .hero-text .hero-actions {
  animation: heroUp 1s var(--ease) both;
}
.hero-text h1 { animation-delay: .15s; }
.hero-text p { animation-delay: .3s; }
.hero-text .hero-actions { animation-delay: .45s; }
@keyframes heroUp {
  from { opacity: 0; transform: translateY(34px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  [data-animate] { opacity: 1; transform: none; }
}
