/* wg2-test-pub.css — 2026-09-06
   Feuille des 4 PAGES D'ESSAI. Chargee en dernier, elle ne sert QUE les
   emplacements d'annonce. Aucune page du site ne l'appelle.

   ELLE NE PORTE AUCUN FOND, AUCUNE BORDURE, AUCUN LIBELLE, AUCUN REPLI.
   C'est ce que font les 860 pages du site qui rapportent : un div nu, une
   unite a taille fixe dedans, et plus personne n'y touche.

   La place d'un emplacement est prise par l'unite elle-meme — un
   <ins style="width:300px;height:250px"> occupe 300 x 250 des le parsing,
   avant que Google reponde. C'est pour ca que rien ne bouge au chargement,
   et c'est pour ca qu'il n'y a rien a reserver ici. */

.wg2 .wg-pub {
  display: block;
  text-align: center;
  width: 100%;
}

/* L'unite ne deborde jamais de la colonne qui la porte. */
.wg2 .wg-pub ins { max-width: 100%; }

/* Bloc direct, colonne de droite : la boite suit son unite, elle ne
   s'etire pas sur la hauteur de la colonne voisine. */
.wg2 .wg-direct__droite .wg-pub { flex: 0 0 auto; width: auto; }
.wg2 .wg-direct__droite .wg-pub ins { width: 300px; }

/* ------------------------------------------------------------------------
   LA RESERVE MOBILE — et elle est MESUREE, pas dessinee.

   Fait releve le 2026-09-06, a 375 px, sur SIX unites : Google reecrit le
   style inline de chaque <ins> en `width:375px;height:375px` avec un
   margin-left negatif pour le recentrer. Il le fait sur ma page d'essai ET
   sur `direct8.htm`, page d'origine qui rapporte depuis vingt ans — donc ce
   n'est ni le nouveau design ni un defaut du site : c'est ce que le compte
   AdSense sert sur telephone.

   L'unite est declaree 300x250 dans la page et rendue 375x375 : la page
   grandit de 125 px d'un coup, et c'est CA le saut que Phil voit. On reserve
   donc la hauteur qu'on a mesuree, pour que la place soit prise avant que
   Google reponde.

   ⚠ On ne reserve QUE sous 768 px, et QUE la hauteur — jamais un fond, une
   bordure ou un libelle : ce n'est pas une boite de maquette, c'est la place
   d'une annonce dont on connait la taille pour l'avoir relevee. */
@media (max-width: 767px) {
  /* ⛔ LA RESERVE DE 375 px EST RETIREE — Phil, 2026-09-06 au soir, sur
     capture de la page d'essai chaine servie : « du vide », « c'est quoi
     cette merde ». Il avait raison, et LA RESERVE ETAIT DE MA MAIN.

     MESURE SUR SA PAGE, a 500 px, du bas du lecteur au titre « En ce moment
     sur TF1 » : 677 px de blanc, dont
       250  le pave, annonce declaree 300 x 250 — sa place, legitime
       125  MA RESERVE EN TROP : min-height 375 sur une unite qui fait 250
       100  le bandeau
       202  les marges

     Le motif de la reserve etait juste et la conclusion fausse : Google
     reecrit bien le pave en 375 x 375, mais SEULEMENT sous ~400 px. A 500 px
     — la largeur de sa capture — l'unite garde ses 250, et ma reserve ne
     reservait plus rien : elle ajoutait 125 px de blanc, tout le temps.

     ⚠ ET LE PAVE N'A BESOIN D'AUCUNE RESERVE : il declare `width:300px;
     height:250px` en dur, donc il prend sa place DES LE PARSING. C'est la
     regle 4 des cinq regles des pages d'essai, et je l'avais contredite en
     posant une reserve par-dessus.
     Le prix est connu et dit : sous ~400 px, quand Google reecrit l'unite en
     375, la page grandit de 125 px a cet instant. Phil a tranche ce meme
     compromis deux fois aujourd'hui, et les deux fois contre le blanc.

     ⚠ SEUL LE BANDEAU GARDE UNE RESERVE, parce que lui n'a AUCUNE hauteur
     declaree — c'est une unite responsive, elle se rend a zero tant que
     Google n'a pas repondu. Sa reserve vaut donc exactement la borne posee
     en fin de feuille : 100 px, jamais 375.

     LA REGLE, EN UNE LIGNE : la reserve d'une boite vaut la hauteur DECLAREE
     de son unite. Rien n'est invente, plus aucune valeur ne peut diverger.

     ⚠ CE QUE LA RESERVE DE 375 FAISAIT AU BANDEAU, ET QUI EST CORRIGE DU
     MEME COUP : elle s'appliquait a LUI AUSSI, alors que la derniere regle
     de cette feuille le borne a 100 px sur la demande de Phil. Une unite
     coupee a 100 dans une boite reservee a 375, c'etait 275 px de blanc —
     exactement le vide que la borne devait couper. Elle ne coupait rien,
     elle deplacait le vide de l'annonce vers la boite.
     Mesure a 375 px, avant : 2 119 px de blanc sur les cinq pages, dont
     2 025 par ce seul motif — chaine 2 x 275, hub 375, programme 3 x 275,
     index 275.

     ⚠ Et la reserve du bandeau ne borne rien vers le haut : quand Google
     remplit vraiment il ecrit `height:auto !important` sur l'unite (mesure :
     382 px sur trois pages), et un `min-height` laisse toujours grandir. */
  .wg2 .wg-pub:has(ins[data-ad-format="horizontal"]) { min-height: 100px; }
}

/* ------------------------------------------------------------------------
   L'ECART AUTOUR DE TOUTE PUB : 20 px, partout, aux deux vues.

   Phil, 2026-09-06, apres avoir vu les pages servies : « le format n'est pas
   livre sous format de pub aux dimensions de l'encart, ou je me trompe ? et
   donc on a mis beaucoup de blancs en haut et en bas de l'annonce ».
   Il ne se trompait pas. MESURE SUR SES CAPTURES : Google ne livre pas un
   bandeau 728 x 90 mais le format « liens de recherche associes », haut de
   32 px sur une ligne et 62 a 66 px sur deux. Avec 30 px de chaque cote, on
   encadrait 62 px d'annonce par 60 px de blanc.
   Sa decision : « 20px ok, on peut toujours changer apres ».

   UNE SEULE VALEUR, UNE SEULE REGLE, PAS DE PALIER. C'est ce qu'il demande
   depuis le debut de la session : « fais simple ».

   ⚠ On SUPPRIME la marge du voisin plutot que de la compenser : sans ca
   l'ecart vaut la somme des deux, ce qui a donne 47 px pour 20 poses sur
   l'accueil. Une seule source par ecart.
   ⚠ `:not(.wg-pub)` : sans lui, une pub qui SUIT une pub perdait sa marge
   (mesure : deux emplacements a 0 sur la page programme). */
.wg2 .wg-pub { margin-top: 20px; margin-bottom: 20px; }
.wg2 .wg-pub + *:not(.wg-pub) { margin-top: 0; }

/* CONTENEUR EN FLEX AVEC `gap` : LA MARGE DE LA PUB EST UNE SECONDE SOURCE.
   ⚠ En flex les marges NE SE COLLAPSENT PAS : elles s'AJOUTENT au gap.
   Mesure sur l'accueil a 1280 px, emplacement VIDE (hauteur 0) :
     gap 40 + margin 20 = 60 px au-dessus ET 60 en dessous, soit 120 px de
     vide, quand deux sections voisines sont separees de 73.
   Les sections voisines portent `margin: 0` et ne comptent QUE sur le gap :
   la pub fait pareil. Une seule source par ecart.
   ⚠ La marge generale reste posee pour les conteneurs en BLOC, ou il n'y
   a pas de gap : on ne la retire que la ou le gap la double. */
.wg2 .wg-acc-sections > .wg-pub { margin-top: 0; margin-bottom: 0; }

/* DEUX EMPLACEMENTS COLLES : LE SECOND PART. Consigne de Phil, 2026-09-05 :
   « 1 ou 2 pubs, s'il y en a deux tu enleves », puis « tu fais pareil pour
   les autres pages du meme genre ».
   ⚠ LA PORTEE SE LIT DANS LA PAGE, elle ne s'enumere pas : toute page ou
   deux conteneurs de pub se suivent y tombe, y compris une page ajoutee
   demain. Une liste ecrite a la main serait fausse au premier ajout.
   Mesure sur programme-tv.php a 1280 px : emplacements a y=197 et y=317,
   120 px d'ecart. Celui du bas de page (y=3388) n'est PAS touche : il n'est
   le voisin de personne.
   ⚠ On masque un emplacement que Phil SUPPRIME : ce n'est pas l'incident
   du 2026-09-04, ou une reserve encore attendue etait masquee et ne pouvait
   donc plus jamais se remplir. Ici l'emplacement ne doit plus exister. */
.wg2 .wg-contenu > .wg-pub + .wg-pub { display: none; }
/* ⚠ DEUX FORMES DE CONTENEUR, mesurees sur le hub /tele/ le 2026-09-05 :
   un bloc qui EST la pub (`.wg-encart-mobile.wg-pub`) et un bloc qui la
   CONTIENT (`.wg-hubtele-pub` > `.wg-pub`). La regle ci-dessus ne voyait que
   la premiere, et laissait passer la paire y=2112 / y=2242 du hub. */
.wg2 .wg-contenu > :is(.wg-pub, :has(> .wg-pub)) + :is(.wg-pub, :has(> .wg-pub)) { display: none; }

/* MEME CONSIGNE, CAS DU HUB PROGRAMMES : les deux emplacements y sont
   separes par l'accroche, donc l'adjacence directe ci-dessus ne les voit
   pas. Mesure sur programmes-tv.html : bandeau y=177, second y=375.
   Ecrit nommement, avec son motif, plutot que d'elargir la regle du dessus
   a tous les freres -- ce qui emporterait aussi la pub de bas de page. */
.wg2.hub-programmes .wg-contenu > .wg-encart-mobile.wg-pub { display: none; }

/* HUB PROGRAMMES : LA BANNIERE DE TETE NE DOUBLE PLUS SES ECARTS.
   Consigne de Phil, 2026-09-05 : « coherent mais trop d'espace en haut et
   en bas ».
   Mesure a 1280 px, AVANT : le conteneur fait 130 px pour une pub de 90 --
   20 px de marge interne de chaque cote -- et il est deja separe de 24 par
   le padding du corps en haut et par la marge de l'accroche en bas.
   L'espace REEL etait donc 44 / 44 pour 24 / 24 annonces.
   On retire la marge interne : le padding du corps et la marge de l'accroche
   portent deja l'ecart. Une seule source de chaque cote. */
.wg2.hub-programmes .wg-contenu > .wg-hub-pub .wg-pub { margin-top: 0; margin-bottom: 0; }

/* HUB TELE : BANNIERE DE TETE, +10 EN HAUT / -10 EN BAS.
   Consigne de Phil, 2026-09-05, EN PLEIN ECRAN : « trop peu d'espace en
   haut, ajouter 10 px au chiffre que tu as deja, trop d'espace en bas,
   reduire de 10 px ».
   Valeurs LUES sur la page servie avant de toucher, a 1912 px :
     au-dessus de l'unite = 20 (la marge interne seule)
     en dessous            = 44 (marge interne 20 + padding du corps 24)
   Donc 30 en haut, 34 en bas -- la marge du bas passe a 10 puisque le
   padding du corps en apporte deja 24.
   ⚠ On ne touche pas au padding du corps : il cale les colonnes. */
/* .wg2.hub-tele .wg-hubtele-pub .wg-pub { margin-top: 30px; margin-bottom: 10px; } */

/* HUB TELE : LA PUB DU MILIEU REMONTE DE 30.
   Consigne de Phil, 2026-09-05, en plein ecran : « remonter la pub 2 d'au
   moins 30 px ».
   Mesure a 1912 px AVANT : ecart de 44 au-dessus. Il ne venait PAS de la
   pub (marge 20) mais du `margin-bottom: 44px` de la grille de chaines
   juste au-dessus : deux marges qui se collapsent gardent la plus grande,
   donc changer celle de la pub n'aurait rien fait.
   On supprime la marge du voisin -- la source -- et on pose 14 sur la pub :
   44 - 30 = 14, exactement les 30 px demandes. */
.wg2.hub-tele .wg-contenu > *:has(+ .wg-encart-mobile.wg-pub) { margin-bottom: 0; }
.wg2.hub-tele .wg-contenu > .wg-encart-mobile.wg-pub { margin-top: 14px; }

/* PAGES LISTE : LA PUB S'ALIGNE SUR LE RYTHME DE 17, UNE SEULE SOURCE.
   Consigne de Phil, 2026-09-05 : « interlignage incoherent, voir les autres
   pages de liste pareil ».
   Ces pages posent leur rythme avec des CALES explicites -- `.wg-ecart-24`,
   ramenee a 17 px sur sa consigne (wg2-liste-tv.css). La pub ajoutait ses
   20 px PAR-DESSUS la cale, ce qui faisait DEUX sources au-dessus.
   Mesure a 1280 px sur les 12 pages Liste, AVANT : 37 au-dessus (cale 17 +
   marge 20), 20 en dessous, 17 partout ailleurs -- trois valeurs.
   APRES : 17 des deux cotes, comme le reste de la page.
   ⚠ On SUPPRIME la marge du haut, on ne la compense pas : la cale la porte
   deja. Le bas garde une marge parce qu'aucune cale ne suit la pub.
   ⚠ Les 12 pages ont la meme structure -- cale, pub, accroche -- verifie
   page par page avant d'ecrire, pas suppose. */
.wg2.liste-tv .wg-contenu > .wg-pub { margin-top: 0; margin-bottom: 17px; }

/* ⚠ ET LA PUB DE BAS DE PAGE N'EST PAS DANS LE MEME CAS -- corrige le
   2026-09-05 sur reprise de Phil : « la pub est toujours collee au bouton
   facebook », et c'est la 2e fois qu'il doit le dire.
   La regle ci-dessus posait `margin-top: 0` sur TOUTES les pubs de ces
   pages. C'est juste pour celle du HAUT, qui a une cale de 17 devant elle,
   et FAUX pour celle du BAS, ajoutee apres et qui n'en a aucune : mesure a
   1912 px, elle sortait a 0 px du bouton Facebook.
   Le rythme de fin de ces pages est 44 (rangee -> section, partage ->
   section, chaines -> rubriques, rubriques -> facebook : 44 partout).
   Elle le prend. */
.wg2.liste-tv .wg-contenu > .wg-pub:last-child { margin-top: 44px; }
/* PAGES LISTE, COLONNE DE DROITE : L'ECART SOUS LE GRATTE-CIEL EGALE CELUI
   SOUS LE LISERE.
   Consigne de Phil, 2026-09-07 : « bandeau colonne de droite, pas assez
   d'interligne entre fin du bandeau et lisere logo. L'ecart doit etre le
   meme qu'avec Lisere et "Jeux en ligne" ».

   MESURE AVANT, a 1280 px sur tele-art-cinema.htm, A L'ENCRE et non aux
   boites -- aux boites les deux valaient 20 et l'ecart etait invisible :
     bas de l'annonce  -> lisere                     27 px
     lisere -> encre de « Jeux en ligne »            26 px

   ⚠ ET LES 27 SONT DEUX SOURCES, PAS UNE : la marge de 20 px, plus 7 px de
   blanc fantome sous l'annonce. L'unite AdSense est en `inline-block`, donc
   sa boite reserve la descente de la ligne -- `.wg-pub__unite` mesure 607 px
   pour une annonce de 600. On SUPPRIME cette source au lieu de la compenser :
   sinon le bas de la boite et le bas de l'annonce ne coincident jamais, et
   toute mesure future repart faussee.
   ⚠ `line-height: 0` porte sur le CONTENEUR, jamais sur l'unite : il ne
   touche ni sa taille, ni son display, ni sa largeur. Une unite de largeur
   nulle ne se remplit jamais -- c'est l'incident du 2026-09-04.

   APRES : 25 px des deux cotes du lisere. */
.wg2.liste-tv .wg-colonne-droite .wg-pub__unite { line-height: 0; }
.wg2.liste-tv .wg-colonne-droite > .wg-pub { margin-bottom: 25px; }


/* PAGES PROGRAMMES : LA BANNIERE DE TETE NE POUSSE PLUS.
   Consigne de Phil, 2026-09-05 : « trop d'espace en haut de la baniere,
   reduire, ca doit etre coherent avec l'interligne suivant », puis
   « pareil pour les pages identiques ».
   Mesure a 1280 px sur programme-tv.php, AVANT : 44 px de vide entre le bas
   de la barre de navigation et la banniere, contre 20 px en dessous d'elle.
   ⚠ ON NE TOUCHE PAS AU `padding-top` DU CORPS : mesure faite avant
   d'ecrire, ses TROIS colonnes -- liens, contenu, colonne de droite --
   demarrent toutes a 177. Le reduire les remonterait toutes les trois,
   sur des pages deja validees. On retire donc la seule marge de la pub.
   ⚠ La marge visee est celle du `.wg-pub` INTERNE : elle remonte par
   collapsing et devient la marge effective du conteneur, dont le
   `margin-top` propre vaut deja 0 -- viser l'externe ne ferait rien. */
/* ⚠ 2026-09-05, consigne suivante de Phil, EN PLEIN ECRAN : « la baniere
   commence trop haut, agrandir l'espace de 9 px, que tu ajoutes au chiffre
   que tu as deja ». Valeur LUE sur la page servie a 1912 px avant de
   toucher : 24. Donc 24 + 9 = 33.
   La marge est posee sur le conteneur EXTERNE et l'interne reste a 0 :
   deux marges qui se collapsent ne s'additionnent pas, mais en poser deux
   rendrait la valeur servie illisible au prochain reglage. Une seule. */
.wg2.programmes .wg-contenu > .wg-pub:first-child > .wg-pub { margin-top: 0; }
.wg2.programmes .wg-contenu > .wg-pub:first-child { margin-top: 9px; }
/* ⚠ « et pareil pour la petite baniere en bas » (Phil, 2026-09-05).
   Mesure AVANT sur programme-tv.php a 1912 px : 44 au-dessus, 0 en dessous.
   Elle recoit le meme ecart de 33 que celle du haut. La valeur differe du
   `9px` ci-dessus parce que la premiere beneficie deja des 24 px de padding
   du corps, et pas les suivantes : 24 + 9 = 33 d'un cote, 33 pose
   directement de l'autre. Meme resultat servi. */
.wg2.programmes .wg-contenu > .wg-pub:not(:first-child) { margin-top: 33px; }
.wg2.programmes .wg-contenu > .wg-pub > .wg-pub { margin-top: 0; }
/* ⚠ ET LE VOISIN D'AU-DESSUS PORTAIT LA SECONDE SOURCE : `.wg-prog-tuiles`
   a un `margin-bottom: 44px`, plus grand que mes 33, donc c'est LUI qui
   gagnait -- la regle etait bien appliquee et l'ecart restait a 44.
   On supprime la marge du bloc qui precede une pub, comme le fait deja la
   regle symetrique pour celui qui la suit. La portee se LIT : tout bloc
   suivi d'une pub, quel qu'il soit. */
.wg2.programmes .wg-contenu > *:has(+ .wg-pub) { margin-bottom: 0; }

/* ⚠ ET L'ECART SOUS LA BANNIERE : Phil, 2026-09-05, « pub 3 interlignage
   incoherent, pas assez d'espace en bas de la banniere ».
   Mesure a 1912 px sur programme-tv.php : 0 px sous la banniere du bas,
   contre 33 au-dessus. Elle recoit les memes 33, donc symetrique. */
.wg2.programmes .wg-contenu > .wg-pub { margin-bottom: 33px; }
/* ⚠ ET IL FAUT 1 PX POUR QUE CET ECART EXISTE QUAND L'UNITE EST VIDE.
   Phil, 2026-09-05 : « pareil, ca n'a pas ete fait » -- et il avait raison
   de ce qu'il voyait. Contre-epreuve faite avant d'ecrire : en forcant
   l'unite a 90 px, l'ecart sortait bien a 33 / 33. Mais un bloc de hauteur
   ZERO voit ses marges haute et basse FUSIONNER en une seule, d'ou 33
   au-dessus et 0 en dessous -- exactement ce qu'il mesurait a l'oeil.
   1 px suffit a les separer, et c'est 1 px : ce n'est pas la reserve de
   hauteur qui a coute la nuit du 2026-09-04, ou un emplacement non rempli
   se voyait imposer un bloc de 280 px. */
.wg2.programmes .wg-contenu > .wg-pub { min-height: 1px; }

/* HUB PROGRAMMES : +9 SUR LA BANNIERE DE TETE, meme consigne que les pages
   Programmes (Phil, 2026-09-05). Valeur LUE avant de toucher : 24.
   24 (padding du corps) + 9 = 33. */
.wg2.hub-programmes .wg-contenu > .wg-hub-pub:first-child { margin-top: 9px; }

/* ⚠ ET CELLE DU BAS PREND LE RYTHME DE LA PAGE, PAS LE MEME CHIFFRE.
   Phil, 2026-09-05 : « bas de page, la pub est trop collee au bouton
   Facebook, interlignage coherent comme les autres interlignes ».
   Mesure a 1912 px : les blocs de cette page sont separes de 44
   (rubriques -> facebook = 44, chaines -> rubriques = 44) et la pub du bas
   n'avait que 9. Elle passe a 44.
   Le 9 du haut n'est PAS le meme cas : il s'ajoute aux 24 du padding du
   corps pour faire les 33 demandes. En bas il n'y a pas de padding. */
.wg2.hub-programmes .wg-contenu > .wg-hub-pub:not(:first-child) { margin-top: 44px; }

/* FICHES CHAINE : LE PAVE SE CENTRE DANS LE BLOC DU LECTEUR.
   Consigne de Phil, 2026-09-05 : « incoherent, trop d'espace en bas de la
   baniere. reparer aussi sur les pages identiques ».
   Mesure a 1280 px sur euronews.htm, AVANT : dans le bloc noir, 70 px
   au-dessus du pave et 280 en dessous. Cause : la colonne de droite s'etire
   a la hauteur du lecteur (507 px) et le pave (257) reste cale en haut,
   d'ou 250 px de vide sous lui.
   ⚠ ON NE TOUCHE NI AU `padding` DU BLOC NOIR NI A `.wg-direct` : ce
   retrait POSITIONNE le contenu du bloc, et y toucher a deja casse
   l'alignement du lecteur le 2026-09-06. On agit sur la seule colonne de
   droite, dont le pave est le SEUL enfant -- verifie avant d'ecrire, donc
   rien d'autre ne peut bouger. */
/* ⚠ CORRIGE LE 2026-09-05, consigne suivante de Phil : « remonter pub 1
   au sommet de la video afin d'aligner horizontalement video et pub ».
   Le centrage pose plus tot repondait a « trop d'espace en bas » ; il
   demande maintenant l'alignement en haut, et sa consigne du jour prime.
   Mesure a 1912 px AVANT : video a 332, pave a 457, soit 125 px d'ecart.
   La marge haute du pave part avec, sinon elle rajoute 20.
   ⚠ Consequence assumee et dite : le vide repasse EN BAS de la colonne,
   puisque le pave (257) est plus court que le lecteur (507). */
.wg2.fiche-chaine .wg-direct__droite { justify-content: flex-start; }
.wg2.fiche-chaine .wg-direct__droite > .wg-pub { margin-top: 0; }

/* FICHES CHAINE : LE PAVE SEUL SE CALE A GAUCHE, PLUS A DROITE.
   Consigne de Phil, 2026-09-05, en plein ecran, sur 13erue.html :
   « l'encart se retrouve decale en bas [...] c'est inacceptable, a reparer
   sur toutes les pages similaires ».
   ⚠⚠ CETTE REGLE INVERSE UNE DECISION ECRITE DANS wg2-fiche-chaine.css
   (ligne ~2449) : le `margin-left: auto` y avait ete pose EXPRES pour garder
   la reserve a droite quand la colonne de gauche manque, et son commentaire
   dit « la position est desormais DEMANDEE ». Phil tranche autrement
   aujourd'hui ; sa decision du jour bat celle d'avant. L'ancienne regle est
   laissee en place et surchargee ici, pour que l'ecart reste lisible.
   Mesure a 1912 px sur 13erue.html : le pave etait a x=1229 dans un bloc qui
   commence a x=599, soit 630 px de vide a sa gauche.
   ⚠ La portee se LIT dans la page -- `:only-child` -- donc les 12 fiches
   qui ONT une colonne de gauche ne sont pas touchees, et une page qui en
   gagnerait une demain sortirait de la regle toute seule.
   Population mesuree avant d'ecrire : 55 fiches sur 67. */
/* ⚠⚠ CORRIGE LE 2026-09-05 SUR REPRISE DE PHIL : « la pub, a droite du
   div de gauche, reduire la colonne de gauche si besoin ».
   Mon premier geste avait cale le pave A GAUCHE, sous la fiche. Ce n'etait
   pas la demande : il le veut A DROITE de la fiche, sur la MEME ligne.
   Le bloc du pave a donc ete deplace AVANT `.wg-fiche` dans les 55 pages
   (un flottant ne remonte jamais a cote d'un bloc qui le precede), et il
   flotte a droite ; la fiche s'ecoule a sa gauche et se reduit d'elle-meme.
   ⚠ La portee se LIT : `:only-child`. Les 12 fiches qui ont une colonne
   de gauche gardent leur mise en page a deux colonnes. */
/* ⚠⚠ REMPLACE LA VERSION PRECEDENTE, sur consigne de Phil du 2026-09-05 :
   « il y a beaucoup trop d'espace blanc dans cette zone [...] tfx et les
   autres n'en ont pas autant. A verifier, analyser et corriger. »
   Mesure a 1912 px AVANT : le pave fait 257 px et le contenu a cote est
   bien plus court -- 48 px sur t18 et novo19, 126 sur une fiche sans
   colonne gauche -- et le texte suivant etait POUSSE SOUS le pave au lieu
   de s'ecouler a cote. D'ou 293 px de blanc sur t18.
   Le pave flotte donc a droite dans TOUS les cas, avec ou sans colonne de
   gauche, et le texte l'habille.
   Gain MESURE avant d'ecrire, en injectant la regle : t18 -205 px,
   novo19 -181, nt1 -48, tf1 -45.
   ⚠ Le `clear` disparait : c'est lui qui repoussait le texte dessous. */
.wg2 .wg-deux-colonnes { display: block; }
.wg2 .wg-deux-colonnes > .wg-deux-colonnes__droite {
  float: right;
  width: var(--wg-colonne-pub, 300px);
  margin-left: 24px;
}

/* ⚠ SOUS 768 px LE FLOTTANT DISPARAIT : sur telephone la colonne passe
   sous le contenu et se centre (regle de wg2-fiche-chaine.css ~2473).
   Sans cette annulation, un pave de 300 flotterait dans une colonne de 347
   et le texte s'ecraserait a cote. */
@media (max-width: 767px) {
  .wg2 .wg-deux-colonnes > .wg-deux-colonnes__droite {
    float: none;
    width: auto;
    margin-left: auto;
  }
}

/* --------------------------------------------------------------------------
   BLOC « D'AUTRES CHAINES ... » : LES DEUX ECARTS SE RESSERRENT.
   ⚠ Ces deux regles ne concernent PAS la publicite ; elles sont ici parce
   que cette feuille se charge en dernier, et elles sont signalees comme
   telles pour qu'on sache ou les chercher.
   -------------------------------------------------------------------------- */
/* Consigne de Phil, 2026-09-05, sur itele.htm : « tu reduis l'espace vertical
   entre "D'autres chaines d'information :" et "BFM - LCI - Euronews -
   France 24" [...] et il y a trop d'espace vertical entre [ces liens] et
   "Au sujet de C News" ».
   Valeurs LUES a 1912 px avant de toucher : 24 px pour le premier ecart,
   44 px pour le second.
   Les nouvelles valeurs ne sont pas inventees : ce sont les deux crans plus
   serres que la page emploie deja -- son rythme releve donne 16, 24 et 44.
   ⚠ PORTEE : le selecteur se LIT dans la page (`:has(.wg-soustitre)`),
   donc il attrape les 8 fiches qui portent ce bloc -- itele et lci, mais
   aussi tf1, eurosport, eurosport2, idf1 et syfy, ou la structure est la
   MEME. Phil a dit « les autres pages d'info qui ont ce type de liens » :
   c'est signale, a lui de restreindre s'il ne veut que les deux d'info. */
.wg2 .wg-deux-colonnes__gauche .wg-soustitre { margin-bottom: 16px; }
.wg2 .wg-deux-colonnes:has(.wg-soustitre) + .wg-section { margin-top: 24px; }

/* LOGO DE FICHE : PLUS DE DEFORMATION.
   Consigne de Phil, 2026-09-05 : « le logo T18 est deforme ».
   Mesure a 1912 px sur t18.html : fichier 140 x 140, page declarant
   140 x 140, RENDU 140 x 90 -- rapport 1.556 au lieu de 1.000.
   Cause : la boite fait 160 x 90 et l'image ne porte que `max-width: 100%`
   et `max-height: 100%` (wg2-fiche-chaine.css ~2395). Quand seule la
   hauteur mord, la largeur reste celle de l'attribut : l'image s'ecrase.
   `object-fit: contain` fait tenir l'image dans la boite EN GARDANT son
   rapport ; `width/height: auto` laisse le navigateur calculer le cote
   libre au lieu de reprendre l'attribut. */
.wg2 .wg-fiche__logo img {
  width: auto;
  height: auto;
  object-fit: contain;
}

/* « Trop d'espace vertical entre [le dernier paragraphe] et Partagez »
   (Phil, 2026-09-05). Mesure AVANT : 44. Ramene au cran de 24 que la page
   emploie deja, comme les deux ecarts precedents. */
.wg2.fiche-chaine .wg-para + .wg-section { margin-top: 24px; }

/* ⚠⚠ LES -14 px HORIZONTAUX SONT RETIRES - Phil, 2026-09-07, sur capture du
   hub tele en vue telephone : « pub2 est colle au bord gauche, pas bon ».

   MESURE AVANT, a 375 px : la boite de l'encart va de 0 a 347, quand la
   colonne de contenu va de 14 a 361. Les marges negatives la DECALENT de
   14 px vers la gauche SANS l'elargir - elle touche donc le bord de l'ecran
   d'un cote et laisse 14 px de blanc de l'autre.

   ⚠ LE MOTIF D'ORIGINE N'A PLUS D'OBJET : ces -14 servaient a faire tenir
   une unite FIXE de 320 px dans une colonne de 347. Cet encart 320x50 a ete
   retire des 79 pages de chaine le 2026-09-04, sur decision de Phil. Les
   unites qui restent ici sont responsives : elles prennent la largeur qu'on
   leur donne, et 347 leur va.

   PORTEE MESUREE avant d'ecrire, pas supposee : l'encart n'est plus visible
   que sur DEUX familles - le hub tele (1 encart) et les pages Liste
   (2 encarts chacune). Fiches chaine, Programmes et accueil n'en ont plus.

   APRES : l'encart s'aligne sur la colonne, comme tous les autres blocs. */
@media (max-width: 767px) {
  .wg2 .wg-encart-mobile.wg-pub { margin-left: 0; margin-right: 0;
                                  padding-top: 0; }
}

/* LA HAUTEUR DES BANDEAUX EST RESERVEE - 2026-09-06.
   Une unite responsive n'a pas de hauteur avant que Google reponde : la page
   se rend a zero, puis tout descend quand l'annonce arrive. Mesure : le CLS
   passait de 0.008 a 0.203 sur la page programme rien qu'en passant au
   responsive.
   On reserve donc la hauteur d'un bandeau - 90 px, celle que Google rend le
   plus souvent sur cette famille - pour que la place soit prise des le
   parsing. Les paves et le gratte-ciel n'en ont pas besoin : leur taille est
   ecrite dans la page. */
/* ⚠ LA RESERVE DE 90 px EST RETIREE - Phil, 2026-09-06, sur capture :
   « c'est quoi ce blanc la ? ». Elle valait 90 px + 40 de marges = 130 px de
   blanc sous le lecteur quand aucune annonce ne vient.
   Il avait dit « garder le vide : ok » ; il a change d'avis en le voyant, et
   c'est son droit. Le prix est connu et mesure : la page descend un peu quand
   l'annonce arrive - CLS 0.045 au lieu de 0.0002 sur l'accueil.
   .wg2 .wg-pub ins[data-ad-format="horizontal"] { min-height: 90px; } */

/* ⚠ LA HAUTEUR DES BANDEAUX EST BORNEE A 100 px - Phil, 2026-09-06, sur deux
   captures : « c'est quoi ce blanc la ? », « c'est quoi ce vide sur hub
   tele ? ».
   MESURE : quand Google ne remplit pas une unite responsive, il lui donne
   280 px de haut. C'est ca, le vide - 280 px de blanc au milieu de la page.
   Les vraies annonces horizontales, elles, font 90 ou 100 px (mesure sur les
   5 pages : 930x90, 1160x90, 700x100, 347x90). Borner a 100 coupe donc le
   vide et NE COUPE AUCUNE annonce reelle - ce qui serait une infraction aux
   regles AdSense. */
.wg2 .wg-pub ins[data-ad-format="horizontal"] { max-height: 100px; }

/* ------------------------------------------------------------------------
   ⛔⛔ ET LE PAVE ET LE GRATTE-CIEL SE BORNENT AUSSI — 2026-09-06 au soir,
   sur SEPT captures de Phil : « il y a du boulot ».

   LE FAIT QUE LA MESURE SUR SA PAGE SERVIE A SORTI, ET QUI RETOURNE CE QUE
   CETTE FEUILLE CROYAIT : GOOGLE REECRIT MEME UNE UNITE A TAILLE FIXE.

   Le pave est declare `width:300px; height:250px` en dur dans la page —
   c'est la regle 4 des cinq regles, et elle etait censee suffire. Mesure a
   412 px sur `_essai-chaine.htm`, style inline RELU dans la page servie :

     display: inline-block; width: 412px; HEIGHT: 412px;
     margin-left: -112px; z-index: 30;

   Google a remplace 300 x 250 par 412 x 412 — la largeur de l'ecran, en
   carre — SANS ANNONCE DEDANS (aucune iframe, statut `unfill-optimized`).
   DEUX paves sur cette page : 824 px de blanc, et c'est le vide des
   captures.

   ⚠ « Une taille fixe protege » etait donc FAUX, et c'etait ecrit en tete
   de ce fichier. Ce qui protege, c'est une BORNE — et la mesure le prouve
   sur le bandeau, dans la meme page au meme instant : il porte lui aussi
   `height: 412px` en inline, et il rend 100, parce que la ligne du dessus
   le borne. Un `max-height` de feuille bat un `height` inline : ce n'est
   pas une question de priorite de source, c'est la cascade.

   ⚠⚠ ET AUCUNE ANNONCE REELLE N'EST COUPEE, ce qui serait une infraction
   aux regles AdSense : la borne vaut la hauteur que PHIL a declaree dans
   son panel le 2026-09-06, unite par unite. Une annonce de ce slot ne peut
   pas etre plus haute que le format du slot.

     1874839890  WG2 Bandeau   responsive  -> 100  (ligne du dessus, mesuree)
     3363181382  WG2 Pave      300 x 250   -> 250
     3370437745  WG2 Colonne   160 x 600   -> 600

   ⚠ On vise par SLOT et non par format : le slot EST l'identite de
   l'unite, et sa taille est fixee dans le compte de Phil. Le format, lui,
   est absent du pave (`data-ad-format` vaut null) — il n'y avait rien a
   viser.
   ⚠ Et on ne replie a zero NULLE PART : c'est l'incident n°1 de la mise en
   ligne, huit jours sans revenu. On borne la hauteur, on ne masque pas. */
.wg2 .wg-pub ins[data-ad-slot="3363181382"] { max-height: 250px; }
.wg2 .wg-pub ins[data-ad-slot="3370437745"] { max-height: 600px; }

/* ------------------------------------------------------------------------
   SUR TELEPHONE, LE BLOC DIRECT PERD SON RETRAIT VERTICAL - 2026-09-06 au
   soir, sur la capture de Phil : « du vide », « c'est quoi cette merde ».

   MESURE SUR LA PAGE SERVIE, a 500 px : entre le pave et le bandeau il y
   avait 114 px de blanc, et QUATRE sources se cumulaient pour un seul ecart
     20  marge basse du pave
     50  le `padding` vertical de `.wg-direct`
     24  le `.wg-ecart-24`
     20  marge haute du bandeau

   Le retrait de 50 px sert la vue ORDINATEUR, ou les deux colonnes du bloc
   direct sont cote a cote. Sous 768 px elles s'empilent : ce retrait ne
   separe plus rien, il ajoute 100 px de blanc (50 en haut, 50 en bas).

   ⚠ La vue ordinateur n'est PAS touchee - la regle vit dans le media
   telephone, et le retrait y garde ses 50 px.
   ⚠ On SUPPRIME une source, on n'en compense aucune : les ecarts autour des
   annonces restent portes par la seule marge de 20 px posee plus haut. */
/* ⛔ CETTE REGLE EST ANNULEE — Phil, 2026-09-06 : « page Chaine : tu as
   casse tout l'alignement qu'il y avait. C'est moche. IL FAUT REPARER. »

   Il avait raison, et le defaut etait de ma main. J'avais retire le retrait
   vertical de `.wg-direct` sous 768 px pour gagner les 100 px que ce retrait
   ajoute quand les deux colonnes s'empilent — mesure juste, conclusion
   fausse : ce retrait ne fait pas que separer, il POSITIONNE le contenu du
   bloc noir. Le retirer a decale le logo et le bouton de lecture.

   ⚠ Les 100 px qu'il ferait gagner ne valent pas un alignement casse. La
   regle est retiree, pas remplacee : on revient a l'etat qu'il avait valide.

   .wg2 .wg-direct { padding-top: 0; padding-bottom: 0; }   <- ANNULEE */

/* ------------------------------------------------------------------------
   ⛔⛔ LA BORNE PASSE SUR LE CONTENEUR - 2026-09-06 au soir, sur sa
   question : « c'est quoi ce vide sur hub tv ? »

   POURQUOI LES BORNES POSEES PLUS HAUT NE SUFFISENT PAS, ET C'EST MESURE :
   Google ecrit `max-height: none !important` DANS LE STYLE INLINE de
   certaines unites. Releve sur sa page servie, _essai-index.html a 412 px :

     height: auto !important; max-height: none !important;
     background-color: transparent !important;   -> rendu 412 px, sans annonce

   Un `!important` inline bat n'importe quelle regle de feuille. Aucune
   borne posee sur l'unite ne peut gagner. Verifie : aucun fichier du depot
   n'ecrit cette declaration, elle vient de lui.

   LE CONTENEUR, LUI, N'A AUCUN STYLE INLINE DE GOOGLE. C'est le seul point
   ou la decision de Phil peut encore s'appliquer.

   ⚠⚠ ET CE N'EST PAS UNE DECISION NEUVE : c'est LA SIENNE, rendue
   effective. Il a borne le bandeau a 100 px le 2026-09-06, sur ce motif
   ecrit plus haut dans cette feuille — « les vraies annonces horizontales
   font 90 ou 100 px, mesure sur les 5 pages : 930x90, 1160x90, 700x100,
   347x90 ». Le chiffre ne change pas, l'endroit change.
   Le pave et le gratte-ciel gardent la hauteur de leur format AdSense.

   ⚠ `overflow: hidden` est le prix a payer, et il est dit : si Google
   servait un jour une annonce plus haute que le format de son slot, elle
   serait rognee. C'est le risque que la borne de 100 px porte deja depuis
   ce matin — on ne l'augmente pas, on le deplace d'un cran.
   ⚠ Et on ne replie a ZERO nulle part : c'est l'incident n°1 de la mise en
   ligne, huit jours sans revenu. La largeur reste entiere, seule la
   hauteur est bornee. */
@media (max-width: 767px) {
  .wg2 .wg-pub:has(ins[data-ad-format="horizontal"]) { max-height: 100px; overflow: hidden; }
  .wg2 .wg-pub:has(ins[data-ad-slot="3363181382"])   { max-height: 250px; overflow: hidden; }
  .wg2 .wg-pub:has(ins[data-ad-slot="3370437745"])   { max-height: 600px; overflow: hidden; }
}

/* ------------------------------------------------------------------------
   PAGE CHAINE, TELEPHONE : L'EMPLACEMENT SOUS LE LECTEUR EST RETIRE.

   Phil, 2026-09-06 : « la page chaine mobile, il y a deux blocs qui se
   suivent, un dans le lecteur, un sous le lecteur, tu enleves sous le
   lecteur ».

   MESURE SUR SA PAGE SERVIE, a 412 px, qui identifie les deux :
     le lecteur (.wg-direct) va de  230 a 1164
     pave   slot 3363181382  y =  675   DANS le lecteur      -> GARDE
     bandeau slot 1874839890 y = 1208   44 px sous le lecteur -> RETIRE
     pave   slot 3363181382  y = 2363   bien plus bas         -> GARDE
   Les deux premiers sont bien « deux blocs qui se suivent ».

   ⚠ C'EST UN EMPLACEMENT D'ANNONCE EN MOINS SUR TELEPHONE, donc du revenu.
   C'est sa decision, elle est explicite, et elle ne se prend pas autrement.

   ⚠ TELEPHONE SEUL, et la vue ordinateur ne bouge pas : il a ecrit
   « page chaine MOBILE ». Regle bornee a la fiche chaine par
   `.wg2.fiche-chaine` — les autres familles gardent leur bandeau.
   ⚠ Les liens ne bougent pas : un emplacement d'annonce n'en porte aucun. */
@media (max-width: 767px) {
  .wg2.fiche-chaine .wg-bandeau.wg-pub { display: none; }
}

/* ------------------------------------------------------------------------
   L'EMPLACEMENT SOUS LE BANDEAU DE NAVIGATION EST RETIRE, TELEPHONE SEUL.

   Phil, 2026-09-06 : « En ce moment a tele, tu enleves l'encart sous le
   bandeau de navigation », puis « Meme pour la liste, tu enleves l'encart
   sous le bandeau ».

   MESURE SUR SES PAGES SERVIES, a 412 px, avant :
     _essai-programme.php  `.wg-bandeau.wg-pub`, PREMIER enfant de
                           `.wg-contenu`, y = 168, hauteur 452 px
     _essai-liste.htm      `.wg-encart-mobile.wg-pub`, y = 205, 412 px
   Les deux etaient gonfles par Google sans annonce dedans.

   ⚠ ON NE RETIRE QUE CELUI DU HAUT. La page programme en porte un SECOND
   en bas (y = 4049) que Phil n'a pas demande d'enlever : le premier se vise
   par `:first-child` de `.wg-contenu`, ce que la mesure etablit — rang 0 et
   aucun frere precedent, contre rang 8 pour l'autre.

   ⚠ C'est un emplacement d'annonce en moins par page sur telephone, donc du
   revenu. Sa decision, deux fois explicite.
   ⚠ Telephone seul : la vue ordinateur ne porte pas `.wg-encart-mobile` et
   garde son bandeau. Aucun lien ne bouge — un emplacement n'en porte pas. */
@media (max-width: 767px) {
  /* ⚠ LES DEUX BANDEAUX DE CETTE PAGE PARTENT, PAS SEULEMENT CELUI DU HAUT.
     Phil, 2026-09-06 : « au-dessus de Programmes TV il y a une pub. S'il y a
     2 encarts de pub a proximite, tu enleves le 2eme sur cette page ».
     MESURE a 412 px, les emplacements visibles apres le retrait du premier :
       y 3185  encart mobile, juste avant le titre « Programmes TV »  -> GARDE
       y 3684  bandeau, apres les tuiles et avant « Partagez »        -> RETIRE
     399 px separent les deux — ce sont bien les deux « a proximite », et le
     second est le blanc de sa capture.
     Le selecteur couvre les deux bandeaux du contenu ; celui du haut etait
     deja masque, celui du bas l'est desormais. L'encart mobile reste : c'est
     la seule annonce que cette page garde sur telephone.
     ⚠ Un emplacement de moins, donc du revenu. Sa decision. */
  .wg2.programmes .wg-contenu > .wg-bandeau.wg-pub { display: none; }
  .wg2.accueil .wg-encart-mobile.wg-pub                        { display: none; }
}

/* ⛔⛔ LA PAGE LISTE MASQUE A NOUVEAU SON ENCART DE TETE — Phil, 2026-09-06 :
   « Page Liste : j'avais demande de supprimer la pub. Tu la supprimes ? »

   IL AVAIT RAISON, ET LA FAUTE EST DE MA MAIN : j'avais pose ce masquage,
   puis je l'ai RETIRE en annoncant que le deplacement le remplacerait — et
   la passe de deplacement, je l'ai annulee ensuite parce qu'elle deplacait
   le hub au lieu de la liste. Resultat : plus de masquage, plus de
   deplacement, la pub est revenue.
   On ne retire jamais une protection en pariant sur un geste qui n'est pas
   encore fait.

   ⚠ Le deplacement sous le tableau reste du : tant qu'il n'est pas fait,
   cette page n'a plus d'annonce sur telephone, et c'est dit. */
/* ⛔ ET IL NE SE MASQUE PAS : IL DESCEND. Phil, 2026-09-06 : « javais
   demande dajouter une pub apres le bloc liste. Elle est ou ? »
   Le masquer etait la moitie du geste, et la mauvaise moitie — sans annonce
   cette page ne rapporte plus rien sur telephone. Il la voulait DEPLACEE.

   COMMENT, ET POURQUOI PAS AVEC UN `order` POSE AU JUGE : `.wg-contenu` est
   un flex en colonne dont certains enfants portent DEJA un order — 10 pour
   le bloc partage, 20 pour les rubriques, 30 pour le pied. Leur en donner
   un autre les deplacerait sans qu'on l'ait demande.

   La mesure donne la structure, et elle est stable : les DIX premiers
   enfants vont du fil d'Ariane au tableau inclus ; l'encart est le
   troisieme. On recule donc ces dix-la d'un cran — SAUF l'encart, qui
   reste a zero. A order egal, l'ordre du document tranche : l'encart passe
   alors juste apres le tableau et juste avant l'ecart qui ouvre « La
   selection de TV en ligne ».

   ⚠ Rien d'autre ne bouge : les enfants au-dela du dixieme gardent leur
   order — 0, 10, 20 ou 30 — donc le bloc partage, les rubriques et le pied
   restent exactement ou Phil les a valides.
   ⚠ Telephone seul. Sur ordinateur l'encart n'est pas affiche du tout. */
@media (max-width: 767px) {
  .wg2.liste-tv .wg-contenu > *:nth-child(-n+10):not(.wg-encart-mobile) { order: -1; }
}

/* ------------------------------------------------------------------------
   PAGE LISTE : L'ECART SOUS LA BARRE VAUT CELUI DES AUTRES — 17 px.

   Phil : « respecter l'interlignage coherent ».
   MESURE a 412 px sur sa page servie, l'encart de tete masque :
     barre de navigation -> accroche    41 px
     accroche -> titre                  17
     titre    -> boutons                17
     boutons  -> tableau                17
   Le premier est le seul a 41, et il a DEUX sources : le `padding-top` de
   24 px de `.wg-corps` PLUS le `<div class="wg-ecart-24">` que le batisseur
   pose en tete. Deux sources pour un ecart, c'est une de trop.

   On supprime la source qui n'appartient pas au rythme de la page — le
   retrait du conteneur — et l'ecart du batisseur joue seul : 17, comme les
   trois autres. Rien n'est compense, rien n'est invente.

   ⚠ Borne au telephone ET a la page Liste : le retrait de 24 px sert les
   autres familles, on ne le leur retire pas. */
@media (max-width: 767px) {
  .wg2.liste-tv .wg-corps { padding-top: 0; }
}

/* ⚠ NOTE HISTORIQUE — la ligne ci-dessous decrivait un deplacement qui n'a
   PAS eu lieu. Conservee parce qu'elle explique le defaut ci-dessus.
   LA PAGE LISTE NE MASQUE PLUS SON ENCART : IL EST DEPLACE.
   Phil, 2026-09-06 : « Entre la fin du bloc liste et La Selection, inserer
   un encart. » Le deplacement se fait dans le HTML — passe
   `encart_liste_descendu` de `wg_pages_test.py` — parce que `.wg-contenu`
   porte deja des `order` (10, 20, 30) et que poser les miens par-dessus
   deplacerait le bloc partage, les rubriques et le pied.
   Le masquer ICI le rendrait invisible a sa nouvelle place : la regle est
   donc RETIREE, pas oubliee. */

/* ------------------------------------------------------------------------
   ACCUEIL : L'ECART AUTOUR D'UN EMPLACEMENT EST CELUI DES SECTIONS.

   Phil, 2026-09-06 : « Accueil : comme d'hab les interlignes sont
   incoherents ». Il avait raison, et l'ecart n'etait pas seulement faux :
   il etait ASYMETRIQUE.

   MESURE SUR SA PAGE SERVIE, a 412 px, d'un bloc au suivant :
     TV en direct  -> Radio             28
     Radio         -> Jeux en ligne     28
     Jeux en ligne -> encart            48   <- 28 + la marge de 20
     encart        -> Musique gratuite  20   <- la marge seule
     Musique       -> TV en replay      28
     TV en replay  -> Programmes TV     28
   Vingt-huit partout, sauf autour de l'emplacement : 48 dessus, 20 dessous.

   LA CAUSE, ET C'EST UNE SOURCE DE TROP : la marge de 20 px des
   emplacements S'AJOUTE a l'ecart de section au-dessus, pendant que la
   regle `.wg-pub + *` l'annule en dessous. Deux traitements pour un meme
   ecart.

   On supprime la marge sur cette page et l'ecart de section joue seul,
   des deux cotes. Une seule source, la valeur deja en place : 28.
   ⚠ Borne a l'accueil : les autres familles gardent le 20 px que Phil a
   arrete ce matin — leurs sections n'ont pas le meme rythme. */
@media (max-width: 767px) {
  .wg2.accueil .wg-acc-encart2.wg-pub { margin-top: 0; margin-bottom: 0; }

  /* ⚠ ET IL FAUT RENDRE SA MARGE AU BLOC QUI SUIT, sinon on remplace une
     asymetrie par une autre. Mesure apres la seule regle ci-dessus :
     28 · 28 · 28 · 0 · 28 · 28 — le zero est SOUS l'encart, parce que la
     regle generale `.wg-pub + *` annule la marge du suivant. Elle est faite
     pour les familles ou l'ecart vient de la pub ; ici il vient de la
     section, et il doit jouer. */
  .wg2.accueil .wg-acc-encart2.wg-pub + .wg-acc-section { margin-top: 28px; }
}

/* ------------------------------------------------------------------------
   DEUX ECARTS COLLES, ET LA VALEUR JUSTE EXISTAIT DEJA A COTE : 16 px.

   1. ACCUEIL — Phil : « il faut de l'espace entre le titre et la ligne de
      liens ». MESURE a 412 px sur sa page servie :
        introduction  -> 1re ligne de liens     3 px
        entre deux lignes de liens             16 · 16 · 16 · 16 · 16
      Le premier ecart est le seul a 3. On le met a 16 — la valeur que les
      cinq autres portent deja, pas une valeur choisie.

   2. PAGE PROGRAMMES — Phil : « l'interlignage entre En ce moment et les
      boutons de partage n'est pas coherent. Tu mets le meme espace qu'entre
      le partage et le bloc des programmes ». MESURE, meme page :
        titre « En ce moment a la tele » -> boutons    0 px
        boutons -> bloc des programmes               16 px
      Sa consigne donne la valeur elle-meme : 16.

   ⚠ Une seule source par ecart : on pose la marge sur l'element du dessus,
   jamais sur les deux — sinon elles s'additionnent, ce qui a deja donne 47
   px pour 20 poses sur cette meme page. */
@media (max-width: 767px) {
  .wg2.accueil .wg-acc-intro { margin-bottom: 16px; }
  /* ⚠ ET LE TROISIEME ECART, celui d'AU-DESSUS du titre — Phil : « aucun
     des trois interlignes n'est coherent, je veux trois fois le meme ».
     MESURE a 412 px, avant : 36 · 16 · 16.
     Les 36 se decomposent, et c'est encore DEUX sources pour un ecart :
       la barre finit a 144
       `.wg-corps` porte un retrait de 24  -> le contenu ouvre a 168
       le titre porte une marge de 12      -> le titre tombe a 180
     On supprime le retrait du conteneur — il n'appartient pas au rythme de
     la page — et la marge du titre porte l'ecart seule, a 16 comme les deux
     autres. Rien n'est compense.
     ⚠ Borne au telephone et a cette famille : le retrait de 24 px sert les
     autres pages, on ne le leur retire pas. */
  .wg2.programmes .wg-corps { padding-top: 0; }
  .wg2.programmes .wg-section:has(h1) { margin-bottom: 16px; }

  /* ⚠ ET IL FAUT VISER LE MEME SELECTEUR QUE LA REGLE QUI TIENT LA VALEUR,
     sinon on ecrit une regle qui ne s'applique pas — ce qui ressemble a une
     regle qui ne marche pas. Mesure : `.wg2.programmes .wg-prog-chapeau +
     .wg-section` pose 12 px sous 599 px et compte QUATRE classes ; ma regle
     `:has(h1)` n'en compte que trois plus un element, donc elle perdait.
     Meme selecteur, feuille chargee en dernier : c'est celle-ci qui tient. */
  .wg2.programmes .wg-prog-chapeau + .wg-section { margin-top: 16px; }
}

/* ------------------------------------------------------------------------
   ⛔⛔ LA BORNE CESSE D'ETRE UN `max-height` : ELLE DEVIENT UNE PISTE DE
   GRILLE — 2026-09-06 au soir, sur mesure.

   CE QUE LA MESURE A ETABLI, ET QUI TUE LES DEUX POSES PRECEDENTES : Google
   ecrit `height: auto !important` sur TOUTE la chaine d'ancetres de l'unite,
   et `max-height: none !important` LA OU IL TROUVE UNE BORNE. Releve sur
   `tele-sport.htm` a 412 px, style inline lu niveau par niveau :

     ins.adsbygoogle          display:block ... height:auto !important
     div.wg-pub__unite        height: auto !important
     div.wg-encart-mobile     height:auto !important; min-height:0 !important;
                              MAX-HEIGHT: NONE !IMPORTANT      <- la borne annulee
     main.wg-contenu          height: auto !important
     div.wg-corps             height: auto !important
     div.wg-page              height: auto !important

   Deplacer la borne d'un cran ne sert donc a rien : elle serait annulee au
   cran suivant. C'est une course, et on ne la gagne pas.

   ⚠ MAIS GOOGLE N'ANNULE QUE `height` ET `max-height`. Une PISTE DE GRILLE
     n'est ni l'un ni l'autre : sur un conteneur en `display: grid`, la
     hauteur `auto` VAUT la somme des pistes. Le `height:auto !important`
     qu'il ecrit devient donc exactement ce qu'on veut — 100 px — au lieu de
     rendre la borne inoperante.

   ⚠⚠ ET CE SONT DES PIXELS DE VIDE, PAS UNE ANNONCE : `data-ad-status` vaut
     `unfilled` sur les dix pages en defaut, iframe de 412 px sans contenu.
     Borner ne rogne AUCUNE annonce reelle. C'est le blanc que Phil a fait
     retirer trois fois le meme jour — « c'est quoi ce blanc la ? ».

   ⚠ Ce n'est PAS une decision neuve : les trois valeurs sont celles que Phil
     a declarees dans son panel AdSense le 2026-09-06, deja portees par cette
     feuille. On ne change pas un chiffre, on change le moyen.
   ⚠ Et on ne replie a zero nulle part : la largeur reste entiere, seule la
     hauteur est bornee — incident n°1 de la mise en ligne, huit jours sans
     revenu. */
@media (max-width: 767px) {
  .wg2 .wg-pub:has(ins[data-ad-format="horizontal"]),
  .wg2 .wg-pub:has(ins[data-ad-slot="3363181382"]),
  .wg2 .wg-pub:has(ins[data-ad-slot="3370437745"]) {
    display: grid;
    justify-items: center;
    overflow: hidden;
  }
  /* ⚠ `minmax` et non une piste FIXE : une piste fixe imposerait sa hauteur
     meme a une annonce plus courte — un bandeau de 90 px dans une piste de
     100 rendrait 10 px de blanc, exactement ce qu'on retire ailleurs. Le
     plafond ne bouge pas, la piste suit l'annonce quand elle est plus
     petite. */
  .wg2 .wg-pub:has(ins[data-ad-format="horizontal"]) { grid-template-rows: minmax(0, 100px); }
  .wg2 .wg-pub:has(ins[data-ad-slot="3363181382"])   { grid-template-rows: minmax(0, 250px); }
  .wg2 .wg-pub:has(ins[data-ad-slot="3370437745"])   { grid-template-rows: minmax(0, 600px); }
}


/* ==========================================================================
   UNE PUB MASQUEE NE POSE AUCUNE MARGE -- ET LA REGLE QUI LA COMPENSE, SI.
   ==========================================================================
   Consigne de Phil, 2026-09-07, sur capture des pages Programmes en vue
   telephone : « verifier la ligne "Partagez", elle est collee a la
   precedente ».

   MESURE AVANT, a 375 px sur programme-tv.php, a l'encre :
     au-dessus de « Programmes TV »   52 px
     au-dessus de « Partagez »         8 px

   CAUSE, et elle n'est pas dans le titre : le frere qui le precede est une
   PUB MASQUEE sur telephone. La regle `.wg2 .wg-pub + :not(.wg-pub)
   { margin-top: 0 }` existe pour ne pas cumuler la marge basse de la pub
   avec la marge haute du bloc suivant -- juste quand la pub est VISIBLE.
   Masquee, elle ne pose plus rien, et l'annulation retire alors un ecart
   que plus personne ne compense : le titre vient se coller.

   ⚠ On ne touche pas a la regle generale, qui est bonne dans son cas : on
   rend son ecart d'etalon au seul titre dont la pub qui precede est masquee,
   et seulement sur le palier ou elle l'est. La vue ordinateur, ou la pub
   s'affiche, garde l'annulation.

   PORTEE MESUREE, pas supposee : le cas se produit sur les 10 pages
   Programmes. Il existe aussi sur l'accueil (bloc de partage) -- signale a
   Phil, non touche : il n'a nomme que les pages Programmes.

   APRES : 52 px, comme « Programmes TV » sur la meme page. */
@media (max-width: 767px) {
  .wg2.programmes .wg-pub + .wg-section--partage { margin-top: var(--wg-etalon-bloc); }
}

/* MEME CAUSE SUR L'ACCUEIL - Phil, 2026-09-07 : « il faut corriger partout ».
   Une pub masquee precede aussi son bloc de partage, et l'annulation de marge
   s'applique de la meme facon.

   MESURE AVANT, a 375 px : le bloc de partage est a 16 px du bloc au-dessus,
   quand le rythme de cette page est 28 - mesure sur les trois ecarts qui
   suivent, tous a 28 px.

   ⚠ POURQUOI 12 ET NON 28 : le conteneur est un FLEX, ou les marges ne se
   fondent pas. Le bloc precedent pose deja 16 px de marge basse, qui sert
   entre tous les blocs denses de la page : 16 + 12 = 28. Poser 28 donnerait
   44. La voie propre - annuler la marge du precedent et poser 28 - a ete
   ESSAYEE ET MESUREE : elle ne s'applique pas, l'accueil reordonnant ses
   blocs sur telephone, le bloc precedent n'est pas frere direct de la pub.

   APRES : 28 px, le rythme de la page. */
@media (max-width: 767px) {
  .wg2.accueil .wg-pub + .wg-partage--accueil { margin-top: 12px; }
}



/* ==========================================================================
   ZERO ANNONCE SUR TELEPHONE SUR LES PAGES PROGRAMMES - DEUX REGLES QUI SE
   CONTREDISENT, ET C'EST LA DECISION DE PHIL QUI TOMBAIT.
   ==========================================================================
   Phil, 2026-09-07 : « programme-tele.php et programme-tv.php, en vue mobile
   desktop, je ne vois aucun encart sous le bloc Programmes avant la section
   "Programmes TV" ».

   MESURE, a 375 px : les CINQ emplacements de la page sont masques. Aucune
   annonce n'est servie sur telephone.

   LES DEUX REGLES, ET AUCUNE N'EST FAUSSE PRISE SEULE :
     1. `.wg2 .wg-bandeau { display: none }` sous 768 - un bandeau de 930 px
        ne tient pas sur un telephone. C'est pour cela que l'encart mobile
        existe : il le remplace.
     2. `.wg2 .wg-contenu > .wg-pub + .wg-pub { display: none }` - « s'il y en
        a deux tu enleves » (Phil, 2026-09-05).

   ⚠⚠ MISES ENSEMBLE, LA SECONDE RETIRE L'ENCART MOBILE PARCE QU'IL SUIT UN
   BANDEAU - UN BANDEAU QUI, SUR CETTE VUE, EST DEJA MASQUE. Il n'y a donc
   jamais eu deux emplacements colles sur telephone : il y en avait UN, et il
   partait. C'est la meme cause que le « Partagez » colle du meme jour : une
   regle qui compense la presence d'un element qui n'est plus la.

   ⚠ ET C'EST LA DECISION ECRITE DE PHIL QUI TOMBAIT. Le commentaire du
   2026-09-06, dix lignes plus haut dans ce fichier, dit mot pour mot :
   « L'encart mobile reste : c'est la seule annonce que cette page garde sur
   telephone. » On ne decide rien ici, on remet ce qui etait decide.

   APRES : un emplacement visible sur telephone, juste avant « Programmes TV »
   - celui que Phil cherchait. */
@media (max-width: 767px) {
  .wg2.programmes .wg-contenu > .wg-bandeau.wg-pub + .wg-encart-mobile.wg-pub { display: grid; }
}


/* ==========================================================================
   UNE UNITE DE LARGEUR NULLE NE SE REMPLIT JAMAIS - 2026-09-07
   ==========================================================================
   Trouve en verifiant le retablissement de l'encart des pages Programmes :
   l'emplacement redevenait visible, et son unite rendait 0 px de large.

   MESURE, a 375 px, sur les trois familles qui portent un encart mobile :
     hub tele          1 encart   unite 0 px
     pages Programmes  1 encart   unite 0 px
     pages Liste       2 encarts  unite 0 px
   La BOITE fait pourtant 347 px dans les trois cas.

   CAUSE : `.wg-pub` est une grille en `justify-items: center`. Un enfant de
   grille centre prend sa largeur INTRINSEQUE, pas celle de la piste. Or
   `.wg-pub__unite` ne contient qu'une unite responsive - une unite sans
   largeur declaree - donc sa largeur intrinseque est nulle, et elle
   transmet ce zero a l'annonce.

   ⚠⚠ CE N'EST PAS UN DEFAUT D'ALIGNEMENT, C'EST DU REVENU : une unite large
   de 0 px ne peut pas etre remplie, donc `data-ad-status` ne passe jamais a
   `filled`. C'est exactement l'incident du 2026-09-04 - huit jours sans
   revenu - reproduit sur la vue telephone.

   ⚠ LA LARGEUR EST POSEE SUR LE CONTENEUR, JAMAIS SUR L'UNITE. Les 860 pages
   qui rapportent ne portent aucune regle CSS visant l'annonce, et on ne
   commence pas ici.

   PORTEE : le selecteur se LIT dans l objet, il n enumere aucune classe --
   toute unite SANS largeur declaree s etire, et un pave 300x250 garde la
   sienne. L accueil porte .wg-acc-encart2, les autres .wg-encart-mobile :
   une liste ecrite a la main aurait manque l accueil, et elle serait fausse
   au premier encart ajoute.

   APRES : 347 px sur les QUATRE familles, la largeur de la colonne. */
@media (max-width: 767px) {
  .wg2 .wg-pub > .wg-pub__unite:has(> ins:not([style*="width"])) { width: 100%; }
}


/* ==========================================================================
   LE MEME INTERLIGNE EN HAUT ET EN BAS DE L'ENCART - PAGES PROGRAMMES,
   VUE TELEPHONE. Phil, 2026-09-07 : « le meme interligne en haut et en bas ».
   ==========================================================================
   MESURE AVANT, a 499 px sur programme-tv-film.php, a l'encre du titre :
     fin du tableau -> encart                33 px
     encart -> encre de « Programmes TV »    85 px

   CAUSE des 52 px de trop : la marge d'etalon du titre (44) s'AJOUTE a la
   marge basse de l'encart (33+8 d'encre). Le conteneur est un FLEX : les
   marges ne s'y fondent pas, elles se cumulent. On supprime donc la source
   en trop - la marge du titre - au lieu de rogner l'autre.

   ⚠⚠ ET LE SELECTEUR NE PEUT PAS ETRE `.wg-encart-mobile + .wg-section` :
   `+` suit l'ordre du CODE, et cette page REORDONNE ses blocs a l'ecran.
   Dans le code, l'encart est le 2e enfant du contenu ; a l'ecran il vient
   apres le tableau. Un `+` pose sur lui visait donc le chapeau, pas le bon
   titre - essaye et MESURE : il ne changeait rien. C'est le titre qui suit
   LE TABLEAU qu'il faut viser, et cela se lit dans le code comme a l'ecran.

   APRES : 33 px des deux cotes. */
@media (max-width: 767px) {
  .wg2.programmes .wg-contenu > .wg-encart-mobile.wg-pub { margin-top: 33px; margin-bottom: 25px; }
  .wg2.programmes .wg-contenu > .wg-prog-table + .wg-section { margin-top: 0; }
}


/* ==========================================================================
   LE HUB PROGRAMMES RETROUVE UN EMPLACEMENT SUR TELEPHONE, SOUS LE BLOC DES
   PROGRAMMES. Phil, 2026-09-07 : « programmes-tv.html affiche un emplacement
   sur telephone, sous le bloc des programmes ».
   ==========================================================================
   MESURE AVANT, a 375 px : ZERO emplacement visible, verifie a treize
   largeurs de 320 a 767 px. Les trois unites de la page sont masquees -
   deux bandeaux par `.wg-hub-pub`, et l'encart mobile par la regle du
   2026-09-06. La page ne rapportait rien sur telephone.

   ⚠ ET LE RENDRE VISIBLE NE SUFFISAIT PAS : il se posait EN HAUT, avant le
   titre. Cette page-la ne reordonne pas ses blocs (contrairement aux pages
   Programmes), donc l'encart restait a sa place dans le code. Il est
   deplace en CSS, par `order`, sans toucher au fichier de la page.

   CONTROLE FAIT AVANT D'ECRIRE, pas apres : les positions et les largeurs de
   TOUS les autres blocs sont identiques avant et apres - titre a y=192,
   cartes a y=296, largeur 347 partout, zero debordement.

   APRES : un emplacement sous les cartes, unite large de 347 px - donc
   remplissable - et 33 px d'ecart de chaque cote, la meme valeur que sur les
   dix pages Programmes. */
@media (max-width: 767px) {
  .wg2.hub-programmes .wg-contenu { display: flex; flex-direction: column; }
  .wg2.hub-programmes .wg-contenu > * { order: 0; }
  .wg2.hub-programmes .wg-contenu > .wg-encart-mobile.wg-pub {
    display: grid; order: 1; margin-top: 33px; margin-bottom: 25px;
  }
  .wg2.hub-programmes .wg-contenu > .wg-section:not(.wg-hub-titre),
  .wg2.hub-programmes .wg-contenu > .wg-ecart-24,
  .wg2.hub-programmes .wg-contenu > .wg-rangee-4,
  .wg2.hub-programmes .wg-contenu > .wg-chaines,
  .wg2.hub-programmes .wg-contenu > .wg-rubriques,
  .wg2.hub-programmes .wg-contenu > .wg-fb-page { order: 2; }
  .wg2.hub-programmes .wg-contenu > .wg-hub-cartes + .wg-section { margin-top: 0; }
}




/* ==========================================================================
   UN ENCART SOUS LE TABLEAU DES PAGES LISTE, AVANT « LA SELECTION DE TV EN
   LIGNE ». Phil, 2026-09-07 : « Sur les pages de Liste je croyais qu'on avait
   un encart sous le bloc de liste avant "La selection de Tv en ligne" ? En
   mettre un s'il y en a pas. [...] Appliquer a toutes les pages de liste. »
   ==========================================================================
   MESURE AVANT, a 1280 px : le tableau finit a y=4766, « La selection »
   commence a y=4806. RIEN entre les deux. Les deux emplacements de la page
   etaient en tete (y=219) et en pied (y=5464) ; celui du pied n'est pas
   deplace, c'est un emplacement demande le 2026-09-05.

   ⚠⚠ IL NE S'AFFICHE QUE SUR ORDINATEUR, ET C'EST MESURE : sur telephone, un
   encart existe DEJA a cet endroit -- il est masque sur ordinateur, ce qui
   est exactement pourquoi Phil ne le voyait pas. Le poser aux deux vues
   ferait DEUX encarts colles sur telephone, ce que sa consigne du 2026-09-05
   interdit : « s'il y en a deux tu enleves ».

   ⚠ LA LARGEUR : `.wg-pub` est une grille en `justify-items:center`, donc un
   enfant sans largeur propre s'y retracte a zero -- et une unite large de
   0 px n'est jamais remplie. La regle posee plus haut couvre les pages qui
   ont un conteneur `.wg-pub__unite` ; les pages d'ESSAI portent l'unite en
   DIV NU, sans ce conteneur, et n'etaient donc pas couvertes : mesure a
   375 px sur _essai-liste.htm, l'unite rendait 0. On change l'alignement du
   CONTENEUR, jamais l'unite.

   APRES : 40 px des deux cotes sur ordinateur, unite large de 700 px. */
.wg2.liste-tv .wg-pub:has(> ins:not([style*="width"])) { justify-items: stretch; }

@media (max-width: 767px) {
  .wg2.liste-tv .wg-contenu > .wg-ecart-40 + .wg-encart-mobile.wg-pub { display: none; }
}
@media (min-width: 768px) {
  .wg2.liste-tv .wg-contenu > .wg-ecart-40 + .wg-encart-mobile.wg-pub {
    margin-top: 0; margin-bottom: 32px;
  }
}


/* ==========================================================================
   LE GRATTE-CIEL DES PAGES PROGRAMMES SE POSE SOUS « ZAPETTE » - 2026-09-07
   ==========================================================================
   Phil : « Pour ces pages tu mets la pub 160 x 600 sous zapette », « pas
   avant jeux en ligne », « pour toutes les pages programmes ».

   MESURE AVANT : la colonne de droite des pages Programmes ne portait
   AUCUNE unite -- verifie sur les quatorze derniers commits, elle n'en a
   jamais eu. Les pages Liste, elles, en ont une depuis le debut. Ce
   n'etait donc pas une disparition, c'etait un manque.

   L'unite est celle des pages Liste, meme slot, meme taille : on ne cree
   pas d'emplacement, on pose celui qui existe.

   ⚠ L'ECART : la colonne a un rythme de 36 px entre ses groupes (mesure,
   deux ecarts sur deux). La pub arrivait a 0 de son voisin. Elle prend le
   rythme de la colonne. */
/* ⚠ ET L ORDRE NE SUFFIT PAS DANS LE HTML : la colonne est un FLEX ou
   .wg-colonne-droite__blocs porte deja order:1. Une pub laissee a order:0
   passe DEVANT eux quoi qu on fasse dans la page -- mesure sur la
   production le 2026-09-07 : pub a y=213, blocs a y=840, alors que le
   HTML la place apres. C est ce que Phil voyait. */
.wg2.programmes .wg-colonne-droite > .wg-pub { margin-top: 36px; order: 2; }


/* « Partagez » des pages Programmes, vue telephone : 96 -> 44 px.
   Il etait a 44 ce matin. En deplacant la pub avant « Programmes TV », son
   voisin est devenu la rangee de tuiles -- et DEUX marges se sont
   additionnees : 44 sous les tuiles + 44 sur le titre. En flex elles ne
   fusionnent pas. On en supprime une. Mesure : 36 + 8 px d encre = 44. */
@media (max-width: 767px) {
  .wg2.programmes .wg-contenu > .wg-prog-tuiles + .wg-section--partage { margin-top: 0; }
  .wg2.programmes .wg-contenu > .wg-prog-tuiles { margin-bottom: 36px; }
}


/* UN FILET RENVOYE EN BAS DE COLONNE PAR L ORDRE FLEX - 2026-09-07
   Phil, sur _essai-liste.htm en ligne : « que fait la barre de logo sous la
   zapette ? »

   MESURE SUR LA PRODUCTION : la colonne de droite y est un flex ou les
   blocs portent order:1 et le filet order:2 -- il passe donc APRES eux,
   sous le dernier lien du bloc Bonus. Ordre releve : pub y=197,
   blocs y=829, FILET y=1443.

   ⚠ LA CAUSE N EST PAS DANS CE DEPOT : wg2-fondations.css sur le serveur
   fait 7 695 octets contre 38 413 ici, et porte une regle
   .wg-colonne-droite { display:flex } que le depot n a pas. Ce fichier n a
   jamais ete mis a jour en ligne. Le corriger la-bas toucherait cinq fois
   plus de regles ; on remet donc simplement le filet a sa place, par la
   feuille que Phil envoie deja.

   APRES, mesure sur la meme page en ligne : pub, filet, ecart, blocs. */
.wg2 .wg-colonne-droite > [class*="wg-filet"],
.wg2 .wg-colonne-droite > [class*="wg-filet"] + [class*="wg-ecart-"] { order: 0; }


/* ==========================================================================
   LA BANNIERE DU HUB NE SERVAIT PAS SA HAUTEUR - 2026-09-07
   ==========================================================================
   Phil, sur _essai-hub-tele.html en ligne : « L'interligne entre bandeau
   navigation et banniere pub est important et incoherent, la banniere ne
   sert pas sa hauteur globale ? »

   MESURE SUR LA PRODUCTION, a 1280 px -- sa lecture etait exacte :
     barre de navigation finit a   y = 152
     le bloc de la banniere commence  196   (44 px)
     L'ANNONCE elle-meme commence     226   (74 px de la navigation)
     hauteur du bloc                  130
     hauteur de l'annonce              90   -> 40 px de blanc DANS le bloc
     sous l'annonce                    10

   DEUX SOURCES EMPILEES : la marge de 44 px du bloc, plus une marge de 30
   sur la pub interne. Et le dessous n'en avait que 10 : 74 contre 10.
   On supprime la marge du bloc et on pose la meme valeur des deux cotes.

   ⚠ 20 px n'est pas une valeur choisie : c'est celle que le site donne deja
   a toutes ses pubs (`.wg2 .wg-pub { margin: 20px 0 }`).

   APRES, mesure sur la meme page : 20 px au-dessus de l'annonce, 20 en
   dessous. */
.wg2.hub-tele .wg-hubtele-pub { margin-top: 0; }
/* CORRIGE LE 2026-09-07, MEME JOUR : 20/20 ETAIT JUSTE SUR LES BOITES ET
   FAUX A L'OEIL. Phil : « l'interligne doit etre le meme entre bandeau de
   navigation et pub qu'entre pub et TV en direct. pour la 50eme fois. »
   Puis sa decision : « tu mets 30 px en haut en bas » et « Ordi pas mobile ».

   MESURE a 1280 px, annonce forcee a 90 px comme chez lui, encre lue sur un
   repere aligne sur la ligne de base (jamais calculee) :
     au-dessus, VU   20,0 px
     en dessous, VU  42,6 px
   DEUX SOURCES sous l'annonce : ma marge de 20 DANS le bloc, PLUS le
   `padding-top: 24px` de `.wg-corps`, qui sert toute la page.
   On SUPPRIME celle qu'on a ajoutee, on ne la compense pas.

   POURQUOI LA MARGE BASSE EST A ZERO ET NON A 30 : le retrait de 24 du corps
   la porte deja. Essais mesures, marge haute a 30 : basse 0 -> 29 vu ;
   4 -> 33 ; 9 -> 38 ; 30 -> 59. Zero est la seule valeur qui rend 30 / 29,
   soit 1 px d'ecart, invisible.
   Marge basse a 30 aurait rendu 30 / 59 : exactement ce qu'il reproche.

   ⚠ ORDINATEUR SEUL, sa consigne. Sur telephone le bloc est masque
   (hauteur 0 mesuree a 375 px), la regle n'y avait deja aucun effet. */
@media (min-width: 768px) {
  .wg2.hub-tele .wg-hubtele-pub .wg-pub { margin-top: 30px; margin-bottom: 0; }
}


/* ========================================================================
   LA PUB DEPLACEE SOUS LE TABLEAU EST COLLEE AU BLOC DE LISTE - 2026-09-07
   ========================================================================
   Phil, sur _essai-liste.htm au telephone : « a la fin du bloc Liste, le
   bandeau de pub est colle au bloc de liste, il faut un interligne
   coherent. »

   MESURE A 412 px, sa page servie -- il avait raison :
     fin du tableau      y = 3498
     debut de l'encart   y = 3498   -> ZERO px, il touche le tableau
     sous l'encart       17 px de marge, PUIS la cale de 40 -> 57 px

   LA CAUSE EST UNE REGLE JUSTE A UNE PLACE ET FAUSSE A UNE AUTRE.
   `margin-top: 0` a ete posee le 2026-09-05 pour la pub du HAUT, qui a une
   cale de 17 devant elle : la marge aurait fait DEUX sources. Le 2026-09-06
   la pub est DESCENDUE sous le tableau par `order`, et la, plus aucune cale
   ne la precede -- la regle continue de retirer une marge qui, cette fois,
   etait la seule source.
   ⚠ C'est exactement le cas de la pub de bas de page, repare le 2026-09-05
   au meme endroit de cette feuille : une position change, la regle non.

   40 N'EST PAS UNE VALEUR CHOISIE : c'est le rythme INTER-SECTIONS de cette
   page, et la cale qui suit la pub le porte deja. La pub s'intercale entre
   la fin du tableau et « La selection de TV en ligne » -- donc entre deux
   sections -- et prend l'ecart de section de chaque cote.
   ⚠ On SUPPRIME la marge basse au lieu de l'ajouter a la cale : sans ca
   l'ecart du dessous vaudrait 17 + 40 = 57, deux sources pour un ecart.

   APRES, meme mesure : 40 au-dessus, 40 en dessous. */
@media (max-width: 767px) {
  .wg2.liste-tv .wg-contenu > .wg-encart-mobile.wg-pub {
    margin-top: 40px; margin-bottom: 0;
  }
}

/* ========================================================================
   LE RANG 10 ETAIT DEVINE, ET 5 PAGES SUR 12 TOMBAIENT DU MAUVAIS COTE
   ========================================================================
   Question de Phil, 2026-09-07 : « les changements sont effectues a toutes
   les pages du coup de jeune ? » -- NON, et la mesure l'a dit.

   MESURE a 412 px sur les 12 pages Liste, l'ecart autour de la pub :
     7 pages : 40 au-dessus, 40 en dessous
     5 pages : 80 au-dessus, ZERO en dessous
       (tele-divers2, tele-information, tele-locale, tele-musique,
        tele-nouvelles)

   LA CAUSE EST UN RANG, PAS UN REGLAGE. La regle qui descend la pub sous le
   tableau dit « les 10 premiers blocs restent en place ». Or le rang du
   tableau n'est pas le meme partout -- releve dans le document, pas suppose :
     rang 10 sur 7 pages (24 enfants), rang 8 sur 5 pages (22 enfants).
   La cale de 40 qui ouvre « La selection » suit TOUJOURS le tableau (12/12),
   donc elle tombe au rang 11 sur les unes -- dehors, elle passe apres la pub
   -- et au rang 9 sur les autres -- dedans, elle reste AVANT. D'ou 40 + 40
   d'un cote et rien de l'autre.

   ON REMPLACE LE RANG PAR LA STRUCTURE : la cale qui suit le tableau passe
   avec le tableau, ou qu'elle soit dans le document. A order egal, l'ordre du
   document tranche, et la pub (rang 3) passe avant elle.
   ⚠ Sans effet sur les 7 pages ou elle etait deja a zero : la regle est
   idempotente, elle ne fait que rendre certain ce qui etait fortuit. */
@media (max-width: 767px) {
  .wg2.liste-tv .wg-contenu > .wg-tbl + .wg-ecart-40 { order: 0; }
}


/* ==========================================================================
   LA BANNIERE QUI PRECEDE UNE RUBRIQUE ETAIT PLUS SERREE QUE SES VOISINES
   Pages Programmes - 2026-09-07
   ==========================================================================
   Phil, sur programme-tv.php puis « programme-tele.php idem » :
   « la banniere est collee a la rubrique ».

   MESURE A L'ENCRE, sur la page SERVIE, a 1280 px, avant de toucher --
   l'ecart VU entre chaque bloc et le titre de la section qui suit :

       En ce moment a la tele   (apres le chapeau)      16
       Programmes TV            (apres la banniere)     38   <- le defaut
       Partagez                 (apres les tuiles)      49
       La selection de TV       (apres le partage)      46
       Regarder la television   (apres la rangee)       46

   Le rythme de la page est 46. La banniere rendait 38 : c'est cela que
   Phil voit, et il a raison -- elle est plus serree que tout le reste.

   ⚠ LA SOURCE EST UNIQUE ET ELLE EST DEJA LA : `margin-bottom: 33px`,
     posee le 2026-09-05 sur sa demande (« et pareil pour la petite
     baniere en bas »). On ne compense donc RIEN et on n'ajoute aucune
     seconde marge sur la section : on corrige la seule valeur en place.
     33 pose rend 38 vus -- les 5 px d'ecart sont le blanc au-dessus des
     capitales du titre. Mesure APRES pose, sur le rendu local ou les voisines rendent 48 :
     41 rendait 45, il manquait 3 px -- la valeur servie est donc 44,
     et elle aligne la banniere sur ses voisines DANS LE MEME RENDU,
     au lieu d'etre extrapolee d'une mesure prise ailleurs.

   ⚠⚠ ET LA REGLE NE VISE QUE LA BANNIERE SUIVIE D'UNE RUBRIQUE.
     `:has(+ .wg-section)` est une condition de STRUCTURE, pas un rang --
     c'est la lecon du 2026-09-07 sur les pages Liste, ou un `nth-child`
     rendait 5 pages sur 12 fausses en silence. La banniere du HAUT garde
     donc ses 33 px, qui sont un reglage valide par Phil, et une page qui
     n'aurait pas de rubrique apres sa banniere n'est pas touchee.
     Specificite : 4 classes + `.wg-section` du `:has` = 5, contre 4 pour
     la regle d'origine -- elle gagne sans `!important`.

   ⚠ La vue telephone n'est pas concernee : sous 768 la banniere est en
     `display: none` (regle du 2026-08-26), donc elle n'ecarte rien.
     Phil, 2026-09-05 : « Ordi pas mobile » -- la borne est respectee. */
.wg2.programmes .wg-contenu > .wg-pub:has(+ .wg-section) { margin-bottom: 44px; }
