/* ══════════════════════════════════════════════════════════════════════════
   CHARTE ROSMARYN pour nathalie-rosmaryn.fr  ·  route A, 31/08/2026
   ══════════════════════════════════════════════════════════════════════════

   Ce que fait cette feuille : ce que les RÉGLAGES de The7 ne savent pas dire.
   Tout ce qui pouvait passer par un réglage y est passé (124 réglages modifiés
   le 31/08/2026), parce qu'un réglage se remet dans l'interface d'administration
   alors qu'une règle CSS ne se retrouve que dans un fichier.

   ⛔ NE PAS écrire ici ce qui a un réglage. Chercher d'abord dans
      Apparence > Options du thème.

   Les jetons viennent VERBATIM de body.light-mode dans
   hd.nathalie-rosmaryn.fr/wp-content/themes/rosmaryn-hd/style.css : c'est le
   mode jour de rosmaryn.app, dont les contrastes ont été vérifiés en 07/2026.
   ⛔ Ne pas les « ajuster à l'œil » ici : ils cesseraient d'être les mêmes que
      sur l'application, ce qui est tout l'objet de l'opération.
   ══════════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Les jetons Rosmaryn, mode jour ─────────────────────────────────── */
  --ros-ground:    #f5f3ef;  /* --bg-primary   : le fond de page */
  --ros-secondary: #ece8e1;  /* --bg-secondary : les fonds creusés */
  --ros-card:      #ffffff;  /* --bg-card      : les cartes */
  --ros-ink:       #101e3c;  /* --text-primary : le bleu nuit du texte */
  --ros-ink-2:     #3a3850;  /* --text-secondary */
  --ros-muted:     #605d70;  /* --text-muted   : tient 4,5:1 sur les 4 fonds */
  --ros-gold:      #8b6914;  /* --gold */
  --ros-gold-dark: #6b5010;  /* --gold-dark */
  --ros-gold-rgb:  139, 105, 20;

  /* Le filet doré à faible opacité est la signature graphique de Rosmaryn :
     c'est lui qui sépare, jamais un trait gris. */
  --ros-hair:      rgba(139, 105, 20, 0.18);
  --ros-hair-soft: rgba(139, 105, 20, 0.10);

  --ros-r-sm: 6px;
  --ros-r-md: 10px;
  --ros-r-lg: 14px;

  /* ══════════════════════════════════════════════════════════════════════
     🚨 LA PILE DE REPLI DE THE7 EST SANS-SERIF, DERRIÈRE DES POLICES SERIF
     ══════════════════════════════════════════════════════════════════════
     The7 écrit ses 39 variables de police sous la forme
        "Lora", Helvetica, Arial, Verdana, sans-serif
     La pile est codée en dur dans le thème, elle ne suit pas la police choisie.
     Conséquence mesurée : tant que Google Fonts n'a pas répondu, ou s'il ne
     répond jamais (réseau d'entreprise, extension de blocage), TOUT le site
     s'affiche en Helvetica. Le défaut ne se voit pas depuis une connexion qui
     a déjà les polices en cache : il ne se voit que chez le visiteur.
     ★ On redéfinit les 8 variables utiles avec une pile SERIF. Cette feuille
       est chargée après css-vars.css, donc c'est elle qui gagne. */
  --the7-base-font-family:       "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-h1-font-family:         "Cormorant Garamond", "Apple Garamond", Baskerville, Georgia, "Times New Roman", serif;
  --the7-h2-font-family:         "Cormorant Garamond", "Apple Garamond", Baskerville, Georgia, "Times New Roman", serif;
  --the7-h3-font-family:         "Cormorant Garamond", "Apple Garamond", Baskerville, Georgia, "Times New Roman", serif;
  --the7-h4-font-family:         "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-h5-font-family:         "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-h6-font-family:         "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-page-title-font-family: "Cormorant Garamond", "Apple Garamond", Baskerville, Georgia, "Times New Roman", serif;
  --the7-menu-font-family:       "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-btn-l-font-family:      "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-btn-m-font-family:      "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --the7-btn-s-font-family:      "Lora", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;

  /* ── Les séparateurs passent du gris au filet doré ─────────────────────
     Ce sont des variables de The7 : les redéfinir ici suffit, aucun composant
     n'a besoin d'être réécrit. C'est exactement la règle du socle Rosmaryn
     (« un thème redéfinit des VARIABLES, il ne repeint pas des composants »). */
  --the7-divider-color:          var(--ros-hair);
  --the7-input-border-color:     var(--ros-hair);
  --the7-menu-tem-divider-color: var(--ros-hair);
  --the7-mobile-menu-divider-color: var(--ros-hair);
  --the7-sidebar-outline-color:  var(--ros-hair-soft);
  --the7-mw-search-border-color: var(--ros-hair);
}

/* ══════════════════════════════════════════════════════════════════════════
   Cormorant Garamond a un œil très petit et des pleins très fins.
   Sans ces deux réglages, les titres paraissent délavés à côté de l'Inria
   Serif gras qu'ils remplacent, et on croit à tort que la police « ne va pas ».
   ⚠ On ne touche PAS aux tailles ici : elles ont un réglage dans The7, et les
     revoir demande de voir la composition entière (c'est le travail de l'étape
     suivante). On corrige seulement le RENDU.
   ══════════════════════════════════════════════════════════════════════════ */
h1, h2, h3,
.entry-title,
.page-title,
.dt-published-date {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-wrap: balance;
}

/* ── La sélection et le focus, en or ────────────────────────────────────
   Le focus visible n'est pas un détail : sans lui, la navigation au clavier
   se fait à l'aveugle. The7 s'appuie sur le contour par défaut du navigateur,
   qui devient illisible sur fond ivoire. */
::selection {
  background: rgba(var(--ros-gold-rgb), 0.22);
  color: var(--ros-ink);
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--ros-gold);
  outline-offset: 2px;
  border-radius: var(--ros-r-sm);
}

/* ── Le filet du pied de page ───────────────────────────────────────────
   Il était gris et large ; il devient le filet doré de l'application. */
#bottom-bar,
#footer {
  border-top: 1px solid var(--ros-hair);
}

/* ── Le bouton en pilule ────────────────────────────────────────────────
   Le rayon vient du réglage (999px). Ce qui reste ici, c'est la transition et
   l'état de survol, que The7 rend brutal : il permute deux couleurs sans durée. */
.dt-btn,
.dt-btn-m,
.dt-btn-s,
.dt-btn-l,
button,
input[type="submit"],
.woocommerce a.button,
.woocommerce button.button {
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

/* ══════════════════════════════════════════════════════════════════════════
   Le générateur de Body Graph de rosmaryn.app, page Human Design (31/08/2026)
   ══════════════════════════════════════════════════════════════════════════
   🚨 POURQUOI UN PANNEAU BLEU NUIT SOUS UN SITE IVOIRE.
   Le widget est servi en `background: transparent !important` sur son body, et
   ce dans les DEUX thèmes : son gabarit le dit explicitement, « il se pose sur
   la page de quelqu'un d'autre et en épouse le fond ». Son mode sombre ne peint
   donc AUCUN fond, il se contente de rendre clair ce qui doit rester lisible
   sur un fond sombre (`--wg-text` passe à #e9e6e0).
   ⚠ Conséquence : posé nu sur l'ivoire du site, `theme=dark` donnerait du texte
     clair sur fond clair, libellés compris. Ce n'est pas un défaut du widget,
     c'est un fond hôte manquant.
   ★ D'où ce panneau : il donne au widget le fond que son thème suppose, et il
     devient au passage une fenêtre ouverte sur l'application au milieu de la
     page. Les valeurs sont celles du mode NUIT de Rosmaryn, pas du mode jour.
   ⚠ Historique utile : `theme=dark` était INOPÉRANT jusqu'au 31/08 17h43, le
     gabarit codant en dur `<body class="light-mode">`. Corrigé côté rosmaryn.app
     en `<?= $is_dark ? 'wg-nuit' : 'light-mode' ?>`. Si le widget ressort un jour
     en texte clair illisible, c'est cette ligne-là qu'il faut regarder.
   ⚠ La bordure et le rayon de l'iframe sont posés EN LIGNE : un style en ligne
     bat n'importe quel sélecteur, les redéfinir ici serait sans effet.
   ══════════════════════════════════════════════════════════════════════════ */
.hd-widget-embed {
  display: flex;
  justify-content: center;
  margin: 2.75rem 0 3rem;
  padding: 1.75rem 1.25rem;
  background: #050c1c;                        /* --bg-primary, mode nuit */
  border: 1px solid rgba(201, 168, 76, 0.18); /* --border, mode nuit */
  border-radius: 18px;
  box-shadow: 0 1px 3px rgba(5, 12, 28, 0.10),
              0 18px 44px -22px rgba(5, 12, 28, 0.55);
}

.hd-widget-embed iframe {
  display: block;
  width: 100%;
  max-width: 500px;
}

@media (max-width: 640px) {
  .hd-widget-embed {
    padding: 1.25rem 0.75rem;
    border-radius: 14px;
    margin: 2rem 0 2.25rem;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   LES PAGES ÉDITORIALES  ·  route B, 31/08/2026
   ══════════════════════════════════════════════════════════════════════════
   La classe `ros-editorial` est posée par functions.php sur toute page qui
   n'est PAS fonctionnelle (boutique, panier, commande, compte, rendez-vous,
   inscription). Rien ici ne peut donc atteindre les grilles de la boutique.

   🚨 CE QUI A ÉTÉ ESSAYÉ PUIS RETIRÉ, ET POURQUOI (31/08/2026).
   J'avais plafonné `#content` à 40rem pour ramener la ligne de ~140 signes à
   ~70. Mesuré ensuite sur /soins-energetiques/, qui est en DEUX COLONNES
   (texte + photo) : le plafond s'appliquait au conteneur, donc la colonne de
   texte tombait à ~180 px de large, en rubans de trois mots. Une largeur de
   lecture posée sur le CONTENEUR casse toute page multi-colonnes.
   ⛔ Ne pas remettre `max-width` sur `#content`.
   ★ Décision de l'éditeur : le contenu suit la largeur générale du site, celle
     du menu principal. Le confort de lecture se gagnera par la composition
     (colonnes, encarts, images), pas en rétrécissant le conteneur.
   ══════════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════
   LE RYTHME VERTICAL DES TITRES
   ══════════════════════════════════════════════════════════════════════
   ★ La règle qui compte : un titre appartient à ce qui le SUIT, pas à ce qui
     le précède. Son blanc du dessus doit donc être nettement plus grand que
     celui du dessous, sinon l'œil ne sait pas à quel bloc il se rattache.
     Rapport retenu : environ 4 pour 1.
   ⚠ Les marges sont en `em`, donc relatives à la taille du titre lui-même :
     un h2 de 35 px prend plus d'air qu'un h3 de 28 px sans qu'on ait à écrire
     deux valeurs. C'est ce qui rend l'échelle et le rythme solidaires.
   ⛔ Ne pas remettre `line-height` ici : il vient des réglages The7, où il est
      désormais proportionné à chaque niveau (52/42/36/30/27/24 px). */
.ros-editorial #content h1 { margin-top: 1.9em;  margin-bottom: 0.45em; }
.ros-editorial #content h2 { margin-top: 2em;    margin-bottom: 0.5em;  }
.ros-editorial #content h3 { margin-top: 1.9em;  margin-bottom: 0.5em;  }
.ros-editorial #content h4 { margin-top: 1.8em;  margin-bottom: 0.5em;  }

/* h6 n'est plus un titre mais une ÉTIQUETTE : à 16 px il ne peut pas se
   distinguer d'un paragraphe par la taille, il le fait par la casse. */
#content h6 {
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ros-gold);
}

.ros-editorial #content > *:first-child,
.ros-editorial #content .wpb_text_column:first-child h1:first-child,
.ros-editorial #content .wpb_text_column:first-child h2:first-child,
.ros-editorial #content .wpb_text_column:first-child h3:first-child {
  margin-top: 0;
}

.ros-editorial #content p { margin-bottom: 1.15em; line-height: 1.65; }
.ros-editorial #content ul,
.ros-editorial #content ol { margin-bottom: 1.15em; line-height: 1.65; }
.ros-editorial #content li::marker { color: var(--ros-gold); }

/* ── Les liens dans le texte ────────────────────────────────────────────
   Un lien doit se voir sans dépendre de la seule couleur : en or sur ivoire,
   la teinte seule ne suffit pas pour un œil qui distingue mal les couleurs. */
.ros-editorial #content p a,
.ros-editorial #content li a {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(var(--ros-gold-rgb), 0.45);
}

.ros-editorial #content p a:hover,
.ros-editorial #content li a:hover { text-decoration-color: var(--ros-gold); }

/* ══════════════════════════════════════════════════════════════════════════
   LE PIED DE PAGE  ·  31/08/2026
   ══════════════════════════════════════════════════════════════════════════
   🚨 CE QUI A ÉTÉ RÉPARÉ ICI, ET QUE J'AVAIS CASSÉ.
   En basculant l'en-tête de la disposition « side » à « classic », l'e-mail,
   le téléphone et les deux réseaux sociaux ont disparu du site : ils vivaient
   dans `header-side-elements.below_menu`, sous le menu vertical, et cette zone
   n'existe pas dans la disposition centrée. Mesuré : plus AUCUNE occurrence de
   l'adresse ni du numéro sur l'accueil.
   ★ Ils sont désormais dans le pied, qui est leur place naturelle et où ils
     valent pour toutes les pages, pas seulement l'accueil.

   Le pied n'avait aucun widget : les trois colonnes réglées dans The7 étaient
   vides, et seule la barre du bas s'affichait. Trois widgets HTML ont été
   ajoutés dans la zone « Pied par défaut » (sidebar_2).
   ══════════════════════════════════════════════════════════════════════════ */
#footer .widget_custom_html + .widget_custom_html { margin-top: 0; }

#footer .widget-title,
#footer .widget h3 {
  font-family: var(--font-heading, 'Cormorant Garamond', Georgia, serif);
  font-size: 1.3rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--ros-gold);
  margin-bottom: 0.9rem;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid var(--ros-hair);
}

.ros-foot-lede {
  color: var(--ros-muted);
  font-size: 0.9rem;
  line-height: 1.6;
  margin: 0 0 1rem;
}

#footer ul.ros-foot-contact,
#footer ul.ros-foot-nav {
  list-style: none;
  margin: 0;
  padding: 0;
}

#footer ul.ros-foot-contact li,
#footer ul.ros-foot-nav li {
  margin: 0 0 0.45rem;
  line-height: 1.5;
}

#footer ul.ros-foot-contact li::before,
#footer ul.ros-foot-nav li::before { content: none; }

#footer .ros-foot-contact a,
#footer .ros-foot-nav a,
#footer .ros-foot-social a {
  color: var(--ros-ink);
  font-size: 0.92rem;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.2s ease, border-color 0.2s ease;
}

#footer .ros-foot-contact a:hover,
#footer .ros-foot-nav a:hover,
#footer .ros-foot-social a:hover {
  color: var(--ros-gold);
  border-bottom-color: var(--ros-hair);
}

/* Les deux réseaux, séparés par un point médian dessiné, pas par un caractère :
   un séparateur en CSS n'est pas lu par les lecteurs d'écran. */
.ros-foot-social { margin: 1rem 0 0; display: flex; align-items: center; gap: 0.75rem; }
.ros-foot-social a + a { position: relative; padding-left: 0.75rem; }
.ros-foot-social a + a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--ros-gold);
  transform: translateY(-50%);
  opacity: 0.6;
}

/* ── Le bouton du pied : la pilule dorée, en petit ──────────────────────
   🚨 CE BOUTON A ÉTÉ INVISIBLE UNE HEURE, ET LA CAUSE MÉRITE D'ÊTRE ÉCRITE.
   Mon premier jet le ciblait par `.ros-foot-cta` seul (spécificité 0,1,0) avec
   un `!important` sur la seule COULEUR. The7 style ses liens de pied par des
   sélecteurs à identifiant, donc bien plus spécifiques : son fond gagnait, mon
   texte ivoire gagnait. Résultat : du texte ivoire sur un fond ivoire, sur une
   page où le lien EST BIEN présent dans le HTML servi.
   ★ C'est le pire genre de défaut : rien n'échoue, rien n'est absent, et un
     contrôle qui cherche la chaîne dans la page répond « présent ».
   ★ La réparation n'est pas d'ajouter des `!important` un par un, c'est de
     préfixer par `#footer` : le fond et la couleur gagnent alors ENSEMBLE. */
#footer .ros-foot-cta {
  display: inline-block;
  margin-top: 0.35rem;
  padding: 0.62rem 1.3rem;
  border-radius: 999px;
  background: var(--ros-gold);
  color: var(--ros-ground);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-decoration: none;
  border: 1px solid var(--ros-gold);
  border-bottom: 1px solid var(--ros-gold);
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

#footer .ros-foot-cta:hover {
  background: var(--ros-gold-dark);
  border-color: var(--ros-gold-dark);
  color: var(--ros-ground);
}

/* Les liens légaux, détachés de la navigation par un filet plutôt que par un
   titre : ils n'ont pas le même statut, mais ne méritent pas une colonne. */
#footer .ros-foot-legal {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--ros-hair);
}
#footer .ros-foot-legal a { color: var(--ros-muted); font-size: 0.85rem; }
#footer .ros-foot-legal a:hover { color: var(--ros-gold); }

/* La barre du bas, plus discrète que les colonnes qu'elle clôt. */
#bottom-bar { font-size: 0.83rem; }
#bottom-bar a { color: var(--ros-muted); text-decoration: none; }
#bottom-bar a:hover { color: var(--ros-gold); }
#bottom-bar .bottom-text-block p { margin: 0; }

@media (max-width: 778px) {
  #footer .widget-title, #footer .widget h3 { margin-top: 1.75rem; }
  #footer .widget:first-child .widget-title { margin-top: 0; }
}

/* ══════════════════════════════════════════════════════════════════════════
   LES FORMULAIRES  ·  UN SEUL STYLE POUR TOUT LE SITE  (31/08/2026)
   ══════════════════════════════════════════════════════════════════════════
   Deux extensions différentes servent les deux formulaires du site, chacune
   avec ses propres valeurs par défaut : **MailerLite** pour la newsletter,
   **WPForms** pour le contact. D'où deux allures étrangères l'une à l'autre,
   et étrangères au site : la newsletter sortait avec un bouton NU, celui que
   dessine le navigateur, et le contact avec un bouton BLEU `#066aab`.

   🚨 POURQUOI LES VARIABLES SONT REDÉCLARÉES SUR `.wpforms-container`
   ET NON SUR `:root`. WPForms imprime ses variables dans un `<style>` EN LIGNE
   (`wpforms-modern-full-inline-css`), posé sur `:root`, et placé APRÈS cette
   feuille dans le document : à égalité de spécificité, c'est lui qui gagnerait.
   Une propriété personnalisée s'hérite de l'ancêtre le PLUS PROCHE : en la
   déclarant sur le conteneur du formulaire, on passe devant sans `!important`.
   ⚠ Le bleu ne vient PAS du JSON du formulaire (il y est bien en or) mais des
     réglages GLOBAUX de WPForms. Corriger le JSON ne l'aurait pas changé.

   ⛔ Ne pas rétrécir la PAGE pour cadrer un formulaire : c'est le formulaire
      qui a une largeur propre (34rem), la page garde la sienne.

   🚨 PORTÉE GLOBALE, ET NON `.ros-editorial` (corrigé le 31/08/2026).
   Mon premier jet préfixait tout par `.ros-editorial` — la classe posée sur
   les pages éditoriales. Or `inscription-a-la-newsletter` est justement dans
   la liste des pages FONCTIONNELLES qui ne la reçoivent pas : le style ne
   s'appliquait donc nulle part sur la seule page qu'il visait d'abord.
   ★ Demande de l'éditeur : « même style de formulaire partout ». Ces règles
     ne portent que sur des classes de formulaire, elles ne peuvent pas
     déborder sur une mise en page.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── La carte commune ───────────────────────────────────────────────────── */
/* 🚨 LA CARTE DU FORMULAIRE DE CONTACT : DEUX FAUSSES PISTES AVANT LA BONNE.
   Les champs, les libellés et le bouton prenaient bien le style, mais la CARTE
   non : le formulaire de contact restait transparent quand celui de la
   newsletter avait sa carte blanche. Deux formulaires « au même style » qui ne
   se ressemblaient pas.
   ⛔ 1re piste, fausse : la variable `--wpforms-background-color`. WPForms la
      redéclare par `#wpforms-64`, un sélecteur à IDENTIFIANT ; la poser sur une
      classe ne peut pas gagner. Et de toute façon la carte ici ne passe pas par
      cette variable.
   ⛔ 2e piste, fausse : « la capture est périmée ». Trois captures identiques à
      l'octet près m'ont fait accuser le cache de GrabzIt. En changeant les
      dimensions demandées, le rendu était bien neuf — et identique. ★ Une
      capture inchangée n'est une preuve de rien tant qu'on n'a pas fait varier
      la SIGNATURE de la requête.
   ✅ La vraie cause, lue dans la feuille du plugin :
      `div.wpforms-container-full:not(:empty)` = (0,2,1) — deux classes, car
      `:not(:empty)` compte sa pseudo-classe, PLUS un élément. Mon
      `.wpforms-container.wpforms-container-full` valait (0,2,0) : à classes
      égales, c'est l'élément qui départage, et je perdais.
   ★ On reprend donc leur forme exacte en ajoutant une classe : (0,3,1).
     Aucun `!important` n'est nécessaire quand on lit la règle adverse. */
.mailerlite-form,
div.wpforms-container.wpforms-container-full:not(:empty) {
  max-width: 34rem;
  margin-inline: auto;
  padding: 1.9rem 1.75rem 1.75rem;
  background-color: var(--ros-card);
  border: 1px solid var(--ros-hair);
  border-radius: var(--ros-r-lg);
  box-shadow: 0 1px 3px rgba(16, 30, 60, 0.05),
              0 14px 36px -22px rgba(16, 30, 60, 0.28);
}

/* ── Le titre et l'accroche ─────────────────────────────────────────────── */
.mailerlite-form-title h3 {
  font-family: var(--font-heading, 'Cormorant Garamond', Georgia, serif);
  color: var(--ros-gold);
  font-size: 1.6rem;
  font-weight: 500;
  margin: 0 0 0.5rem;
  line-height: 1.2;
}

.mailerlite-form-description p {
  color: var(--ros-muted);
  font-size: 0.92rem;
  line-height: 1.6;
  margin: 0 0 1.5rem;
}

/* ── Les libellés : petites capitales espacées, comme sur l'application ─── */
.mailerlite-form-field label,
.wpforms-container .wpforms-field-label {
  display: block;
  font-family: var(--font-body, 'Lora', Georgia, serif);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ros-gold);
  margin-bottom: 0.45rem;
}

.wpforms-container .wpforms-required-label { color: var(--ros-gold); }

.mailerlite-form-field { margin-bottom: 1.15rem; }

/* ── Les champs ─────────────────────────────────────────────────────────── */
.mailerlite-form-field input,
.wpforms-container input[type="text"],
.wpforms-container input[type="email"],
.wpforms-container input[type="tel"],
.wpforms-container input[type="url"],
.wpforms-container input[type="number"],
.wpforms-container select,
.wpforms-container textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 0.72rem 0.9rem;
  font-family: var(--font-body, 'Lora', Georgia, serif);
  font-size: 0.95rem;
  line-height: 1.45;
  color: var(--ros-ink);
  background: var(--ros-card);
  border: 1px solid var(--ros-hair);
  border-radius: var(--ros-r-sm);
  box-shadow: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.mailerlite-form-field input::placeholder,
.wpforms-container input::placeholder,
.wpforms-container textarea::placeholder {
  color: var(--ros-muted);
  opacity: 0.75;
}

.mailerlite-form-field input:focus,
.wpforms-container input:focus,
.wpforms-container select:focus,
.wpforms-container textarea:focus {
  outline: none;
  border-color: var(--ros-gold);
  box-shadow: 0 0 0 3px rgba(var(--ros-gold-rgb), 0.15);
}

.wpforms-container textarea { min-height: 8.5rem; resize: vertical; }

/* ── Le bouton : la pilule dorée, la même que partout ────────────────────
   🚨 Celui de MailerLite n'avait AUCUN style : le navigateur dessinait son
   bouton gris par défaut, au milieu d'une page en Cormorant et Lora. */
.mailerlite-subscribe-button-container { margin-top: 1.4rem; text-align: left; }

button.mailerlite-subscribe-submit,
.wpforms-container button.wpforms-submit {
  display: inline-block;
  width: auto;
  padding: 0.78rem 1.7rem;
  font-family: var(--font-body, 'Lora', Georgia, serif);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  color: var(--ros-ground);
  background: var(--ros-gold);
  border: 1px solid var(--ros-gold);
  border-radius: 999px;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

button.mailerlite-subscribe-submit:hover,
.wpforms-container button.wpforms-submit:hover {
  background: var(--ros-gold-dark);
  border-color: var(--ros-gold-dark);
  color: var(--ros-ground);
}

button.mailerlite-subscribe-submit:focus-visible,
.wpforms-container button.wpforms-submit:focus-visible {
  outline: 2px solid var(--ros-gold-dark);
  outline-offset: 3px;
}

/* ── Les variables de WPForms, redéclarées au plus près (voir l'en-tête) ── */
.wpforms-container {
  --wpforms-field-border-color: rgba(139, 105, 20, 0.18);
  --wpforms-field-border-radius: 6px;
  --wpforms-field-background-color: #ffffff;
  --wpforms-field-text-color: #101e3c;
  --wpforms-label-color: #8b6914;
  --wpforms-label-sublabel-color: #605d70;
  --wpforms-label-error-color: #c41d35;
  --wpforms-button-background-color: #8b6914;
  --wpforms-button-border-color: #8b6914;
  --wpforms-button-text-color: #f5f3ef;
  --wpforms-button-border-radius: 999px;
  --wpforms-button-size-font-size: 15px;
  --wpforms-button-size-height: auto;
  --wpforms-button-size-padding-h: 27px;
  --wpforms-container-padding: 0px;
  --wpforms-container-border-style: none;
  /* ⚠ WPForms peint le fond du conteneur par `div.wpforms-container-full`
     (0,1,1), plus spécifique que le `.wpforms-container` de la carte
     ci-dessus (0,1,0) : sans cette variable, le formulaire de contact
     restait transparent alors que celui de la newsletter avait sa carte
     blanche. Deux formulaires « au même style » qui ne se ressemblaient
     pas, pour une seule déclaration manquante. */
  --wpforms-background-color: #ffffff;
}

.wpforms-container .wpforms-field { padding: 0 0 1.15rem; }
.wpforms-container .wpforms-field-medium { max-width: 100%; }
.wpforms-container .wpforms-submit-container { padding-top: 0.35rem; }

@media (max-width: 640px) {
  .mailerlite-form,
  .wpforms-container { padding: 1.4rem 1.1rem 1.25rem; }
  button.mailerlite-subscribe-submit,
  .wpforms-container button.wpforms-submit { width: 100%; }
}

/* ══════════════════════════════════════════════════════════════════════════
   LES FILETS SOUS LES TITRES  (31/08/2026)
   ══════════════════════════════════════════════════════════════════════════
   Le titre de page (h1) porte déjà son filet doré, posé par The7
   (`general-title_decoration`). Les h2 du contenu n'en avaient aucun : rien
   ne marquait les sections d'une page longue.
   ★ Demande de l'éditeur : le même geste, mais PLUS DISCRET. Trois choses le
     rendent secondaire sans changer sa nature : l'opacité du filet (0,10 contre
     l'or plein du h1), sa largeur (il s'arrête à 4rem au lieu de traverser), et
     l'écart qui le sépare du texte.
   ⚠ Ne s'applique qu'aux h2 DU CONTENU : un h2 de widget ou de barre latérale
     porte déjà son propre séparateur, deux filets superposés feraient sale. */
#content h2 {
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--ros-hair-soft);
}

/* Le h3 ne prend pas de filet : à trois niveaux de traits, la page se met à
   ressembler à un formulaire administratif. */
#content h3 { border-bottom: 0; }

/* ══════════════════════════════════════════════════════════════════════════
   LE BODY GRAPH DE NATHALIE, page Human Design (31/08/2026)
   ══════════════════════════════════════════════════════════════════════════
   Posé juste après la phrase qui le décrit (« j'établis ce qu'on appelle ton
   Bodygraph »), et non en tête de page : une image se comprend là où le texte
   vient d'en parler.
   ⚠ L'image a un fond BLANC. Sur l'ivoire du site elle se lit donc comme une
     carte, exactement comme les formulaires : c'est voulu, et c'est pour ça
     qu'elle reçoit le même rayon, le même filet et la même ombre qu'eux. */
.ros-bg-figure {
  margin: 2.25rem auto 2.5rem;
  max-width: 34rem;
  text-align: center;
}

.ros-bg-figure .ros-bg-img,
.ros-bg-figure img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--ros-hair);
  border-radius: var(--ros-r-lg);
  background: var(--ros-card);
  box-shadow: 0 1px 3px rgba(16, 30, 60, 0.05),
              0 14px 36px -22px rgba(16, 30, 60, 0.28);
}

.ros-bg-figure figcaption {
  margin-top: 0.85rem;
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--ros-muted);
  text-align: center;
}

.ros-bg-figure figcaption a {
  color: var(--ros-gold);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(var(--ros-gold-rgb), 0.45);
}
.ros-bg-figure figcaption a:hover { text-decoration-color: var(--ros-gold); }

/* ══════════════════════════════════════════════════════════════════════════
   LE CARTOUCHE  ·  un encart de définition  (31/08/2026)
   ══════════════════════════════════════════════════════════════════════════
   Sert à isoler ce qui RÉPOND À UNE QUESTION, au milieu d'une page qui, elle,
   raconte et vend. Sur /human-design/, il porte « Qu'est-ce que le Human
   Design ? » : le lecteur qui ne sait pas encore trouve sa réponse d'un coup
   d'œil, celui qui sait la saute.
   ★ Il reprend la boîte « prix de lancement » de rosmaryn.app : un fond d'un
     cran plus creusé que la page, un filet doré fin, pas d'ombre. Il se
     distingue sans trancher, contrairement à une carte blanche, qui aurait
     donné le même poids visuel qu'un formulaire.
   ⛔ Ne pas le multiplier sur une même page : deux cartouches n'en mettent
      aucun en avant. */
.ros-cartouche {
  margin: 0 0 2.25rem;
  padding: 1.75rem 1.9rem 1.5rem;
  background: var(--ros-secondary);
  border: 1px solid var(--ros-hair);
  border-radius: var(--ros-r-lg);
}

#content .ros-cartouche .ros-cartouche__titre {
  margin: 0 0 1.1rem;
  padding-bottom: 0.6rem;
  font-size: 1.55rem;
  line-height: 1.2;
  color: var(--ros-gold);
  border-bottom: 1px solid var(--ros-hair);
}

.ros-cartouche p:last-child { margin-bottom: 0; }

@media (max-width: 640px) {
  .ros-cartouche { padding: 1.3rem 1.15rem 1.1rem; border-radius: var(--ros-r-md); }
  #content .ros-cartouche .ros-cartouche__titre { font-size: 1.35rem; }
}

/* ── La variante flottante de la figure ─────────────────────────────────
   Demande de l'éditeur : le Body Graph encadré À DROITE du texte, en haut de
   page, au niveau de « Concrètement, à quoi ça sert ? ».
   ⚠ Un flottant doit être placé AVANT le texte qu'il côtoie dans le HTML :
     posé après le paragraphe, il descendrait sous le bloc au lieu de s'y ranger.
   ⚠ `shape-outside` n'a rien à faire ici : l'image est rectangulaire, le texte
     doit longer un bord droit. */
.ros-bg-figure--droite {
  float: right;
  width: min(340px, 42%);
  max-width: none;
  margin: 0.35rem 0 1.5rem 2.25rem;
}

/* 🚨 Sous 780 px, un flottant de 42 % laisse des lignes de trois mots à sa
   gauche : illisible. La figure repasse donc en pleine largeur, centrée.
   ★ C'est le même défaut que la largeur de lecture posée sur le conteneur,
     rencontré plus haut sur /soins-energetiques/ : une colonne étroite ne se
     voit pas sur un grand écran, elle ne se voit qu'en réduisant la fenêtre. */
@media (max-width: 780px) {
  .ros-bg-figure--droite {
    float: none;
    width: 100%;
    max-width: 26rem;
    margin: 1.75rem auto 2rem;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   LE WIDGET EN COLONNE D'UN TIERS, à côté de « Comment ça se passe ? »
   ══════════════════════════════════════════════════════════════════════
   Demande de l'éditeur. Le panneau nuit devient une colonne latérale plutôt
   qu'un bloc pleine largeur : la page gagne en densité et le générateur reste
   à portée de main pendant qu'on lit comment se passe une analyse.
   ⚠ `clear: right` et non `clear: both` : le Body Graph de Nathalie flotte
     déjà à droite plus haut. Sans ce nettoyage, les deux flottants se
     rangeraient côte à côte ou s'empileraient de travers selon la longueur du
     texte intermédiaire, c'est-à-dire différemment à chaque largeur d'écran.
   ⚠ Le panneau perd l'essentiel de son remplissage : à 380 px de large, les
     1,25rem de chaque côté mangeaient un dixième de la colonne. */
.hd-widget-embed--colonne {
  float: right;
  clear: right;
  width: min(33%, 400px);
  margin: 0.35rem 0 1.75rem 2.25rem;
  padding: 1rem 0.85rem;
}

.hd-widget-embed--colonne iframe { max-width: 100%; }

/* 🚨 Sous 900 px, un tiers de colonne ne suffit plus au formulaire du widget :
   ses trois champs jour/mois/année passent à moins de 90 px chacun. Il reprend
   donc toute la largeur, centré. ★ Le seuil est plus haut que celui de la
   figure (780 px) parce qu'un formulaire a une largeur minimale utile, là où
   une image se contente de rétrécir. */
@media (max-width: 900px) {
  .hd-widget-embed--colonne {
    float: none;
    clear: both;
    width: 100%;
    max-width: 26rem;
    margin: 2rem auto 2.25rem;
    padding: 1.25rem 0.75rem;
  }
}

/* Le bloc qui suit les flottants ne doit pas remonter à leur hauteur. */
#content h2 { clear: none; }
