/* Dev TTFL — components/button.css */
@layer components {
    .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-height: 44px;
        padding: 12px 16px;
        border-radius: 12px;
        border: 1px solid transparent;
        cursor: pointer;
        font-weight: 600;
        transition: filter .18s var(--ease), transform .06s var(--ease);
    }

    .btn:focus-visible {
        outline: 2px solid var(--brand);
        outline-offset: 2px;
    }

    /* Variantes */
    .btn-primary {
        background: var(--text);
        color: #fff;
    }

    .btn-primary:hover {
        filter: brightness(.96);
    }

    .btn-ghost {
        background: transparent;
        color: var(--text);
        border-color: var(--border);
    }

    .btn-danger {
        background: var(--danger);
        color: #fff;
    }

    .btn-success {
        background: var(--success);
        color: #fff;
    }

    /* Tailles */
    .btn-sm {
        padding: 8px 12px;
        min-height: 36px;
        font-size: var(--font-s);
    }

    .btn-lg {
        padding: 14px 18px;
        min-height: 48px;
        font-size: var(--font-l);
    }

    /* État de chargement (pattern login) */
    .btn__label--loading {
        display: none;
    }

    .state-loading .btn {
        opacity: .8;
        pointer-events: none;
    }

    .state-loading .btn__label--idle {
        display: none;
    }

    .state-loading .btn__label--loading {
        display: inline;
    }
}