/*
Theme Name: Divi Child Weby Lab
Template: Divi
Version: 1.3-destockcoiff
*/

/* =========================================================================
   PORTEE DE LA NEUTRALISATION.            Destock Coiff, 4 septembre 2026.

   La version du kit neutralise les conteneurs Divi SUR TOUT LE SITE. C'est
   juste sur un site neuf, ou toutes les pages sortent de la chaine. Ce n'est
   pas tenable sur une refonte posee par-dessus un site existant.

   Mesure sur destockcoiff.net avant pose : 43 pages, dont 11 pages francaises
   et 16 pages espagnoles qui restent hors chantier, 21 articles, et les pages
   WooCommerce boutique, panier, commander, mon-compte. Toutes sont baties au
   constructeur Divi 4 et portent donc des conteneurs et_pb_*.

   Appliquee telle quelle, la regle font-size:0 des conteneurs frappe ces
   pages, et le retablissement ne vise que .et_pb_code_inner, c'est-a-dire nos
   modules Code, qu'elles n'ont pas. Elles sortent avec un texte de taille
   zero : balisage complet, page blanche, et rien pour le signaler. C'est le
   defaut mesure le 13 aout 2026 sur Pneus des 7 Chemins, ici a l'echelle de
   trente pages au lieu d'une.

   Deux portees, et deux seulement :

   body.wl-page        les pages qui portent un module 0. La classe est posee
                       par functions.php sur la sentinelle NE JAMAIS SUPPRIMER,
                       la meme que celle du controle hors-chaine de la regle
                       1.17. Elle vise le CONTENU et non le rang ni le titre.

   .et-l--header       les gabarits d'en-tete et de pied du Theme Builder. Ils
   .et-l--footer       sont rendus sur TOUTES les pages, y compris celles qui
                       n'ont pas de module 0, et ils ont besoin de la
                       neutralisation pour sortir bord a bord. Sans cette
                       seconde portee, l'en-tete casserait sur les trente
                       pages non refaites.

   Ce qui reste global, plus bas : le masquage du module 0, le contournement
   FitVids et les deux corrections du module texte. Aucun ne depend de la
   charte, aucun ne peut casser une page qui ne les rencontre pas.
   ========================================================================= */

/* Conteneurs Divi neutralises */
:is(body.wl-page,.et-l--header,.et-l--footer) :is([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;
}
:is(body.wl-page,.et-l--header,.et-l--footer) [class*="et_pb_row"]{display:block!important;float:none!important}

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

/* Conteneurs du theme.
   Ces trois lignes n'ont PAS de portee Theme Builder : elles visent la zone de
   contenu de la page, pas l'en-tete ni le pied. Appliquees hors wl-page, elles
   mettent la grille boutique, le panier et la commande a fond perdu, sans
   gouttiere, ce qui est le defaut le plus visible de la pose. */
body.wl-page :is(#main-content .container,#page-container .container){width:100%!important;max-width:100%!important;padding:0!important}
body.wl-page #main-content{padding-top:0!important}
body.wl-page .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. */
:is(body.wl-page,.et-l--header,.et-l--footer) :is([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.

   Meme portee que le font-size:0 qu'elle repare. Une portee plus large serait
   sans effet ailleurs, mais elle mentirait sur l'appariement des deux regles. */
:is(body.wl-page,.et-l--header,.et-l--footer) .et_pb_code_inner>*:not(style):not(script){font-size:16px!important;line-height:1.65!important}

/* =========================================================================
   CE QUI RESTE GLOBAL. Aucune de ces regles ne peut casser une page qui ne
   les rencontre pas : elles visent toutes un CONTENU precis.
   ========================================================================= */

/* 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}

/* 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.

   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}

/* LE MODULE TEXTE EST UN CONTENEUR FLEX EN DIVI 5.
   Sans effet en Divi 4, ou .et_pb_text_inner n'est pas un element flex. Laissee
   globale : elle ne coute rien ici et evite un ecart avec le kit le jour ou le
   site passe en Divi 5. */
.et_pb_text>.et_pb_text_inner{flex:1 1 100%;min-width:0;width:100%}

/* LE MODULE TEXTE AJOUTE SON PROPRE PADDING PAR-DESSUS LA SECTION.
   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. C'est aussi ce qui la rend sure sur un site existant. */
.et_pb_text:has(> .et_pb_text_inner > .wl-bloc){padding:0!important;margin:0!important}
