/* animations.css - PRODIGI® Motion System                                   */
/* Keyframes, scroll-reveal, stagger, orbs, phrase-reveal, hero entrance     */

/* == Keyframes ============================================================== */
@keyframes slide-up {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes scale-in {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes slide-in-left {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes slide-in-right {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Orb drift animations */
@keyframes orb-float-1 {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(40px, -30px) scale(1.05); }
  66%  { transform: translate(-20px, 20px) scale(0.97); }
  100% { transform: translate(0, 0) scale(1); }
}

@keyframes orb-float-2 {
  0%   { transform: translate(0, 0) scale(1); }
  40%  { transform: translate(-35px, 25px) scale(1.04); }
  70%  { transform: translate(25px, -15px) scale(0.96); }
  100% { transform: translate(0, 0) scale(1); }
}

/* Gradient shift (animated accent text) */
@keyframes gradient-shift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Pulse glow */
@keyframes pulse-glow {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.85; }
}

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

/* == Scroll-reveal (driven by IntersectionObserver in reveal.js) ============ */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity  var(--prodigi-dur-slow) var(--prodigi-ease-out-expo),
    transform var(--prodigi-dur-slow) var(--prodigi-ease-out-expo);
}

[data-reveal="fade"]        { transform: none; }
[data-reveal="slide-left"]  { transform: translateX(-40px); }
[data-reveal="slide-right"] { transform: translateX(40px); }
[data-reveal="scale"]       { transform: scale(0.9); }

[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* == Stagger children ======================================================= */
[data-reveal-stagger] > * {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity  var(--prodigi-dur-base) var(--prodigi-ease-out-expo),
    transform var(--prodigi-dur-base) var(--prodigi-ease-out-expo);
}

[data-reveal-stagger].is-visible > * {
  opacity: 1;
  transform: none;
}

[data-reveal-stagger].is-visible > *:nth-child(1) { transition-delay:   0ms; }
[data-reveal-stagger].is-visible > *:nth-child(2) { transition-delay:  80ms; }
[data-reveal-stagger].is-visible > *:nth-child(3) { transition-delay: 160ms; }
[data-reveal-stagger].is-visible > *:nth-child(4) { transition-delay: 240ms; }
[data-reveal-stagger].is-visible > *:nth-child(5) { transition-delay: 320ms; }
[data-reveal-stagger].is-visible > *:nth-child(6) { transition-delay: 400ms; }
[data-reveal-stagger].is-visible > *:nth-child(7) { transition-delay: 480ms; }
[data-reveal-stagger].is-visible > *:nth-child(8) { transition-delay: 560ms; }

/* == Phrase reveal (animated lines — professionista page) =================== */
.phrase-reveal {
  display: flex;
  flex-direction: column;
  gap: var(--prodigi-space-4);
  text-align: center;
}

.phrase-reveal__line {
  font-size: var(--prodigi-text-3xl);
  font-weight: var(--prodigi-heading-weight);
  line-height: 1.2;
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity  var(--prodigi-dur-med) var(--prodigi-ease-out-expo),
    transform var(--prodigi-dur-med) var(--prodigi-ease-out-expo);
}

.phrase-reveal__line--accent {
  background: var(--prodigi-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.phrase-reveal__line--muted {
  color: var(--prodigi-text-muted);
  font-size: var(--prodigi-text-xl);
  font-weight: 400;
}

.phrase-reveal.is-visible .phrase-reveal__line:nth-child(1) { opacity: 1; transform: none; transition-delay:   0ms; }
.phrase-reveal.is-visible .phrase-reveal__line:nth-child(2) { opacity: 1; transform: none; transition-delay: 200ms; }
.phrase-reveal.is-visible .phrase-reveal__line:nth-child(3) { opacity: 1; transform: none; transition-delay: 400ms; }
.phrase-reveal.is-visible .phrase-reveal__line:nth-child(4) { opacity: 1; transform: none; transition-delay: 600ms; }
.phrase-reveal.is-visible .phrase-reveal__line:nth-child(5) { opacity: 1; transform: none; transition-delay: 800ms; }

/* == Hero entrance (JS adds hero-enter class after page load) ================ */
.hero-enter > * {
  animation: slide-up var(--prodigi-dur-slow) var(--prodigi-ease-out-expo) both;
}

.hero-enter > *:nth-child(1) { animation-delay:   0ms; }
.hero-enter > *:nth-child(2) { animation-delay: 150ms; }
.hero-enter > *:nth-child(3) { animation-delay: 300ms; }
.hero-enter > *:nth-child(4) { animation-delay: 450ms; }
.hero-enter > *:nth-child(5) { animation-delay: 600ms; }

/* == Respect prefers-reduced-motion ========================================= */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal-stagger] > *,
  .phrase-reveal__line,
  .hero-enter > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }

  .hero__orb--magenta,
  .hero__orb--cyan {
    animation: none;
  }
}
