/* Motion CSS — generated by designlang (motionlang)
 * Source: https://tailwindcss.com
 * 2026-06-12T12:49:38.953Z
 *
 *   <link rel="stylesheet" href="./tailwindcss.com-motion.css">
 *   <div class="mo-slide-up">…</div>
 */

:root {
  --duration-xs: 150ms;
  --duration-md: 300ms;
  --ease-custom-1: cubic-bezier(0.4, 0, 0.2, 1); /* 263× on page */
  --ease-ease-in: cubic-bezier(0.4, 0, 1, 1); /* 1× on page */
}

@keyframes fade-in   { from { opacity: 0; }                              to { opacity: 1; } }
@keyframes slide-up  { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes scale-in  { from { opacity: 0; transform: scale(0.96); }      to { opacity: 1; transform: none; } }
@keyframes pop       { 0% { transform: scale(0.9); } 60% { transform: scale(1.03); } 100% { transform: scale(1); } }

@keyframes ping {
  75%, 100% { opacity: 0; transform: scale(2); }
}

.mo-animate,
[class^="mo-"], [class*=" mo-"] {
  animation-duration: var(--duration-md, 300ms);
  animation-timing-function: var(--ease-custom-1);
  animation-fill-mode: both;
}

.mo-fade-in { animation-name: fade-in; }
.mo-slide-up { animation-name: slide-up; }
.mo-scale-in { animation-name: scale-in; }
.mo-pop { animation-name: pop; animation-timing-function: var(--ease-custom-1); }

@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;
  }
}
