/* ==========================================================================
   ANIMATIONS — keyframes, reveals, glows, particles, marquee
   ========================================================================== */

@keyframes spin{to{transform:rotate(360deg);}}

@keyframes pulseRing{
  0%{transform:scale(.9);opacity:.9;}
  100%{transform:scale(1.5);opacity:0;}
}

@keyframes whatsappPulse{
  0%{transform:scale(1);opacity:.8;}
  100%{transform:scale(1.6);opacity:0;}
}

@keyframes rippleAnim{
  to{transform:scale(3);opacity:0;}
}

@keyframes scrollLine{
  0%{top:-40%;}
  100%{top:100%;}
}

@keyframes marquee{
  0%{transform:translateX(0);}
  100%{transform:translateX(-50%);}
}

@keyframes floatY{
  0%,100%{transform:translateY(0) translateX(0);}
  50%{transform:translateY(-26px) translateX(10px);}
}
@keyframes floatYSlow{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-40px);}
}
.float-anim{animation:floatY 7s ease-in-out infinite;}
.float-anim-slow{animation:floatYSlow 11s ease-in-out infinite;}
.float-anim-delay{animation-delay:1.4s;}

@keyframes glowPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(212,175,55,.35);}
  50%{box-shadow:0 0 0 14px rgba(212,175,55,0);}
}
.glow-pulse{animation:glowPulse 2.6s ease-out infinite;}

@keyframes shimmerText{
  0%{background-position:-200% center;}
  100%{background-position:200% center;}
}
.shimmer{
  background:linear-gradient(90deg,var(--c-gold) 0%,var(--c-gold-light) 25%,var(--c-gold) 50%,var(--c-gold-light) 75%,var(--c-gold) 100%);
  background-size:200% auto;
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
  animation:shimmerText 5s linear infinite;
}

@keyframes fadeInUp{
  from{opacity:0;transform:translateY(46px);}
  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(-50px);}
  to{opacity:1;transform:translateX(0);}
}
@keyframes fadeInRight{
  from{opacity:0;transform:translateX(50px);}
  to{opacity:1;transform:translateX(0);}
}
@keyframes scaleIn{
  from{opacity:0;transform:scale(.86);}
  to{opacity:1;transform:scale(1);}
}
@keyframes maskReveal{
  from{clip-path:inset(0 100% 0 0);}
  to{clip-path:inset(0 0 0 0);}
}

.anim-fadeInUp{animation:fadeInUp 1s var(--ease-lux) both;}
.anim-fadeInDown{animation:fadeInDown 1s var(--ease-lux) both;}
.anim-fadeInLeft{animation:fadeInLeft 1s var(--ease-lux) both;}
.anim-fadeInRight{animation:fadeInRight 1s var(--ease-lux) both;}
.anim-scaleIn{animation:scaleIn 1s var(--ease-lux) both;}
.anim-mask{animation:maskReveal 1.1s var(--ease-lux) both;}
.d-1{animation-delay:.12s;} .d-2{animation-delay:.24s;} .d-3{animation-delay:.36s;}
.d-4{animation-delay:.48s;} .d-5{animation-delay:.6s;} .d-6{animation-delay:.72s;}

/* AOS custom easing override for a more "luxury" settle */
[data-aos]{transition-timing-function:cubic-bezier(.16,.84,.44,1) !important;}

/* Golden particle dot */
@keyframes particleDrift{
  0%{transform:translateY(0) translateX(0);opacity:0;}
  10%{opacity:1;}
  90%{opacity:1;}
  100%{transform:translateY(-120vh) translateX(20px);opacity:0;}
}

/* Card lift generic */
.lift-hover{transition:transform .5s var(--ease-lux),box-shadow .5s var(--ease-lux),border-color .5s var(--ease-lux);}
.lift-hover:hover{transform:translateY(-12px);box-shadow:var(--shadow-gold);}

/* Image hover zoom generic */
.img-zoom{overflow:hidden;}
.img-zoom img{transition:transform .9s var(--ease-lux);}
.img-zoom:hover img{transform:scale(1.09) rotate(.3deg);}

/* Underline sweep for text links */
.link-sweep{position:relative;}
.link-sweep::after{
  content:'';position:absolute;left:0;bottom:-3px;width:0;height:1px;background:var(--c-gold);
  transition:width .4s var(--ease-lux);
}
.link-sweep:hover::after{width:100%;}

/* Number counter tick micro animation */
.counter-num.counting{animation:tickPulse .3s ease;}
@keyframes tickPulse{0%{opacity:.6;}100%{opacity:1;}}

/* Skeleton shimmer for lazy images while loading */
.lazy-img{background:linear-gradient(100deg,#141414 30%,#1c1c1c 50%,#141414 70%);background-size:200% 100%;animation:shimmerBg 1.6s infinite;}
@keyframes shimmerBg{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}
.lazy-img.loaded{animation:none;background:none;}

/* Border draw-in for glass panels on hover */
@keyframes borderDraw{
  from{opacity:0;}
  to{opacity:1;}
}

/* Reveal-on-scroll fallback (data-reveal, used sparingly alongside AOS) */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .9s var(--ease-lux),transform .9s var(--ease-lux);}
.reveal.in{opacity:1;transform:translateY(0);}

/* Ripple button click container requirement */
.btn-gold,.btn-outline-gold{position:relative;}

/* Preloader bar variant not used but kept minimal */
