/* ══════════════════════════════════════════════════════════════════════════
   SOCLE — le peu que les vingt-deux pages publiques doivent partager.
   ══════════════════════════════════════════════════════════════════════════
   Chaque page du site porte ses styles dans un <style> qui lui est propre.
   C'est tenable pour ce qui fait sa singularité, ça ne l'est pas pour ce qui
   relève d'une règle : la règle finit par n'être vraie que sur les pages où
   quelqu'un a pensé à la recopier. Mesuré au navigateur, sur mobile : huit
   liens autonomes du site tombaient sous les 24 px de haut exigés par WCAG
   2.5.8 (AA) — la mention de méthodologie de l'accueil (19 px), le fil
   d'Ariane de /ressources (16 px), les quatre URL de source de
   /methodologie (16 px), la marque et le lien de retour de /login (18 et
   22 px). Tous pour la même raison : un lien n'a d'autre hauteur que son
   interligne tant que personne ne lui en donne.

   Ce fichier ne contient QUE cela — ce qui doit être vrai partout et qu'on ne
   veut jamais avoir à recopier. */

/* ── La cible tactile minimale ──────────────────────────────────────────────
   24 px, c'est WCAG 2.5.8 niveau AA, et c'est le seuil que le dépôt contrôle
   déjà sur la barre de navigation du cockpit.

   La norme EXEMPTE le lien en ligne dans un bloc de texte, et elle a raison :
   on ne peut pas grandir un mot souligné au milieu d'une phrase sans casser
   l'interligne du paragraphe. La règle ne vise donc que les liens AUTONOMES —
   ceux qui ne sont pas dans un paragraphe, une liste, une cellule ou une
   légende. `:not()` fait ici exactement le travail que la norme décrit.

   `min-height` et non `height` : un lien qui se replie sur deux lignes doit
   grandir, pas se faire couper. Et le centrage vertical maintient le texte à
   sa place — la cible grandit autour de lui, elle ne le déplace pas. */
a:not(p a, li a, td a, th a, figcaption a, blockquote a, small a, dd a, dt a) {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}

/* Le cas de la LISTE, qui n'est ni l'un ni l'autre. Un <li> qui ne contient
   QUE son lien — un fil d'Ariane, une liste de sources, un menu — est un lien
   autonome, pas un lien au fil du texte : l'exclusion ci-dessus le ratait, et
   les quatre URL de source de /methodologie restaient à 16 px.
   `:only-child` dit exactement cela, et ne peut pas se tromper : si le lien
   est SEUL dans son <li>, il n'y a pas de phrase autour de lui à casser. Un
   futur « <li>voir <a>la note</a> pour le détail</li> » ne sera donc jamais
   attrapé par cette règle.
   Et `padding-block` plutôt qu'une hauteur imposée : la cible grandit autour
   du texte, et un libellé qui se replie sur deux lignes reste replié.

   Le même raisonnement vaut pour le PARAGRAPHE : les quatre URL de source de
   /methodologie vivent chacune dans un `<p class="src-url">` dont elles sont
   l'unique contenu. Un paragraphe qui ne contient qu'un lien n'est pas de la
   prose autour d'un lien — c'est un lien, dans un paragraphe. La distinction
   que fait la norme porte sur le TEXTE AUTOUR, pas sur la balise ; ici il n'y
   en a pas. */
li > a:only-child,
dd > a:only-child,
dt > a:only-child,
p > a:only-child {
  display: inline-block;
  padding-block: 4px;
}

/* Un bouton, lui, n'a aucune exemption : il n'existe jamais « au fil du
   texte ». */
button, [role="button"], input[type="submit"], input[type="button"] {
  min-height: 24px;
}
