.button {
	font-weight: 600;
	letter-spacing: -0.01em;
	transition: transform var(--duration-fast) var(--ease-out),
		box-shadow var(--duration-normal) var(--ease-out),
		filter var(--duration-normal) var(--ease-out),
		opacity var(--duration-normal) var(--ease-out),
        background var(--duration-normal) var(--ease-out);

	&.variant-primary, &.variant-danger {
        background-image: linear-gradient(180deg, hsla(0,0%,100%,0.12) 0%, transparent 100%);
        box-shadow: inset 0 1px 1px hsla(0,0%,100%,0.2), 0 1px 2px rgba(0,0,0,0.1);
		border-top: 1px solid hsla(0,0%,100%,0.1);

        &:hover:not(:disabled) {
            filter: brightness(1.08);
            box-shadow: inset 0 1px 1px hsla(0,0%,100%,0.2), 0 4px 14px var(--accent-shadow-hover);
        }

        &:active:not(:disabled) {
            transform: scale(0.96);
            filter: brightness(0.95);
            box-shadow: inset 0 2px 4px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.1);
        }
    }

	&:not(.variant-primary):not(.variant-danger) {
		&:hover:not(:disabled) {
			filter: brightness(0.95);
		}

		&:active:not(:disabled) {
			transform: scale(0.96);
			filter: brightness(0.92);
		}
	}

	&:focus-visible {
		outline: none;
		box-shadow: var(--focus-ring);
	}
}

.loading {
	position: relative;
	pointer-events: none;
	opacity: 0.85;
}

.spinner {
	animation: spin 0.8s linear infinite;
}

@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}
