/* ==========================================================================
   Divine Nexus — Animations
   ========================================================================== */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes drawLine {
  from { stroke-dashoffset: var(--len, 600); }
  to { stroke-dashoffset: 0; }
}

.hero-art .connector {
  stroke-dasharray: var(--len, 600);
  stroke-dashoffset: var(--len, 600);
  animation: drawLine 1.8s var(--ease, ease) forwards;
}
.hero-art .node { opacity: 0; animation: fadeUp .6s ease forwards; }

@keyframes blobMove {
  0%, 100% { transform: translate(0,0) scale(1); }
  33% { transform: translate(20px,-16px) scale(1.05); }
  66% { transform: translate(-16px,14px) scale(.96); }
}
.blob { animation: blobMove 10s ease-in-out infinite; }

.hero-copy > * { animation: fadeUp .8s var(--ease, ease) both; }
.hero-copy h1 { animation-delay: .05s; }
.hero-copy p.lead { animation-delay: .18s; }
.hero-copy .hero-actions { animation-delay: .3s; }

@keyframes pulseRing {
  0% { box-shadow: 0 0 0 0 rgba(249,115,22,.4); }
  100% { box-shadow: 0 0 0 14px rgba(249,115,22,0); }
}
.pulse { animation: pulseRing 2.2s ease-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .hero-art .connector, .hero-art .node, .blob, .hero-copy > *, .pulse { animation: none !important; opacity: 1 !important; stroke-dashoffset: 0 !important; }
}
