/* ============================================================================
   ROBUR — hiérarchie du texte
   Dépend de tokens.css. Aucune valeur en dur : que des jetons.

   POURQUOI CE FICHIER EXISTE
   Adam, 12/08/2026, sur l'onglet Semaine : « il faut un code couleur pour le
   texte, c'est très dur de se repérer, on ne distingue pas les jours du premier
   coup d'œil, les jours de repos sont ton sur ton. »

   Il a raison, et la mesure le confirme au chiffre près. Ce qui séparait deux
   jours à l'écran, c'était :
     · le fond d'une carte contre le fond de page — 1,09:1 (clair ET sombre)
     · le trait de la carte contre la page        — 1,39:1 clair / 1,53:1 sombre
     · pour un jour de repos, ce MÊME trait en pointillé, sur fond transparent,
       donc le repos n'avait littéralement AUCUN élément au-dessus de 1,6:1.
   Le seuil de la WCAG 1.4.11 pour un élément qui doit être identifié est 3:1.
   Rien ne l'atteignait. « Ton sur ton » n'était pas une impression : c'était
   une mesure.

   MAIS LA COULEUR N'EST PAS LA RÉPONSE, ELLE N'EN EST QU'UN QUART.
   La WCAG 1.4.1 l'interdit comme porteur unique, et une salle de sport est
   exactement l'endroit où la couleur lâche : plein soleil, écran gras, une
   personne sur douze qui ne distingue pas deux teintes. Quatre porteurs
   travaillent donc ENSEMBLE, et chaque information en utilise au moins deux :
     1. LA POSITION  — le repère est toujours au même endroit, colonne de
                       gauche, largeur fixe. C'est ce qui permet de BALAYER.
     2. LE POIDS ET LA TAILLE — un niveau se lit avant d'être lu.
     3. LA FORME     — plein = fait, contour = à faire, pointillé = repos.
                       C'est la règle n°2 du système, elle survit au daltonisme.
     4. LA COULEUR   — en dernier, et jamais seule.

   LES CINQ NIVEAUX, ET RIEN D'AUTRE
   Cinq, parce qu'au sixième plus personne ne sait lequel employer.

   | # | Classe      | Rôle                        | Couleur          | Taille | Poids |
   |---|-------------|-----------------------------|------------------|--------|-------|
   | 1 | .t-repere   | l'ancre de balayage         | --c-text  15,1:1 | xl     | 700   |
   | 2 | .t-titre    | le sujet de la ligne        | --c-text  15,1:1 | lg     | 600   |
   | 3 | .t-valeur   | le fait mesurable, chiffré  | --c-text  15,1:1 | base   | 600   |
   | 4 | .t-meta     | le contexte, jamais décisif | --c-text-muted 7:1 | sm   | 400   |
   | 5 | .t-mention  | l'unité, la note, le « ≈ »  | --c-text-subtle 4,1:1 | xs | 400  |

   Trois des cinq niveaux sont à la MÊME couleur (l'encre). C'est voulu : la
   hiérarchie se fait d'abord à la taille et au poids, la couleur ne sert qu'à
   séparer ce qui décide (encre) de ce qui accompagne (estompe). Un dégradé de
   cinq gris serait illisible au soleil et ne dirait rien de plus.

   LE NIVEAU 5 EST SOUS 4,5:1 EN THÈME CLAIR (4,12:1) — C'EST ASSUMÉ ET BORNÉ.
   --c-text-subtle ne porte QUE de la redondance : une unité déjà collée à son
   chiffre, un « sur 12 » déjà écrit ailleurs. Si un texte de niveau 5 est la
   seule source d'une information, c'est le niveau qui est faux, pas la teinte.
   En `prefers-contrast: more`, tokens.css le remonte à 7,04:1.

   LA RÈGLE QUI AURAIT ÉVITÉ LE DÉFAUT, ET QUI VAUT POUR TOUTE L'APP
   --c-border (1,39:1) est un filet DÉCORATIF : il aère, il ne délimite pas.
   Dès qu'un contour porte une information — « ceci est un jour », « ceci est
   du repos » — il passe à --c-border-strong (3,63:1) ou à une couleur de
   nature. Un contour informatif sous 3:1 est un bogue, pas un parti pris.
   ============================================================================ */

/* Garde du <button> : ces classes sont posées sur des <span> dans les maquettes
   et peuvent atterrir sur un <button> ou un <summary> dans l'application. Sans
   ça, le fond natif (`ButtonFace`, #6B6B6B en color-scheme: dark) réapparaît —
   c'est la « bande grise » du 11/08/2026. On neutralise ici, une fois. */
.t-repere, .t-titre, .t-valeur, .t-meta, .t-mention {
  appearance: none; -webkit-appearance: none;
  background: transparent; border: 0; padding: 0; margin: 0;
  text-align: inherit;
}

/* ── 1 · REPÈRE — l'ancre de balayage ────────────────────────────────────────
   Le seul niveau en Fraunces hors titres d'écran. Un jour, une date, un numéro
   de semaine : ce sur quoi l'œil se pose pour trouver sa ligne. Il est toujours
   à la même place et à la même largeur, sinon il ne sert à rien : c'est la
   régularité de la colonne qui fait le balayage, pas la graisse.
   Tabulaire, obligatoire : « 11 » et « 18 » doivent occuper la même largeur. */
.t-repere {
  display: block;
  font-family: var(--font-titre);
  font-variation-settings: var(--fv-titre);
  font-optical-sizing: none;
  font-size: var(--text-xl);
  font-weight: var(--poids-gras);
  line-height: var(--leading-serre);
  letter-spacing: var(--tracking-titre);
  color: var(--c-text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
}

/* ── 2 · TITRE — le sujet de la ligne ────────────────────────────────────────
   « Bas du corps — squat », « Développé couché », « Repos ». En Plex et pas en
   Fraunces : à sept titres empilés, la serif fatigue et rivalise avec le
   repère. Un seul niveau peut être le plus fort, et c'est le repère. */
.t-titre {
  display: block;
  font-family: var(--font-texte);
  font-size: var(--text-lg);
  font-weight: var(--poids-demi);
  line-height: var(--leading-titre);
  color: var(--c-text);
  overflow-wrap: anywhere;   /* 360 px de large : rien ne pousse l'écran */
}

/* ── 3 · VALEUR — le fait mesurable ──────────────────────────────────────────
   82,5 kg · 2 400 m · 52 min. À l'encre comme le titre, mais plus petit et
   tabulaire : c'est un fait, pas un sujet. La couleur ne le distingue pas de la
   méta par hasard — elle le distingue parce qu'une valeur DÉCIDE (on la lit
   pour agir) alors qu'une méta accompagne. */
.t-valeur {
  font-family: var(--font-texte);
  font-size: var(--text-base);
  font-weight: var(--poids-demi);
  color: var(--c-text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
  white-space: nowrap;
}

/* ── 4 · MÉTA — le contexte ──────────────────────────────────────────────────
   « 5 exercices · 52 min · 4,1 t ». Jamais décisif : si l'écran devient
   inutilisable quand on efface la méta, c'est qu'un niveau 2 ou 3 est déguisé
   en niveau 4. 7,04:1 — bien au-dessus du seuil, parce qu'on la lit au soleil. */
.t-meta {
  display: block;
  font-family: var(--font-texte);
  font-size: var(--text-sm);
  font-weight: var(--poids-normal);
  line-height: var(--leading-normal);
  color: var(--c-text-muted);
}

/* ── 5 · MENTION — l'unité, la note, le « ≈ » ────────────────────────────────
   Redondance uniquement (cf. l'avertissement en tête de fichier). */
.t-mention {
  font-family: var(--font-texte);
  font-size: var(--text-xs);
  font-weight: var(--poids-normal);
  color: var(--c-text-subtle);
}

/* Deux niveaux côte à côte sur une même ligne : la valeur d'abord, la méta
   ensuite, séparées par un espace franc et non par une ponctuation inventée. */
.t-ligne {
  display: flex; align-items: baseline; flex-wrap: wrap;
  gap: var(--space-1) var(--space-2);
}
