/* Mise en page commune : corps, en-tête, navigation, titres, liens. */

* { box-sizing: border-box; }

body {
  margin: 0;
  font: var(--police);
  background: var(--fond);
  color: var(--texte);
  -webkit-font-smoothing: antialiased;
}

header {
  display: flex;
  gap: 20px;
  align-items: baseline;
  padding: 14px 24px;
  border-bottom: 1px solid var(--bordure);
  background: var(--panneau);
}
header .accueil { color: var(--texte); font-weight: 700; text-decoration: none; }
header .version { margin-left: auto; color: var(--texte-pale); font-size: 12px; }
header .utilisateur { color: var(--texte-doux); }

header nav { display: flex; gap: 16px; }
/* Onglets : celui de la page courante est souligné, à la couleur des liens. */
header nav a, header .accueil { position: relative; padding: 2px 0; }
header nav a { color: var(--texte-doux); text-decoration: none; }
header nav a:hover, header nav a[aria-current="page"] { color: var(--texte); }
header nav a::after, header .accueil::after {
  content: "";
  position: absolute;
  inset: auto 0 -15px;
  height: 2px;
  border-radius: 2px;
  background: var(--lien);
  transform: scaleX(0);
}
header nav a[aria-current="page"]::after, header .accueil[aria-current="page"]::after { transform: scaleX(1); }

main { max-width: 1320px; padding: 24px; }

/* Le titre d'une page : le même partout, grand, en dégradé du texte vers la couleur des liens. */
h1 {
  margin: 4px 0 18px;
  font-size: 40px;
  font-weight: 750;
  letter-spacing: -0.035em;
  line-height: 1.1;
  background: linear-gradient(100deg, var(--texte) 30%, var(--lien) 120%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
/* Un identifiant dans un titre (lot, flux) : plus petit, lisible. */
h1 .mono, h1 .code { font-size: 0.45em; letter-spacing: 0; color: var(--texte-doux); -webkit-text-fill-color: var(--texte-doux); }
/* Le fil d'Ariane, sous le titre d'une page de détail. */
h1 + .fil { margin-top: -10px; }
h2 { margin: 32px 0 10px; font-size: 15px; }
h3 { margin: 0 0 6px; font-size: 14px; }

a { color: var(--lien); }
code, .mono { font-family: var(--mono); font-size: 12px; }
.muet { color: var(--texte-doux); }

/* Pastille d'un onglet : le nombre à traiter, en haut à droite du libellé, comme une
   notification. */
header nav a { display: inline-flex; align-items: center; }
.compteur {
  position: relative;
  top: -0.55em;
  min-width: 18px;
  height: 18px;
  margin-left: 4px;
  padding: 0 5px;
  border-radius: 999px;
  color: var(--compteur-texte);
  background: var(--compteur-fond);
  box-shadow: 0 0 0 2px var(--fond), 0 0 12px color-mix(in srgb, var(--compteur-fond) 40%, transparent);
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

/* Fil d'Ariane : d'où vient la page, chaque niveau cliquable */
.fil { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; margin: 0 0 18px; font-size: 13px; }
.fil a { color: var(--texte-doux); text-decoration: none; }
.fil a:hover { color: var(--lien); }
.fil [aria-current="page"] { color: var(--texte); }
.fil-sep { color: var(--texte-pale); }

/* Se déconnecter : discret, au bout de l'en-tête. */
header .deconnexion { margin: 0; }
header .deconnexion button { padding: 2px 10px; color: var(--texte-doux); font-size: 12.5px; }
header .deconnexion button:hover { color: var(--texte); }
