.button-spinner{justify-content:center;align-items:center;gap:var(--spacing-xs);display:flex}.button-spinner--spinner{width:var(--spacing-5);height:var(--spacing-5);position:relative}.button-spinner__circle{border-radius:var(--radius-full);border:var(--border-width-medium) solid transparent;width:100%;height:100%;animation:spinnerRotate var(--duration-slowest) var(--easing-linear) infinite;opacity:.9;border-top-color:currentColor;border-right-color:currentColor}.button-primary .button-spinner__circle,.page-submit-button .button-spinner__circle{animation:spinnerRotate var(--duration-slowest) var(--easing-linear) infinite}.button-spinner--dots{align-items:center;gap:var(--spacing-1);display:flex}.button-spinner__dot{width:var(--spacing-1-5);height:var(--spacing-1-5);border-radius:var(--radius-full);animation:dotsWave var(--animation-duration-slower) var(--easing-ease-in-out) infinite;background-color:currentColor}.button-spinner__dot:first-child{animation-delay:0s}.button-spinner__dot:nth-child(2){animation-delay:.15s}.button-spinner__dot:nth-child(3){animation-delay:.3s}.button-spinner--pulse{width:var(--spacing-5);height:var(--spacing-5);position:relative}.button-spinner__pulse{border-radius:var(--radius-full);animation:pulseScale var(--animation-duration-slow) var(--easing-ease-in-out) infinite;background-color:currentColor;position:absolute;inset:0}@keyframes pulseScale{0%,to{opacity:var(--opacity-disabled);transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.button-spinner--progress{height:var(--border-width-thick);background-color:var(--c-primary-glow-25);border-radius:0 0 var(--radius-md) var(--radius-md);position:absolute;bottom:0;left:0;right:0;overflow:hidden}.button-spinner__progress-bar{background:linear-gradient(90deg, transparent, var(--c-primary-glow-75), transparent);width:40%;height:100%;animation:progressShimmer var(--animation-duration-slower) var(--easing-ease-in-out) infinite;position:absolute;top:0;left:0}.button-spinner--small .button-spinner__circle{width:var(--spacing-md);height:var(--spacing-md);border-width:1.5px}.button-spinner--small .button-spinner__dot{width:var(--spacing-1);height:var(--spacing-1)}.button-spinner--large .button-spinner__circle{width:var(--spacing-lg);height:var(--spacing-lg);border-width:2.5px}.button-spinner--large .button-spinner__dot{width:var(--spacing-xs);height:var(--spacing-xs)}.button.button-loading,.page-submit-button.button-loading{pointer-events:none;position:relative}.button.button-loading .button-text,.page-submit-button.button-loading .button-text{opacity:0;transform:translateY(var(--transform-translate-sm));transition:opacity var(--duration-fast) var(--easing-ease), transform var(--duration-fast) var(--easing-ease)}.button .button-spinner,.page-submit-button .button-spinner{animation:buttonSpinnerFadeIn var(--duration-normal) var(--easing-ease) forwards;position:absolute}.button .button-text,.page-submit-button .button-text{transition:opacity var(--duration-fast) var(--easing-ease), transform var(--duration-fast) var(--easing-ease)}@media (prefers-reduced-motion:reduce){.button-spinner__circle,.button-spinner__dot,.button-spinner__pulse,.button-spinner__progress-bar,.button-primary .button-spinner__circle,.page-submit-button .button-spinner__circle,.button .button-spinner,.page-submit-button .button-spinner{animation:none}.button.button-loading .button-text,.page-submit-button.button-loading .button-text,.button .button-text,.page-submit-button .button-text{transition:none}}