:root {
  --fs-motion-fast: 140ms;
  --fs-motion-med: 240ms;
  --fs-motion-slow: 360ms;
  --fs-ease-standard: cubic-bezier(0.22, 0.61, 0.36, 1);
  --fs-ease-snappy: cubic-bezier(0.17, 0.67, 0.4, 1.35);
}

@keyframes fs-grid-drift {
  0% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(-3%, 2%, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes fs-skeleton {
  0% { transform: translateX(-60%); }
  100% { transform: translateX(120%); }
}

@keyframes fs-ambient-drift {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(2%, -2%, 0); }
}

@keyframes fidgets-breath-sync {
  0%, 100% { transform: translate(-50%, -50%) scale(0.9); }
  50% { transform: translate(-50%, -50%) scale(1.12); }
}

@keyframes fidgets-wobble {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(1.1deg); }
  75% { transform: rotate(-1.1deg); }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --fs-motion-fast: 0ms;
    --fs-motion-med: 0ms;
    --fs-motion-slow: 0ms;
  }
  .fs-animate,
  .fs-card,
  .fs-btn,
  .fs-skeleton::after,
  .fidgets-spinner-stage.has-wobble {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
