/* =============================================================================
   Intra-RH — Connexion : styles propres à l'écran (LOT 1B de T-11, D-446).

   Les tokens de marque viennent de `frontend/assets/style.css` (:root) et sont
   surchargés par la palette du tenant (enrolement.js, patron identique). Ici, rien
   qu'une mise en page : AUCUNE couleur en dur, donc aucun risque de contredire la
   marque-blanche d'un client.
   ============================================================================= */

.connexion {
    max-width: 32rem;
    margin: 2rem auto;
    padding: 1.5rem;
    background: var(--couleur-carte);
    border: 1px solid var(--couleur-bordure);
    border-radius: var(--rayon);
}

.connexion h2 {
    margin-top: 0;
    color: var(--couleur-primaire);
}

.connexion .chargement {
    color: var(--couleur-discret);
}

.champ {
    display: block;
    margin-bottom: 1rem;
}

.champ label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 600;
}

.champ input {
    width: 100%;
    padding: 0.6rem 0.7rem;
    border: 1px solid var(--couleur-bordure);
    border-radius: calc(var(--rayon) / 2);
    font-size: 1rem;
    background: var(--couleur-fond-bloc);
    color: var(--couleur-texte);
}

.champ input:focus {
    outline: 2px solid var(--couleur-accent-clair);
    outline-offset: 1px;
}

.bouton-principal {
    width: 100%;
    padding: 0.7rem 1rem;
    border: 0;
    border-radius: calc(var(--rayon) / 2);
    background: var(--couleur-primaire);
    color: #fff;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
}

.bouton-principal:hover:not(:disabled) {
    background: var(--couleur-primaire-claire);
}

.bouton-principal:disabled {
    opacity: 0.6;
    cursor: progress;
}

/* LIEN-BOUTON PRINCIPAL (constat du DSI du 27/09/2026) : les sorties de l'écran
   « Session ouverte » ont une CIBLE (une adresse servie par nginx), donc un `<a>`.
   `.bouton-principal` ci-dessus est dessiné pour un `<button>` : sa largeur à 100 %
   n'a aucun effet sur un lien inline, et le soulignement par défaut réapparaîtrait.
   Règle dédiée (plutôt qu'un `display` ajouté à la classe) : les `<button>` de
   l'écran (Se connecter, Continuer, Fermer la session) ne sont pas touchés. */
a.bouton-principal {
    display: block;
    box-sizing: border-box;
    text-align: center;
    text-decoration: none;
}

.bouton-secondaire {
    display: inline-block;
    padding: 0.55rem 0.9rem;
    border: 1px solid var(--couleur-secondaire);
    border-radius: calc(var(--rayon) / 2);
    background: transparent;
    color: var(--couleur-secondaire);
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.message {
    margin: 1rem 0;
    padding: 0.75rem 0.9rem;
    border-radius: calc(var(--rayon) / 2);
    border-left: 4px solid var(--couleur-info);
    background: var(--couleur-fond-bloc);
}

.message.ko {
    border-left-color: var(--couleur-ko);
    color: var(--couleur-ko);
}

.message.avertissement {
    border-left-color: var(--couleur-avertissement);
}

.message.ok {
    border-left-color: var(--couleur-ok);
    color: var(--couleur-ok);
}

.details {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.25rem 1rem;
    margin: 1rem 0;
}

.details dt {
    color: var(--couleur-discret);
    font-weight: 600;
}

.details dd {
    margin: 0;
}

.pied {
    max-width: 32rem;
    margin: 0 auto 2rem;
    padding: 0 1.5rem;
}

.discret {
    color: var(--couleur-discret);
    font-size: 0.9rem;
}

/* Parcours de premier accès : enrôlement TOTP et codes de récupération. */

.qr {
    margin: 1rem 0;
    text-align: center;
}

.qr svg {
    max-width: 100%;
    height: auto;
    border: 1px solid var(--couleur-bordure);
    border-radius: calc(var(--rayon) / 2);
    background: #fff; /* le QR exige un fond clair pour rester lisible par le scanner */
}

.secret-totp {
    display: inline-block;
    margin-top: 0.25rem;
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--couleur-bordure);
    border-radius: calc(var(--rayon) / 2);
    background: var(--couleur-fond-bloc);
    font-size: 1.05rem;
    letter-spacing: 0.08em;
    user-select: all;
}

.codes-recuperation {
    columns: 2;
    margin: 1rem 0;
    padding-left: 1.5rem;
}

.codes-recuperation li {
    margin-bottom: 0.35rem;
}

.codes-recuperation code {
    font-size: 1rem;
    letter-spacing: 0.05em;
    user-select: all;
}

.champ.case label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    cursor: pointer;
}

.champ.case input[type="checkbox"] {
    width: 1.1rem;
    height: 1.1rem;
    accent-color: var(--couleur-primaire);
}
