/* Mise en page des TEXTES LÉGAUX (CGV, mentions légales) — Story 20.3.
   ⛔ Ce fichier ⛔ ne porte AUCUNE couleur et AUCUNE police : elles viennent des jetons de
   `landing/index.html`, que `build_site.sh` injecte dans le `<head>` de ces pages. C'est le
   « point de dérivation unique » appliqué au site : une palette recopiée ici se ressemblerait
   le jour de la recopie et divergerait au premier ajustement — exactement l'écart que
   `landing_parity_test.dart` existe pour empêcher entre l'app et le site. */

.legal { padding-block: clamp(2.4rem, 6vw, 4rem) clamp(3rem, 8vw, 5rem); }
.legal .wrap > * + * { margin-top: 1.1rem; }

.legal h1 { font-size: var(--step-3); margin-block: .5rem 1.4rem; }
.legal h2 {
  font-size: var(--step-1);
  margin-block: 2.6rem .7rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--line-soft);
}
.legal h3 { font-size: var(--step-0); margin-block: 1.4rem .4rem; }

.legal p, .legal li { max-width: 72ch; color: var(--ink-2); }
.legal strong { color: var(--ink); }
.legal ul { margin: 0; padding-left: 1.2rem; }
.legal li + li { margin-top: .4rem; }
.legal a { color: var(--accent); }

/* Le retour vers l'accueil, en tête de page : ⛔ ces pages ⛔ n'ont PAS la barre de
   navigation du site, et sans ce lien on n'en sort que par le bouton « précédent ». */
.legal .retour {
  font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  font-size: var(--step--1);
  color: var(--muted);
  text-decoration: none;
}

/* 🔴 **LE GABARIT À TROUS NOMMÉS** (décisions F1 et F2 de Camille, 2026-09-12).
   ⛔ Un champ absent ⛔ n'est PAS un blanc : il porte son intitulé légal ET la mention
   « à compléter avant la mise en vente ». C'est la différence entre une page qui DIT ce qui
   lui manque et une page qui ment par omission — et c'est la seule forme qu'une review
   puisse auditer (`grep -c` rend le NOMBRE EXACT de champs manquants). */
.legal .a-completer {
  display: inline-block;
  font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  font-size: .86em;
  color: var(--ink);
  background: var(--surface-2);
  border: 1px dashed var(--line);
  border-radius: 5px;
  padding: .1em .45em;
}

.legal .maj {
  font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  font-size: var(--step--1);
  color: var(--muted);
}

/* ⚠️ **DISTINCT de `.a-completer`, et ⛔ ce n'est PAS une nuance de style.** Un champ
   « à compléter » ⛔ n'existe PAS encore (aucune structure immatriculée) ; un champ
   « à vérifier » existe et n'a simplement pas été RELEVÉ à la source. Les confondre ferait
   rougir la sonde de l'AC #2, dont le contrôle exige que les hébergeurs — qui, eux, sont
   connus — ⛔ ne matchent PAS « à compléter avant la mise en vente ». */
.legal .a-verifier {
  display: inline-block;
  font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  font-size: .86em;
  color: var(--muted);
  border-bottom: 1px dotted var(--line);
}

/* La citation du texte de la case de renonciation (CGV, art. 4) — c'est le texte RÉELLEMENT
   envoyé à Stripe dans `custom_text.terms_of_service_acceptance`.
   ⚠️ Cette affirmation était FAUSSE au dev (code review 2026-09-12) : la citation reprenait la
   formulation du cadrage, Stripe en envoyait une autre, et RIEN ne les reliait. Elle est
   désormais GARDÉE par `test_les_CGV_CITENT_MOT_POUR_MOT_la_clause_envoyee_a_STRIPE`. */
.legal blockquote {
  margin: 0;
  padding: .9rem 1.1rem;
  background: var(--surface);
  border-left: 3px solid var(--accent);
  border-radius: 0 8px 8px 0;
}
