/* Dev TTFL — components/form.css */
@layer components {
    .form {
        display: flex;
        flex-direction: column;
        gap: var(--space-4);
    }

    .form-field {
        display: flex;
        flex-direction: column;
        gap: 6px;
    }

    .form-label {
        font-weight: 600;
        font-size: var(--font-m);
    }

    .form-control {
        appearance: none;
        width: 100%;
        padding: 12px 14px;
        border-radius: 10px;
        border: 1px solid var(--border);
        background: #fff;
        color: var(--text);
        font-size: var(--font-m);
    }

    .form-control::placeholder {
        color: #94a3b8;
    }

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

    /* État d'erreur */
    .form-field.is-invalid .form-label {
        color: var(--danger);
    }

    .form-field.is-invalid .form-control {
        border-color: var(--danger);
        box-shadow: 0 0 0 1px var(--danger) inset;
    }

    /* Champ mot de passe avec bouton */
    .field--password {
        position: relative;
    }

    .field--password .form-control {
        padding-right: 84px;
    }

    .pw-toggle {
        position: absolute;
        top: 50%;
        right: 10px;
        transform: translateY(-50%);
        border: 0;
        background: transparent;
        padding: 6px;
        min-width: 44px;
        min-height: 44px;
        border-radius: 8px;
        font: inherit;
        color: var(--muted);
        cursor: pointer;
    }

    .pw-toggle:hover {
        color: var(--text);
    }

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

    /* Zone de statut (multi-lignes) */
    .status {
        margin-top: var(--space-2);
        min-height: 0;
    }

    .status__msg {
        display: none;
        font-size: var(--font-m);
        margin: 0;
        line-height: 1.35;
        white-space: normal;
    }

    .status--required,
    .status--invalid,
    .status--network {
        color: var(--danger);
    }

    .status--rate {
        color: var(--muted);
    }

    .status--success {
        color: var(--success);
    }

    .state-required .status--required,
    .state-invalid .status--invalid,
    .state-network .status--network,
    .state-rate-limited .status--rate,
    .state-success .status--success {
        display: block;
    }

    .state-idle .status {
        display: block;
        visibility: hidden;
        height: 1.35em;
        margin-top: var(--space-2);
    }
}