/* ============================================================
   Portalic — Motion tokens & keyframes
   Source: apps/menu-qr/src/index.css + WipeButton.module.css
   One easing family: cubic-bezier(0.16, 1, 0.3, 1) for entries;
   the dashboard wipe uses cubic-bezier(0.55, 0, 0.25, 1) @ 0.55s.
   ============================================================ */
:root {
  --ease-enter: cubic-bezier(0.16, 1, 0.3, 1);  /* @kind other */ /* every entry animation */
  --ease-wipe: cubic-bezier(0.55, 0, 0.25, 1);  /* @kind other */ /* dashboard button wipe */
  --duration-fast: 150ms;  /* @kind other */ /* hover color transitions */
  --duration-fade: 250ms;  /* @kind other */
  --duration-slide: 300ms; /* @kind other */
  --duration-pop: 400ms;   /* @kind other */
  --duration-wipe: 550ms;  /* @kind other */
}

@keyframes slide-up {
  from { transform: translateY(40px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
.animate-slide-up { animation: slide-up 300ms var(--ease-enter) forwards; }

@keyframes pop-in {
  0%   { transform: scale(0.85); opacity: 0; }
  70%  { transform: scale(1.04); opacity: 1; }
  100% { transform: scale(1);    opacity: 1; }
}
.animate-pop-in { animation: pop-in 400ms var(--ease-enter) forwards; }

@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.animate-fade-in { animation: fade-in 250ms ease-out forwards; }

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

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