/* ============================================================================
 * Setu Design System (SDS) v1.0 — Animation Library
 * ----------------------------------------------------------------------------
 * Reusable, token-driven motion utilities. Every animation honors
 * prefers-reduced-motion (movement/scale collapse to opacity or none).
 * ==========================================================================*/

@keyframes sds-spin { to { transform: rotate(360deg); } }
@keyframes sds-shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@keyframes sds-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes sds-fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes sds-slide-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes sds-slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes sds-slide-in-end { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } }
@keyframes sds-scale-in { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
@keyframes sds-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }

/* Applied utilities */
.sds-anim-fade      { animation: sds-fade-in var(--sds-motion-base) var(--sds-ease-standard) both; }
.sds-anim-slide-up  { animation: sds-slide-up var(--sds-motion-base) var(--sds-ease-decelerate) both; }
.sds-anim-slide-down{ animation: sds-slide-down var(--sds-motion-base) var(--sds-ease-decelerate) both; }
.sds-anim-slide-in  { animation: sds-slide-in-end var(--sds-motion-base) var(--sds-ease-decelerate) both; }
.sds-anim-scale     { animation: sds-scale-in var(--sds-motion-slow) var(--sds-ease-decelerate) both; }
.sds-anim-pulse     { animation: sds-pulse 1.6s var(--sds-ease-standard) infinite; }

/* Collapse / expand — driven by a max-height transition set inline or by JS */
.sds-collapse { overflow: hidden; transition: height var(--sds-motion-base) var(--sds-ease-standard); }

/* Hover lift helper */
.sds-hover-lift { transition: transform var(--sds-motion-fast) var(--sds-ease-standard), box-shadow var(--sds-motion-fast) var(--sds-ease-standard); }
.sds-hover-lift:hover { transform: translateY(-2px); box-shadow: var(--sds-shadow-md); }

/* ---- Reduced motion: disable movement/scale, keep instant cross-fades --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .sds-anim-fade, .sds-anim-slide-up, .sds-anim-slide-down, .sds-anim-slide-in, .sds-anim-scale {
    animation: sds-fade-in 0.001ms both;
  }
  .sds-skeleton { animation: none; background: var(--sds-color-surface-sunken); }
  .sds-spinner, .sds-btn.is-loading::after { animation: sds-spin 0.8s linear infinite; } /* essential loading kept, calmed */
}
