/* Famille de titre du thème d'origine : écartée.
   Elle était servie par Google Fonts ; la CSP du site (style-src 'self', font-src 'self')
   bloque fonts.googleapis.com, la feuille ne se chargeait donc pas, les woff2 non plus,
   et les titres tombaient en Georgia.
   Remplacée par Source Serif 4, auto-hébergée, licence OFL (voir fontes/LICENSE-OFL.txt).
   Règle : ne jamais nommer dans une pile une famille qui n'a pas de @font-face local dans
   ce fichier — un nom sans fonte ne produit aucune erreur, il s'affiche simplement dans
   une autre police.
   Garde-fou : scripts/usine-verifie.mjs, « famille sans @font-face local ». */

/* Polices auto-hébergées (licence OFL, voir fontes/LICENSE-OFL.txt) : aucune requête
   vers un service tiers, aucun décalage d'affichage. Sous-ensembles latin et latin-ext,
   le navigateur ne télécharge que celui dont il a besoin. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 100 1000;
  font-display: swap;
  src: url('/assets/demo-jdn-grippertool-com/fontes/dm-sans-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 100 1000;
  font-display: swap;
  src: url('/assets/demo-jdn-grippertool-com/fontes/dm-sans-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/assets/demo-jdn-grippertool-com/fontes/source-serif-4-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/assets/demo-jdn-grippertool-com/fontes/source-serif-4-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* Le site n'a qu'un mode : le clair. La déclaration est ici, avec les jetons,
     et pas seulement sur <html class="light"> : c'est elle que lisent les
     contrôles natifs (champs de formulaire, barres de défilement, menus), qui
     restaient peints en sombre si le système de visite l'était. */
  color-scheme: light;
  --f-titre: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --f-texte: 'DM Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --f-graisse-titre: 800;
  --f-casse-kicker: uppercase;
  --tm: 0.707rem;
  --t1: 1.0rem;
  --t2: 1.414rem;
  --t3: 1.999rem;
  --t4: 2.827rem;
  --t5: 3.998rem;
  --t6: 5.653rem;
  --t7: 7.993rem;
  --t-hero: clamp(4.0rem, 6vw, 11.3rem);
  --e1: 0.212rem;
  --e2: 0.425rem;
  --e3: 0.637rem;
  --e4: 0.85rem;
  --e5: 1.275rem;
  --e6: 1.7rem;
  --e7: 2.55rem;
  --e8: 3.4rem;
  --r-carte: 6px;
  --r-bouton: 6px;
  --r-image: 4px;
  --largeur: 1120px;
  --ico-trait: 2;
  --header-h: 72px;
  --c-fond: #fefefe;
  --c-fond-2: #f5f3f4;
  --c-surface: #ffffff;
  --c-texte: #2f232b;
  --c-texte-2: #6b5765;
  --c-primaire: #bc2992;
  --c-sur-primaire: #f9f5f8;
  --c-secondaire: #ad5293;
  --c-sur-secondaire: #fcf9fb;
  --c-primaire-texte: #b02688;
  --c-secondaire-texte: #8b4176;
  --c-doux: #eedde9;
  --c-sur-doux: #291423;
  --c-bord: #d9d3d8;
  --c-voile: #180c15;
  --c-sur-voile: #ffffff;
  --c-ombre: #240f1e;
  --o-carte: 6px 6px 0 #2f232b;
  --o-survol: 0 18px 40px -12px color-mix(in srgb, #240f1e 28%, transparent);
  --carte-fond: #ffffff;
  --carte-encre: #2f232b;
  --carte-encre-2: #6b5765;
  --carte-lien: #b02688;
  --carte-bord: 0 solid transparent;
  /* Bouton principal : un vrai bouton, pas un lien souligne. Le fond plein et
     le texte sur-primaire donnent a « Lire les articles », « Tous les
     articles » ou « Envoyer le message » la lecture d'une action. Les boutons
     secondaires (.bh-ad17-bouton-2) repassent en contour dans home.css. */
  --btn-fond: var(--c-primaire);
  --btn-texte: var(--c-sur-primaire);
  --btn-bord: 0 solid transparent;
  --btn-ombre: none;
  --btn-deco: none;
  --lien-couleur: #b02688;
  --lien-deco: underline;
  --lien-epaisseur: 1px;
  --lien-fond: transparent;
  --lien-fond-encre: #b02688;
}
html.dark, html[data-theme="dark"], html[data-mode="dark"], html.theme-dark, body.dark, [data-theme="dark"] [data-bh-home] {
  --c-fond: #181417;
  --c-fond-2: #241c22;
  --c-surface: #2b2429;
  --c-texte: #eee8ec;
  --c-texte-2: #c3b6c0;
  --c-primaire: #dc60b9;
  --c-sur-primaire: #291423;
  --c-secondaire: #be74a9;
  --c-sur-secondaire: #291423;
  --c-primaire-texte: #e481c7;
  --c-secondaire-texte: #d19ec3;
  --c-doux: #43233a;
  --c-sur-doux: #f9f5f8;
  --c-bord: #4d424a;
  --c-voile: #180c15;
  --c-sur-voile: #ffffff;
  --c-ombre: #070306;
  --o-carte: 6px 6px 0 #eee8ec;
  --o-survol: 0 18px 40px -12px color-mix(in srgb, #070306 28%, transparent);
  --carte-fond: #2b2429;
  --carte-encre: #eee8ec;
  --carte-encre-2: #c3b6c0;
  --carte-lien: #e481c7;
  --carte-bord: 0 solid transparent;
  --btn-fond: var(--c-primaire);
  --btn-texte: var(--c-sur-primaire);
  --btn-bord: 0 solid transparent;
  --btn-ombre: none;
  --btn-deco: none;
  --lien-couleur: #e481c7;
  --lien-deco: underline;
  --lien-epaisseur: 1px;
  --lien-fond: transparent;
  --lien-fond-encre: #e481c7;
}

body { font-family: var(--f-texte); }
h1, h2, h3, h4 { font-family: var(--f-titre); }

/* ── formulaire de contact ────────────────────────────────────────────────
   Mêmes jetons que le reste du site : aucun réglage de couleur ni de police
   n'est écrit ici, tout passe par les variables ci-dessus. Le pot de miel
   (.fm-miel) est masqué aux visiteurs mais reste dans le formulaire. */
.fm { display: grid; gap: var(--e4); }
.fm-champs { display: grid; gap: var(--e4); grid-template-columns: minmax(0, 1fr); }
.fm-ch { display: grid; gap: var(--e2); margin: 0; }
.fm-ch label { font-size: var(--tm); letter-spacing: 0.06em; text-transform: var(--f-casse-kicker); color: var(--c-texte-2); }
.fm-ch :is(input, textarea, select) {
  font: inherit;
  color: var(--c-texte);
  background: var(--c-surface);
  border: 1px solid var(--c-bord);
  border-radius: var(--r-carte);
  padding: var(--e3) var(--e4);
  width: 100%;
}
.fm-ch :is(input, textarea):focus-visible { outline: 2px solid var(--c-primaire); outline-offset: 1px; }
.fm-ch textarea { resize: vertical; min-height: 9rem; }
.fm-miel { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.fm-consentement { display: flex; align-items: flex-start; gap: var(--e2); font-size: var(--tm); color: var(--c-texte-2); }
.fm-consentement input { margin-top: 0.25em; }
.fm-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e4); }
.fm-statut { font-size: var(--t1); border-radius: var(--r-carte); padding: 0; }
.fm-statut:empty { display: none; }
.fm-statut[data-etat="ok"] { padding: var(--e3) var(--e4); background: var(--c-doux); color: var(--c-sur-doux); }
.fm-statut[data-etat="erreur"] { padding: var(--e3) var(--e4); background: var(--c-surface); border: 1px solid var(--c-primaire); color: var(--c-primaire-texte); }
.fm-note { font-size: var(--tm); color: var(--c-texte-2); }
/* Le bouton d'envoi se lit comme une action, pas comme un lien rose souligne :
   fond primaire, texte sur-primaire, ni bordure ni soulignement. Le balisage
   du formulaire ne change pas, seuls les jetons du bouton sont reposees ici. */
.fm-actions .bh-ad17-bouton-1 {
  --btn-fond: var(--c-primaire);
  --btn-texte: var(--c-sur-primaire);
  --btn-bord: 0 solid transparent;
  --btn-deco: none;
}
@media (min-width: 40rem) { .fm-champs { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
