:is(input, textarea, select, button) {
  font-family: var(--font-body);
}

:is(input, textarea, select):disabled {
  cursor: not-allowed;
  opacity: 0.65;
}

/* ── L'apparence commune des champs de saisie ────────────────────────────────────────────────
   Constaté le 2026-08-14 : la page « Mon compte » affichait CINQ styles de champs différents —
   arrondis de 0, 10 et 12 px, deux fonds, quatre couleurs de bordure, et des hauteurs de 0, 24,
   49 et 53 px dans le même formulaire. La page Contact, elle, avait sa propre règle correcte,
   mais limitée à elle seule.

   La règle vit donc ici, où toutes les pages la lisent. Chaque page qui redéfinissait la sienne
   dans son coin produisait un formulaire différent des autres — et l'écart se voit d'autant plus
   que deux champs se suivent.

   Volontairement peu spécifique : une page qui a une bonne raison de s'en écarter peut encore le
   faire, sans avoir à lutter contre une déclaration « !important ». */
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), textarea, select) {
  padding: .7rem .9rem;
  border: 1px solid var(--line, #ded8ce);
  border-radius: 12px;
  background: var(--field-bg, #faf9f7);
  color: inherit;
  font-size: 1rem;
  box-sizing: border-box;
}

/* Une hauteur unique pour les champs d'une ligne. Sans elle, un champ texte et une liste posés
   côte à côte ne s'alignent pas, et l'œil le voit avant de lire quoi que ce soit. */
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select) {
  height: 2.9rem;
}

/* Le focus doit se voir : c'est le seul repère de qui navigue au clavier. */
:is(input, textarea, select):focus-visible {
  outline: 2px solid var(--terra-text, #a35839);
  outline-offset: 1px;
}
