/* SUIVI DU FORMULAIRE - ETATS : RESUME D'ERREURS, CONFIRMATION */

/*
 * Sous-composant en cascade (§4.12) : chaque regle est qualifiee par le bloc
 * racine PLUS l'element, pour peser (0,2,1) et ne rien heriter d'une feuille
 * hote qui ciblerait ses descendants.
 *
 * Couleurs : lues par variables AVEC REPLI, comme `mention-donnees`. Le repli
 * est le cas courant (formulaire sur fond clair) ; un hote sur un autre fond
 * pose la variable sur SON conteneur.
 *
 *   --suivi-formulaire-texte   texte courant          (repli : --black)
 *   --suivi-formulaire-fond    fond des encarts       (repli : lavis de --secondary)
 *   --suivi-formulaire-accent  icone de confirmation  (repli : --primary)
 *   --suivi-formulaire-erreur  resume d'erreurs       (repli : rouge de sens)
 *
 * Le RETOUR EN ERREUR (C17-L12) porte son propre fond opaque et clair : il
 * se lit sur n'importe quel hote (carte blanche d'un contact, carte d'un
 * hero sur photo, tiroir d'un configurateur) sans que l'hote ait rien a
 * declarer.
 */
.suivi-formulaire {
  /* Rouge d'ERREUR : couleur de sens, pas de charte (§4.1). Un « champ
     manquant » reste rouge sur un site vert. Jamais seul : le texte dit
     toujours quoi corriger. */
  --suivi-formulaire-erreur-sens: #9f2f24;
}

.suivi-formulaire div.suivi-formulaire__confirmation {
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  margin: 0 0 1.5rem;
  padding: 1.1rem 1.25rem;
  border: 1px solid color-mix(in srgb, var(--suivi-formulaire-texte, var(--black)) 14%, transparent);
  border-radius: 14px;
  background: var(--suivi-formulaire-fond, color-mix(in srgb, var(--secondary) 14%, var(--white)));
  color: var(--suivi-formulaire-texte, var(--black));
}

.suivi-formulaire div.suivi-formulaire__confirmation:focus-visible {
  outline: 2px solid var(--suivi-formulaire-accent, var(--primary));
  outline-offset: 3px;
}

.suivi-formulaire span.suivi-formulaire__confirmation-icone {
  display: inline-flex;
  flex-shrink: 0;
  width: 1.75rem;
  height: 1.75rem;
  color: var(--suivi-formulaire-accent, var(--primary));
}

.suivi-formulaire span.suivi-formulaire__confirmation-icone svg {
  width: 100%;
  height: 100%;
}

.suivi-formulaire span.suivi-formulaire__confirmation-corps {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.suivi-formulaire span.suivi-formulaire__confirmation-titre {
  color: var(--suivi-formulaire-texte, var(--black));
  font-family: var(--font-display);
  font-size: 1.3rem;
  font-weight: 400;
  line-height: 1.2;
}

.suivi-formulaire span.suivi-formulaire__confirmation-texte {
  color: var(--suivi-formulaire-texte, var(--black));
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.6;
}

.suivi-formulaire p.suivi-formulaire__statut {
  margin: 0 0 1.25rem;
  padding: 0.85rem 1.1rem;
  border-radius: 12px;
  background: var(--suivi-formulaire-fond, color-mix(in srgb, var(--secondary) 14%, var(--white)));
  color: var(--suivi-formulaire-texte, var(--black));
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.5;
}

.suivi-formulaire p.suivi-formulaire__statut[hidden] {
  display: none;
}

/* Resume d'erreurs : un filet et une icone ecrite en texte, pas un aplat
   rouge — il doit se lire sans la couleur. */
.suivi-formulaire p.suivi-formulaire__statut--erreur {
  border-left: 3px solid var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens));
  color: var(--suivi-formulaire-texte, var(--black));
}

/* Retour en erreur de sendmail.php (?error=<codes>) : un filet, une icone et
   un titre ecrits, sur un fond clair opaque. Le rouge n'est jamais seul. */
.suivi-formulaire div.suivi-formulaire__erreur {
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  box-sizing: border-box;
  width: 100%;
  margin: 0 0 1.25rem;
  padding: 1rem 1.15rem;
  border: 1px solid color-mix(in srgb, var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens)) 35%, transparent);
  border-left: 4px solid var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens));
  border-radius: 12px;
  background: color-mix(in srgb, var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens)) 7%, var(--white));
  color: var(--black);
  text-align: left;
}

/* Le focus est pose par le script au retour : anneau a l'interieur du
   cadre, qu'un hote en `overflow: hidden` ne rogne pas. */
.suivi-formulaire div.suivi-formulaire__erreur:focus-visible {
  outline: 2px solid var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens));
  outline-offset: -5px;
}

.suivi-formulaire div.suivi-formulaire__erreur[hidden] {
  display: none;
}

.suivi-formulaire span.suivi-formulaire__erreur-icone {
  display: inline-flex;
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  color: var(--suivi-formulaire-erreur, var(--suivi-formulaire-erreur-sens));
}

.suivi-formulaire span.suivi-formulaire__erreur-icone svg {
  width: 100%;
  height: 100%;
}

.suivi-formulaire span.suivi-formulaire__erreur-corps {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  min-width: 0;
}

.suivi-formulaire span.suivi-formulaire__erreur-titre {
  color: var(--black);
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: normal;
}

.suivi-formulaire span.suivi-formulaire__erreur-texte,
.suivi-formulaire span.suivi-formulaire__erreur-point {
  color: var(--black);
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.5;
  text-transform: none;
  letter-spacing: normal;
}

.suivi-formulaire span.suivi-formulaire__erreur-liste {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.suivi-formulaire span.suivi-formulaire__erreur-point {
  position: relative;
  padding-left: 1rem;
}

.suivi-formulaire span.suivi-formulaire__erreur-point::before {
  content: "";
  position: absolute;
  left: 0.2rem;
  top: 0.62em;
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 50%;
  background: currentColor;
}

.suivi-formulaire span.suivi-formulaire__erreur-aide {
  color: var(--gray-dark);
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  text-transform: none;
  letter-spacing: normal;
}
