/* ============================================================
   ZEE RENDERS — Animations & scroll reveals
   ============================================================ */

/* Scroll-reveal base (activated by IntersectionObserver -> .is-visible) */
.reveal-up { opacity: 0; transform: translateY(46px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.reveal-up.is-visible { opacity: 1; transform: translateY(0); }

.reveal-fade { opacity: 0; transition: opacity 1.2s var(--ease); }
.reveal-fade.is-visible { opacity: 1; }

/* image clip reveal */
.reveal-img { position: relative; overflow: hidden; }
.reveal-img img { transform: scale(1.15); transition: transform 1.4s var(--ease); }
.reveal-img::after { content: ''; position: absolute; inset: 0; background: var(--bg); transform: translateX(0); transition: transform 1.1s var(--ease); z-index: 2; }
.reveal-img.is-visible img { transform: scale(1); }
.reveal-img.is-visible::after { transform: translateX(101%); }

/* staggered children */
.stagger > * { opacity: 0; transform: translateY(30px); transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
.stagger.is-visible > * { opacity: 1; transform: translateY(0); }
.stagger.is-visible > *:nth-child(1) { transition-delay: 0.05s; }
.stagger.is-visible > *:nth-child(2) { transition-delay: 0.12s; }
.stagger.is-visible > *:nth-child(3) { transition-delay: 0.19s; }
.stagger.is-visible > *:nth-child(4) { transition-delay: 0.26s; }
.stagger.is-visible > *:nth-child(5) { transition-delay: 0.33s; }
.stagger.is-visible > *:nth-child(6) { transition-delay: 0.40s; }

/* line-by-line text reveal */
.text-reveal .line { overflow: hidden; }
.text-reveal .line > span { display: block; transform: translateY(105%); transition: transform 1s var(--ease); }
.text-reveal.is-visible .line > span { transform: translateY(0); }
.text-reveal.is-visible .line:nth-child(2) > span { transition-delay: 0.1s; }
.text-reveal.is-visible .line:nth-child(3) > span { transition-delay: 0.2s; }

/* Custom cursor */
.cursor-dot, .cursor-ring { position: fixed; top: 0; left: 0; z-index: 9997; pointer-events: none; border-radius: 50%; mix-blend-mode: difference; }
.cursor-dot { width: 6px; height: 6px; background: #fff; transform: translate(-50%, -50%); transition: opacity 0.3s, width 0.3s, height 0.3s; }
.cursor-ring { width: 40px; height: 40px; border: 1px solid rgba(255,255,255,0.6); transform: translate(-50%, -50%); transition: width 0.35s var(--ease), height 0.35s var(--ease), opacity 0.3s, background 0.3s, border-color 0.3s; }
body.cursor-hover .cursor-ring { width: 70px; height: 70px; border-color: var(--accent); }
body.cursor-view .cursor-ring { width: 88px; height: 88px; background: var(--accent); border-color: var(--accent); mix-blend-mode: normal; }
.cursor-ring .cursor-label { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-head); font-size: 0.55rem; letter-spacing: 0.12em; text-transform: uppercase; color: #000; opacity: 0; transition: opacity 0.3s; }
body.cursor-view .cursor-ring .cursor-label { opacity: 1; }
body.cursor-hide .cursor-dot, body.cursor-hide .cursor-ring { opacity: 0; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
  .reveal-up, .reveal-fade, .stagger > *, .text-reveal .line > span { opacity: 1 !important; transform: none !important; }
  .reveal-img::after { display: none; }
  .reveal-img img, .hero-media img, .hero-media video { transform: none !important; animation: none !important; }
  .hero h1 .line > span, .hero-sub, .hero-actions { opacity: 1 !important; transform: none !important; }
  .cursor-dot, .cursor-ring { display: none !important; }
  .marquee-track, .scroll-cue i::after { animation: none !important; }
}
