/* =========================================================
   NIDHARA NATURALS — Animation utilities
   (AOS-style + custom keyframes; GSAP handles the rest)
   ========================================================= */

@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-22px) rotate(calc(var(--r,0deg) + 6deg))}}
@keyframes spinSlow{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes growLine{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* floating leaves in hero */
.leaf-layer svg{animation:floaty var(--d,9s) ease-in-out infinite;animation-delay:var(--delay,0s)}

/* AOS fallback reveal (JS toggles .is-visible if AOS absent) */
[data-aos]{transition:opacity .8s var(--ease),transform .8s var(--ease)}

/* generic in-view helper used by IntersectionObserver */
.in-view{animation:fadeUp .9s var(--ease) both}

/* shimmering gold text accent */
.shimmer-gold{
  background:linear-gradient(100deg,var(--gold-deep),var(--gold-soft) 45%,var(--gold-deep) 60%);
  background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:shimmer 5s linear infinite;
}

/* image reveal mask */
.img-reveal{position:relative;overflow:hidden}
.img-reveal::after{content:"";position:absolute;inset:0;background:var(--cream);transform-origin:right;transition:transform 1s var(--ease)}
.img-reveal.revealed::after{transform:scaleX(0)}

/* split-text line entry (GSAP targets .char) */
.split-line{display:block;overflow:hidden}
.split-line .line{display:block}
.char{display:inline-block;will-change:transform}

/* hover lift utility */
.hoverable{transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.hoverable:hover{transform:translateY(-6px)}

/* subtle rotating seal */
.seal-spin{animation:spinSlow 40s linear infinite}

/* page fade transition */
.page-fade{animation:fadeIn .6s var(--ease) both}
