/* ==========================================================================
   01 - Typographie et marqueurs graphiques réutilisables
   Lot 1. Effet de levier maximal : ce fichier change l'aspect de tout le
   site sans qu'aucune page n'ait été ouverte dans Elementor.
   ========================================================================== */

/* --- Bascule Futura -> Source Sans 3 ------------------------------------ */

body,
button,
input,
select,
textarea,
.wpbf-menu a,
.elementor-widget-text-editor,
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--lm-font);
}

/* Neutralisation des déclarations Futura restantes, posées en inline ou en
   classe par d'anciens réglages. On ne supprime pas les fichiers de police du
   serveur : ils servent de retour arrière si le client change d'avis. */
[style*="FUTURA"],
[style*="Futura"],
[class*="futura"] {
  font-family: var(--lm-font) !important;
}

body {
  color: var(--lm-foreground);
  background: var(--lm-background);
}

/* --- Corps de texte --------------------------------------------------------
   Jusqu'au 24/09/2026 : « le corps de texte ne grossit pas », arbitrage de
   Valérie pour ne pas allonger les pages. Philippe demande ce jour-là de
   l'augmenter.

   La taille est réglée DANS CHAQUE WIDGET : 14px sur 421 widgets de texte
   (115 pages), rien sur 213 autres, qui héritent des 16px du thème — ce sont
   surtout les articles. La règle d'élément d'Elementor pèse (0,3,0) ; celle-ci
   (0,4,1), sans !important.

   La classe lm-body-text est posée côté serveur, et seulement sur ces widgets
   (inc/corps-texte.php) : les intertitres à 15px, les notices audiovisuelles
   à 13px et les anciens titres de 23 à 40px gardent leur taille. L'interligne
   est réglé en em dans les widgets : il suit la nouvelle taille. */
body .elementor .elementor-element.elementor-widget-text-editor.lm-body-text {
  font-size: var(--lm-body-size);
}

/* --- Intertitres -----------------------------------------------------------
   Demande du 24/09/2026 : « augmenter la taille de la typo et prendre la même
   graisse que le titre principal ». Ce sont les 11 widgets de texte à 15px des
   pages Œuvres (« Principaux ouvrages », « Correspondances »…), écrits
   `<p><strong>…</strong></p>`, en #6666CC ou #7058D0 selon le widget. Même
   marquage côté serveur que le texte courant (inc/corps-texte.php).

   Graisse et couleur par les tokens du titre de page : les deux restent
   identiques. Le <strong> du contenu est ramené à la graisse du widget,
   sans quoi il resterait en gras. Interligne resserré : l'1.7em réglé dans
   le widget est celui d'un paragraphe, pas d'un titre. */
/* Les sous-titres écrits en gras dans le texte des fiches (« Bibliographie : »,
   « Témoignages », « Archives »…) prennent le même style : choix de Philippe
   du 24/09/2026, « les fiches suivent Œuvres ». Paragraphes repérés au rendu,
   classe lm-subtitle (inc/corps-texte.php). Leurs couleurs et tailles écrites
   en dur (#666699 le plus souvent) cèdent au style commun. */
body .elementor .elementor-element.elementor-widget-text-editor.lm-intertitle,
body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle {
  font-size: var(--lm-intertitle-size);
  font-weight: var(--lm-title-weight);
  line-height: 1.3;
  color: var(--lm-title-color);
}

body .elementor .elementor-element.elementor-widget-text-editor.lm-intertitle :is(strong, b),
body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle :is(strong, b) {
  font-weight: inherit;
}

/* Un sous-titre ouvre une partie : de l'air au-dessus, moins en dessous. */
body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle {
  margin-top: 1.5em;
  margin-bottom: .5em;
}

body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle:first-child {
  margin-top: 0;
}

body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle [style*="color"] {
  color: inherit !important;
}

body .elementor .elementor-element.elementor-widget-text-editor p.lm-subtitle [style*="font-size"] {
  font-size: inherit !important;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--lm-font);
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--lm-foreground);
}

/* --- Marqueur 4 : carré violet de fin de résumé -------------------------- */

.lm-square-end::after,
.lm-square-inline {
  content: "";
  display: inline-block;
  width: var(--lm-square);
  height: var(--lm-square);
  margin-left: .4em;
  background: var(--lm-primary);
  vertical-align: middle;
}

/* --- Marqueur 2 : filet vertical à gauche d'un bloc de texte ------------- */

.lm-rule-left {
  border-left: var(--lm-rule) solid var(--lm-border);
  padding-left: 1.25rem;
}

/* --- Filet violet court sous un titre de page ---------------------------- */
/* La maquette utilise w-16 h-px, soit 64px sur 1px (SubPageLayout.tsx). */

.lm-title-rule::after {
  content: "";
  display: block;
  width: 64px;
  height: var(--lm-rule);
  margin-top: .75rem;
  background: var(--lm-primary);
}

/* --- Filet horizontal de séparation, marqueur 1 -------------------------- */

.lm-rule-h {
  height: var(--lm-rule);
  background: var(--lm-border);
  border: 0;
  margin: 0;
}

/* --- Liens ---------------------------------------------------------------- */

a { color: inherit; }

a:hover,
a:focus-visible {
  color: var(--lm-primary);
}

/* Liens du texte courant : violets et soulignés, demande du 24/09/2026.

   Ils étaient gris (#54595F, `.elementor-kit-6 a`) et sans soulignement
   (`.elementor a`), impossibles à distinguer du texte. Relevé ce jour-là :
   1156 liens dans les widgets de texte, dont 21 autour d'une image — le
   soulignement ne s'y dessine pas — et 44 qui portent une couleur écrite en
   dur par l'ancien site, #6666CC ou #666699, sur le lien ou sur un <span>
   intérieur.

   Portée : les widgets de texte du contenu seulement. Menu, fil d'Ariane,
   vignettes, pied de page et accueil gardent leur style. (0,4,3) bat les
   règles du kit et d'Elementor sans !important. */
body:not(.home) main .elementor .elementor-element.elementor-widget-text-editor a {
  color: var(--lm-primary);
  text-decoration: underline;
  text-decoration-color: currentColor;
  text-decoration-thickness: var(--lm-rule);
  text-underline-offset: .18em;
}

body:not(.home) main .elementor .elementor-element.elementor-widget-text-editor a:hover,
body:not(.home) main .elementor .elementor-element.elementor-widget-text-editor a:focus-visible {
  color: var(--lm-primary-deep);
}

/* Les 44 couleurs en dur : un style en ligne ne se bat qu'avec !important.
   Limité à ces liens, repérés par leur attribut. */
body:not(.home) main .elementor-widget-text-editor a[style*="color"] {
  color: var(--lm-primary) !important;
}

body:not(.home) main .elementor-widget-text-editor a[style*="color"]:hover,
body:not(.home) main .elementor-widget-text-editor a[style*="color"]:focus-visible {
  color: var(--lm-primary-deep) !important;
}

body:not(.home) main .elementor-widget-text-editor a [style*="color"] {
  color: inherit !important;
}

/* Visibilité du focus clavier : point d'accessibilité, le thème parent ne le
   garantit pas sur tous les éléments. */
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--lm-primary);
  outline-offset: 2px;
}

/* Utilitaire de texte réservé aux lecteurs d'écran. */
.lm-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* --- Surcharge du kit Elementor ------------------------------------------
   CONSTAT du 07/09/2026, sur le fichier réellement servi
   (wp-content/uploads/elementor/css/post-6.css) : le kit impose

     .elementor-kit-6            { font-family: "FUTURA", Sans-serif; }
     .elementor-kit-6 h1 ... h6  { font-family: "FUTURA", Sans-serif; }
     --e-global-typography-*-font-family : "FUTURA"

   Sa spécificité (0,1,0) bat celle de `body` (0,0,1) : sans ce bloc, la
   bascule vers Source Sans 3 ne se voit pas.

   On passe par `body[class*="elementor-kit-"]` (0,1,1), qui gagne SANS
   !important et SANS coder en dur le numéro du kit : si le kit change d'ID,
   la règle tient toujours.

   Les variables globales sont redéfinies en plus des familles, parce que la
   plupart des widgets écrivent
   `font-family: var(--e-global-typography-text-font-family), Sans-serif`.

   CE BLOC EST UN FILET DE SÉCURITÉ, PAS LA SOLUTION DÉFINITIVE. La bascule
   propre se fait dans Elementor > Réglages du site > Typographie, puis
   `wp elementor flush-css`. Une fois faite, ce bloc devient redondant et peut
   être retiré. */

body[class*="elementor-kit-"] {
  --e-global-typography-primary-font-family: 'Source Sans 3';
  --e-global-typography-secondary-font-family: 'Source Sans 3';
  --e-global-typography-text-font-family: 'Source Sans 3';
  --e-global-typography-accent-font-family: 'Source Sans 3';
  --e-global-typography-eaecb44-font-family: 'Source Sans 3';
  font-family: var(--lm-font);
}

body[class*="elementor-kit-"] h1,
body[class*="elementor-kit-"] h2,
body[class*="elementor-kit-"] h3,
body[class*="elementor-kit-"] h4,
body[class*="elementor-kit-"] h5,
body[class*="elementor-kit-"] h6,
body[class*="elementor-kit-"] .elementor-heading-title,
body[class*="elementor-kit-"] .elementor-widget-text-editor,
body[class*="elementor-kit-"] .wpbf-menu a,
body[class*="elementor-kit-"] button,
body[class*="elementor-kit-"] input,
body[class*="elementor-kit-"] select,
body[class*="elementor-kit-"] textarea {
  font-family: var(--lm-font);
}

/* Le thème parent a lui aussi ses réglages de typographie dans le
   Customizer. Même traitement, sans !important. */
body.wpbf,
body.wpbf .wpbf-menu a {
  font-family: var(--lm-font);
}

/* --- Réglages de police posés widget par widget ---------------------------
   CONSTAT du 07/09/2026 : les titres de mosaïque (INTERCESSEURS, MAÎTRES...)
   restent en "FUTURA LM" même après la surcharge du kit. La police est réglée
   DANS CHAQUE WIDGET, ce qui produit un CSS du type

     .elementor-element.elementor-element-a1b2c3 .elementor-heading-title
       { font-family: "FUTURA LM", sans-serif; }

   Cette règle a la même spécificité que la nôtre et se charge après : aucune
   surcharge sans !important ne peut la battre.

   Les seules alternatives seraient de rouvrir une centaine de pages dans
   Elementor, ce que la règle 7 du projet interdit, ou de réécrire le JSON de
   chaque page en base, ce qui est bien plus risqué que ces trois lignes.

   !important EST DONC ASSUMÉ ICI, et strictement limité à font-family : ni la
   taille, ni la graisse, ni la couleur, ni l'italique ne sont touchés, pour ne
   pas écraser la mise en page voulue par le client.

   À retirer le jour où les réglages de police seront nettoyés dans les pages. */

body[class*="elementor-kit-"] .elementor-widget-heading .elementor-heading-title,
body[class*="elementor-kit-"] .elementor-widget-text-editor,
body[class*="elementor-kit-"] .elementor-widget-text-editor p,
body[class*="elementor-kit-"] .eihe-title,
body[class*="elementor-kit-"] .ihe-title {
  font-family: var(--lm-font) !important;
}
