/* ── Button ─────────────────────────────────────────────────
   Figma: Buttons — Component Reference (2987:11747).
   Hover and keyboard focus share one look, as the design's
   "focus" state.
   ─────────────────────────────────────────────────────────── */

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 48px;
    padding: 14px 24px;
    border: 2px solid transparent;
    border-radius: 4px;
    background: none;
    font-family: var(--font-body);
    font-size: 16px;
    font-weight: 700;
    line-height: 20.8px;
    text-align: center;
    white-space: nowrap;
    text-decoration: none;
    cursor: pointer;
    transition: background-color var(--transition), border-color var(--transition), color var(--transition), opacity var(--transition);
}

.button--full {
    width: 100%;
}

.button:disabled,
.button[aria-disabled="true"] {
    cursor: default;
}

/* Primary */
.button--primary {
    background: var(--color-primary);
    color: var(--color-white);
}

.button--primary:hover,
.button--primary:focus-visible {
    background: var(--color-primary-hover);
}

/* Primary inverse — on dark backgrounds */
.button--primary-inverse {
    background: var(--color-white);
    color: var(--color-text);
}

.button--primary-inverse:hover,
.button--primary-inverse:focus-visible {
    background: var(--color-grey);
}

/* Buy — buying actions only */
.button--buy {
    background: var(--color-accent);
    color: var(--color-text);
}

.button--buy:hover,
.button--buy:focus-visible {
    background: var(--color-accent-hover);
}

.button--buy:disabled:not(.is-loading) {
    opacity: 0.4;
    background: var(--color-accent);
}

/* Secondary — outline */
.button--secondary {
    border-color: var(--color-white);
    color: var(--color-white);
}

.button--secondary:hover,
.button--secondary:focus-visible {
    background: rgb(255 255 255 / 0.15);
}

.button--secondary-inverse {
    border-color: var(--color-secondary);
    color: var(--color-secondary);
}

.button--secondary-inverse:hover,
.button--secondary-inverse:focus-visible {
    background: rgb(0 0 0 / 0.08);
}

.button--secondary-brand {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.button--secondary-brand:hover,
.button--secondary-brand:focus-visible {
    background: var(--color-primary);
    color: var(--color-white);
}

/* Compact outline — the header's Trade link */
.button--small {
    min-height: 0;
    padding: 4px 16px;
}

/* Tertiary — text link with an arrow */
.button--tertiary {
    min-height: 0;
    padding: 0;
    border: 0;
    color: var(--color-secondary);
}

.button--tertiary.button--light {
    color: var(--color-white);
}

.button--tertiary.button--brand {
    color: var(--color-primary);
}

.button--tertiary .button__label {
    border-bottom: 1.5px solid transparent;
    transition: border-color var(--transition);
}

.button--tertiary:hover .button__label,
.button--tertiary:focus-visible .button__label {
    border-bottom-color: currentColor;
}

.button--tertiary .button__icon {
    width: 8px;
    height: 8px;
    transition: transform var(--transition);
}

/* Inline — underlined text link */
.button--inline {
    min-height: 0;
    padding: 0;
    border: 0;
    border-bottom: 1px solid var(--color-secondary);
    border-radius: 0;
    color: var(--color-secondary);
}

.button--inline:hover,
.button--inline:focus-visible {
    border-bottom-color: var(--color-primary);
    color: var(--color-primary);
}

/* Pill and tag — rounded filters */
.button--pill,
.button--tag {
    gap: 8px;
    min-height: 0;
    padding: 7px 14px;
    border: 1px solid var(--color-secondary);
    border-radius: 99px;
    color: var(--color-secondary);
    font-family: var(--font-heading);
    font-weight: 500;
    line-height: 20px;
}

.button--pill:hover,
.button--pill:focus-visible,
.button--tag:hover,
.button--tag:focus-visible {
    background: var(--color-grey-light);
}

.button--pill.is-active {
    border-color: var(--color-secondary);
    background: var(--color-secondary);
    color: var(--color-white);
}

.button__remove {
    font-size: 17.92px;
    line-height: 1;
}

/* Scroll arrow — round, for carousels */
.button--scroll {
    width: 40px;
    min-height: 40px;
    height: 40px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--color-secondary);
    color: var(--color-white);
}

.button--scroll .button__icon {
    width: 8px;
    height: 8px;
}

.button--scroll:disabled {
    opacity: 0.3;
}

/* Loading — locks at 75% with a spinner and a present-tense label */
.button.is-loading {
    opacity: 0.75;
    cursor: progress;
}

.button__spinner {
    flex-shrink: 0;
    animation: button-spin 800ms linear infinite;
}

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

@media (prefers-reduced-motion: reduce) {
    .button__spinner {
        animation-duration: 2400ms;
    }
}
