/* LoadingSpinner Component Styles */

.mint-spinner {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.mint-spinner__svg {
  animation: mint-spin 1s linear infinite;
}

/* Sizes */
.mint-spinner--xs .mint-spinner__svg {
  width: 16px;
  height: 16px;
}

.mint-spinner--sm .mint-spinner__svg {
  width: 20px;
  height: 20px;
}

.mint-spinner--md .mint-spinner__svg {
  width: 24px;
  height: 24px;
}

.mint-spinner--lg .mint-spinner__svg {
  width: 32px;
  height: 32px;
}

/* Variants */
.mint-spinner--primary {
  color: var(--color-primary);
}

.mint-spinner--cta {
  color: var(--color-cta);
}

.mint-spinner--muted {
  color: var(--text-muted);
}

/* Screen-reader only label */
.mint-spinner__label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

@keyframes mint-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* Reduced motion: a slow opacity pulse instead of rotation (10c, same as 3e).
   !important outranks the global reduced-motion block, which caps every animation. */
@keyframes mint-spinner-pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.55;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mint-spinner__svg {
    animation: mint-spinner-pulse 1.6s ease-in-out infinite !important;
  }
}
