/* ════════════════════════════════════════════════════
   ANIMATIONS — Award-level motion design
   GSAP-driven reveals, text splits, parallax
   ════════════════════════════════════════════════════ */

/* ── Scroll Reveal Base ──────────────────────────── */
.reveal-up,.reveal-left,.reveal-right{
  opacity:0;
  will-change:transform,opacity;
}
.reveal-up{transform:translateY(60px)}
.reveal-left{transform:translateX(-80px)}
.reveal-right{transform:translateX(80px)}

.reveal-up.visible,
.reveal-left.visible,
.reveal-right.visible{
  opacity:1;transform:translate(0);
}

/* ── Text Split Characters ───────────────────────── */
/* (handled purely via GSAP — no CSS initial state needed) */

/* ── Clip-path reveals ───────────────────────────── */
.clip-reveal{
  clip-path:inset(100% 0 0 0);
  will-change:clip-path;
}
.clip-reveal.visible{
  clip-path:inset(0 0 0 0);
}

/* ── Scale-in effect ─────────────────────────────── */
.scale-in{
  opacity:0;
  transform:scale(0.85);
  will-change:transform,opacity;
}
.scale-in.visible{
  opacity:1;
  transform:scale(1);
}

/* ── Line draw ───────────────────────────────────── */
.line-draw{
  width:0;
  transition:width 1.2s cubic-bezier(.22,1,.36,1);
}
.line-draw.visible{
  width:100%;
}

/* ── Gold Thread Parallax Guides ─────────────────── */
.section::before{
  content:'';position:absolute;top:0;left:2%;
  width:1px;height:100%;
  background:linear-gradient(180deg,transparent,var(--gold-dim),transparent);
  pointer-events:none;opacity:.25;
  transform:translateY(var(--thread-offset, 0));
}

/* ── Stagger children ────────────────────────────── */
.stagger-children > *{
  opacity:0;
  transform:translateY(40px);
}

/* ── Parallax data-speed layers ──────────────────── */
[data-speed]{
  will-change:transform;
}

/* ── Noise overlay ───────────────────────────────── */
.noise-overlay{
  position:fixed;inset:0;z-index:9998;
  pointer-events:none;
  opacity:0.035;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
  background-repeat:repeat;
  mix-blend-mode:overlay;
}

/* ── Smooth section transitions ──────────────────── */
.section{
  transition:opacity 0.1s;
}

/* ── Magnetic button hover glow ──────────────────── */
.magnetic{
  position:relative;
  will-change:transform;
}
.magnetic::after{
  content:'';
  position:absolute;inset:-2px;
  border-radius:inherit;
  opacity:0;
  background:radial-gradient(circle, rgba(212,175,55,.25), transparent 70%);
  transition:opacity .4s;
  pointer-events:none;
}
.magnetic:hover::after{
  opacity:1;
}

/* ── Card hover lift ─────────────────────────────── */
.craft-card,
.duality-card,
.persona-card,
.wedding-vision{
  will-change:transform;
}

/* ── Gold shimmer on hero text ───────────────────── */
@keyframes goldShimmer{
  0%{background-position:-200% center}
  100%{background-position:200% center}
}

/* ── Scroll-linked progress bar ──────────────────── */
.scroll-progress{
  position:fixed;top:0;left:0;
  width:0%;height:2px;
  background:var(--gold);
  z-index:10001;
  transform-origin:left;
  will-change:width;
}
