/* Shared "reveal" animation system for Elvente.
   Motion language mirrors the add-to-cart notification:
   gentle rise + slight scale, eased with cubic-bezier(0.22, 1, 0.36, 1)
   and a soft spring for the transform. */

:root {
  --elv-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --elv-ease-spring: cubic-bezier(0.34, 1.18, 0.64, 1);
}

/* Reveal-on-scroll / on-render primitive (applied via reveal.js) */
[data-elv-reveal] {
  opacity: 0;
  transform: translateY(20px) scale(0.985);
  transition:
    opacity 0.5s var(--elv-ease),
    transform 0.62s var(--elv-ease-spring);
  transition-delay: var(--elv-reveal-delay, 0s);
  will-change: opacity, transform;
}

[data-elv-reveal].is-inview {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* Once the intro has played, drop the transform baggage so hovers/layout stay crisp */
[data-elv-reveal].is-settled {
  will-change: auto;
}

/* Soft page-enter for static headers/heroes on subpages */
.elv-page-enter {
  opacity: 0;
  transform: translateY(14px);
  animation: elv-page-enter 0.6s var(--elv-ease) both;
}

@keyframes elv-page-enter {
  to {
    opacity: 1;
    transform: none;
  }
}

/* Smooth section cross-fade used when cabinet swaps panels */
.elv-swap-in {
  animation: elv-swap-in 0.42s var(--elv-ease) both;
}

@keyframes elv-swap-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

/* Modal open/close motion in the notification spirit */
.elv-modal-anim {
  animation: elv-modal-overlay 0.28s var(--elv-ease) both;
}

.elv-modal-anim > .modal-box,
.elv-modal-anim > .modal-overlay + .modal-box,
.elv-modal-anim .cabinet-modal__box,
.elv-modal-anim .modal-box {
  animation: elv-modal-pop 0.42s var(--elv-ease-spring) both;
}

@keyframes elv-modal-overlay {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes elv-modal-pop {
  from {
    opacity: 0;
    transform: translateY(16px) scale(0.97);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-elv-reveal],
  .elv-page-enter,
  .elv-swap-in,
  .elv-modal-anim,
  .elv-modal-anim .cabinet-modal__box,
  .elv-modal-anim .modal-box {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
}
