/*
Theme Name: Divi Child Weby Lab
Template: Divi
Version: 1.0
*/

/* Conteneurs Divi neutralises */
[class*="et_pb_section"],[class*="et_pb_row"],[class*="et_pb_column"],
[class*="et_pb_code"],[class*="et_pb_module"],.et_pb_code_inner{
  margin:0!important;padding:0!important;border:0!important;
  width:100%!important;max-width:100%!important;
}
[class*="et_pb_row"]{display:block!important;float:none!important}

/* Espacement automatique WordPress entre blocs */
.entry-content>*,.et_builder_inner_content>*,[class*="et_pb_column"]>*{margin:0!important}
.entry-content>*+*,[class*="et_pb_column"]>*+*{margin-block-start:0!important}

/* Conteneurs du theme */
#main-content .container,#page-container .container{width:100%!important;max-width:100%!important;padding:0!important}
#main-content{padding-top:0!important}
.entry-content{padding:0!important;margin:0!important}

/* Blancs entre modules.
   Divi laisse un noeud de texte entre deux modules Code. A la taille de police
   heritee, ce noeud produit une bande claire entre chaque section. On annule la
   taille sur les conteneurs, puis on la retablit sur le contenu des modules. */
[class*="et_pb_section"],[class*="et_pb_row"],[class*="et_pb_column"],
[class*="et_pb_code"],[class*="et_pb_module"],.et_pb_code_inner{
  font-size:0!important;line-height:0!important;gap:0!important;
  margin-block-start:0!important;margin-block-end:0!important;
}

/* Retablissement sur le contenu, sans dependre du prefixe du client.

   Cible TOUS les enfants directs sauf <style> et <script>. La version
   precedente ne visait que les <div> : un gabarit dont l'enfant direct est un
   <header> ou un <footer>, ce qui est le cas de l'en-tete et du pied du Theme
   Builder, heritait alors du font-size:0 des conteneurs et sortait invisible.
   Present dans le DOM, illisible a l'ecran. Mesure le 13 aout 2026.

   La restriction aux div existait pour ne pas rendre visible le bloc <style>
   du module 0. Elle n'a plus lieu d'etre : le module 0 est desormais masque en
   entier par la regle par contenu, plus bas.

   Pas de display:block ici. La version precedente le forcait, ce qui ecrasait
   le display:flex et le display:none des elements du gabarit, et faisait
   apparaitre la barre fixe mobile sur grand ecran. */
.et_pb_code_inner>*:not(style):not(script){font-size:16px!important;line-height:1.65!important}

/* Module 0, le bloc de styles de la page. Il ne porte rien de visible et ne
   doit pas occuper de hauteur.

   La regle vise le CONTENU, pas la position. La version precedente ciblait
   .et_pb_column>.et_pb_module:first-child, ce qui supposait que le module 0
   partage sa colonne avec les autres modules. Une page batie avec une colonne
   par module voyait alors TOUS ses modules ecrases a hauteur zero : HTML
   complet, validateur au vert, page entierement blanche, et rien pour le
   signaler. Mesure le 13 aout 2026 sur Pneus des 7 Chemins.

   Le selecteur ci-dessous dit exactement ce qu'on veut dire : un module dont le
   seul contenu est un bloc de styles ne s'affiche pas. Il est independant du
   rang, il survit a un reordonnancement, et il s'applique retroactivement aux
   sites existants sans toucher a leur contenu. */
.et_pb_module:has(> .et_pb_code_inner > style:only-child){display:none!important}

/* =========================================================================
   DEUX COMPORTEMENTS DE DIVI 5 QUI CASSENT DU CONTENU LIVRE.
   Ajoutes le 15 aout 2026, apres les avoir contournes une fois chez un client.
   Ils sont ici et non dans un module 0 : ils ne dependent d'aucune charte, ils
   corrigent Divi, et tout site qui pose un fil social ou un module texte les
   rencontre.
   ========================================================================= */

/* 1. FITVIDS HAPPE LES INTEGRATIONS SOCIALES.
   Divi enveloppe TOUTE iframe d'un module texte dans .fluid-width-video-wrapper,
   la met en position absolue et calcule un padding-top en pourcentage pour
   tenir un ratio de video. Une integration Instagram part avec height="28" :
   le wrapper tombe a zero, l'iframe n'a plus de boite, et le script d'Instagram
   ne la redimensionne jamais puisqu'il n'a rien a mesurer.

   Mesure sur un accueil : six iframes a 2 px de haut, fil invisible. Et
   FitVids n'en avait enveloppe que TROIS sur six, celles converties avant son
   passage : une regle qui vise l'enfant direct du wrapper en rate la moitie.
   D'ou le selecteur de descendance ci-dessous, qui couvre les deux cas.

   min-height et non height : il faut une boite pour que l'integration se
   charge, et il faut laisser le script poser sa hauteur reelle par-dessus. */
.fluid-width-video-wrapper:has(iframe.instagram-media),
.fluid-width-video-wrapper:has(iframe.tiktok-embed){
  padding-top:0!important;height:auto!important;position:static!important}
iframe.instagram-media,iframe.tiktok-embed{
  position:relative!important;top:auto!important;left:auto!important;
  min-height:560px}

/* 2. LE MODULE TEXTE EST UN CONTENEUR FLEX EN DIVI 5.
   .et_pb_text_inner y est un element flex sans base, donc il se retracte a la
   largeur de son CONTENU. Mesure : module a 1093 px, contenu a 409. Une grille
   en repeat(auto-fit,minmax(320px,1fr)) s'y resolvait a UNE colonne de 320 px
   au milieu de la page.

   Ce fichier neutralise les conteneurs Divi depuis le premier jour ; il a ete
   ecrit avant que le module texte ne passe en flex, et ne voyait donc pas ce
   cas. */
.et_pb_text>.et_pb_text_inner{flex:1 1 100%;min-width:0;width:100%}

/* 3. LE MODULE TEXTE AJOUTE SON PROPRE PADDING PAR-DESSUS LA SECTION.
   Mesure sur un accueil : .et_pb_text portait 26px en haut et 64px en bas, et
   la section rendue par le shortcode portait deja 64px de chaque cote. Le fil
   social se retrouvait avec 90px de vide au-dessus de son surtitre et 128px en
   dessous, la ou toutes les autres sections en ont 64.

   La regle vise NOS blocs, pas tous les modules texte : un module texte pose a
   la main par quelqu'un d'autre garde ses reglages Divi. C'est la meme logique
   que la neutralisation du module 0 plus haut, qui vise le CONTENU et non la
   position. */
.et_pb_text:has(> .et_pb_text_inner > .wl-bloc){padding:0!important;margin:0!important}
