/* ===========================================================================
   Awoui — le sélecteur de langue. UNE SEULE FEUILLE, pour toutes les pages.

   POURQUOI UN FICHIER À PART, ET PAS DANS LES DEUX FEUILLES EXISTANTES
   Ces règles ont d'abord été écrites en double, dans css/home.css (les trois
   accueils) et assets/awoui.css (les 68 autres pages) — comme .nav-lang et
   .theme-toggle avant elles, avec la consigne « toute retouche ici doit être
   reportée dans l'autre ». Deux choses ont montré que c'était le mauvais
   découpage :

     · assets/awoui.css est servi à URL STABLE, sans empreinte de version.
       Republié, il reste dans le cache de Cloudflare : le 08/09/2026 l'edge
       servait encore une copie vieille de 5279 s, donc un volet de langue
       SANS AUCUN STYLE sur les 68 pages concernées. Les briefs du dépôt
       demandent une purge manuelle pour ce fichier — deux fois. Un fichier
       neuf porte une URL neuve, que le CDN n'a jamais vue : le problème ne
       se pose pas.
     · la consigne « reportez dans l'autre » est une dette qui se paie au
       premier oubli. Ici il n'y a plus qu'un endroit.

   Chargée par partials/head.html, donc présente sur les trois arborescences
   et sur toutes les pages, accueils compris.
   =========================================================================== */

/* Le déclencheur est un <button> (le clic ouvre le volet, voir js/langue.js).
   Un bouton n'hérite ni de la police ni du curseur : sans ces lignes il
   repasserait en police système, et « 中文 » changerait de dessin sans qu'on
   comprenne pourquoi. Le reste de son allure vient de .nav-lang, qui vit
   toujours dans les deux feuilles de base — il est antérieur à ce fichier. */
.nav-lang{font-family:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
.has-lang{position:relative;display:inline-flex;align-items:center}
.lang-drop{position:absolute;top:100%;right:0;transform:translateY(10px);
  min-width:200px;margin-top:10px;
  background:var(--glass-menu);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  border:1px solid var(--line-2);border-radius:var(--r);padding:8px;
  display:grid;gap:2px;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .22s,transform .22s,visibility .22s;
  box-shadow:var(--sh-2);z-index:60}
.lang-drop::before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px}
/* Trois façons d'ouvrir, une seule apparence. `.is-open` est posée au clic
   par js/langue.js ; les deux autres n'ont besoin de personne. Si le script ne
   se charge pas, le survol et le focus clavier continuent de fonctionner —
   c'est la raison pour laquelle l'ouverture n'est pas confiée au seul JS. */
.has-lang:hover .lang-drop,.has-lang:focus-within .lang-drop,
.has-lang.is-open .lang-drop{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}
/* `is-shut` = l'usager vient de demander la fermeture, pointeur encore sur le
   déclencheur. Sans elle, le :hover juste au-dessus rouvre immédiatement, et
   le clic de fermeture n'a aucun effet visible. Elle tombe dès que le pointeur
   quitte le bloc (js/langue.js). */
.has-lang.is-shut:hover .lang-drop,.has-lang.is-shut:focus-within .lang-drop{
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(10px)}
.lang-drop a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:11px;
  color:var(--text);font-family:var(--fd);font-weight:500;font-size:14.5px;
  white-space:nowrap;transition:background .18s}
.lang-drop a:hover{background:var(--glass-item-hover)}
.lang-drop a i{margin-left:auto;font-family:var(--fm);font-size:11px;
  color:var(--faint);font-style:normal;letter-spacing:.04em}
/* La langue en cours reste un vrai lien — le cliquer pose le cookie de choix,
   ce qui éteint la détection automatique. Elle se lit comme un état (fond
   tenu, encre adoucie) et non comme une sortie. */
.lang-drop a[aria-current]{background:var(--glass-item-hover);color:var(--muted)}
@media (prefers-reduced-motion:reduce){.lang-drop{transition:none}}

/* Le même choix, au doigt. Sur un écran tactile il n'y a PAS de survol : sans
   cette ligne, les deux autres langues deviendraient inatteignables depuis la
   barre — le déclencheur, lui, n'en ouvre qu'une seule. */
.mobile-menu .mm-lang{display:flex;gap:20px;padding:14px 0;border-bottom:1px solid var(--line)}
.mobile-menu .mm-lang a{display:inline-block;padding:0;border-bottom:0;font-size:15px}
.mobile-menu .mm-lang a[aria-current]{color:var(--text)}

/* ---------------------------------------------------------------------------
   LE DÉCLENCHEUR ANNONCE LA LANGUE COURANTE (17/09/2026)
   Il portait « 中文 » sur /fr/ et /es/, « FR » sur /en/ et /zh/ : quatre
   comportements, aucun juste. Un glyphe d'une autre langue ne se lit pas comme
   « choisir la langue » mais comme « ce site est en chinois » — et il ne parle
   qu'à ceux qui n'en ont pas besoin. Le code de la langue courante plus un
   chevron, comme le menu « Écosystème » d'à côté, se lit sans connaître
   l'alphabet d'en face.

   Ces règles vivent ICI et non dans awoui.css / home.css : ces deux feuilles
   sont servies à URL stable, sans empreinte, et restent dans le cache du CDN.
   --------------------------------------------------------------------------- */
.nav-lang{gap:5px;width:auto;min-width:48px;padding-inline:10px}
.nav-lang-code{
  font-size:12px;font-weight:600;letter-spacing:.06em;line-height:1;
  font-variant-numeric:tabular-nums;
}
.nav-lang-chev{
  width:11px;height:11px;flex:0 0 11px;opacity:.6;
  fill:none;stroke:currentColor;stroke-width:2.4;
  stroke-linecap:round;stroke-linejoin:round;
  transition:transform .15s ease,opacity .15s ease;
}
.nav-lang:hover .nav-lang-chev,.nav-lang:focus-visible .nav-lang-chev{opacity:1}
/* Le chevron suit l'état réel du volet, pas le survol : `aria-expanded` est la
   source de vérité, c'est elle que lisent aussi les lecteurs d'écran. */
.nav-lang[aria-expanded="true"] .nav-lang-chev{transform:rotate(180deg);opacity:1}
.has-lang:hover .nav-lang-chev{transform:rotate(180deg)}
@media (prefers-reduced-motion:reduce){.nav-lang-chev{transition:none}}
