/* EffortMart motion kit: opt-in, restrained, fast. Everything is off under prefers-reduced-motion.
   Classes:  em-fade-up (enter 180ms)   [data-em-stagger] (children enter 30ms apart, first 12)
             em-skeleton (flat grey, opacity pulse)   em-shake (invalid field)   em-bump (cart badge)   em-press (press feedback)
   Numbers:  data-em-count="1234" (em-motion.js)      Lottie:  data-em-lottie="empty-box" (em-motion.js) */
@keyframes emFadeUp { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes emPulse { 50% { opacity: .45; } }
@keyframes emShake { 0%, 100% { transform: none; } 20% { transform: translateX(-5px); } 40% { transform: translateX(5px); } 60% { transform: translateX(-3px); } 80% { transform: translateX(3px); } }
@keyframes emBump { 40% { transform: scale(1.35); } 100% { transform: none; } }
@keyframes emRoute { from { width: 0; } to { width: 85%; } }

.em-fade-up { animation: emFadeUp .18s ease-out both; }

[data-em-stagger] > * { animation: emFadeUp .18s ease-out both; }
[data-em-stagger] > :nth-child(1) { animation-delay: 0ms; }
[data-em-stagger] > :nth-child(2) { animation-delay: 30ms; }
[data-em-stagger] > :nth-child(3) { animation-delay: 60ms; }
[data-em-stagger] > :nth-child(4) { animation-delay: 90ms; }
[data-em-stagger] > :nth-child(5) { animation-delay: 120ms; }
[data-em-stagger] > :nth-child(6) { animation-delay: 150ms; }
[data-em-stagger] > :nth-child(7) { animation-delay: 180ms; }
[data-em-stagger] > :nth-child(8) { animation-delay: 210ms; }
[data-em-stagger] > :nth-child(9) { animation-delay: 240ms; }
[data-em-stagger] > :nth-child(10) { animation-delay: 270ms; }
[data-em-stagger] > :nth-child(11) { animation-delay: 300ms; }
[data-em-stagger] > :nth-child(12) { animation-delay: 330ms; }
[data-em-stagger] > :nth-child(n+13) { animation: none; }

.em-skeleton { background: #e5e7eb; border-radius: 6px; min-height: 12px; animation: emPulse 1.2s ease-in-out infinite; }

.em-shake { animation: emShake .32s ease; }
.em-bump { animation: emBump .3s cubic-bezier(.34, 1.56, .64, 1); display: inline-block; }

/* press feedback on buttons: a quick 3% shrink */
.btn:not(:disabled):not(.disabled):active, .em-press:active { transform: scale(.97); }

/* thin route progress for pages without the shared one (em-motion.js); it never blocks a click */
.em-route { position: fixed; left: 0; top: 0; height: 2px; width: 0; z-index: 100002; background: var(--primary, #E97C43); pointer-events: none; }
.em-route.go { animation: emRoute 6s cubic-bezier(.1, .7, .2, 1) forwards; }

/* in-page tab switch (EM.motion.vt wraps document.startViewTransition) */
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .15s; }

@media (prefers-reduced-motion: reduce) {
  .em-fade-up, [data-em-stagger] > *, .em-skeleton, .em-shake, .em-bump, .em-route.go { animation: none !important; }
  .btn:not(:disabled):not(.disabled):active, .em-press:active { transform: none; }
}
