/* =============================================================
   GODFATHER CONSULTANCY — Scroll & Reveal Animations
   Driven by IntersectionObserver (main.js adds .in-view)
   ============================================================= */

/* Base reveal — only applied when JS is active (progressive enhancement) */
.js [data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s var(--ease-out), transform .8s var(--ease-out);
  will-change: opacity, transform;
}
.js [data-reveal].in-view { opacity: 1; transform: none; }

/* Directional variants */
[data-reveal="left"]  { transform: translateX(-32px); }
[data-reveal="right"] { transform: translateX(32px); }
[data-reveal="scale"] { transform: scale(.94); }
[data-reveal="blur"]  { filter: blur(8px); }
[data-reveal="blur"].in-view { filter: blur(0); }
[data-reveal="left"].in-view,
[data-reveal="right"].in-view { transform: none; }

/* Staggered children */
.js [data-stagger] > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}
.js [data-stagger].in-view > * { opacity: 1; transform: none; }
[data-stagger].in-view > *:nth-child(1) { transition-delay: .05s; }
[data-stagger].in-view > *:nth-child(2) { transition-delay: .12s; }
[data-stagger].in-view > *:nth-child(3) { transition-delay: .19s; }
[data-stagger].in-view > *:nth-child(4) { transition-delay: .26s; }
[data-stagger].in-view > *:nth-child(5) { transition-delay: .33s; }
[data-stagger].in-view > *:nth-child(6) { transition-delay: .40s; }
[data-stagger].in-view > *:nth-child(7) { transition-delay: .47s; }
[data-stagger].in-view > *:nth-child(8) { transition-delay: .54s; }
[data-stagger].in-view > *:nth-child(9) { transition-delay: .61s; }
[data-stagger].in-view > *:nth-child(10){ transition-delay: .68s; }
[data-stagger].in-view > *:nth-child(11){ transition-delay: .75s; }
[data-stagger].in-view > *:nth-child(12){ transition-delay: .82s; }

/* Text line reveal (headline) */
.reveal-lines .line { display: block; overflow: hidden; }
.js .reveal-lines .line > span { transform: translateY(105%); }
.reveal-lines .line > span { display: inline-block; transition: transform .9s var(--ease-out); }
.reveal-lines.in-view .line > span { transform: translateY(0); }
.reveal-lines.in-view .line:nth-child(2) > span { transition-delay: .1s; }
.reveal-lines.in-view .line:nth-child(3) > span { transition-delay: .2s; }

/* Hero intro (runs on load) */
.js .hero [data-hero] { opacity: 0; transform: translateY(30px); animation: heroIn 1s var(--ease-out) forwards; }
.hero [data-hero="1"] { animation-delay: .15s; }
.hero [data-hero="2"] { animation-delay: .30s; }
.hero [data-hero="3"] { animation-delay: .45s; }
.hero [data-hero="4"] { animation-delay: .60s; }
.hero [data-hero="5"] { animation-delay: .78s; }
@keyframes heroIn { to { opacity: 1; transform: none; } }

/* Counter shimmer while counting */
.counting { color: var(--gold-bright); }

/* Loading screen */
.loader {
  position: fixed; inset: 0; z-index: 9999; background: var(--ink);
  display: grid; place-items: center; transition: opacity .6s var(--ease), visibility .6s;
}
.loader.hidden { opacity: 0; visibility: hidden; }
.loader__inner { display: flex; flex-direction: column; align-items: center; gap: 1.4rem; }
.loader__logo { width: 96px; animation: pulseLogo 1.8s ease-in-out infinite; filter: drop-shadow(0 8px 24px rgba(198,161,91,.4)); }
.loader__bar { width: 160px; height: 2px; background: var(--line-inv); border-radius: 2px; overflow: hidden; }
.loader__bar::after { content: ""; display: block; height: 100%; width: 40%; background: linear-gradient(90deg,transparent,var(--gold-bright),transparent); animation: loadBar 1.1s ease-in-out infinite; }
.loader__name { font-family: var(--font-brand); color: var(--text-inv); letter-spacing: .06em; font-size: 1.14rem; }
@keyframes pulseLogo { 0%,100% { transform: scale(1); opacity: .9; } 50% { transform: scale(1.06); opacity: 1; } }
@keyframes loadBar { 0% { transform: translateX(-120%); } 100% { transform: translateX(320%); } }

/* Gentle float utility */
.float { animation: floatY 6s ease-in-out infinite; }
@keyframes floatY { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* Button ripple */
.ripple { position: absolute; border-radius: 50%; transform: scale(0); background: rgba(255,255,255,.35); pointer-events: none; animation: ripple .6s var(--ease-out); }
.btn--gold .ripple { background: rgba(30,22,5,.22); }
@keyframes ripple { to { transform: scale(2.6); opacity: 0; } }

/* Magnetic wrapper (JS-driven transform) */
[data-magnetic] { transition: transform .35s var(--ease-out); }

@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-stagger] > *, .reveal-lines .line > span,
  .hero [data-hero] { opacity: 1 !important; transform: none !important; filter: none !important; animation: none !important; }
  .loader { display: none !important; }
}
