/* ═══════════════════════════════════════════════════════════
   THEME MODERNE — bestforfait.com
   Override épuré gris clair · à charger APRÈS css.css et jquery-ui.css
   Pour désactiver : retirer la ligne <link> dans header-niveau1
   ═══════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --m-bg:        #1c1c22;   /* fond gris foncé */
  --m-bg2:       #ececf0;   /* gris clair (menus, titres) */
  --m-line:      #3a3a44;   /* bordures foncées */
  --m-track:     #3a3a44;   /* rail slider foncé */
  --m-handle:    #d0d0d8;   /* poignée gris clair */
  --m-txt:       #f0f0f0;   /* texte blanc */
  --m-txt-2:     #c0c0c8;   /* gris clair */
  --m-txt-3:     #8888a0;   /* gris moyen */
  --m-accent:    #d0d0d8;   /* accent clair */
  --m-red:       #e5484d;   /* rouge accent */
  --m-red2:      #c0393e;   /* rouge survol */
  --m-red-soft:  #f07478;   /* rouge doux (liens, prix) */
  --m-card:      #2a2a32;   /* fond carte */
  --m-radius:    10px;
}

/* ── Police globale ── */
body, form, input, select, button, textarea,
#menu li a, .guideachat .texte, .bornes_casecadre,
#recherchefinal, footer {
  font-family:'Inter', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif !important;
}
body{ color:var(--m-txt); }
.head452{ background:#1c1c22 !important; }
.head452 img{ border-radius:14px !important; }
/* Opérateurs (accueil) — AU REPOS : texte BLANC (--m-txt), fond TRANSPARENT
   (on laisse voir le gris d'origine du #contenu dessous). */
.bande_ope a{ color:var(--m-txt) !important; }
/* AU SURVOL : le rectangle (blanc #F1F1F1 dans css.css) passe au ROUGE --m-red,
   coins arrondis, et le texte (nom + "N offres") passe au NOIR.
   Le fond rouge est scopé pour battre css.css .bande_ope li:hover{background:#F1F1F1}. */
.bande_ope li{ border-radius:var(--m-radius); transition:background .15s ease; }
.bande_ope li:hover{ background:var(--m-red) !important; border-radius:var(--m-radius) !important; }
/* Texte NOIR au survol — scopé #texte + tous les états du lien pour battre
   .bande_ope a (--m-txt), section a et a:link/a:visited (1 ID > toute classe). */
#texte .bande_ope li:hover a,
#texte .bande_ope li:hover a:link,
#texte .bande_ope li:hover a:visited,
#texte .bande_ope li:hover a:hover,
#texte .bande_ope li:hover p{ color:#000 !important; }

/* LARGEUR CONTENUE (06/07/2026, demande Nicolas) : css.css met #contenu à
   max-width:80% -> sur grand écran (>1600) le site s'étalait démesurément
   (≈1540px à 1900). On borne à 1200px (comme footer .centre:1200) : le contenu
   reste centré et « proportionné » quelle que soit la largeur d'écran. */
#contenu{ background:#24242a !important; max-width:1200px !important; }
/* LOGO CALÉ À GAUCHE (06/07/2026) : css.css centre le contenu du <header>
   (text-align:center) puis #logo{left:-500px} le décale — position qui DÉPEND
   de la largeur de fenêtre. Résultat : sur grand écran le logo « dérivait »
   vers la droite et venait CHEVAUCHER l'icône Accueil (1er onglet du menu, lui
   centré). On supprime le centrage du header et on remet #logo à left:0 : le
   logo reste ancré ~30px du bord gauche quelle que soit la largeur, dégagé du
   menu. (Le header ne contient que #logo, aucun autre contenu impacté.) */
header{ text-align:left !important; }
/* LOGO CALÉ SUR LA BANDE DU MENU (06/07/2026, demande Nicolas : « pas totalement
   à gauche, juste avant l'icône Accueil », cf. screenshot 1) :
   le menu (#menu) est une bande CENTRÉE de 1150px max ; son 1er onglet (icône
   Accueil = « Comparer abonnement… ») démarre à ~44px du bord GAUCHE de cette
   bande. On ancre le logo au MÊME repère centré : left:calc(50% - 795px) place
   le logo (img 220px + marge 30px) juste À GAUCHE de l'onglet Accueil (~40px
   d'écart), relation CONSTANTE sur grand écran -> fini le logo « isolé dans le
   coin » loin du menu centré.
   CLAMP max(12px, …) : sur écran plus étroit (<~1540px) l'onglet Accueil se
   recentre vers la gauche ; sans garde-fou le logo (220px de large) sortirait
   HORS écran à gauche. Le max() le retient à 12px du bord : il revient alors se
   caler près du menu (qui, à ces largeurs, longe déjà le bord — donc pas d'effet
   « coin isolé »).
   top:-56px : le logo est LÉGÈREMENT RELEVÉ dans la bande du bandeau haut (à
   gauche, où la pub centrée ne va pas), son bas frôle la rangée du menu. Ce
   décalage vertical évite tout chevauchement AVEC les onglets aux largeurs où le
   logo doit se rapprocher du menu. Reset mobile (≤1024px) plus bas +
   'header.fixed #logo{top:0}' pour le header fixé au scroll. */
#logo{ z-index:999999 !important; position:absolute !important; top:-64px !important; left:max(12px, calc(50% - 795px)) !important; margin-left:0 !important; }
img[src^="image/logo/"]{ border-radius:10px !important; }

/* ═══════════ MENU / HEADER ═══════════ */
header{
  background:#24242a !important;
  background-image:none !important;
  border-bottom:1px solid var(--m-line);
}
#menu li a{
  color:var(--m-txt) !important;
  font-weight:600 !important;
  font-size:13.5px !important;
  letter-spacing:.01em;
}
#menu li:hover{
  background:var(--m-red) !important;
  border-radius:8px;
}
#menu li:hover a{ color:#fff !important; }

/* dropdowns du menu */
.dropdown_3,.dropdown_4,.dropdown_5{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-radius:0 12px 12px 12px !important;
  box-shadow:0 14px 40px -14px rgba(0,0,0,.55);
}
.dropdown_3 a,.dropdown_4 a,.dropdown_5 a{ color:var(--m-txt) !important; }

/* POLICE NETTE DANS LES MENUS DÉROULANTS (2026-07-05) :
   css.css (l.79) pose « text-shadow:1px 1px 1px #ffffff » sur les items des
   déroulants (#menu li ul li). Sur le fond sombre du thème, cette ombre
   BLANCHE rend le texte flou/embossé. Son reset (css.css l.666) est dans le
   bloc menu mobile → inactif sur desktop. On la neutralise ici pour tous les
   déroulants + on active le lissage pour un rendu net. */
#menu li ul li,
#menu li ul li a,
#menu li .box1 li, #menu li .box2 li,
#menu li .box1 a, #menu li .box2 a,
.dropdown_3 a,.dropdown_4 a,.dropdown_5 a,
#menu .col_2 p, #menu .col_6 p{
  text-shadow:none !important;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* listes internes des menus déroulants : cartes gris foncé arrondies */
#menu li .box1 li,
#menu li .box2 li{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-radius:8px !important;
  list-style:none !important;
  height:auto !important;
  padding:5px 10px !important;
  transition:background .15s ease, border-color .15s ease;
}
/* survol : fond rouge, police gris foncé */
#menu li .box1 li:hover,
#menu li .box2 li:hover{
  background:var(--m-red) !important;
  border-color:var(--m-red) !important;
  height:auto !important;
}
#menu li .box1 li:hover a,
#menu li .box2 li:hover a,
#menu li .box1 a:hover,
#menu li .box2 a:hover{
  color:#24242a !important;
}
/* titres de colonnes des menus déroulants — ROUGES depuis le 09/07/2026
   (demande Nicolas : en blanc ils se distinguaient mal des liens) */
#menu .col_2 p, #menu .col_6 p{
  color:var(--m-red) !important;
  border-bottom-color:var(--m-line) !important;
}
/* icônes du menu : rouges au repos, gris foncé au survol
   (sinon invisibles sur l'onglet rouge quand le menu est ouvert) */
#menu li a img{ transition:filter .15s ease; }
#menu li:hover > a img{ filter:grayscale(1) brightness(.32); }

/* RÉSEAUX SOCIAUX DANS LA BARRE (06/07/2026) : groupe d'icônes (li#menu-social,
   1er enfant de #menu) affiché à DROITE de l'onglet « Opérateurs » grâce au
   float:right (le 1er élément flotté va le plus à droite). Ce n'est PAS un
   onglet : on neutralise le fond rouge / la remontée du :hover des <li> et on
   reprend le look des icônes du footer (.soc-ic), calibré pour la barre. */
#menu li#menu-social{
  float:right;
  display:flex; align-items:center; gap:7px;
  height:45px; border:none; padding:0; margin:0 6px 0 16px;
}
#menu li#menu-social:hover{ background:transparent !important; height:45px; margin-top:0; }
#menu li#menu-social .soc-ic{
  width:29px; height:29px; border-radius:8px;
  background:#2a2a32; border:1.5px solid var(--m-line);
  display:inline-flex; align-items:center; justify-content:center;
  transition:border-color .15s ease, transform .15s ease;
}
#menu li#menu-social .soc-ic:hover{ border-color:var(--m-red); transform:translateY(-1px); }
#menu li#menu-social .soc-ic svg{ width:15px; height:15px; fill:var(--m-txt-2); }
#menu li#menu-social .soc-ic:hover svg{ fill:var(--m-txt); }

/* déroulants EMPILÉS par univers (#menucompareb « Nouveau 2026 » ET #menu6b
   « Bons Plans ») — REFAIT/ÉTENDU 2026-07-05 : MARGES RÉGULIÈRES + LAYOUT
   STABLE. L'ancienne version reposait sur des flottants : l'en-tête (.col_3)
   et la colonne d'items (.col_1) se mettaient CÔTE À CÔTE en fenêtre large et
   EMPILÉS en fenêtre étroite -> écarts irréguliers. On force l'empilement
   (en-tête sur sa propre ligne, les items dessous) avec un padding de boîte
   uniforme et des écarts verticaux IDENTIQUES (6px). Ciblé sur ces 2 ids pour
   ne pas toucher les autres déroulants. */
/* #menu2b (« Aide et conseils », ajouté le 05/07/2026) partage ce même
   gabarit empilé que #menucompareb / #menu6b. */
#menucompareb, #menu6b, #menu2b{ padding:12px 14px !important; box-sizing:border-box !important; }
#menucompareb .col_3, #menu6b .col_3, #menu2b .col_3{
  float:none !important; clear:both !important;
  width:auto !important; height:auto !important; display:block !important;
  white-space:nowrap !important;   /* titre de l'en-tête sur UNE seule ligne */
  margin:0 0 6px 0 !important;     /* même écart que celui entre les items */
}
#menucompareb .col_1, #menu6b .col_1, #menu2b .col_1{
  float:none !important; clear:both !important;
  width:auto !important; height:auto !important; margin:0 !important;
}
#menucompareb ul.box1, #menu6b ul.box1, #menu2b ul.box1{ float:none !important; width:auto !important; margin:0 !important; padding:0 !important; }
#menucompareb .box1 li, #menu6b .box1 li, #menu2b .box1 li{
  float:none !important;
  width:auto !important;
  display:block !important;
  white-space:nowrap;          /* chaque libellé reste sur UNE seule ligne */
  margin:0 0 6px 0 !important;  /* écart identique entre chaque item */
}
#menucompareb .box1 li:last-child, #menu6b .box1 li:last-child, #menu2b .box1 li:last-child{ margin-bottom:0 !important; }

/* SOUS-MENU D'AIDE « forfaits mobiles » (05/07/2026) — remplace l'ancienne barre
   « Par univers » (.menu-univers, supprimée). Le 3e item du déroulant Aide
   (li.aide-item-sub) contient l'ancien menu d'aide détaillé (.aide-flyout,
   3 colonnes .col_2). DESKTOP : caché, puis ouvert en FLYOUT vers la GAUCHE au
   survol de l'item (le déroulant Aide est en bord droit -> on ouvre à gauche).
   MOBILE : voir la règle @media plus bas (affiché en ligne dans l'accordéon). */
#menu li .aide-item-sub{ position:relative !important; }
/* petit chevron « ‹ » indiquant que l'item ouvre un sous-menu à gauche */
#menu li .aide-item-sub > a::before{
  content:"\2039"; float:left; margin-right:7px; font-weight:800; opacity:.65;
}
.aide-flyout{
  display:none;                       /* masqué tant qu'on ne survole pas l'item */
  position:absolute; top:-1px; right:100%;   /* collé au bord gauche de l'item */
  width:560px; box-sizing:border-box;        /* largeur FIXE -> pas de débordement
                                                 à gauche sur les desktops étroits */
  padding:14px 16px; gap:18px;
  background:var(--m-card);
  border:1px solid var(--m-line);
  border-radius:12px;
  box-shadow:0 14px 40px -14px rgba(0,0,0,.55);
  z-index:30001;
}
/* pont invisible entre l'item et le flyout : évite de perdre le survol dans
   l'interstice (le flyout est descendant de l'item -> le survoler garde
   :hover sur l'item). */
.aide-flyout::after{
  content:""; position:absolute; top:0; left:100%; width:16px; height:100%;
}
#menu li .aide-item-sub:hover .aide-flyout{ display:flex; }
/* 3 colonnes côte à côte, largeurs égales (min-width:0 -> elles peuvent
   rétrécir sous le contenu et le texte des liens revient à la ligne au lieu
   d'élargir le flyout). */
.aide-flyout .col_2{
  float:none !important; position:static !important;
  width:auto !important; flex:1 1 0 !important; min-width:0 !important; margin:0 !important;
}
.aide-flyout .box2 a{ white-space:normal !important; }
/* Flyout IA passé à 4 colonnes (ajout « Réglementation & RGPD », 08/07/2026).
   La largeur du flyout est FIXE (560px — l'élargir déborderait à GAUCHE, il
   s'ouvre en right:100%). Pour ne pas serrer les libellés, on dispose ses 4
   colonnes en GRILLE 2×2 (flex-wrap). Scopé #menu2aideia : les flyouts Box
   (menu2aidebox) et forfaits (menu2aide) gardent leur rangée simple. */
#menu2aideia{ flex-wrap:wrap !important; }
#menu2aideia .col_2{ flex:1 1 46% !important; }
/* COULEUR DES LIENS DU SOUS-MENU (fix 05/07/2026) : le flyout n'étant pas un
   .dropdown_X, ses liens ne recevaient pas le blanc des autres déroulants et
   héritaient du gris foncé (#24242a). On les force en BLANC quand l'onglet est
   ouvert (spécificité 1-3-2 pour battre '#menu li .box2 li:hover a' = 1-2-3),
   et en gris foncé UNIQUEMENT au survol d'un lien précis (carte rouge). */
#menu li:hover .aide-flyout .box2 a{ color:#fff !important; }
#menu li .aide-flyout .box2 li:hover a,
#menu li .aide-flyout .box2 a:hover{ color:#24242a !important; }
/* l'item parent reste lisible même quand son <li> passe en rouge au survol */
#menu li .aide-item-sub:hover > a{ color:#24242a !important; }

/* ═══════════ SLIDERS jQuery UI — look épais façon origine, en gris ═══════════ */
.ui-slider,
.ui-slider-horizontal{
  background:var(--m-track) !important;
  background-image:none !important;
  border:1px solid #d0d0d8 !important;
  height:12px !important;
  border-radius:7px !important;
}
.ui-slider .ui-slider-range{
  background:#6a6a78 !important;
  background-image:none !important;
  border:none !important;
  border-radius:7px !important;
}
.ui-slider .ui-slider-handle,
.ui-slider-horizontal .ui-slider-handle{
  background:var(--m-handle) !important;
  background-image:none !important;
  border:2px solid #fff !important;
  border-radius:6px !important;
  width:22px !important;
  height:22px !important;
  top:-6px !important;
  margin-left:-11px !important;
  box-shadow:0 1px 5px rgba(0,0,0,.3) !important;
  cursor:pointer !important;
  transition:transform .12s ease, background .12s ease;
}
.ui-slider .ui-slider-handle:hover,
.ui-slider .ui-slider-handle:focus,
.ui-slider .ui-slider-handle.ui-state-active{
  background:#e8e8f0 !important;
  transform:scale(1.08);
  outline:none !important;
}

/* libellés au-dessus des sliders */
#bornes_prix,#bornes_internet,#bornes_appel,#bornes_mms,#bornes_sms{
  color:var(--m-txt-2) !important;
  font-weight:600 !important;
  font-size:13px !important;
}
#bornes_prix span,#bornes_internet span,#bornes_appel span{
  color:var(--m-txt) !important;
  font-weight:700 !important;
}

/* ═══════════ CADRES DU FORMULAIRE ═══════════ */
.bornes_casecadre{
  background:#2a2a32 !important;
  border:1px solid var(--m-line) !important;
  border-radius:var(--m-radius) !important;
  font-weight:500 !important;
  color:var(--m-txt-2) !important;
  box-shadow:0 2px 10px -6px rgba(0,0,0,.3);
  padding:14px !important;          /* padding fixe : permet au bandeau RIO de s'aligner bord à bord */
  box-sizing:border-box !important; /* le padding est inclus dans la largeur : pas de décalage de colonnes */
}

/* ── les 3 colonnes du formulaire à la même hauteur ──
   Grille (réorganisation 05/07/2026) :
   colonne 1 = sliders + engagement + options (une seule carte haute),
   colonne 2 = guide d'achat (3 cartes) + bandeau RIO, bouton résultats dessous,
   colonne 3 = "Choix du réseau" (haut) + "Choix de l'opérateur" (bas).
   3 rangées : la carte 1 couvre tout, le bouton occupe la rangée 3 en col. 2. */
@media (min-width:981px){
  #formforfait{
    display:grid;
    grid-template-columns:1fr 1fr 1fr;
    grid-template-rows:auto 1fr auto;
    gap:12px;
    align-items:stretch;
  }
  #formforfait > .bornes_casecadre{
    width:auto !important;
    margin:0 !important;
    float:none !important;
    min-height:0 !important;
  }
  #formforfait > .bornes_casecadre:nth-of-type(1){ grid-column:1; grid-row:1 / span 3; }
  #formforfait > .bornes_casecadre:nth-of-type(2){
    grid-column:2; grid-row:1 / span 2;
    display:flex;
    flex-direction:column;
  }
  /* le bandeau RIO reste collé au bas de sa carte */
  #formforfait > .bornes_casecadre:nth-of-type(2) .rio-bandeau{ margin-top:auto; }
  #formforfait > .bornes_casecadre:nth-of-type(3){ grid-column:3; grid-row:1; }
  #formforfait > .bornes_casecadre:nth-of-type(4){ grid-column:3; grid-row:2 / span 2; }
  /* bouton "voir les X offres" : dans la grille, sous la colonne centrale */
  #formforfait > #recherchefinal{
    grid-column:2; grid-row:3;
    width:auto !important;
    margin:0 !important;
    float:none !important;
    box-sizing:border-box;
  }
}

/* ── guide d'achat DANS la carte centrale : cartes empilées ── */
.bornes_casecadre .guideachat{
  border-top:none !important;
  display:flex !important;
  flex-direction:column;
  flex-wrap:nowrap;
  gap:10px;
  margin:0 0 14px 0 !important;
  padding:0 !important;
}
.bornes_casecadre .guideachat li{
  margin:0 !important;
  flex:0 0 auto !important;
  width:auto !important;
  background:var(--m-bg);
}

/* ── bandeau "Conserver son numéro / RIO 3179" ──
   Il vit DANS la carte des cases à cocher : les marges négatives
   annulent le remplissage (1%) de la carte pour qu'il soit bord à
   bord avec elle, comme un pied de carte professionnel. */
.rio-bandeau{
  clear:both;
  margin:18px -14px -14px -14px;   /* annule exactement le padding fixe (14px) de la carte parente */
  padding:14px 10px;
  background:var(--m-bg);
  border-top:1px solid var(--m-line);
  border-radius:0 0 9px 9px;       /* épouse l'arrondi 10px de la carte (moins le liseré 1px) */
  text-align:center;
}
.rio-bandeau .rio-titre{
  /* 09/07/2026 (demande Nicolas) : même police et même couleur que le
     numéro 3179 (.rio-numero span) — graisse 800 / rouge doux.
     10/07/2026 (demande Nicolas) : titre réduit 26px -> 21px, tout le
     reste inchangé (le 3179 garde ses 26px et reste le point focal). */
  font-size:21px;
  color:var(--m-red-soft);
  text-transform:uppercase;
  margin-bottom:5px;
  font-weight:800;
}
.rio-bandeau .rio-numero{ font-size:15px; color:var(--m-txt); font-weight:600; }
.rio-bandeau .rio-numero span{
  font-size:26px;
  font-weight:800;
  color:var(--m-red-soft);
  vertical-align:middle;
  margin-left:6px;
}
.rio-bandeau .rio-note{ font-size:11px; color:var(--m-txt-3); margin-top:4px; }

/* ═══════════ CHECKBOXES MODERNES ═══════════ */
.bornes_case input[type=checkbox],
.bornes_case2 input[type=checkbox],
.bornes_casecadre input[type=checkbox]{
  appearance:none;
  -webkit-appearance:none;
  width:17px; height:17px;
  border:1.5px solid #6a6a78;
  border-radius:5px;
  background:#2a2a32;
  cursor:pointer;
  vertical-align:-3px;
  margin-right:6px;
  position:relative;
  transition:all .15s ease;
}
.bornes_case input[type=checkbox]:hover,
.bornes_case2 input[type=checkbox]:hover,
.bornes_casecadre input[type=checkbox]:hover{
  border-color:var(--m-handle);
}
.bornes_case input[type=checkbox]:checked,
.bornes_case2 input[type=checkbox]:checked,
.bornes_casecadre input[type=checkbox]:checked{
  background:var(--m-red);
  border-color:var(--m-red);
}
.bornes_case input[type=checkbox]:checked::after,
.bornes_case2 input[type=checkbox]:checked::after,
.bornes_casecadre input[type=checkbox]:checked::after{
  content:"";
  position:absolute;
  left:5px; top:2px;
  width:4px; height:8px;
  border:solid #fff;
  border-width:0 2px 2px 0;
  transform:rotate(45deg);
}
.bornes_case, .bornes_case2{
  font-weight:500 !important;
  color:var(--m-txt-2) !important;
  font-size:13.5px;
}
/* ── GRILLE UNIQUE des cases à cocher du formulaire (08/07/2026, demande
   Nicolas « harmonise les espaces »). Les DEUX groupes (engagement, puis
   options) du fragment menu-formulaire-d69832.php sont chacun dans un
   <div class="cases-grille"> : 2 colonnes identiques, mêmes écarts partout
   (12px), case + libellé alignés au flex (la coche reste calée même si le
   libellé passe sur 2 lignes). Remplace l'ancien duo inline-block 50% /
   grille inline qui donnait des rythmes différents. */
.cases-grille{
  display:grid; grid-template-columns:1fr 1fr;
  column-gap:12px; row-gap:12px;
  margin-top:14px;
}
.cases-grille > div{
  float:none !important; width:auto !important; margin:0 !important;
  display:flex !important; align-items:center; gap:7px;
  font-size:13px !important; line-height:1.35;
  text-align:left;   /* la carte parente est en text-align:justify (css.css) : sans ça,
                        un libellé sur 2 lignes s'étire (« 12    mois / engagement ») */
}
.cases-grille input[type=checkbox]{ flex:0 0 auto; margin:0 !important; }

/* ═══════════ SELECT MODERNE ═══════════ */
#choixoperateur, #jumpMenu, .bornes_casecadre select{
  appearance:none;
  -webkit-appearance:none;
  background:#2a2a32 url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c0c0c8' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 12px center;
  border:1.5px solid var(--m-line);
  border-radius:8px;
  padding:8px 34px 8px 12px;
  font-size:13.5px;
  font-weight:500;
  color:var(--m-txt);
  cursor:pointer;
  transition:border-color .15s;
  margin-left:6px;
}
#choixoperateur:hover, #choixoperateur:focus, #jumpMenu:hover, #jumpMenu:focus{
  border-color:var(--m-handle);
  outline:none;
}
#jumpMenu option{
  background:#2a2a32;
  color:var(--m-txt-2);
  padding:8px 12px;
  border:none;
  font-size:13px;
}

/* ═══════════ BOUTON RÉSULTATS ═══════════ */
#recherchefinal{
  background:var(--m-red) !important;
  color:#fff !important;
  border:1.5px solid var(--m-red) !important;
  border-radius:12px !important;
  font-weight:800 !important;
  transition:all .18s ease;
  box-shadow:0 4px 18px -6px rgba(229,72,77,.45);
}
#recherchefinal:hover{
  background:var(--m-red2) !important;
  border-color:var(--m-red2) !important;
  transform:translateY(-1px);
}
#recherchefinal .span1{ color:rgba(255,255,255,.85) !important; }

/* ═══════════ GUIDE D'ACHAT — icônes SVG ═══════════ */
.guideachat{
  border-top:1px solid var(--m-line) !important;
  display:flex !important;
  flex-wrap:wrap;
  gap:12px;
}
.guideachat li{
  background:#2a2a32;
  border:1px solid var(--m-line);
  border-radius:var(--m-radius);
  margin:12px 0 0 0 !important;
  padding:16px !important;
  width:auto !important;
  flex:1 1 0;
  min-width:0;
  box-sizing:border-box;
  float:none !important;
  transition:box-shadow .2s ease, transform .2s ease;
}
.guideachat .texte{ overflow:hidden; }
.guideachat li:hover{
  box-shadow:0 10px 28px -14px rgba(0,0,0,.15);
  transform:translateY(-2px);
}
.guide-ico{
  width:44px; height:44px;
  border-radius:10px;
  background:#3a3a44;
  display:flex; align-items:center; justify-content:center;
  float:left; margin-right:12px;
}
.guide-ico svg{ width:24px; height:24px; stroke:var(--m-red); }
.guideachat .texte{ color:var(--m-txt-3) !important; font-size:13px; line-height:1.5; }
.guideachat .texte a{ color:var(--m-txt) !important; font-weight:700 !important; font-size:14px; }
.guideachat .texte a:hover{ color:var(--m-handle) !important; }
.guideachat .image{ display:none !important; } /* anciennes images masquées */

/* ═══════════ ALERTE ROUGE PAGE DÉSIMLOCKAGE ═══════════ */
.alerte-rouge, #texte .alerte-rouge{ color:var(--m-red) !important; }

/* ═══════════ LIEN NORMES RÉSEAU (page couverture) ═══════════ */
.lien-normes{ color:var(--m-red) !important; }
.lien-normes:hover{ color:var(--m-red-soft) !important; }

/* ═══════════ LIENS OPÉRATEUR PAGE DÉSIMLOCKAGE ═══════════ */
.contact-operateur a{
  color:var(--m-red) !important;
  font-weight:bold;
}
.contact-operateur a:hover{
  color:var(--m-red-soft) !important;
}

/* ═══════════ ICONES MODERNES PAGES (guide-ico style) ═══════════ */
.guidemoderne{
  width:44px; height:44px;
  border-radius:10px;
  background:#3a3a44;
  display:flex; align-items:center; justify-content:center;
  float:left; margin-right:15px;
}
.guidemoderne svg{
  width:24px; height:24px;
  stroke:var(--m-red);
}

/* ═══════════ TITRES ═══════════ */
.titrenoir, .guideachath, h1, h2{
  font-family:'Inter', sans-serif !important;
  font-weight:800 !important;
  letter-spacing:-.01em;
}
.plus1{ color:var(--m-txt) !important; }
.plus2{ color:var(--m-txt-3) !important; font-weight:600 !important; }

/* liens globaux */
a:link{ color:var(--m-red-soft); }
a:visited{ color:var(--m-red-soft); }
a:hover{ color:var(--m-txt); }

/* conteneur des 2 encarts pub (navig-axxa/publicite-encarts.php) : la règle
   historique « article,aside{float:left;width:98%} » de css.css transforme ce
   <aside> — inséré JUSTE avant le <footer> — en bloc flottant plein cadre. Le
   footer se met alors à côté du float et se retrouve poussé hors écran à droite
   + scroll horizontal, DÈS QU'UNE PUB EST ACTIVE (10/07/2026). Ses 2 rectangles
   sont en position:fixed : ce wrapper ne doit avoir AUCUNE empreinte de layout. */
#pub-encarts{ float:none !important; width:auto; height:0; margin:0; padding:0; }
/* (rappel : bumper le ?v= de cette feuille dans header-niveau1 à chaque modif) */

/* ═══════════ FOOTER MODERNE ═══════════ */
footer{
  background:#24242a !important;
  background-image:none !important;
  border-top:1px solid var(--m-line);
  color:var(--m-txt) !important;
  padding:36px 0 28px;
  margin-top:0;   /* colle au bloc gris #contenu : plus de bande sombre entre les deux (05/07/2026) */
  /* z-index:0 (css.css le met à 1) : sur l'accueil, l'aside des encarts pub
     atterrit DANS #contenu (z-index:1) — avec le footer à 1 et plus tard dans
     le DOM, il peignait PAR-DESSUS les skyscrapers fixes. À 0, les pubs
     passent au-dessus du footer, comme sur /ai/ (05/07/2026). */
  z-index:0;
}
footer .centre{
  max-width:1100px;
  margin:0 auto;
  padding:0 20px;
  color:var(--m-txt) !important;
}
footer .foot-grid{
  display:flex;
  flex-wrap:wrap;
  gap:32px;
  align-items:flex-start;
  justify-content:space-between;
}
footer .foot-col{ flex:1; min-width:200px; }
footer .foot-brand{
  font-weight:800; font-size:15px; color:var(--m-txt);
  margin-bottom:14px;
}
footer .foot-links{ list-style:none; margin:0; padding:0; }
footer .foot-links li{ margin-bottom:8px; }
footer .foot-links a{
  color:var(--m-txt-2) !important;
  text-decoration:none;
  font-size:13.5px;
  font-weight:500;
  transition:color .15s;
}
footer .foot-links a:hover{ color:var(--m-txt) !important; }

/* newsletter */
footer #formnewsletter{
  display:flex; align-items:center; gap:0;
  background:#2a2a32;
  border:1.5px solid var(--m-line);
  border-radius:10px;
  overflow:hidden;
  padding:0 !important; margin:0 !important;
  max-width:280px;
}
footer #formnewsletter label{ display:none; }
footer #formnewsletter input[type=email]{
  flex:1; border:none; padding:10px 12px;
  font-size:13px; color:var(--m-txt);
  background:transparent; outline:none;
}
footer #formnewsletter input[type=email]::placeholder{ color:var(--m-txt-3); }
footer #boutonvalide_new{
  width:42px; height:38px;
  border:none; cursor:pointer;
  background:var(--m-red) url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 2L11 13'/%3E%3Cpath d='M22 2l-7 20-4-9-9-4 20-7z'/%3E%3C/svg%3E") no-repeat center;
  transition:background-color .15s;
}
footer #boutonvalide_new:hover{ background-color:var(--m-red2); }

/* message d'inscription newsletter (#emailafferreur) : css.css lui impose
   height:17px + width:200px + padding-left:50px -> le texte de confirmation
   (plusieurs lignes) débordait et passait par-dessus les icônes réseaux.
   On laisse la hauteur s'adapter et on le remet dans le flux. */
footer #emailafferreur{
  height:auto !important;
  width:auto !important;
  max-width:280px;
  padding-left:0 !important;
  text-align:left !important;
  margin-top:8px;
  line-height:1.4;
  color:var(--m-txt-2);
}

/* réseaux sociaux */
footer #suiveznous{
  color:var(--m-txt-2) !important;
  float:none !important;
  padding:0 !important;
  display:flex; align-items:center; gap:10px;
  margin-top:16px;
  font-size:13px; font-weight:600;
}
footer .soc-ic{
  width:34px; height:34px;
  border-radius:9px;
  background:#2a2a32;
  border:1.5px solid var(--m-line);
  display:inline-flex; align-items:center; justify-content:center;
  transition:all .15s;
}
footer .soc-ic:hover{ border-color:var(--m-red); transform:translateY(-1px); }
footer .soc-ic svg{ width:16px; height:16px; fill:var(--m-txt-2); }
footer .soc-ic:hover svg{ fill:var(--m-txt); }

/* logo bas */
/* logo du footer (06/07/2026) : css.css le met en float:right +
   margin-top:-50px (il sortait du footer, collé en haut à droite sur les
   fiches opérateur) -> on neutralise le float/la marge et on le CENTRE
   dans sa colonne, aligné au milieu de la hauteur du footer. */
footer #texte-logobas{
  float:none !important;
  margin-top:0 !important;
  width:auto !important;
  text-align:center;
  align-self:center;
}
/* logo agrandi (width en CSS pour battre l'attribut width="150" du <img>) */
footer #texte-logobas img{ width:230px; max-width:100%; height:auto; opacity:.95; }

/* ancien ol du footer neutralisé */
footer ol{ list-style:none; margin:0; padding:0; }

/* cookies */
.cookieclass{
  background:#2a2a32 !important;
  border:1px solid var(--m-line) !important;
  border-radius:12px;
  color:var(--m-txt-2) !important;
  box-shadow:0 16px 40px -20px rgba(0,0,0,.25);
}

/* ═══════════ PAGES INTÉRIEURES — CONTENU ═══════════
   Modernise les composants des pages intérieures encore stylés
   par css.css (bandeaux violets, encadrés pointillés, boutons
   rouges/jaunes, liens rouges…) dans la même palette grise. */

/* titres de page et bandeaux de section (ex-violet).
   13/07/2026 (demande Nicolas) : TOUS les H1 du site passent au ROUGE DOUX
   (--m-red-soft), comme les titres de l'accueil (#texte_accueil h1..h4).
   Les H1 des sections IA (.ia-titre) et Box (.box-titre) sont alignés dans
   leurs feuilles dédiées (ai/ia-theme.css, box/box-theme.css) + un filet de
   sécurité h1.ia-titre/h1.box-titre ci-dessous (bat leur CSS même en cache). */
#texte h1, #annonce h1{ color:var(--m-red-soft) !important; }
#texte h1.ia-titre, h1.ia-titre,
#texte h1.box-titre, h1.box-titre{ color:var(--m-red-soft) !important; }

/* ═══════════ LIEN « SITE OFFICIEL » (13/07/2026, demande Nicolas) ═══════════
   Petit lien ROUGE DOUX vers le site web officiel de la marque / de
   l'opérateur / de l'éditeur IA — posé sur les cartes produits (forfaits,
   box, IA), les fiches opérateurs et les pages ODR. */
.lien-officiel,
#texte .lien-officiel, #texte .lien-officiel:link, #texte .lien-officiel:visited{
  color:var(--m-red-soft) !important;
  font-size:12.5px; font-weight:600;
  text-decoration:none;
  border-bottom:1px dotted var(--m-red-soft);
  transition:color .15s, border-color .15s;
}
.lien-officiel:hover,
#texte .lien-officiel:hover{ color:var(--m-red) !important; border-bottom-color:var(--m-red); }
.lien-officiel strong{ font-weight:800; }

/* barre de liens utiles des pages ODR filtrées (site officiel + résiliation
   + lettre + conserver son numéro — les 3 derniers : opérateurs mobiles
   uniquement, offres-remboursement.php) */
.odr-liens{
  display:flex; flex-wrap:wrap; gap:10px 14px; align-items:center;
  margin:12px 0 14px;
}
.odr-liens .lien-officiel{ font-size:14px; }
.odr-lien-aide,
#texte .odr-lien-aide, #texte .odr-lien-aide:link, #texte .odr-lien-aide:visited{
  display:inline-block;
  padding:6px 12px;
  background:var(--m-card);
  border:1px solid var(--m-line);
  border-radius:8px;
  color:var(--m-txt-2) !important;
  font-size:12.5px; font-weight:600;
  text-decoration:none;
  transition:all .15s;
}
.odr-lien-aide:hover,
#texte .odr-lien-aide:hover{ border-color:var(--m-red); color:var(--m-txt) !important; }

/* bouton retour au sommaire des ODR (pages filtrées) */
.odr-retour-bloc{ margin:22px 0 6px; text-align:center; }
.odr-retour,
#texte .odr-retour, #texte .odr-retour:link, #texte .odr-retour:visited{
  display:inline-block;
  padding:10px 18px;
  background:var(--m-card);
  border:1.5px solid var(--m-line);
  border-radius:var(--m-radius);
  color:var(--m-red-soft) !important;
  font-size:14px; font-weight:700;
  text-decoration:none;
  transition:all .15s;
}
.odr-retour:hover,
#texte .odr-retour:hover{ border-color:var(--m-red); color:var(--m-txt) !important; }

/* ═══════════ BOÎTE RIO 3179 — réutilisable ═══════════ */
.box-3179{
  border:var(--m-red) 2px dashed !important;
  color:var(--m-red) !important;
  padding:14px !important;
  margin:18px auto !important;
  font-size:28px !important;
  font-weight:bold !important;
  width:220px !important;
  text-align:center !important;
  border-radius:var(--m-radius) !important;
}

/* ═══════════ PAGE CHANGER OPÉRATEUR ═══════════ */
/* boîte 3179 : pointillés rouges, texte rouge */
.page-changer-operateur div[style*="dashed"]{
  border-color:var(--m-red) !important;
  color:var(--m-red) !important;
}
/* liens vers résiliation et lettre : rouge thème, survol rouge plus clair */
.page-changer-operateur a[href*="resilier-abonnement"],
.page-changer-operateur a[href*="lettre-de-resiliation"]{
  color:var(--m-red) !important;
}
.page-changer-operateur a[href*="resilier-abonnement"]:hover,
.page-changer-operateur a[href*="lettre-de-resiliation"]:hover{
  color:var(--m-red-soft) !important;
}
.htitre,
#affiche_recherche .monforfait{
  background:var(--m-red) !important;
  background-image:none !important;
  border-radius:8px;
  color:#fff !important;
}
.htitre h2, .htitre a, .htitre a:link, .htitre a:visited{ color:#fff !important; }

/* mises en avant et liens spéciaux (ex-rouge / ex-violet) */
.MEA{ color:var(--m-txt) !important; }
a.lien1{ color:var(--m-accent) !important; }
#textepromo .voir{ color:var(--m-txt-3) !important; }
.rougeoffre, .rougeoffre a, .rougeoffre a:hover,
.rougeoffre a:link, .rougeoffre a:visited{ color:var(--m-txt) !important; }
.li2s{ color:var(--m-txt-2) !important; }
.contour .ab4{ color:var(--m-red-soft) !important; }
.contour .ab4 .act1, .contour .ab4 .act2{ color:var(--m-txt-3) !important; }
.avantformulaire{ color:var(--m-txt-2) !important; }
#tableaucompare .date_promo{ color:var(--m-txt-2) !important; }
.autre .ouvrir{ color:var(--m-txt-2) !important; background:none !important; }

/* colonnes des menus déroulants (ex-magenta) */
.col_3,.col_4,.col_5{ background:transparent !important; }

/* filets et encadrés pointillés (ex-violet pointillé) */
hr{ border-color:var(--m-line) !important; border-style:solid !important; }
.info,
.offreremboursement,
.montantdu,
.Actudiv .ul1,
.listeoperateur,
figure{
  border:1px solid var(--m-line) !important;
  border-radius:var(--m-radius);
  background:#2a2a32;
}
figure:hover{ border-color:var(--m-handle) !important; }
#cadre_over{ border:1px solid var(--m-line) !important; }

/* résultats de la recherche de forfaits */
#affiche_resultat{
  border:1px solid var(--m-line) !important;
  background:#2a2a32 !important;
  border-radius:var(--m-radius);
}
#affiche_resultat .li1{
  background:var(--m-red) !important;
  background-image:none !important;
}
#affiche_resultat .li1 .dvi2,
#affiche_resultat .li3,
#affiche_resultat .li3_promo{
  color:#fff !important;
  text-shadow:none !important;
}
.prix_flottant{ color:var(--m-txt) !important; }
.recherche_prix s, .recherche_prix s sup{ color:var(--m-txt-3) !important; }
.prix_flottant_offre{ border-color:var(--m-line) !important; }
.prix_flottant_offre s, .prix_flottant_offre span,
.prix_flottant_offre s sup{ color:var(--m-txt-2) !important; }
.offre_barre{ color:var(--m-txt-2) !important; }
.recherche_prix a, .recherche_barre a, .offre_barre a,
.recherche_prix a:link, .recherche_barre a:link, .offre_barre a:link,
.recherche_prix a:visited, .recherche_barre a:visited,
.offre_barre a:visited{ color:var(--m-accent) !important; }
.pop, .pop:link, .pop:visited{ color:var(--m-accent) !important; }
.recherche_logo img{ border:1px solid var(--m-line) !important; border-radius:6px; }
.recherche_texte .T2, .recherche_texte2 .T3{ color:var(--m-txt) !important; }

/* boutons des fiches forfait */
.pop2{ background:var(--m-red) !important; border-radius:8px; }
.pop2:hover{ background:var(--m-red2) !important; }
/* repli « logo manquant » (08/07/2026) : 17 opérateurs n'ont pas de logo en
   base -> pastille BLANCHE avec le nom (même gabarit que les vrais logos),
   au lieu d'une image cassée. Utilisé par le comparateur, les bons plans et
   la modale de comparaison. */
.logo-txt{
  display:inline-block; background:#fff; color:#1c1c22 !important;
  font-weight:800; font-size:14px; line-height:1.25; text-align:center;
  padding:14px 10px; border-radius:10px; border:1px solid var(--m-line,#3a3a44);
  max-width:150px; min-width:110px; box-sizing:border-box;
}
.rbtindex div.cadpro .logo-txt{ display:block; width:fit-content; margin:14px auto 10px; }

/* pagination du comparateur (li.separbouton, rendu par pagelisteinform-lesinfos.php
   avec un style inline height:5px hérité) : rangée de pages CENTRÉE au flex
   (08/07/2026, demande Nicolas — « les pages sont mal centrées ») ; le flex
   centre aussi les « … », contrairement au text-align d'origine. */
#affiche_recherche2 li.separbouton{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  gap:6px; height:auto !important; padding:10px 14px !important; margin-bottom:10px !important;
}
#affiche_recherche2 li.separbouton .cadrebout,
#affiche_recherche2 li.separbouton .cadrebout2{ margin:0; }

.cadrebout{
  border:1.5px solid var(--m-line) !important;
  border-radius:7px;
  background:#2a2a32 !important;
}
.cadrebout:hover{
  border:1.5px solid #e0e0e8 !important;
  border-radius:7px;
  background:var(--m-bg) !important;
}
.cadrebout2{
  border:1.5px solid #4a4a54 !important;
  border-radius:7px;
  background:#3a3a44 !important;
  color:#fff !important;
}

/* cartes "Bons plans" (accueil + pages intérieures) */
.rbtindex div.cadpro{
  border:1px solid var(--m-line) !important;
  border-radius:var(--m-radius);
  overflow:hidden;
  background:#2a2a32;
}
/* logo opérateur : bloc centré sur pastille blanche, bien séparé du prix */
.rbtindex div.cadpro img{
  display:block !important;
  width:auto !important;
  max-width:150px;
  max-height:56px;
  object-fit:contain;
  margin:14px auto 10px !important;
  background:#fff;
  padding:6px 10px;
  border-radius:10px;
  box-sizing:border-box;
}
.rbtindex div.cadpro .t12s5{
  display:inline-block;
  line-height:1;
  margin-top:4px;
  font-weight:800;
  color:var(--m-red-soft) !important;
}
.rbtindex div.cadpro span.tav35{ margin-top:8px; }
.rbtindex div.cadpro .forti{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px 10px;
}
.rbtindex div.cadpro .forti{ background:var(--m-red) !important; color:#fff !important; }
.rbtindex div.cadpro .t123{ color:var(--m-txt-3) !important; }
.rbtindex div.cadpro .bt_fo{ background-color:var(--m-red) !important; color:#fff !important; }
.rbtindex div.cadpro .bt_fo:hover{ background-color:var(--m-red2) !important; color:#fff !important; }
.rbtindex div.cadpro span.tav35,
.rbtindex div.cadpro .inte25c,
.rbtindex div.cadpro .bt_fo13{ color:var(--m-txt-3) !important; }

/* panneau « Voir détails » DANS les cartes Bons plans (08/07/2026) : même
   composant que le comparateur, mais la carte .cadpro centre tout son contenu
   (text-align:center) -> on ré-aligne à gauche pour la lisibilité, et on annule
   le padding:3% générique de « .rbtindex div.cadpro div » qui écraserait le
   padding propre du panneau et du bouton. */
.rbtindex div.cadpro .bp-detail-wrap{ padding:8px 0 4px; }
.rbtindex div.cadpro .forfait-detail{ text-align:left; padding:14px 16px; }
.rbtindex div.cadpro .forfait-detail.fd-ouvert{ grid-template-columns:1fr; }

/* tableaux (paramètres APN, comparatifs, légendes) */
.a1,.a2,.a3,.a4,.a5,.a6{ background:#3a3a44 !important; color:#fff !important; }
.legendetab{ background:#3a3a44 !important; color:#fff !important; }
.apn_nomope{ color:var(--m-txt) !important; }

/* actualités */
.Actu{ color:var(--m-txt) !important; }
.Actudiv .li1 span, .Actudiv .li1b span{ color:var(--m-txt) !important; }

/* liste des opérateurs */
.listeoperateur p a:link,
.listeoperateur p a:visited{ color:var(--m-txt) !important; }

/* panier comparateur */
.obj-panier .div3{ color:var(--m-txt) !important; }

/* bannières publicitaires larges : angles arrondis comme l'accueil */
.banoffre{ text-align:center; margin:18px 0; }
.banoffre img{
  border-radius:14px !important;
  max-width:100%;
  height:auto;
}

/* bannière partenaire de la fiche opérateur (aside.imgpu, ex. Auchan
   Telecom 100Go) : mêmes angles arrondis que la bannière du haut (06/07/2026) */
.imgpu img{
  border-radius:14px !important;
  max-width:100%;
  height:auto;
}

/* pagination du bandeau publicitaire */
.pagination a{
  color:var(--m-txt-2) !important;
  background:var(--m-card) !important;
  border-radius:4px;
}
.pagination a:hover, .pagination a.selected{
  color:#fff !important;
  background:var(--m-red) !important;
}

/* ═══════════ PAGE RÉSILIATION — formulaire de calcul ═══════════ */
#calculatrice{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-radius:var(--m-radius) !important;
  color:var(--m-red) !important;
  padding:22px 26px !important;
  max-width:620px;              /* carte centrée dans la page */
  margin:0 auto 18px auto !important;
}
#calculatrice label{ width:230px !important; }
/* le bouton Calculer, centré sous le formulaire */
#calculatrice input[type="button"]{
  display:block;
  margin:16px auto 0 !important;
}
#calculatrice label{ color:var(--m-txt) !important; font-weight:600; }
#calculatrice input[type="text"]{
  background:var(--m-bg) !important;
  border:1.5px solid var(--m-line) !important;
  border-radius:8px;
  padding:6px 10px;
  color:var(--m-txt) !important;
  font-size:14px;
}
#calculatrice select#dureeengagement{
  appearance:none; -webkit-appearance:none;
  background:var(--m-bg) url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c0c0c8' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 12px center;
  border:1.5px solid var(--m-line);
  border-radius:8px;
  padding:8px 34px 8px 12px;
  font-size:13.5px;
  font-weight:500;
  color:var(--m-txt);
  cursor:pointer;
  transition:border-color .15s;
}
#calculatrice select#dureeengagement:hover,
#calculatrice select#dureeengagement:focus{
  border-color:var(--m-handle);
  outline:none;
}
#calculatrice input[type="button"]{
  background:var(--m-red) !important;
  color:#fff !important;
  border:1.5px solid var(--m-red) !important;
  border-radius:10px !important;
  font-weight:800 !important;
  font-size:15px;
  padding:10px 28px;
  cursor:pointer;
  transition:all .18s ease;
  box-shadow:0 4px 18px -6px rgba(229,72,77,.45);
}
#calculatrice input[type="button"]:hover{
  background:var(--m-red2) !important;
  border-color:var(--m-red2) !important;
  transform:translateY(-1px);
}
#calculatrice span{ color:var(--m-red) !important; font-size:13px !important; }

/* les 3 boîtes de résultats : mêmes dimensions, alignées et centrées */
.resultats-frais{
  display:flex;
  gap:14px;
  justify-content:center;
  align-items:stretch;
  max-width:820px;
  margin:0 auto;
}
.resultats-frais .montantdu{
  float:none !important;
  width:auto !important;
  flex:1 1 0;
  margin:0 !important;
  box-sizing:border-box;
}

/* ═══════════ PAGE LETTRE DE RÉSILIATION — formulaire ═══════════ */
#formcontact2{
  width:auto !important;
  max-width:900px;
  float:none !important;
  margin:0 auto !important;
  background:var(--m-card);
  border:1px solid var(--m-line);
  border-radius:var(--m-radius);
  padding:22px 26px;
  display:flex;
  flex-wrap:wrap;
  gap:26px;
  justify-content:center;
  color:var(--m-txt);           /* titres de sections ("Informations…") en blanc */
  font-weight:700;
}
#formcontact2 .forcase1{ width:auto !important; float:none !important; flex:1 1 460px; }
#formcontact2 .forcase2{ width:auto !important; float:none !important; flex:0 1 280px; }
#formcontact2 label{
  display:block;
  width:auto !important;
  margin-top:12px;
  color:var(--m-txt-3) !important;
  font-weight:600;
}
#formcontact2 input[type="text"],
#formcontact2 input[type="tel"],
#formcontact2 textarea{
  width:100% !important;
  max-width:460px;
  height:auto !important;
  background:var(--m-bg) !important;
  border:1.5px solid var(--m-line) !important;
  border-radius:8px !important;
  padding:8px 12px;
  color:var(--m-txt) !important;
  font-size:14px;
  font-weight:500;
  box-sizing:border-box;
}
#formcontact2 textarea{ height:150px !important; }
#formcontact2 select{
  width:100% !important;
  max-width:460px;
  background:var(--m-bg) !important;
  border:1.5px solid var(--m-line) !important;
  border-radius:8px !important;
  padding:8px 12px;
  color:var(--m-txt) !important;
  font-size:14px;
  font-weight:500;
  cursor:pointer;
  box-sizing:border-box;
}
#formcontact2 input[type="radio"]{
  width:auto !important;
  height:auto !important;
  accent-color:var(--m-red);
}
/* MENU DÉROULANT OPÉRATEUR AGRANDI (13/07/2026, demande Nicolas) : sur la page
   lettre de résiliation, le <select> de choix de l'opérateur est nettement plus
   grand et lisible (police 17px gras, hauteur ~54px). On GARDE la flèche native
   du navigateur (elle s'agrandit avec la police) : la règle générique du gabarit
   « #formcontact2 select{ background:…!important } » force background-image:none
   via son raccourci !important — impossible d'y poser un chevron SVG proprement,
   inutile de se battre pour ça. */
#formcontact2 select#selectoperateur{
  max-width:100% !important;
  min-height:54px;
  padding:15px 16px !important;
  font-size:17px !important;
  font-weight:700 !important;
  color:var(--m-txt) !important;
  border:2px solid var(--m-line) !important;
  border-radius:10px !important;
}
#formcontact2 select#selectoperateur:hover,
#formcontact2 select#selectoperateur:focus{
  border-color:var(--m-red) !important;
  outline:none;
}
/* les lignes de la liste déroulée (rendu natif du navigateur) : mêmes codes,
   police confortable ; le fond sombre évite le blanc éblouissant par défaut */
#formcontact2 select#selectoperateur option{
  background:var(--m-bg);
  color:var(--m-txt);
  font-size:16px;
  font-weight:600;
  padding:10px;
}
/* bouton "Voir et imprimer la lettre" : rouge du thème, centré */
#formcontact2 input#envoi2{
  display:block;
  width:auto !important;
  height:auto !important;
  margin:20px auto 0;
  padding:12px 26px;
  background:var(--m-red) !important;
  color:#fff !important;
  border:1.5px solid var(--m-red) !important;
  border-radius:10px !important;
  font-weight:800 !important;
  font-size:15px !important;
  cursor:pointer;
  box-shadow:0 4px 18px -6px rgba(229,72,77,.45);
  transition:all .18s ease;
}
#formcontact2 input#envoi2:hover{
  background:var(--m-red2) !important;
  border-color:var(--m-red2) !important;
  transform:translateY(-1px);
}

/* ═══════════ BLOCS CODE PUK — thème moderne ═══════════ */
.codepuk{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-radius:var(--m-radius);
  color:var(--m-txt-2);
}
.codepuk h2{ color:var(--m-txt) !important; }
.codepuk .lipuk{ color:var(--m-txt-2); }
.codepuk .lipuk span{ color:var(--m-txt-3) !important; font-size:10px; }
.codepuk .lipuk a:link,
.codepuk .lipuk a:visited{ color:var(--m-red-soft) !important; }
.codepuk .lipuk a:hover{ color:var(--m-txt) !important; }
/* ═══════════ LIENS "HAUT DE PAGE" — rouge ═══════════ */
a[href="#texte"][title^="revenir"]{ color:var(--m-red) !important; }
a[href="#texte"][title^="revenir"]:hover{ color:var(--m-red-soft) !important; }

.codepuk .lilogo img{
  background:#fff;
  padding:6px 10px;
  border-radius:8px;
  max-width:110px;
  height:auto;
}

/* lien RIO dans la page résiliation : rouge du thème */
/* liens du texte courant (06/07/2026) : css.css les met en NOIR
   (section a{color:#000} — invisibles sur le fond sombre) avec un survol
   magenta de l'ancien thème (#9e0875). Même sélecteur que css.css, chargé
   après -> prioritaire : rouge doux du thème au repos, blanc au survol. */
section a:visited, section a, section a:link{ color:var(--m-red-soft); }
section a:hover{ color:var(--m-txt); }

#texte a[href*="changer-operateur"],
#texte a[href*="comment-changer-operateur"]{ color:var(--m-red) !important; }
#texte a[href*="changer-operateur"]:hover,
#texte a[href*="comment-changer-operateur"]:hover{ color:var(--m-txt) !important; }

/* ═══════════ HARMONISATION FINALE ═══════════
   Derniers restes de couleurs (vert, bleu, rose, noir sur fond
   sombre) ramenés dans la palette gris sombre + rouge. */

/* cercles de pourcentage data (ex-verts) */
.c100{ background:#3a3a44 !important; }
.c100 .bar, .c100 .fill,
.c100.green .bar, .c100.green .fill{ border-color:var(--m-red) !important; }
.c100 > span{ color:var(--m-txt) !important; }
.c100:hover > span, .c100.green:hover > span{ color:var(--m-red-soft) !important; }
.c100:after{ background:var(--m-card) !important; }

/* tableaux des forfaits opérateur (cellules claires → sombres) */
.contour td, .subMenu td{
  background:var(--m-card) !important;
  border-color:var(--m-line) !important;
  color:var(--m-txt-2) !important;
}
.contour .ab1, .contour .ab2{ color:var(--m-txt) !important; }

/* ═══════════ PUB CARRÉE V2 (06/07/2026) — accueil ═══════════
   Remplace l'ancien slider #slide_ban (featuredcontentslider 310×260 :
   l'image y était réduite à 120px au-dessus du texte). Nouveau bloc #pubcarre
   (markup index.php, rotation js/pub-carre.js) : VRAI CARRÉ (aspect-ratio 1/1)
   plus grand, l'IMAGE remplit tout le carré (object-fit:cover) et le texte
   saisi en back-office (titre/texte/bouton) s'affiche PAR-DESSUS sur un voile
   dégradé ; slide sans image = carte texte centrée. Les règles génériques
   « aside » de css.css (width/padding/float mobiles) sont battues en
   spécificité (aside#pubcarre) + !important sur le gabarit. */
/* À DROITE DES OPÉRATEURS (06/07/2026, demande Nicolas — cf. screenshot) :
   la bande opérateurs .bande_ope fait width:66% float:left ; le carré prend les
   ~34% restants, float:left -> il se cale À DROITE des opérateurs. Rendu inline
   dans index.php, juste après la liste opérateurs.
   box-sizing:border-box = le padding est INCLUS dans les 34% (sinon 66%+34%+1%
   de padding dépasse 100% et le carré tombe SOUS les opérateurs, surtout depuis
   que #contenu est borné à 1200px). */
aside#pubcarre{
  float:left !important; box-sizing:border-box !important;
  width:34% !important; margin:0 !important; padding:8px 0 8px 16px !important;
}
.pubc-etiquette{ margin:0 0 4px !important; font-weight:normal; font-size:10px; color:var(--m-txt-3); }
.pubc-cadre{
  position:relative; width:100%; max-width:480px;
  aspect-ratio:1/1;
  border-radius:14px; overflow:hidden;
  background:var(--m-card); border:1px solid var(--m-line);
  box-shadow:0 16px 38px -20px rgba(0,0,0,.65);
}
.pubc-slide{
  position:absolute; inset:0;
  display:flex; flex-direction:column; justify-content:flex-end;
  text-decoration:none !important;
  opacity:0; visibility:hidden;
  transition:opacity .5s ease, visibility .5s;
}
.pubc-slide.pubc-active{ opacity:1; visibility:visible; }
/* l'image remplit TOUT le carré ; léger zoom au survol quand cliquable.
   !important : les règles génériques du site (« … img{max-width:100%;
   height:auto} ») écrasaient le height:100% -> image invisible. */
#pubcarre .pubc-img{
  position:absolute; inset:0;
  width:100% !important; height:100% !important;
  max-width:none !important; max-height:none !important;
  object-fit:cover;
  transition:transform .4s ease;
}
#pubcarre a.pubc-slide:hover .pubc-img{ transform:scale(1.04); }
/* texte par-dessus l'image : voile dégradé accroché en bas */
.pubc-voile{
  position:relative;
  display:flex; flex-direction:column; align-items:flex-start; gap:6px;
  padding:16px;
}
.pubc-avec-image .pubc-voile{
  padding-top:52px;
  background:linear-gradient(180deg, rgba(18,18,22,0) 0%, rgba(18,18,22,.9) 60%);
}
/* slide 100% texte : contenu centré dans le carré */
.pubc-sans-image{ justify-content:center; }
.pubc-sans-image .pubc-voile{ align-items:center; text-align:center; padding:26px; gap:10px; }
.pubc-titre{
  font-size:20px; font-weight:800; line-height:1.25;
  color:var(--m-txt) !important;
  text-shadow:0 1px 8px rgba(0,0,0,.55);
}
.pubc-sans-image .pubc-titre{ font-size:23px; }
.pubc-texte{ font-size:13.5px; line-height:1.45; color:var(--m-txt-2) !important; }
.pubc-bouton{
  display:inline-block; margin-top:4px; padding:9px 20px;
  background:var(--m-red); color:#fff !important;
  font-size:13px; font-weight:700; border-radius:9px;
  transition:background .15s;
}
.pubc-slide:hover .pubc-bouton{ background:var(--m-red2); }
/* points de rotation (générés par js/pub-carre.js si plusieurs slides) */
.pubc-points{ display:flex; gap:7px; justify-content:center; margin-top:9px; max-width:480px; }
.pubc-points button{
  width:9px; height:9px; padding:0;
  border:none; border-radius:50%;
  background:var(--m-line); cursor:pointer;
  transition:background .2s, transform .2s;
}
.pubc-points button.pubc-actif{ background:var(--m-red); transform:scale(1.25); }
.pubc-points button:hover{ background:var(--m-red-soft); }
/* ≤1024px (tablette/mobile, seuil du menu burger) : carré EN PLEINE LARGEUR
   empilé sous les opérateurs — au-delà il est en float:34% à DROITE des
   opérateurs (66%). Seuil relevé de 768 à 1024 le 06/07/2026 : entre 769 et
   1024, à 34% le carré se serrait contre les opérateurs et pouvait croiser
   l'encart « Publicité » fixe de droite ; empilé + centré, c'est propre. */
@media screen and (max-width:1024px){
  aside#pubcarre{ float:none !important; clear:both !important; width:auto !important; padding:10px !important; }
  .pubc-cadre, .pubc-points{ margin-left:auto; margin-right:auto; }
}
@media (prefers-reduced-motion:reduce){
  .pubc-slide, .pubc-img, .pubc-points button{ transition:none !important; }
}

/* encart publicitaire droite — fixe au scroll, se proportionne à la fenêtre :
   le bloc ne dépasse jamais le bas de l'écran et les bannières images
   rétrécissent avec la hauteur de la fenêtre (unités vh). Masqué en mobile
   (voir la règle display:none dans le bloc @media plus bas). */
#texte .pub{
  position:fixed !important;
  top:190px;                        /* sous le bandeau pub + le menu : plus de chevauchement (05/07/2026) */
  right:8px;                        /* même retrait que le skyscraper .p22ub : les deux rectangles sont alignés */
  width:7.5%;
  background:var(--m-card) !important;
  border-color:var(--m-line) !important;
  border-radius:var(--m-radius);
  z-index:50;
  max-height:400px;                 /* hauteur bornée : le skyscraper .p22ub se place dessous */
  overflow:hidden;                  /* sécurité : pas de débordement */
}
/* l'étiquette "Publicité" (l'id slide_ban en double a été retiré du fragment) */
#texte .pub h3{ margin:0; font-weight:normal; font-size:10px; color:var(--m-txt-3); }
/* quand le skyscraper est visible (>=1800px), la carte prend exactement sa
   largeur hors-tout (padding compris) : les deux rectangles sont alignés
   bord à bord, même retrait de 8px.
   Et depuis le 10/07/2026 l'ORDRE est inversé : le skyscraper image (160×600,
   non découpable) est EN HAUT (top:190, fin à 796 = visible en entier), la
   carte texte descend dessous (top:806) et se borne à la place restante
   (calc 100vh) — un texte rogné en bas de petit écran est sans gravité,
   une image coupée non. En dessous de 1800px le skyscraper est masqué :
   la carte texte garde son top:190 historique. */
@media (min-width:1800px){
  #texte .pub{ width:160px; box-sizing:border-box; padding:10px !important;
    top:806px; max-height:calc(100vh - 826px); }
}
#texte .pub span{ color:var(--m-red-soft) !important; }
#texte .pub a{ color:var(--m-txt-3) !important; }
#texte .pub p{ margin:10px 0 0 0 !important; }
/* chaque bannière image se réduit proportionnellement à la hauteur d'écran */
#texte .pub img{
  display:block;
  width:auto !important;
  max-width:100%;
  max-height:190px;                 /* tient dans la carte bornée à 400px */
  margin:0 auto !important;
  border-radius:8px;
}

/* ═══════════ FICHE OPÉRATEUR : bandeau d'ancres + section AVIS (2026-07-06) ═══════════
   Le bandeau « Les offres / Description / Avis / Noter » et le bloc commentaires
   étaient aux couleurs de l'ancien site (image rouge brique menu-operateur.jpg en
   position:absolute qui collapsait à 0×0, labels bleu #004e9d, « aucun avis »
   violet #5a5084, champs blancs, bouton gris). On les ramène dans la palette gris
   sombre + rouge --m-red. Sélecteurs sans #texte : cette page est en #annonce, et
   nav.nav_operateur (0,0,1,1) bat la classe nue de css.css. Surcouche only. */

/* ---- Bandeau d'ancres : rouge thème, remis dans le flux, pleine largeur ---- */
nav.nav_operateur{
  position:static !important;        /* css.css : absolute -> collapsait (0×0) */
  width:100% !important;
  height:auto !important;
  background:none !important;         /* écrase l'image menu-operateur.jpg */
  margin:16px 0 10px !important;
  left:auto !important; right:auto !important;
}
nav.nav_operateur ul{
  display:flex; flex-wrap:wrap; align-items:stretch;
  list-style:none; margin:0; padding:0 !important;
  background:linear-gradient(135deg, var(--m-red) 0%, var(--m-red2) 100%);
  border-radius:var(--m-radius);
  overflow:hidden;
  box-shadow:0 6px 22px -8px rgba(229,72,77,.55);
}
nav.nav_operateur li{
  float:none !important;
  display:flex; align-items:center;
  padding:13px 20px !important;
  border-right:1px solid rgba(255,255,255,.20) !important;
  color:#fff !important; font-weight:700; font-size:14px;
  transition:background .15s;
}
nav.nav_operateur li:hover{ background:rgba(0,0,0,.16) !important; cursor:pointer; }
nav.nav_operateur a,
nav.nav_operateur a:link,
nav.nav_operateur a:visited,
nav.nav_operateur a:hover{ color:#fff !important; text-decoration:none; }
nav.nav_operateur .droite{
  margin-left:auto;                  /* « Noter … » poussé au bout du bandeau */
  border-right:0 !important;
  height:auto !important;            /* css.css force height:80px -> bandeau trop haut */
  display:flex; align-items:center; gap:10px;
}
nav.nav_operateur .rating-foreground{ float:none !important; margin:0 !important; }

/* ---- Titres + icônes SVG des blocs avis ---- */
.avis .iconeh1 svg, .ajouteravis .iconeh1 svg{
  width:34px; height:34px; display:block; margin-top:2px; stroke:var(--m-red);
}
.avis h2, .ajouteravis h2{ color:var(--m-txt) !important; }
.avis hr, .ajouteravis hr{ border:0 !important; border-top:1px solid var(--m-line) !important; margin:4px 0 18px !important; }

/* ---- « Aucun avis » : carte sombre + liseré rouge (ex-violet) ---- */
.messageavisfin{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-left:4px solid var(--m-red) !important;
  color:var(--m-txt) !important;
  border-radius:8px !important;
  padding:14px 16px !important;
}

/* ---- Formulaire d'avis : carte + champs au style du site ---- */
#formulaireavis{
  background:var(--m-card);
  border:1px solid var(--m-line);
  border-radius:12px;
  padding:22px 24px;
  max-width:560px;
}
#formulaireavis label{
  display:block !important; float:none !important; width:auto !important;
  color:var(--m-red) !important; font-size:14px !important; font-weight:700 !important;
  margin:0 0 6px !important;
}
#formulaireavis input[type=text],
#formulaireavis textarea,
#formulaireavis select{
  display:block; width:100% !important; max-width:100%; box-sizing:border-box;
  background:var(--m-bg) !important;
  border:1.5px solid var(--m-line) !important;
  border-radius:8px !important;
  color:var(--m-txt) !important;
  padding:10px 12px !important;
  font-size:14px !important;
  transition:border-color .15s, box-shadow .15s;
}
#formulaireavis textarea{ min-height:130px; resize:vertical; }
#formulaireavis input[type=text]:focus,
#formulaireavis textarea:focus,
#formulaireavis select:focus{
  border-color:var(--m-red) !important;
  box-shadow:0 0 0 3px rgba(229,72,77,.18) !important;
  outline:none;
}
#formulaireavis select option{ background:var(--m-bg); color:var(--m-txt); }
#formulaireavis .form1{ float:none !important; margin:0 !important; padding:2px 0 0 !important; display:inline-block; }
#formulaireavis button{
  margin:6px 0 0 0 !important;
  width:auto !important; min-width:180px; height:auto !important;
  padding:12px 30px !important;
  background:var(--m-red) !important; color:#fff !important;
  border:0 !important; border-radius:8px !important;
  font-weight:700 !important; font-size:15px !important; cursor:pointer;
  box-shadow:0 5px 16px -5px rgba(229,72,77,.55);
  transition:background .15s, transform .05s;
}
#formulaireavis button:hover{ background:var(--m-red2) !important; }
#formulaireavis button:active{ transform:translateY(1px); }

/* ---- Cartes de commentaires existants (quand il y en a) ---- */
.aviscomm{
  width:auto !important; margin-top:18px !important;
  background:var(--m-card); border:1px solid var(--m-line);
  border-radius:12px; padding:16px 18px;
}
.aviscomm .div1 svg.avis-avatar{
  width:56px; height:56px; stroke:var(--m-red);
  background:rgba(229,72,77,.08); border-radius:50%; padding:8px; box-sizing:border-box;
}
.aviscomm .avis4{ background:var(--m-bg) !important; color:var(--m-txt) !important; border-radius:8px; width:auto !important; }
.aviscomm .datetime{ color:var(--m-txt-3) !important; }

/* textes encore noirs ou roses sur fond sombre */
.recherche_logo span.T1{ color:var(--m-txt) !important; }
.t123{ color:var(--m-txt-3) !important; }
.mob span, .mob1 span{ color:var(--m-txt-2) !important; }
.recherche_texte, .recherche_texte2{ color:var(--m-txt-2) !important; }

/* filets et bordures résiduels */
.titrenoir{ border-bottom-color:var(--m-line) !important; }
.actuindex li{ border-color:var(--m-line) !important; }

/* prix mis en avant : rouge doux */
.prix_flottant{ color:var(--m-red-soft) !important; }
.t12s5{ color:var(--m-red-soft) !important; }

/* ═══════════ CONTENUS ISSUS DE LA BASE (couleurs en ligne) ═══════════
   Les textes stockés en base contiennent des styles en ligne
   (rose/magenta…) : on les neutralise pour garder l'harmonie. */
#texte [style*="color"], #annonce [style*="color"]{ color:inherit !important; }
/* fonds blancs collés depuis un éditeur WYSIWYG (background-color:rgb(255,255,255)
   en ligne dans text_accueil) : neutralisés sur le fond sombre (05/07/2026) */
#texte_accueil [style*="background"]{ background:transparent !important; }
#texte h2, #texte h3, #texte h4,
#annonce h2, #annonce h3, #annonce h4{ color:var(--m-txt) !important; }
#texte_accueil, #texte_accueil p, #texte_accueil li,
#texte_accueil font, #texte_accueil span{ color:var(--m-txt-2) !important; }
#texte_accueil strong, #texte_accueil b{ color:var(--m-txt) !important; }
#texte_accueil a{ color:var(--m-red-soft) !important; }
#texte_accueil h1, #texte_accueil h2, #texte_accueil h3, #texte_accueil h4,
#texte_accueil h1 span, #texte_accueil h2 span, #texte_accueil h3 span, #texte_accueil h4 span,
#texte_accueil h1 strong, #texte_accueil h2 strong, #texte_accueil h3 strong, #texte_accueil h4 strong{
  color:var(--m-red-soft) !important;
}

/* ═══════════ MENU FLOTTANT AU SCROLL ═══════════
   Au défilement, le JS fixe le header (.fixed) et le menu (.fixednav)
   en haut de l'écran. Le vieux CSS laissait le header à z-index:1,
   caché sous le contenu → menu illisible en transparence. */
header.fixed{
  z-index:19999 !important;
  border-bottom:1px solid var(--m-line) !important;
  box-shadow:0 8px 24px -12px rgba(0,0,0,.6);
  height:50px !important;
}
header.fixed #logo{ top:0 !important; }
header.fixed #logo img{ max-height:44px; width:auto; }
nav#navigation.fixednav{
  background:#24242a !important;
  margin-top:0 !important;
  padding:4px 0 !important;
}

/* ═══════════ RESPONSIVE ═══════════ */
@media (max-width:900px){
  #texte .pub{ display:none !important; }
  .guideachat li{ flex:1 1 47% !important; }
  footer .foot-grid{ flex-direction:column; gap:20px; }
  footer #texte-logobas{ text-align:left; }
}
@media (max-width:600px){
  .guideachat li{ flex:1 1 100% !important; }
}

/* ═══════════ MENU MOBILE V2 (06/07/2026) — burger + tiroir ═══════════
   L'ANCIEN menu burger a été SUPPRIMÉ EN ENTIER (bloc « MENU » de css.css,
   bascule .open-menu/.m1-.m5 de js/responsive-nav.js, harmonisations qui
   vivaient ici). Nouveau système, indépendant du CSS historique :
   - js/menu-mobile.js lit ul#menu (SOURCE UNIQUE des liens, masqué en
     mobile) et génère un burger #bfm-burger + un tiroir #bfm-drawer ;
   - tout est scopé bfm-* et n'existe qu'en ≤1024px (au-delà : menu desktop) ;
   - accordéons <details name="…"> natifs (un seul ouvert à la fois),
     animation height:auto via interpolate-size (sinon ouverture instantanée),
     100dvh, safe-area, backdrop-filter. Palette : variables --m-*. */

#bfm-burger, #bfm-drawer, #bfm-backdrop{ display:none; }

@media screen and (max-device-width:1024px), screen and (max-width:1024px){

  /* le menu desktop laisse la place au tiroir (il reste dans le DOM :
     c'est la source que lit js/menu-mobile.js au chargement) */
  nav#navigation{ display:none !important; }

  /* logo remis dans le flux : la règle desktop (#logo position:absolute,
     left:50% + margin-left:-795px, ancré sur la bande du menu) l'enverrait
     hors écran à gauche en mobile -> on ré-annule position/left/margin ici. */
  #logo{ z-index:1 !important; top:0 !important; position:relative !important; left:0 !important; margin-left:0 !important; }
  #logo img{ max-height:38px; width:auto !important; }

  /* ── BURGER : fixe à droite, ALIGNÉ SUR LE LOGO (06/07/2026, demande Nicolas :
     « au même niveau de hauteur que le logo, à droite »). La bannière haut
     (.head452) fait ~90px et le logo se pose juste dessous (~top 98px) : on cale
     le burger à ~96px pour qu'il soit sur la MÊME rangée que le logo, à droite,
     au lieu de flotter tout en haut par-dessus la bannière. Reste position:fixed
     (toujours accessible au scroll). ── */
  #bfm-burger{
    display:flex; flex-direction:column; justify-content:center; gap:4px;
    position:fixed;
    top:calc(96px + env(safe-area-inset-top, 0px));
    right:calc(10px + env(safe-area-inset-right, 0px));
    z-index:100000;
    width:44px; height:40px; padding:0 11px;
    background:rgba(42,42,50,.92);            /* --m-card translucide */
    -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
    border:1px solid var(--m-line); border-radius:12px;
    cursor:pointer; transition:opacity .2s;
  }
  /* AU SCROLL, le header se fixe en haut et le logo remonte à ~8px : le burger
     SUIT pour rester à la hauteur du logo (header précède #bfm-burger dans le
     DOM -> sélecteur de frère général). Sans ça, il resterait à 96px, décalé
     de ~88px sous le header compact. (06/07/2026) */
  header.fixed ~ #bfm-burger{ top:calc(8px + env(safe-area-inset-top, 0px)); }
  #bfm-burger span{
    display:block; height:2px; border-radius:2px;
    background:var(--m-red);
  }
  body.bfm-open #bfm-burger{ opacity:0; pointer-events:none; }

  /* ── VOILE derrière le tiroir ── */
  #bfm-backdrop{
    display:block; position:fixed; inset:0; z-index:100001;
    background:rgba(10,10,14,.55);
    -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
    opacity:0; visibility:hidden;
    transition:opacity .28s ease, visibility .28s;
  }
  body.bfm-open #bfm-backdrop{ opacity:1; visibility:visible; }

  /* ── TIROIR : panneau latéral droit, pleine hauteur ── */
  #bfm-drawer{
    display:flex; flex-direction:column;
    position:fixed; top:0; right:0; bottom:0; z-index:100002;
    width:min(88vw, 400px); height:100dvh;
    background:var(--m-bg);
    border-left:1px solid var(--m-line);
    box-shadow:-24px 0 48px rgba(0,0,0,.55);
    transform:translateX(105%); visibility:hidden;
    transition:transform .32s cubic-bezier(.22,.85,.3,1), visibility .32s;
    overscroll-behavior:contain;
  }
  body.bfm-open #bfm-drawer{ transform:none; visibility:visible; }
  body.bfm-open{ overflow:hidden; }   /* la page ne défile plus derrière */

  /* en-tête du tiroir */
  #bfm-drawer .bfm-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:calc(10px + env(safe-area-inset-top, 0px)) 14px 10px 18px;
    border-bottom:1px solid var(--m-line);
    background:#24242a;
  }
  #bfm-drawer .bfm-title{
    margin:0; font-size:15px; font-weight:800; letter-spacing:.02em;
    color:var(--m-txt);
  }
  #bfm-drawer .bfm-close{
    display:flex; align-items:center; gap:7px;
    padding:8px 12px;
    background:var(--m-card); border:1px solid var(--m-line);
    border-radius:10px; cursor:pointer;
    font-size:12px; font-weight:700; text-transform:uppercase;
    letter-spacing:.05em; color:var(--m-txt);
  }
  #bfm-drawer .bfm-close svg{ color:var(--m-red); }
  #bfm-drawer .bfm-close:active{ background:#34343e; }

  /* corps défilable. C'est un <nav> : on neutralise les règles génériques
     « nav » de css.css (position:absolute, text-align:right, margin-top:60px,
     cursor:pointer…) qui n'ont rien à faire ici. */
  #bfm-drawer .bfm-body{
    flex:1 !important; overflow-y:auto;
    position:static !important; inset:auto !important;
    margin:0 !important; max-width:none !important; width:auto !important;
    text-align:left !important; cursor:auto !important; z-index:auto !important;
    padding:12px 12px calc(20px + env(safe-area-inset-bottom, 0px)) !important;
    scrollbar-width:thin; scrollbar-color:var(--m-line) transparent;
  }

  /* ── SECTIONS (onglets) : cartes accordéon ── */
  #bfm-drawer .bfm-section{
    margin:0 0 10px;
    background:var(--m-card);
    border:1px solid var(--m-line); border-radius:14px;
    overflow:clip;
    interpolate-size:allow-keywords;   /* anime height:auto quand supporté */
  }
  #bfm-drawer summary{
    display:flex; align-items:center; gap:11px;
    padding:13px;
    list-style:none; cursor:pointer;
    font-size:14px; font-weight:700; color:var(--m-txt);
    -webkit-tap-highlight-color:transparent;
  }
  #bfm-drawer summary::-webkit-details-marker{ display:none; }
  #bfm-drawer summary > img{ width:22px; height:22px; flex:none; }
  #bfm-drawer .bfm-label{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  #bfm-drawer .bfm-chevron{ margin-left:auto; flex:none; color:var(--m-txt-3); transition:transform .25s; }
  #bfm-drawer details[open] > summary .bfm-chevron{ transform:rotate(90deg); color:var(--m-red); }
  #bfm-drawer .bfm-section[open]{ border-color:#4a4a56; }

  /* contenu déplié : animation douce quand le navigateur sait le faire */
  #bfm-drawer details::details-content{
    height:0; overflow:clip;
    transition:height .3s ease, content-visibility .3s allow-discrete;
  }
  #bfm-drawer details[open]::details-content{ height:auto; }

  #bfm-drawer .bfm-content{ padding:2px 8px 10px; }

  /* groupes titrés (« Mon abonnement », « L'IA en local »…) : ROUGE du thème
     pour se repérer d'un coup d'œil (demande Nicolas 06/07/2026) */
  #bfm-drawer .bfm-group-title{
    margin:12px 8px 3px; font-size:10.5px; font-weight:800;
    letter-spacing:.09em; text-transform:uppercase; color:var(--m-red);
  }

  /* liens */
  #bfm-drawer .bfm-link{
    display:block; padding:9px 10px;
    border-radius:9px;
    font-size:13.5px; font-weight:500; line-height:1.35;
    color:var(--m-txt-2) !important; text-decoration:none;
  }
  #bfm-drawer .bfm-link:hover,
  #bfm-drawer .bfm-link:active{ background:#24242a; color:var(--m-red-soft) !important; }
  /* liens d'entrée (« Voir tout : … », « Informations sur vos opérateurs ») :
     rouge doux du thème, comme les titres (blanc au survol via la règle hover) */
  #bfm-drawer .bfm-link-head{ color:var(--m-red-soft) !important; font-weight:700; }
  #bfm-drawer .bfm-link-head:hover,
  #bfm-drawer .bfm-link-head:active{ color:var(--m-txt) !important; }

  /* longues listes (opérateurs…) sur 2 colonnes */
  #bfm-drawer .bfm-cols{ display:grid; grid-template-columns:1fr 1fr; column-gap:6px; }
  #bfm-drawer .bfm-cols .bfm-group-title{ grid-column:1 / -1; }

  /* sous-sections dépliables (Aide IA / Box / forfaits mobiles) */
  #bfm-drawer .bfm-sub{
    margin:6px 2px;
    background:#24242a;
    border:1px solid var(--m-line); border-radius:11px;
    overflow:clip;
    interpolate-size:allow-keywords;
  }
  #bfm-drawer .bfm-sub > summary{ padding:11px 12px; font-size:13.5px; }

  /* carte « Comparer abonnement IA ou BOX et Mobile » mise en avant */
  #bfm-drawer .bfm-cta{
    background:linear-gradient(140deg, #2a2a32 55%, #3a262b);
    border-color:#6d3a40;
  }
  #bfm-drawer .bfm-badge{
    flex:none; padding:2px 8px;
    background:#fff; color:var(--m-red);
    font-size:9.5px; font-weight:800; letter-spacing:.06em;
    text-transform:uppercase; border-radius:9px;
  }

  /* animations coupées si l'utilisateur le demande */
  @media (prefers-reduced-motion:reduce){
    #bfm-drawer, #bfm-backdrop, #bfm-drawer .bfm-chevron,
    #bfm-drawer details::details-content{ transition:none !important; }
  }
}
/* ═══════════ fin MENU MOBILE V2 ═══════════ */

/* ═══════════ ENCARTS PUB LATÉRAUX (.p11ub gauche / .p22ub droit) ═══════════
   Correctif 05/07/2026. Les rectangles étaient en position:fixed avec un
   margin-left EN DUR (1100px), un décalage depuis le bord GAUCHE de l'écran
   sans rapport avec la largeur réelle : sur grand écran le rectangle droit
   tombait EN PLEIN MILIEU du contenu centré (#contenu = min-width:1100px,
   max-width:80%, donc gouttières de ~10% de chaque côté). On les ré-ancre
   dans les gouttières gauche/droite (bords de l'écran, plus de margin-left),
   et on les MASQUE dès que la fenêtre est trop étroite pour les loger sans
   chevaucher le contenu (une gouttière de 10% doit tenir un rectangle de
   160px -> il faut ~1650px de large). Le bandeau haut et le sidebar interne
   ne sont pas concernés. */
.p11ub, .p22ub{ margin-left:0 !important; z-index:3; }
/* angles arrondis sur les visuels des rectangles (ex. skyscraper Cdiscount),
   comme les bannières du haut (06/07/2026) */
.p11ub img, .p22ub img{ border-radius:14px !important; }
.p11ub{ top:190px; left:8px !important; right:auto !important; }
/* ORDRE INVERSÉ le 10/07/2026 (demande Nicolas) : à top:610px le skyscraper
   160×600 finissait à 1216px -> COUPÉ même en 1080p. L'IMAGE (non découpable)
   remonte EN HAUT de la gouttière (190+606=796 : entièrement visible), et
   c'est l'encart TEXTE "Publicité" (#texte .pub, découpable sans casse) qui
   descend dessous — voir le @media (min-width:1800px) du bloc .pub plus haut.
   ⚠ Si la campagne du rectangle droit s'arrête (admin > publicité), penser à
   remonter .pub (retirer son top:806px du @media 1800px). */
.p22ub{ top:190px; left:auto !important; right:8px !important; }
/* sous ~1800px la gouttière de 10% ne loge plus un rectangle de 160px sans
   mordre sur le contenu : on masque les skyscrapers latéraux (le bandeau
   haut et le sidebar interne prennent le relais). */
@media screen and (max-width:1799px){
  .p11ub, .p22ub{ display:none !important; }
}

/* ============================================================
   DÉPLOIEMENT « VOIR DÉTAILS » DES FORFAITS (07/07/2026)
   Panneau dépliable dans chaque carte du comparateur mobile
   (fragment pagelisteinform-lesinfos.php, chargé en AJAX) :
   description détaillée, pays inclus, pays SANS roaming,
   international, tarifs hors forfait (€/min, €/Mo, SMS/MMS),
   les + du forfait, et le PDF de l'opérateur à télécharger.
   Données annexes : table forfait_detail_extra (admin
   ajoutforfait.php > fieldset « Détails du forfait »).
   ============================================================ */
.forfait-detail{
  display:none; clear:both;
  margin:12px 8px 6px; padding:16px 18px;
  background:var(--m-card,#2a2a32);
  border:1px solid var(--m-line,#3a3a44);
  border-radius:12px;
}
.forfait-detail.fd-ouvert{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:14px 20px;
}
.fd-bloc h4{
  margin:0 0 6px; font-size:12px; letter-spacing:.5px;
  text-transform:uppercase; color:var(--m-red-soft,#ff8a8e);
}
.fd-bloc div{ font-size:13px; line-height:1.55; color:var(--m-txt,#f0f0f0); }
.fd-bloc ul{ margin:0; padding-left:18px; }
.fd-bloc li{ padding:1px 0; }
/* lien PDF : pleine largeur du panneau, façon bouton.
   #texte en préfixe AUSSI : la règle historique « section a:link{color:#000} »
   de css.css repeint les liens en noir sinon (piège connu, cf .box-reset). */
.fd-pdf{ grid-column:1/-1; }
.fd-pdf a, #texte .fd-pdf a{
  display:inline-block; padding:9px 16px;
  border:1px solid var(--m-line,#3a3a44); border-radius:9px;
  background:rgba(229,72,77,.10); font-weight:600;
  color:var(--m-txt,#f0f0f0) !important; text-decoration:none;
}
.fd-pdf a:hover, #texte .fd-pdf a:hover{ background:rgba(229,72,77,.22); }
a.fd-btn, #texte a.fd-btn{ cursor:pointer; }

/* ============================================================
   APPLICATIONS & OUTILS (applications-outils.php, 07/07/2026)
   Page vitrine des outils du site : grilles de cartes cliquables
   par famille. Classes .apo-*. Le lien-carte entier est cliquable ;
   sélecteurs préfixés #texte pour battre la règle historique
   « section a:link{color:#000} » de css.css.
   ============================================================ */
.apo-intro{font-size:14px;line-height:1.65;color:var(--m-txt,#f0f0f0);margin:6px 0 14px;}
.apo-h2{margin:26px 0 12px;font-size:17px;color:var(--m-txt,#f0f0f0);}
.apo-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;}
#texte a.apo-carte, a.apo-carte{
  display:flex;flex-direction:column;gap:6px;
  padding:16px 16px 14px;border-radius:12px;text-decoration:none;
  background:var(--m-card,#2a2a32);border:1px solid var(--m-line,#3a3a44);
  color:var(--m-txt,#f0f0f0) !important;
  transition:border-color .15s, transform .15s;
}
#texte a.apo-carte:hover, a.apo-carte:hover{border-color:var(--m-red,#e5484d);transform:translateY(-2px);}
.apo-ico{font-size:24px;line-height:1;}
.apo-carte b{font-size:14px;}
.apo-txt{font-size:12.5px;line-height:1.5;color:var(--m-gray,#a0a0ac);}
.apo-go{margin-top:auto;font-size:12px;font-weight:600;color:var(--m-red-soft,#ff8a8e);}
.apo-note{margin:26px 0 10px;font-size:13px;color:var(--m-gray,#a0a0ac);}
@media (max-width:620px){ .apo-grille{grid-template-columns:1fr 1fr;} }

/* ============================================================
   COMPARER MES CHOIX (08/07/2026)
   Cases à cocher sur les cartes de forfaits + barre flottante
   « Comparer mes choix ». Filtre 100 % client (js/comparer-choix.js) :
   coche 2 à 4 forfaits -> les autres cartes se masquent. Gris/rouge
   du thème. La case vit dans la colonne logo, en flux normal (aucun
   chevauchement possible avec le prix ou le logo).
   ============================================================ */

/* la pastille « Comparer » dans la colonne prix, sous les boutons (08/07/2026).
   Fond GRIS CLAIR (au lieu du fond sombre) pour ressortir sur la carte. */
.cmp-pick{
  display:inline-flex; align-items:center; gap:6px; margin-top:10px;
  font-size:12px; font-weight:600; color:#1c1c22;
  background:#d8d8de; border:1px solid #b8b8c0;
  border-radius:8px; padding:5px 10px; cursor:pointer; user-select:none;
  transition:border-color .15s ease, background .15s ease;
}
.cmp-pick:hover{ border-color:var(--m-red,#e5484d); background:#ececf1; color:#1c1c22; }
.cmp-pick input{ width:16px; height:16px; margin:0; accent-color:var(--m-red,#e5484d); cursor:pointer; }
/* « Comparer » : ÉCRASER le vert #3C0 hérité de css.css « .recherche_prix span »
   par le rouge du thème (08/07/2026, demande Nicolas). Spécificité 0,2,1 pour
   battre la règle historique sans !important superflu. */
.recherche_prix .cmp-pick span{ color:var(--m-red,#e5484d) !important; }

/* Colonne prix : les 3 boutons (opérateur / détails / Comparer) REMONTÉS sous
   le prix et espacés RÉGULIÈREMENT (08/07/2026, demande Nicolas). On passe la
   colonne en flex-colonne centrée + gap identique, et on neutralise les <br>
   DIRECTS (« > br ») qui créaient des trous inégaux — sans toucher le <br>
   interne au bloc « au lieu de … / fin … » (.prix_flottant_promo). */
.recherche_prix{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.recherche_prix > br{ display:none; }
.recherche_prix .cmp-pick{ margin-top:0; }

/* carte sélectionnée : liseré rouge net */
#affiche_recherche li.cmp-selected{
  border-color:var(--m-red,#e5484d) !important;
  box-shadow:inset 0 0 0 1px var(--m-red,#e5484d);
}

/* mode comparaison : on masque tout ce qui n'est pas sélectionné
   (les cartes non cochées ET la ligne de pagination) */
#affiche_recherche2.cmp-mode > li:not(.cmp-selected){ display:none !important; }

/* CARTES BONS PLANS FORFAITS (10/07/2026, demande Nicolas) : mêmes
   renseignements cochables que les bons plans box — carte .cadpro cochée
   (liseré rouge), filtre mobile de la grille .bpl, et prix promo « au lieu
   de » masqué quand le tarif abonné box est appliqué (le pendant de
   li.ab-actif .prix_flottant_promo pour le gabarit .cadpro). */
.cadpro.cmp-selected{ border-color:var(--m-red,#e5484d) !important; box-shadow:inset 0 0 0 1px var(--m-red,#e5484d); }
/* 10/07/2026 : .rbtindex (et plus .bpl seule) — la grille bons plans de
   l'ACCUEIL n'a pas la classe .bpl ; la classe .cmp-mode n'est posée que
   par js/comparer-choix.js sur les grilles à cases (jamais la modale) */
.rbtindex.cmp-mode > .cadpro:not(.cmp-selected){ display:none !important; }
.cadpro.ab-actif .bt_fo13, .cadpro.ab-actif .tav35{ display:none; }
.cadpro .ab-toggle{ margin:10px 0 4px; }
.cadpro .abox-panel{ text-align:left; }
.cadpro .cmp-pick{ margin:10px auto 0; }

/* barre flottante d'action — repeinte le 10/07/2026 (demande Nicolas) :
   fond GRIS CLAIR (au lieu du gris foncé), polices GRIS FONCÉ sur les
   zones claires, bouton « Comparer mes choix » en ROUGE DOUX. */
.cmp-bar{
  position:fixed; left:50%; bottom:18px;
  transform:translateX(-50%) translateY(24px);
  z-index:19998; display:none; align-items:center; gap:12px;
  background:#d8d8de; border:1px solid #b8b8c0;
  border-radius:14px; padding:10px 14px;
  box-shadow:0 10px 34px rgba(0,0,0,.35);
  opacity:0; transition:opacity .2s ease, transform .2s ease;
  max-width:calc(100% - 24px);
}
.cmp-bar.cmp-visible{ display:flex; opacity:1; transform:translateX(-50%) translateY(0); }
.cmp-bar-txt{ color:#3a3a44; font-size:14px; font-weight:600; white-space:nowrap; }
.cmp-bar-txt b{ color:var(--m-red,#e5484d); }
.cmp-flash{ color:var(--m-red,#e5484d); }
.cmp-btn{
  border:none; cursor:pointer; font:inherit; font-weight:700; font-size:14px;
  padding:9px 16px; border-radius:10px;
  background:var(--m-red-soft,#ff8a8e); color:#1c1c22;   /* rouge doux, police foncée lisible */
  transition:background .15s ease, color .15s ease;
}
.cmp-btn:hover{ background:var(--m-red,#e5484d); color:#fff; }
.cmp-btn:disabled{ background:#c6c6ce; color:#7a7a84; cursor:not-allowed; }
.cmp-btn.cmp-ghost{ background:transparent; color:#3a3a44; border:1px solid #b8b8c0; font-weight:600; }
.cmp-btn.cmp-ghost:hover{ background:#ececf1; color:#1c1c22; }

@media (max-width:620px){
  .cmp-bar{ left:12px; right:12px; bottom:12px; transform:translateY(24px); flex-wrap:wrap; justify-content:center; }
  .cmp-bar.cmp-visible{ transform:translateY(0); }
  .cmp-bar-txt{ width:100%; text-align:center; }
}

/* ============================================================
   MODALE « COMPARER MES CHOIX » (08/07/2026)
   Au clic sur « Comparer mes choix », un fond GRISÉ recouvre le site et
   les 2 à 4 forfaits sélectionnés s'affichent en CARTES VERTICALES côte à
   côte (mêmes cartes .cadpro que les bons plans, rendues par
   comparer-forfaits.php et injectées par js/comparer-choix.js). Chaque
   carte garde son bouton « Voir détails » (panneau id fdetail-cmp-<id>).
   ============================================================ */
.cmp-modal-overlay{
  position:fixed; inset:0; z-index:100000;      /* au-dessus du menu fixe (19999) et de la .cmp-bar (19998) */
  display:none; align-items:flex-start; justify-content:center;
  background:rgba(10,10,14,.74);                 /* fond grisé pour mettre en valeur les forfaits */
  padding:5vh 16px; overflow:auto;
}
.cmp-modal-overlay.cmp-open{ display:flex; }
body.cmp-noscroll{ overflow:hidden; }            /* on fige le défilement de la page derrière */

.cmp-modal{
  width:100%;
  /* la largeur SUIT le nombre de forfaits (--cmp-n posé par js/comparer-choix.js) :
     ~316px par carte -> 2 forfaits = fenêtre resserrée, 4 = fenêtre élargie, mais
     chaque carte garde la MÊME largeur confortable (rendu uniforme de 2 à 4). */
  max-width:calc(var(--cmp-n,3) * 316px + 40px);
  background:var(--m-card,#2a2a32); border:1px solid var(--m-line,#3a3a44);
  border-radius:16px; box-shadow:0 22px 64px rgba(0,0,0,.6); overflow:hidden;
}
.cmp-modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:13px 18px; background:var(--m-red,#e5484d);
}
.cmp-modal-title{ color:#fff; font-weight:800; font-size:17px; }
.cmp-modal-close{
  border:none; background:transparent; color:#fff; cursor:pointer;
  font-size:28px; line-height:1; padding:0 6px; border-radius:8px;
}
.cmp-modal-close:hover{ color:#ffe3e4; }
.cmp-modal-body{ padding:18px; }
.cmp-modal-load, .cmp-modal-vide{ color:var(--m-txt-2,#c0c0c8); text-align:center; padding:34px 10px; font-weight:600; }

/* les cartes verticales : autant de colonnes que de forfaits (--cmp-n),
   toutes à la même largeur, hauteurs égales */
.cmp-cartes{ display:grid; grid-template-columns:repeat(var(--cmp-n,3),minmax(0,1fr)); gap:16px; }
.cmp-cartes div.cadpro{ width:auto !important; min-height:0 !important; margin:0 !important; }

@media (max-width:640px){
  .cmp-modal-overlay{ padding:2vh 8px; }
  .cmp-modal{ max-width:100%; }               /* plein écran : la largeur adaptative ne s'applique qu'au-delà */
  .cmp-modal-body{ padding:12px; }
  .cmp-cartes{ grid-template-columns:1fr 1fr; gap:10px; }   /* 2 colonnes fixes en mobile, quel que soit le nombre */
}

/* ============================================================
   CARTE FORFAIT COMPACTE EN MOBILE (08/07/2026, demande Nicolas)
   Sur <=768px (là où le site reflow), la carte du comparateur passe en
   GRILLE 3 colonnes pour voir 3-4 forfaits d'un coup au lieu de tout
   empiler :
       [icônes]   [logo]   [prix +
       [cercle]   [SIM]     boutons]
   Réagencement PUR par grid-area (aucune donnée touchée). Ne cible que les
   cartes (li id="cadre-…"), pas la pagination. Le cercle est réduit pour
   tenir dans sa colonne. C'est la mise en page par défaut : coché ou non,
   la comparaison mobile (filtre .cmp-mode) l'utilise telle quelle.
   ============================================================ */
@media screen and (max-width:768px){
  #affiche_recherche2 > li[id^="cadre-"]{
    display:grid;
    grid-template-columns:1fr 1fr 1.15fr;
    grid-template-areas:
      "texte  logo  prix"
      "cercle sim   prix";
    column-gap:10px; row-gap:10px; align-items:center;   /* tout centré verticalement dans sa case : plus rien qui se chevauche */
  }
  /* on annule les width/float mobiles de css.css sur les colonnes */
  #affiche_recherche2 > li[id^="cadre-"] > div{ float:none !important; width:auto !important; margin:0 !important; }
  #affiche_recherche2 > li[id^="cadre-"] > .recherche_texte{ grid-area:texte; padding:0 !important; line-height:1.6 !important; font-size:13px; }
  #affiche_recherche2 > li[id^="cadre-"] > .recherche_texte p{ margin:0 !important; }
  #affiche_recherche2 > li[id^="cadre-"] > .recherche_logo{ grid-area:logo; text-align:center; }
  #affiche_recherche2 > li[id^="cadre-"] > .recherche_logo img{ max-width:100%; height:auto; }
  #affiche_recherche2 > li[id^="cadre-"] > .mob1{ grid-area:cercle; justify-self:center; text-align:center; }
  #affiche_recherche2 > li[id^="cadre-"] > .mob{ grid-area:sim; justify-self:center; text-align:center; font-size:12px; }
  #affiche_recherche2 > li[id^="cadre-"] > .recherche_prix{ grid-area:prix; align-self:start; margin-top:0 !important; gap:10px !important; }
  /* prix : css.css lui met margin:-10px 0 0 -10px et 50px en mobile -> il mordait
     sur le bord de la carte ; on le recale et on le proportionne à la colonne */
  #affiche_recherche2 > li[id^="cadre-"] .prix_flottant{ margin:0 !important; font-size:36px; line-height:1; }
  #affiche_recherche2 > li[id^="cadre-"] .prix_flottant sup{ font-size:15px; }
  #affiche_recherche2 > li[id^="cadre-"] .prix_flottant_promo{ margin:0 !important; }
  /* boutons de la colonne prix : même largeur (pleine colonne), texte centré */
  #affiche_recherche2 > li[id^="cadre-"] .recherche_prix .pop2{
    display:block; width:100%; box-sizing:border-box; text-align:center; padding:8px 6px;
  }
  /* les bandeaux promo et les panneaux détails / box prennent toute la largeur, sous la grille */
  #affiche_recherche2 > li[id^="cadre-"] > .offre_barre,
  #affiche_recherche2 > li[id^="cadre-"] > .forfait-detail,
  #affiche_recherche2 > li[id^="cadre-"] > .abox-panel{ grid-column:1 / -1; }
  #affiche_recherche2 > li[id^="cadre-"] > br{ display:none; }
  /* cercle « data » réduit pour tenir dans sa colonne (proportion span conservée) */
  #affiche_recherche2 > li[id^="cadre-"] .c100{ font-size:104px !important; margin:0 auto !important; float:none !important; }
  #affiche_recherche2 > li[id^="cadre-"] .c100 > span{ font-size:21px !important; }
}

/* ============================================================
   COUPLAGE FORFAIT + BOX dans les résultats de recherche
   (pagelisteinform-lesinfos.php, 09/07/2026) : petit prix abonné
   box sous le prix (.ab-hint), case « Changer de box en même
   temps ? » (.ab-toggle), panneau des box de l'opérateur
   (.abox-panel — mêmes infos que la page box : prix effectif,
   techno, TV & streaming, détail). La classe .ab-actif posée sur
   le <li> par bfChoixBox masque l'affichage promo « au lieu de »
   pendant que le tarif abonné box est appliqué.
   #texte a.abox-voir en préfixe AUSSI : la règle historique
   « section a:link{color:#000} » de css.css repeint les liens
   sinon (piège connu, cf .fd-pdf / .box-reset).
   ============================================================ */
.ab-hint{ font-size:12px; font-weight:600; color:var(--m-red-soft,#ff8a8e); margin:2px 0 0; }
li.ab-actif .prix_flottant_promo{ display:none; }
/* « Changer de box en même temps ? » : MÊME pastille que « Comparer »
   (.cmp-pick — fond gris clair, bord, coins arrondis, texte rouge),
   demande Nicolas 10/07/2026. Avant : simple texte, qui ressortait VERT
   (le .recherche_prix span #3C0 de css.css) — d'où le span rouge forcé. */
.ab-toggle{
  display:inline-flex; align-items:center; gap:6px; margin:0 0 10px;
  font-size:12px; font-weight:600; color:#1c1c22;
  background:#d8d8de; border:1px solid #b8b8c0;
  border-radius:8px; padding:5px 10px; cursor:pointer; user-select:none;
  transition:border-color .15s ease, background .15s ease;
}
.ab-toggle:hover{ border-color:var(--m-red,#e5484d); background:#ececf1; }
.ab-toggle input{ width:16px; height:16px; margin:0; accent-color:var(--m-red,#e5484d); cursor:pointer; }
.ab-toggle span, .recherche_prix .ab-toggle span{ color:var(--m-red,#e5484d) !important; }
.abox-panel{
  display:none; clear:both; text-align:left;
  margin:12px 8px 6px; padding:16px 18px;
  background:var(--m-card,#2a2a32);
  border:1px solid var(--m-line,#3a3a44);
  border-radius:12px;
}
.abox-panel.abox-ouvert{ display:block; }
.abox-titre{ margin:0 0 4px; font-size:14px; color:var(--m-txt,#f0f0f0); }
.abox-titre b{ color:var(--m-red-soft,#ff8a8e); }
.abox-titre s{ color:var(--m-sourdine,#9a9aa5); font-weight:400; }
.abox-note{ margin:0 0 10px; font-size:12px; color:var(--m-sourdine,#9a9aa5); }
.abox-ligne{
  display:flex; flex-wrap:wrap; gap:6px 12px; align-items:center;
  padding:9px 12px; margin:6px 0; cursor:pointer;
  border:1px solid var(--m-line,#3a3a44); border-radius:10px;
  background:rgba(255,255,255,.02); font-size:13px; color:var(--m-txt,#f0f0f0);
}
.abox-ligne:hover{ border-color:var(--m-red,#e5484d); }
.abox-ligne:has(input:checked){ border-color:var(--m-red,#e5484d); box-shadow:0 0 0 1px var(--m-red,#e5484d) inset; }
.abox-ligne input{ accent-color:var(--m-red,#e5484d); }
.abox-badge{ font-size:11px; font-weight:700; padding:1px 9px; border-radius:12px; border:1px solid var(--m-line,#3a3a44); }
.abox-badge.fibre{ background:rgba(90,200,120,.15); }
.abox-badge.adsl{ background:rgba(255,190,60,.15); }
.abox-prix s, .abox-prix small{ color:var(--m-sourdine,#9a9aa5); }
.abox-svcs{ display:inline-flex; flex-wrap:wrap; gap:4px; }
.abox-svc{ font-size:10px; font-weight:700; padding:1px 7px; border-radius:10px; background:rgba(229,72,77,.12); border:1px solid var(--m-line,#3a3a44); }
.abox-detail{ flex-basis:100%; font-size:12px; line-height:1.5; color:var(--m-sourdine,#9a9aa5); }
.abox-total{ margin:10px 0 0; font-size:14px; color:var(--m-txt,#f0f0f0); }
.abox-actions{ margin-top:10px; display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
a.abox-voir, #texte a.abox-voir{
  display:inline-block; padding:9px 18px; border-radius:9px;
  background:var(--m-red,#e5484d); color:#fff !important;
  font-weight:700; text-decoration:none;
}
a.abox-voir:hover, #texte a.abox-voir:hover{ filter:brightness(1.1); }
a.abox-voir.inactif, #texte a.abox-voir.inactif{ opacity:.45; cursor:not-allowed; }
.abox-rappel{ font-size:11px; color:var(--m-sourdine,#9a9aa5); }

/* ============================================================
   PAGE CONTACT — formulaire moderne (11/07/2026)
   Style cohérent avec thème gris sombre + rouge.
   ============================================================ */

#formcontact{
  width:auto !important;
  max-width:600px;
  float:none !important;
  margin:0 auto !important;
  background:var(--m-card);
  border:1px solid var(--m-line);
  border-radius:var(--m-radius);
  padding:28px 30px;
}

#formcontact .form-group{
  margin-bottom:18px;
}

#formcontact label{
  display:block !important;
  width:auto !important;
  margin-top:0 !important;
  margin-bottom:6px;
  color:var(--m-txt) !important;
  font-weight:600;
  font-size:13.5px;
}

#formcontact input[type="text"],
#formcontact input[type="email"],
#formcontact textarea{
  width:100% !important;
  height:auto !important;
  background:var(--m-bg) !important;
  border:1.5px solid var(--m-line) !important;
  border-radius:8px !important;
  padding:10px 14px;
  color:var(--m-txt) !important;
  font-size:14px;
  font-weight:500;
  box-sizing:border-box;
  transition:border-color .15s, box-shadow .15s;
}

#formcontact input[type="text"]:focus,
#formcontact input[type="email"]:focus,
#formcontact textarea:focus{
  border-color:var(--m-red) !important;
  box-shadow:0 0 0 3px rgba(229,72,77,.18) !important;
  outline:none;
}

#formcontact input::placeholder,
#formcontact textarea::placeholder{
  color:var(--m-txt-3);
}

#formcontact textarea{
  min-height:150px;
  resize:vertical;
}

#formcontact input#envoi{
  display:block;
  width:auto !important;
  height:auto !important;   /* sinon height:30px de css.css se bat avec le padding -> "Envoyer" décentré verticalement */
  line-height:1.1;
  margin:24px auto 0;
  padding:12px 36px;
  text-align:center;
  background:var(--m-red) !important;
  color:#fff !important;
  border:1.5px solid var(--m-red) !important;
  border-radius:10px !important;
  font-weight:800 !important;
  font-size:15px !important;
  cursor:pointer;
  box-shadow:0 4px 18px -6px rgba(229,72,77,.45);
  transition:all .18s ease;
}

#formcontact input#envoi:hover{
  background:var(--m-red2) !important;
  border-color:var(--m-red2) !important;
  transform:translateY(-1px);
}

/* messages feedback */
.form-feedback{
  padding:14px 18px;
  border-radius:10px;
  margin-bottom:18px;
  font-size:14px;
  line-height:1.5;
}

.form-succes{
  background:rgba(90,200,120,.12);
  border:1px solid rgba(90,200,120,.3);
  color:var(--m-txt);
}

.form-erreur{
  background:rgba(229,72,77,.12);
  border:1px solid rgba(229,72,77,.3);
  color:var(--m-red-soft);
}

.form-feedback strong{ color:var(--m-txt); }

@media (max-width:640px){
  #formcontact{ padding:20px 16px; }
}

/* ===================================================================
   PAGES ODR (offres-remboursement.php) — alignement thème gris/rouge
   (12/07/2026, demande Nicolas : « mêmes couleurs de titre, police,
   liens que le site »). Avant : pastilles blanches #f5f5f5 + flèche
   JPG du thème clair 2013, bouton code façon clair, pagination bleue.
   NB : .offreremboursement (carte) et .messageavisfin étaient déjà
   thémés plus haut ; .head452 aussi. Ne pas re-styler ici.
   =================================================================== */
/* onglets « Toutes les offres / SFR / … » : pastilles sombres arrondies */
#rbt li{
  background:var(--m-card) !important;
  border:1px solid var(--m-line) !important;
  border-right:1px solid var(--m-line) !important;
  border-radius:8px;
  height:auto !important;
  padding:4px 14px !important;
  transition:border-color .15s ease;
}
#rbt li:hover{ border-color:var(--m-red) !important; }
#rbt li a, #rbt li a:link, #rbt li a:visited{ color:var(--m-txt) !important; font-weight:700; }
#rbt li a:hover{ color:var(--m-red-soft) !important; }
/* Titres de l'annuaire ODR en ROUGE accent : le h2 « Trouvez votre offre… »
   + les 4 h3 (opérateurs, marques, éditeurs d'IA, fournisseurs de services
   IA) — 12/07/2026, demande Nicolas. ⚠ PIÈGE : la règle globale
   « #texte h2, #texte h3 { color:var(--m-txt) !important } » (section
   CONTENUS ISSUS DE LA BASE, ~l.1500) écrase toute couleur posée en inline
   ou par classe dans une page : une couleur de titre se pose ICI, avec une
   spécificité supérieure (#texte .classe) ET !important. */
#texte .odr-annu-bloc h2, #texte .odr-annu-bloc h3{ color:var(--m-red) !important; }
/* la flèche JPG d'époque (fond blanc) n'a plus de sens sur pastille sombre */
#rbt .etiquette_fleche{ display:none !important; }

/* fiche offre : dates en gris doux du thème, code promo en rouge accent */
.grisclair{ color:var(--m-txt-3) !important; }
.offre3 div a.code{
  background:transparent !important;
  border:2px solid var(--m-red) !important;
  color:var(--m-red-soft) !important;
  border-radius:8px;
}

/* pagination (si plusieurs pages) : liens gris clair, page courante rouge (inline) */
.marquepage a.Actunav, .marquepage a.Actunav:link, .marquepage a.Actunav:visited{
  color:var(--m-txt-2) !important;
}
.marquepage a.Actunav:hover{ color:var(--m-red-soft) !important; }
