/* AUTO-GENERATED by @cloudingenium/design-tokens emit-motion.mjs — DO NOT EDIT.
   Cross-stack motion layer. Regenerate via `npm -w @cloudingenium/design-tokens run build`. */

:root {
  --duration-instant: 100ms;
  --duration-fast: 150ms;
  --duration-base: 250ms;
  --duration-slow: 400ms;
  --duration-slower: 600ms;
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
  --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-linear: linear;
}

/* reveal */
@keyframes ci-kf-reveal { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.ci-reveal { animation: ci-kf-reveal var(--duration-slow) var(--ease-decelerate) 1 both; }

/* stagger */
@keyframes ci-kf-stagger { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.ci-stagger > * { animation: ci-kf-stagger var(--duration-base) var(--ease-decelerate) 1 both; }
.ci-stagger > *:nth-child(2) { animation-delay: calc(60ms * 1); }
.ci-stagger > *:nth-child(3) { animation-delay: calc(60ms * 2); }
.ci-stagger > *:nth-child(4) { animation-delay: calc(60ms * 3); }
.ci-stagger > *:nth-child(5) { animation-delay: calc(60ms * 4); }
.ci-stagger > *:nth-child(6) { animation-delay: calc(60ms * 5); }
.ci-stagger > *:nth-child(7) { animation-delay: calc(60ms * 6); }
.ci-stagger > *:nth-child(8) { animation-delay: calc(60ms * 7); }
.ci-stagger > *:nth-child(9) { animation-delay: calc(60ms * 8); }
.ci-stagger > *:nth-child(10) { animation-delay: calc(60ms * 9); }
.ci-stagger > *:nth-child(11) { animation-delay: calc(60ms * 10); }
.ci-stagger > *:nth-child(12) { animation-delay: calc(60ms * 11); }

/* ripple */
@keyframes ci-kf-ripple { to { transform: scale(2.4); opacity: 0; } }
.ci-ripple { position: relative; overflow: hidden; }
.ci-ripple { animation: ci-kf-ripple var(--duration-slow) var(--ease-decelerate) 1 both; }

/* glow */
@keyframes ci-kf-glow { 0%, 100% { box-shadow: 0 0 0 0 var(--ci-glow-color, currentColor); } 50% { box-shadow: 0 0 0 6px transparent; } }
.ci-glow { animation: ci-kf-glow var(--duration-slower) var(--ease-standard) infinite; }

/* shimmer */
@keyframes ci-kf-shimmer { from { background-position: -200% 0; } to { background-position: 200% 0; } }
.ci-shimmer { background-image: linear-gradient(90deg, transparent 0%, color-mix(in srgb, currentColor 14%, transparent) 50%, transparent 100%); background-size: 200% 100%; background-repeat: no-repeat; }
.ci-shimmer { animation: ci-kf-shimmer var(--duration-slower) var(--ease-linear) infinite; }

/* skeleton */
@keyframes ci-kf-skeleton { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
.ci-skeleton { background-color: color-mix(in srgb, currentColor 12%, transparent); }
.ci-skeleton { animation: ci-kf-skeleton var(--duration-slower) var(--ease-standard) infinite; }

/* pageEnter */
@keyframes ci-kf-pageEnter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.ci-page-enter { animation: ci-kf-pageEnter var(--duration-base) var(--ease-decelerate) 1 both; }

/* modalEnter */
@keyframes ci-kf-modalEnter { from { opacity: 0; transform: scale(0.97); } to { opacity: 1; transform: none; } }
.ci-modal-enter { animation: ci-kf-modalEnter var(--duration-fast) var(--ease-decelerate) 1 both; }

/* themeFade */
.ci-theme-fade, .ci-theme-fade * { transition: background-color var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard), fill var(--duration-base) var(--ease-standard), stroke var(--duration-base) var(--ease-standard); }

@media (prefers-reduced-motion: reduce) {
  .ci-reveal,
  .ci-stagger > *,
  .ci-ripple,
  .ci-glow,
  .ci-shimmer,
  .ci-skeleton,
  .ci-page-enter,
  .ci-modal-enter {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  .ci-theme-fade, .ci-theme-fade * { transition: none !important; }
}
