/* =====================================================================================================
   FINITIONS DU RELEVÉ VISUEL — 2026-10-07 (feu vert de Thomas, relevé audit-seo-final/RELEVE-VISUEL-2026-10-07.md)
   Chargé UNIQUEMENT sur les 33 pages du plan (accueil, 3 hubs, 29 piliers) et, depuis le 07/10/2026 après-midi
   (feu vert de Thomas), sur les ARTICLES DU BLOG (même gabarit, mêmes défauts), en dernier dans le <head>, par
   inc/finitions-releve.php, qui pose aussi la classe body.jp-fin-1007. Les autres pages (inscription, archive du
   blog…) ne reçoivent ni ce fichier ni la classe : elles ne changent pas.
   (Corps de texte et intros JUSTIFIÉS : décision de Thomas du 07/10/2026, justifié maintenu après comparaison avec
   l'alignement à gauche ; posé à la source dans jp-shell.css, § B1.2. Aucune règle d'alignement ici.)
   Depuis le 07/10/2026 au soir, aussi /teleprospection-au-resultat (page hors plan au même gabarit).
   Aucun texte n'est modifié ici : seulement la mise en forme. Les chiffres du bloc « … en quelques chiffres » ne sont
   pas touchés (seule la police de son titre suit celle de tous les titres, cf. § 2.2).
   Retour arrière : retirer le require de inc/finitions-releve.php dans jp-shell.php (ce fichier n'est alors plus chargé).
   ===================================================================================================== */

/* ---- 2.2 Police des titres ------------------------------------------------------------------------
   Les titres, boutons et libellés demandent « DM Sans », qui n'a jamais été chargée : le navigateur retombe sur
   Arial (Arial Black en 800). Plutôt que de télécharger une 2e police (2 fichiers de plus sur chaque page), le nom
   « DM Sans » est servi par le fichier de Plus Jakarta Sans DÉJÀ chargé partout (police variable 200-800, même
   adresse, donc déjà en cache) : titres et texte ont enfin la même famille, zéro octet de plus. */
@font-face {
  font-family: "DM Sans";
  src: url("/wp-content/plugins/jp-shell/assets/fonts/plus-jakarta-sans-latin-var.woff2") format("woff2");
  font-weight: 200 800; font-style: normal; font-display: swap;
}

/* ---- 1.1 Encadré « L'essentiel » du haut des piliers : tout son contenu, sans défilement caché ------
   Il était plafonné (290 px, 240 px au téléphone) et défilait à l'intérieur sans aucun signe : le lecteur croyait le
   texte tronqué. C'est le résumé de la page (3 à 6 puces) : on l'affiche en entier, sans « Lire la suite »
   (un clic de plus pour quelques lignes, et un bouton qui dépendrait du JavaScript, que WP Rocket diffère). */
body.jp-fin-1007 #jp-pilier-do-root .sf-howto { max-height: none !important; }
body.jp-fin-1007 #jp-pilier-do-root .sf-howto-list { overflow: visible !important; flex: 0 0 auto; }
/* encadré long (7 puces et plus, ex. travail à domicile) sur ordinateur : deux colonnes, pour ne pas allonger l'intro */
@media (min-width: 1100px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-howto-list:has(> li:nth-child(7)) { display: block; columns: 2; column-gap: 26px; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-howto-list:has(> li:nth-child(7)) > li { break-inside: avoid; margin-bottom: 9px; }
}

/* ---- 2.1 Intros : JUSTIFIÉES comme le corps (décision de Thomas du 07/10/2026 : justifié maintenu, comparé avec
   l'alignement à gauche). Les deux règles « text-align: left » posées ici à 14:20 ont été retirées le 07/10 au soir :
   les intros reprennent l'alignement de leur gabarit (justifié, coupure des mots au téléphone). ------------------- */

/* ---- 1.7 Baromètre : en-tête du tableau dessiné à la main ---------------------------------------------
   Ce tableau porte ses couleurs dans ses attributs style (fond navy sur la LIGNE d'en-tête, texte blanc), mais une
   vieille règle de jp-shell.css peint chaque cellule d'en-tête en gris / bleu pâle par-dessus : blanc sur gris clair.
   (Ce n'est pas le nouveau style commun des tableaux : il exclut justement les tableaux à attribut style.)
   On rend les cellules transparentes : les couleurs dessinées à la main réapparaissent ; une cellule qui a sa propre
   couleur (carte de chaleur) la garde (style en ligne prioritaire). */
body.jp-fin-1007 #jp-pilier-do-root .sf-section table[style] :is(th, td) { background-color: transparent; }
body.jp-fin-1007 #jp-pilier-do-root .sf-section table[style] tbody tr:hover > :is(th, td) { background-color: transparent; }
@media (min-width: 600px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-section table[style] thead th { white-space: nowrap; }
}
/* l'indication « ← faites défiler → » n'a pas lieu d'être sous un tableau dessiné qui tient dans l'écran (sans largeur
   minimale imposée) */
body.jp-fin-1007 #jp-pilier-do-root .sf-section table[style]:not([style*="min-width"])::after { content: none !important; display: none !important; }

/* ---- 1.8 et 2.10 Extrait d'un fichier livré (tableau de 7 colonnes et plus) : des fiches, partout ------
   12 colonnes ne tiennent pas dans 824 px : le tableau défilait sans le dire. On affiche chaque ligne en fiche :
   3 par rangée sur ordinateur, 2 sur tablette ; au téléphone, les fiches se feuillettent du doigt (la suivante
   dépasse à droite) au lieu de 4 500 px empilés. Le titre de la fiche est l'activité (une vraie information),
   la raison sociale masquée devient une ligne ordinaire. */
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) {
  display: block !important; overflow: visible !important; width: 100% !important;
  border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important;
  margin: 26px 0 30px;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) caption { display: block; }
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) thead {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tbody {
  display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr {
  display: flex !important; flex-direction: column; min-width: 0;
  background: #fff; border: 1px solid var(--module-border, #D9DDE3); border-radius: 16px; overflow: hidden;
  box-shadow: 0 1px 2px rgba(10,27,51,.04), 0 10px 24px -18px rgba(10,27,51,.22);
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > * {
  display: block !important; width: auto !important; min-width: 0 !important; white-space: normal !important;
  padding: 6px 14px !important; border: 0 !important; border-radius: 0 !important; background: transparent !important;
  font-family: "Plus Jakarta Sans", sans-serif; font-size: 13px !important; font-weight: 500 !important; line-height: 1.45 !important;
  color: var(--ink, #0A1B33) !important; overflow-wrap: anywhere; text-align: left !important;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > :nth-child(3) { padding-top: 10px !important; }
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > :last-child { padding-bottom: 12px !important; }
/* titre de la fiche = l'activité */
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > :nth-child(2) {
  order: -1; padding: 12px 14px 11px !important; background: #F3F8FB !important; border-bottom: 1px solid #E3EBF1 !important;
  font-size: 14px !important; font-weight: 800 !important; line-height: 1.35 !important;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > :nth-child(1) { padding-top: 10px !important; }
/* libellé devant chaque valeur, sur la même ligne */
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > [data-label]::before {
  content: attr(data-label) " : " !important; display: inline !important; margin: 0 !important;
  font-family: "Plus Jakarta Sans", sans-serif; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 0 !important;
  text-transform: none !important; color: var(--mute, #6B7785) !important;
}
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr > :nth-child(2)::before { content: none !important; }
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr:hover > * { background: transparent !important; }
body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr:hover > :nth-child(2) { background: #F3F8FB !important; }
@media (max-width: 979px) {
  body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tbody { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tbody {
    display: flex !important; flex-direction: row; gap: 12px; overflow-x: auto; overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding: 2px 2px 14px;
    scrollbar-width: thin; scrollbar-color: #9FB3C4 #E9EEF3;
  }
  body.jp-fin-1007 #jp-pilier-do-root :is(.sf-section, .jp-hub-faq) table.jp-tab--large:not([style]) tr {
    flex: 0 0 84%; scroll-snap-align: start;
  }
}

/* ---- 1.5 et 2.7 Témoignages -----------------------------------------------------------------------
   Ordinateur : le ruban continu garde son principe, mais les cartes voisines s'effacent en douceur sur une bande plus
   large (plus de texte sectionné net), et les bords haut/bas des cartes ne sont plus rognés par la fenêtre du ruban.
   Téléphone : le ruban ne défile plus tout seul (cf. script des partials) ; une carte entière, centrée, les voisines
   dépassent à peine. */
body.jp-fin-1007 #jp-pilier-do-root .jp-hub-testimonials__viewport {
  padding-top: 6px !important; padding-bottom: 34px !important; margin-bottom: -28px !important;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,.22) 6%, #000 21%, #000 79%, rgba(0,0,0,.22) 94%, transparent 100%) !important;
          mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,.22) 6%, #000 21%, #000 79%, rgba(0,0,0,.22) 94%, transparent 100%) !important;
}
@media (max-width: 560px) {
  body.jp-fin-1007 #jp-pilier-do-root .jp-hub-testimonials__carousel { --slide: calc(100vw - 72px) !important; --gap: 12px !important; }
  /* largeur de carte calée sur la fenêtre du ruban (pas sur l'écran) : l'accueil a des marges, les hubs non */
  body.jp-fin-1007 #jp-pilier-do-root .jp-hub-testimonials__viewport { container-type: inline-size; }
  @supports (width: 1cqw) {
    body.jp-fin-1007 #jp-pilier-do-root .jp-hub-testimonials__carousel { --slide: calc(100cqw - 36px) !important; }
  }
  body.jp-fin-1007 #jp-pilier-do-root .jp-hub-testimonials__viewport {
    -webkit-mask-image: none !important; mask-image: none !important;
  }
}

/* ---- 1.6 et 2.8 Accueil : galerie vidéo ------------------------------------------------------------- */
/* Téléphone / tablette : la légende de la vidéo prend sa place (elle était posée dans une rangée de hauteur 0 et
   la rangée de vignettes passait dessus) ; vignettes en carte verticale : titre lisible sur 2 lignes. */
/* (les vignettes sont des <button> : le thème leur impose white-space:nowrap, d'où les titres rognés sur une ligne) */
body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb { white-space: normal !important; }
@media (max-width: 1024px) {
  body.jp-fin-1007 #jp-home-root .hv3-vgal-stage { grid-template-rows: auto auto; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-meta { margin-top: 12px; }
}
@media (max-width: 560px) {
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb {
    width: 196px; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 9px; padding: 10px 10px 12px;
  }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-media { width: 100%; height: auto; aspect-ratio: 16 / 9; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-silo { white-space: normal; overflow: visible; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-title { -webkit-line-clamp: 2; }
}
/* Ordinateur : la liste n'est plus forcée à la hauteur exacte de la vidéo (5 cartes de 82 px ne pouvaient pas loger
   titre + phrase : tout était rogné) ; chaque carte prend la hauteur de son texte, titres et phrases en entier,
   numéros séparés du texte. */
@media (min-width: 1025px) {
  body.jp-fin-1007 #jp-home-root .hv3-vgal-grid { grid-template-columns: minmax(0, 1fr) 392px; align-items: start; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-rail { height: auto; gap: 10px; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb { flex: 0 0 auto; padding: 10px 14px 10px 10px; gap: 14px; grid-template-columns: auto minmax(0, 1fr) auto; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-media { width: 104px; height: 59px; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-title { -webkit-line-clamp: unset; display: block; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-desc { -webkit-line-clamp: unset; display: block; }
  body.jp-fin-1007 #jp-home-root .hv3-vgal-thumb-num { padding-left: 2px; font-size: 18px; }
}

/* ---- 2.3 Bouton flottant d'aide (casque) ----------------------------------------------------------
   Plus petit et plus près du coin : il mord moins sur le texte ; le pied de page lui laisse sa place (« À propos »
   n'est plus dessous). Le bouton reste flottant par principe : il passe toujours au-dessus de ce qui défile. */
body.jp-fin-1007 .jph-fab {
  width: 48px !important; height: 48px !important;
  right: 12px !important; bottom: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
}
body.jp-fin-1007 .jph-fab .jph-fab-icon { width: 22px; height: 22px; }
body.jp-fin-1007 #jp-pilier-do-root .sf-footer-bottom { padding-right: 64px !important; }
@media (max-width: 767px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-footer-bottom { padding-right: 0 !important; padding-bottom: 70px !important; }
}

/* ---- 2.4 Hubs : titres de section en bleu nuit, comme l'accueil et les piliers ------------------------
   (Le titre du bloc chiffres, partagé avec les piliers, n'est pas touché.) */
body.jp-fin-1007:is(.jp-hub-do-body, .jp-hub-lo-body, .jp-hub-fichier-body) #jp-pilier-do-root
  :is(.jp-hub-faq__h2, .jp-hub-values__h2, .jp-hub-choose__h2, .jp-hub-testimonials__h2, .jp-hub-clients__h2, .sf-objrouter-title, .sf-panorama-title) {
  color: var(--ink, #0A1B33) !important; -webkit-text-fill-color: currentColor;
}

/* ---- 2.9 Les 6 étapes au téléphone : une ligne par étape au lieu de 6 grandes cartes ---------------- */
@media (max-width: 479px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-grid { gap: 10px !important; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-card { flex-direction: row; align-items: stretch; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-num {
    flex: 0 0 48px; display: flex; align-items: center; justify-content: center;
    font-size: 24px !important; padding: 0 !important;
    background: linear-gradient(90deg, #5DC8E4 0%, var(--terracotta) 100%);
  }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-body { padding: 12px 14px; gap: 10px; text-align: left; justify-content: center; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-step { display: grid; grid-template-columns: 36px minmax(0, 1fr); column-gap: 12px; align-items: center; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-icon { width: 36px !important; height: 36px !important; grid-row: span 2; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-step small { grid-column: 2; margin-top: 2px; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-step strong { font-size: 13.5px !important; }
  body.jp-fin-1007 #jp-pilier-do-root .sf-pipeline-card:hover { transform: none; }
}

/* ---- 2.11 Bloc final : posé dans la colonne du site au lieu d'être plaqué aux bords de l'écran ------ */
@media (min-width: 768px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-final {
    width: auto !important; max-width: 1232px !important; margin-left: 24px !important; margin-right: 24px !important;
  }
}
@media (min-width: 1281px) {
  body.jp-fin-1007 #jp-pilier-do-root .sf-final { margin-left: auto !important; margin-right: auto !important; }
}

/* ---- 3.1 Liens « Découvrir » du panorama : une seule couleur dans la rangée ------------------------- */
body.jp-fin-1007 #jp-pilier-do-root .sf-panorama-step-link { color: #0A5D7D !important; }

/* ---- 3.3 Jaune sur blanc : or foncé de la charte (déjà utilisé pour le silo téléopérateur de l'accueil),
   contraste 3,3 pour 1 (grands titres) au lieu de 1,5. Le trait ondulé jaune sous le mot reste jaune. */
body.jp-fin-1007.jp-pilier-to-body #jp-pilier-do-root h1 .sf-h1-curl { color: #B8860B !important; }
body.jp-fin-1007.jp-pilier-to-body #jp-pilier-do-root .sf-mp-sec-title { color: #B8860B !important; }
body.jp-fin-1007 #jp-pilier-do-root .sf-lo-bridge-num { color: #B8860B !important; }
/* articles du blog à accent jaune (rubrique téléopérateur) : même mot jaune dans le H1, même correction */
body.jp-fin-1007.jp-blog-accent-yellow #jp-pilier-do-root h1 .sf-h1-curl { color: #B8860B !important; }

/* ---- 3.6 Étoiles vides des notes : visibles (contraste 3 pour 1 au lieu de 1,5) --------------------- */
body.jp-fin-1007 #jp-pilier-do-root .sf-trust-card-stars .sf-stars-empty { color: #8D97A3 !important; }
