/* ==========================================================================
   Elements Ink — Animaciones
   Solo transform y opacity. Desactivadas con prefers-reduced-motion.
   Las animaciones de aparición únicamente se activan con JavaScript (.js),
   así el contenido siempre es visible si JS no se ejecuta.
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
  .js [data-reveal] {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);
    transition-delay: var(--reveal-delay, 0ms);
  }

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

  /* Escalonado sencillo para grupos */
  .js [data-reveal-group] > [data-reveal]:nth-child(2) { --reveal-delay: 80ms; }
  .js [data-reveal-group] > [data-reveal]:nth-child(3) { --reveal-delay: 160ms; }
  .js [data-reveal-group] > [data-reveal]:nth-child(4) { --reveal-delay: 240ms; }
  .js [data-reveal-group] > [data-reveal]:nth-child(5) { --reveal-delay: 320ms; }

  /* Línea de puntada que se dibuja en el hero */
  .hero .label::before {
    animation: stitch-in 900ms var(--ease) 200ms both;
    transform-origin: left;
  }

  @keyframes stitch-in {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
  }

  .faq__panel.is-opening {
    animation: panel-in var(--dur) var(--ease);
  }

  @keyframes panel-in {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: none; }
  }

  .lightbox[open] .lightbox__img {
    animation: lb-in var(--dur) var(--ease);
  }

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

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
