/**
 * .ww-button — the platform's single button component. Two variants
 * (primary, secondary) plus a ghost/text variant, each defining every
 * state required by docs/DESIGN-SYSTEM.md: default, hover, focus, active,
 * disabled, loading.
 */

.ww-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 44px; /* touch target, WCAG 2.2 AA */
    padding: 0.625rem 1.25rem;
    border-radius: var(--ww-radius-md);
    font-size: var(--wp--preset--font-size--body);
    font-weight: 600;
    border: var(--ww-border-width) solid transparent;
    transition: background-color var(--ww-transition-fast), border-color var(--ww-transition-fast), color var(--ww-transition-fast);
    white-space: nowrap;
}

/* --- Primary --- */
.ww-button--primary {
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--accent-ink);
}
.ww-button--primary:hover     { background: var(--wp--preset--color--ink); }
.ww-button--primary:active    { background: var(--wp--preset--color--ink); transform: translateY(1px); }
.ww-button--primary:disabled  { background: var(--wp--preset--color--border); color: var(--wp--preset--color--muted); cursor: not-allowed; }

/* --- Secondary --- */
.ww-button--secondary {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--ink);
    border-color: var(--ww-border-color);
}
.ww-button--secondary:hover    { border-color: var(--wp--preset--color--accent); color: var(--wp--preset--color--accent); }
.ww-button--secondary:active   { background: var(--wp--preset--color--surface-alt); }
.ww-button--secondary:disabled { color: var(--wp--preset--color--muted); border-color: var(--ww-border-color); cursor: not-allowed; }

/* --- Ghost / text --- */
.ww-button--ghost {
    background: transparent;
    color: var(--wp--preset--color--accent);
    padding-inline: 0.5rem;
}
.ww-button--ghost:hover    { color: var(--wp--preset--color--ink); }
.ww-button--ghost:disabled { color: var(--wp--preset--color--muted); cursor: not-allowed; }

/* --- Loading (any variant) ---
   aria-busy="true" is set alongside this class so assistive tech announces
   the state; the spinner is decorative (aria-hidden) since the announcement
   already covers it. */
.ww-button[aria-busy="true"] {
    color: transparent;
    pointer-events: none;
    position: relative;
}
.ww-button[aria-busy="true"]::after {
    content: "";
    position: absolute;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    border: 2px solid currentColor;
    border-top-color: transparent;
    color: var(--wp--preset--color--ink);
    animation: ww-spin 700ms linear infinite;
}

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

@media (prefers-reduced-motion: reduce) {
    .ww-button[aria-busy="true"]::after { animation-duration: 1400ms; }
}
