/* ============================================================================
   Réseaux VITALIS — Styles communs à toutes les pages
   Chargé dans le <head> des 28 pages. Ce qui est propre à une seule page
   (animations @keyframes, composants uniques) reste dans le <helmet> de la page.

     1. Base
     2. Barre du haut, en-tête et menus
     3. Accessibilité
     4. Finitions et micro-interactions
     5. Responsive

   Important : le runtime DC rend les pages avec React, qui RÉÉCRIT les attributs
   style (« grid-template-columns:repeat(4,1fr) » devient
   « grid-template-columns: repeat(4, 1fr); », #1B1740 devient rgb(27, 23, 64)…).
   Un sélecteur [style*="…"] doit donc viser cette forme normalisée ; on lui
   préfère les attributs data-* posés sur les blocs, qui eux ne changent pas.
   ============================================================================ */


/* ============================================================================
   1. Base
   ============================================================================ */
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
[id]{scroll-margin-top:96px}
body{margin:0;background:#F4F6FB;color:#171436;font-family:'Manrope',system-ui,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
/* clip (et non hidden) : coupe les débordements sans créer de conteneur de
   défilement, l'en-tête sticky continue donc de fonctionner */
@supports (overflow:clip){html,body{overflow-x:clip}}
::selection{background:#0088CC;color:#fff}
img{max-width:100%}
input,select,textarea{min-width:0;max-width:100%}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  html{scroll-behavior:auto!important}
}


/* ============================================================================
   2. Barre du haut, en-tête et menus
   ============================================================================ */
/* Barre du haut (téléphone, e-mail, SAV) = le bloc placé juste avant <header> */
div:has(+ header) a,div:has(+ header) span{white-space:nowrap}
div:has(+ header) a{transition:color .18s ease}
div:has(+ header) a:hover{color:#fff!important}

/* Liens du menu */
header nav>a,header nav>div>button,header>div>div:last-child>a{white-space:nowrap}
header nav>a,header nav [data-svc-wrap]>button,header nav [data-sol-wrap]>button{text-transform:uppercase;letter-spacing:.04em;transition:background-color .18s ease,color .18s ease}
header nav>a:hover,header nav [data-svc-wrap]>button:hover,header nav [data-sol-wrap]>button:hover{background-color:#EEF3FA}

/* Sous-menus « Nos services » / « Solutions » : ouverture au survol en CSS
   (fiable, survit au re-render du runtime) ; clavier et tactile : rv-ui.js */
[data-svc-wrap]:hover [data-svc-panel],[data-sol-wrap]:hover [data-sol-panel]{opacity:1!important;visibility:visible!important;transform:translateY(0)!important}
[data-svc-panel]::before,[data-sol-panel]::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
[data-svc-panel] a,[data-sol-panel] a{transition:color .18s ease}
[data-svc-panel] a:hover,[data-sol-panel] a:hover{color:#0088CC!important}
[data-svc-wrap]>button svg,[data-sol-wrap]>button svg{transition:transform .22s ease}
[data-svc-wrap]>button[aria-expanded="true"] svg,[data-sol-wrap]>button[aria-expanded="true"] svg{transform:rotate(180deg)}

/* Menu complet (ordinateur) : centré entre le logo et le bouton d'action */
@media (min-width:1025px){
  header nav{flex:1 1 auto!important;justify-content:center!important;margin-left:0!important}
  header nav>a,header nav [data-svc-wrap]>button,header nav [data-sol-wrap]>button{font-size:13px!important;font-weight:700!important}
}
@media (min-width:1025px) and (max-width:1200px){
  header nav{gap:2px!important}
  header nav>a,header nav>div>button{padding-left:10px!important;padding-right:10px!important}
}
@media (max-width:1280px){
  /* « Solutions » ancré à droite pour ne pas sortir de l'écran */
  [data-sol-panel]{left:auto!important;right:0!important}
}
@media (max-width:1200px){
  /* deux boutons d'action dans l'en-tête (ex. Internet) : on garde le principal */
  header>div>div:last-child:has(>[data-hov-cta])>[data-hov-ghost]{display:none!important}
}

/* Menu mobile (bouton créé par rv-ui.js) : le menu complet demande ~975 px */
.rv-burger{display:none}
@keyframes rv-navopen{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (max-width:1024px){
  header>div{gap:14px!important}
  .rv-burger{display:inline-flex;align-items:center;justify-content:center;order:10;width:44px;height:44px;padding:0;border:1px solid #E3E8F2;border-radius:11px;background:#fff;cursor:pointer;flex-shrink:0}
  header nav{display:none!important}
  header nav.rv-open{
    display:flex!important;position:absolute;top:100%;left:0;right:0;z-index:80;height:auto;
    /* !important : le style en ligne du <nav> impose align-items:center et gap:4px */
    flex-direction:column!important;align-items:stretch!important;gap:2px!important;margin:0!important;
    padding:10px max(4vw,16px) 18px;background:#fff;
    border-top:1px solid #E3E8F2;border-bottom:1px solid #E3E8F2;box-shadow:0 24px 50px rgba(27,23,64,.14);
    max-height:calc(100vh - 110px);max-height:calc(100dvh - 110px);overflow-y:auto;overscroll-behavior:contain;
    animation:rv-navopen .24s ease;
  }
  header nav.rv-open>a,header nav.rv-open>div>button{display:flex!important;align-items:center;justify-content:flex-start;gap:8px;width:100%;padding:13px 12px!important;font-size:15px!important;text-align:left}
  header nav.rv-open>div>button>svg{margin-left:auto}
  header nav.rv-open [data-svc-wrap],header nav.rv-open [data-sol-wrap]{position:static}
  /* sous-menus en accordéon (état posé par rv-ui.js : data-rv-sub-open) */
  header nav.rv-open [data-svc-panel],header nav.rv-open [data-sol-panel]{display:none!important}
  header nav.rv-open [data-rv-sub-open]>[data-svc-panel],header nav.rv-open [data-rv-sub-open]>[data-sol-panel]{
    display:grid!important;position:static!important;width:auto!important;
    opacity:1!important;visibility:visible!important;transform:none!important;
    margin:2px 0 8px!important;padding:14px 16px!important;border:0!important;border-radius:12px!important;
    background:#F6F8FC!important;box-shadow:none!important;grid-template-columns:1fr 1fr!important;gap:6px 18px!important;
  }
  header nav.rv-open [data-svc-panel]::before,header nav.rv-open [data-sol-panel]::before{display:none}
  header nav.rv-open [data-rv-sub-open]>button svg{transform:rotate(180deg)}
}
@media (max-width:900px){
  /* barre du haut : le badge « SAV : lun–ven… » ne tient plus */
  div:has(+ header)>div>div:last-child>span{display:none!important}
}
@media (max-width:600px){
  div:has(+ header)>div{gap:12px!important}
  div:has(+ header)>div>div{gap:14px!important}
  /* e-mail en icône seule (l'adresse reste dans le pied de page) */
  div:has(+ header) a[href^="mailto:"]{font-size:0!important;gap:0!important}
  div:has(+ header) a[href^="mailto:"] svg{width:17px;height:17px}
  header>div{height:66px!important;gap:10px!important}
  header>div>a:first-child img{height:44px!important}
  header>div>div:last-child>a{padding:10px 14px!important;font-size:13.5px!important}
}
@media (max-width:480px){
  header nav.rv-open [data-rv-sub-open]>[data-svc-panel],header nav.rv-open [data-rv-sub-open]>[data-sol-panel]{grid-template-columns:1fr!important}
}
@media (max-width:380px){
  header>div>div:last-child>a{padding:10px 12px!important}
  header>div>div:last-child>a svg{display:none}
}


/* ============================================================================
   3. Accessibilité
   ============================================================================ */
/* Lien d'évitement « Aller au contenu » (créé par rv-ui.js) */
a.rv-skip{position:fixed;left:12px;top:-60px;z-index:2147483600;padding:10px 16px;border-radius:0 0 12px 12px;background:#2B265D;color:#fff;font:700 14px/1 'Manrope',system-ui,sans-serif;text-decoration:none;transition:top .15s}
a.rv-skip:focus{top:0}
/* Anneau de focus clavier */
:focus-visible{outline:2px solid #0088CC;outline-offset:2px;border-radius:4px}
#rv-main:focus{outline:none}


/* ============================================================================
   4. Finitions et micro-interactions
   ============================================================================ */
/* Pied de page */
footer a{transition:color .18s ease}
footer a:hover{color:#fff!important}
footer a[aria-label]{transition:transform .18s ease,color .18s ease}
footer a[aria-label]:hover{transform:translateY(-2px)}

/* Liens « près de chez vous » (pages services) */
[data-villes-seo] a{transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease}
[data-villes-seo] a:hover{transform:translateY(-2px);border-color:#9fcfe9;box-shadow:0 10px 22px rgba(27,23,64,.10)}

/* Boutons d'action */
a[data-hov-cta],a[data-hov-ghost],button[type="submit"]{transition:transform .12s ease,box-shadow .2s ease,filter .2s ease}
a[data-hov-cta]:active,a[data-hov-ghost]:active,button[type="submit"]:active{transform:translateY(1px) scale(.99)!important}
[data-arrow]{transition:gap .2s ease}

/* Formulaires (envoi et erreurs : rv-forms.js) */
input:not([type=checkbox]):not([type=radio]),select,textarea{transition:border-color .18s ease,box-shadow .18s ease}
input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{outline:none!important;border-color:#0088CC!important;box-shadow:0 0 0 4px rgba(0,136,204,.12)!important}
input:user-invalid,select:user-invalid,textarea:user-invalid{border-color:#C0392B!important;box-shadow:0 0 0 4px rgba(192,57,43,.10)!important}
[data-ctform] select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235C5E76' stroke-width='2.4'><path d='m6 9 6 6 6-6'/></svg>")!important;background-repeat:no-repeat!important;background-size:16px 16px!important;background-position:right 13px center!important;background-color:#FBFCFE!important;padding-right:42px!important;cursor:pointer}
[data-form-err]{padding:10px 14px;border:1px solid #F3CBCB;border-radius:10px;background:#FDF1F1;color:#B00020!important;font-size:13px!important;font-weight:600}
@keyframes rv-spin2{to{transform:rotate(360deg)}}
button[data-rv-busy]{pointer-events:none}
button[data-rv-busy]>svg{display:none}
button[data-rv-busy]::after{content:"";width:17px;height:17px;flex-shrink:0;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:rv-spin2 .7s linear infinite}
@keyframes rv-statein{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
[data-form-ok],[data-sim-form-wrap]{animation:rv-statein .5s cubic-bezier(.16,.84,.44,1) both}

/* Squelettes de chargement (avis, Instagram) */
@keyframes rv-shimmer{0%{background-position:-450px 0}100%{background-position:450px 0}}
.rv-skel-box{display:block;border-radius:8px;background:#e9edf5;background-image:linear-gradient(90deg,#e9edf5 0,#f6f8fc 180px,#e9edf5 360px);background-size:600px 100%;animation:rv-shimmer 1.25s linear infinite}

/* Avis Google défilants (rv-reviews.js) et vignettes Instagram (rv-instagram.js) */
@keyframes rv-cardin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.rv-rev-card,.ig-tile{animation:rv-cardin .5s cubic-bezier(.16,.84,.44,1) backwards}
.ig-tile:nth-child(2){animation-delay:.06s}.ig-tile:nth-child(3){animation-delay:.12s}.ig-tile:nth-child(4){animation-delay:.18s}.ig-tile:nth-child(5){animation-delay:.24s}.ig-tile:nth-child(6){animation-delay:.3s}
@keyframes rv-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* overflow:hidden : la piste fait ~25 000 px, elle élargissait la page */
.rv-rev-mask{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.rv-rev-track{display:flex;gap:18px;width:max-content;animation:rv-marquee 55s linear infinite}
.rv-rev-mask:hover .rv-rev-track{animation-play-state:paused}
/* Mouvement réduit : pas de défilement, les 6 premiers avis en grille (sans les doublons de la boucle) */
@media (prefers-reduced-motion:reduce){
  .rv-rev-mask{-webkit-mask-image:none;mask-image:none}
  .rv-rev-track{flex-wrap:wrap;width:auto}
  .rv-rev-track>[data-rv-dup],.rv-rev-track>:nth-child(n+7){display:none}
  .rv-rev-track>*{flex:1 1 300px!important;width:auto!important}
}

/* Cartes produits, filtres, fiches techniques */
[data-card]{position:relative}
[data-card] a[href*="?p="]::after{content:"";position:absolute;inset:0;z-index:1}
[data-card] [data-hov-cta],[data-card] [data-arrow]{position:relative;z-index:2}
[data-card] image-slot::part(image){transition:transform .5s cubic-bezier(.22,.61,.36,1)}
[data-card]:hover image-slot::part(image){transform:scale(1.045)}
button[data-filter]:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(27,23,64,.10)}
button[data-filter]:active{transform:translateY(0) scale(.98)}
.rv-specs>div:nth-child(even){background:#FAFBFE}
.rv-specs>div:last-child{border-bottom:0!important}

/* Cartes d'étapes et de services */
[data-steps]>div:hover{transform:translateY(-5px);box-shadow:0 18px 40px rgba(27,23,64,.10)}

/* Fenêtre modale */
@keyframes rv-modal-fade{from{opacity:0}to{opacity:1}}
@keyframes rv-modal-pop{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
[data-modal-bg]{animation:rv-modal-fade .25s ease both}
[data-modal]>div:last-child{animation:rv-modal-pop .32s cubic-bezier(.16,.84,.44,1) both}

/* Bureautique : le badge « Copieur A3 couleur » passait sous l'image
   (son filter crée un contexte d'empilement) quand la carte rétrécit */
[data-conf-badge]{z-index:1}

/* Lien « ★★★★★ 5/5 sur Google · 50 avis » : retour à la ligne propre */
a[href*="VITALIS+avis"]{flex-wrap:wrap;row-gap:2px}

/* Mouvement réduit : ce que « *{animation:none} » (section 1) ne couvre pas
   (pseudo-éléments, parties de composants, décalages au survol) */
@media (prefers-reduced-motion:reduce){
  button[data-rv-busy]::after{animation:none}
  [data-card] image-slot::part(image){transition:none}
  [data-villes-seo] a:hover,[data-card]:hover image-slot::part(image),[data-steps]>div:hover,footer a[aria-label]:hover{transform:none}
  a[data-hov-cta]:active,a[data-hov-ghost]:active,button[type="submit"]:active{transform:none!important}
}


/* ============================================================================
   5. Responsive
   Points de rupture principaux : 1024 (menu mobile), 900 (tablette),
   600 (mobile) ; ajustements ponctuels à 980, 920, 860, 700, 400 et 360.
   ============================================================================ */

/* 5.1 Filet général : sous 600 px, les grilles « à fractions » écrites en
   ligne passent sur une colonne. :where() lui donne une spécificité nulle :
   toutes les règles plus précises ci-dessous l'emportent. */
@media (max-width:600px){
  :where([style*="1fr 1fr"],[style*=".95fr"],[style*="1.05fr"],[style*="1.1fr"],[style*="1.15fr"],[style*="1.5fr"]){grid-template-columns:1fr!important}
}

/* 5.2 Sections en deux colonnes (texte + visuel, formulaire…) */
@media (max-width:900px){
  [data-hero-grid],[data-convert],[data-pq-grid],[data-case-grid],[data-sim-grid],
  [data-fin-grid],[data-conf-grid],[data-rack-grid],[data-mnt-grid],[data-mobile-grid],[data-topo-grid],
  [data-plan-grid],[data-yeastar-head],[data-baie-grid],[data-backup-grid],[data-band-grid],
  [data-sim-form]{grid-template-columns:minmax(0,1fr)!important}
  /* l'écart horizontal (48-60 px) devient vertical ; les grilles sans écart
     (cartes d'un seul tenant : contact, fiche produit) restent collées */
  [data-hero-grid][style*="gap"],[data-convert][style*="gap"],
  [data-pq-grid][style*="gap"],[data-mnt-grid][style*="gap"],[data-yeastar-head][style*="gap"],
  [data-baie-grid][style*="gap"],[data-backup-grid][style*="gap"],[data-band-grid][style*="gap"],
  [data-doc-grid][style*="gap"]{column-gap:0!important;row-gap:40px!important}
  [data-band-grid] [data-band-stats]{gap:28px!important}
}
@media (max-width:920px){
  /* mentions légales : sommaire au-dessus du texte */
  [data-doc-grid]{grid-template-columns:minmax(0,1fr)!important}
  [data-doc-grid] [data-toc]{position:static!important;margin-bottom:24px}
}
@media (max-width:600px){
  [data-sim-grid],[data-case-grid],[data-fin-grid],[data-conf-grid],[data-rack-grid],[data-mobile-grid],
  [data-topo-grid],[data-plan-grid],[data-sim-form]{row-gap:18px!important}
  [data-hero-grid][style*="gap"]{row-gap:64px!important}
}

/* 5.3 Grilles de cartes (3 à 5 colonnes)
   Les sélecteurs conditionnels sont placés dans :where() pour garder une
   spécificité simple : à largeur plus petite, la règle suivante l'emporte. */
@media (max-width:980px){
  /* catalogues (grilles de 4) et tutoriels */
  :where([data-cat-grid][style*="repeat(4"],[data-tut-grid]){grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:900px){
  :where([data-svc-grid]:has(>a[data-svc])),[data-eng-grid],[data-cap-grid],[data-cat-grid],[data-yeastar-grid],
  [data-sect-grid],[data-reassure],[data-trust-grid],[data-impact],[data-stat-grid],[data-prest-grid],
  [data-tut-grid],[data-alarme-eq],[data-adv-grid],[data-steps],[data-price-grid],[data-fin-cards],
  [data-evo-grid],[data-rec-grid],[data-chan-grid],[data-sov-grid],[data-ig-grid]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  /* exactement 3 cartes : 3 colonnes tant que la place le permet (pas de carte orpheline) */
  [data-adv-grid]:has(>:nth-child(3):last-child),[data-steps]:has(>:nth-child(3):last-child),
  [data-price-grid]:has(>:nth-child(3):last-child),
  [data-evo-grid]:has(>:nth-child(3):last-child),[data-rec-grid]:has(>:nth-child(3):last-child),
  [data-chan-grid]:has(>:nth-child(3):last-child),[data-sov-grid]:has(>:nth-child(3):last-child),
  [data-cap-grid]:has(>:nth-child(3):last-child),[data-stat-grid]:has(>:nth-child(3):last-child),
  [data-alarme-eq]:has(>:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))!important}
  /* étape 01 : « ÉTAPE 01 » et le badge « 100 % GRATUIT » se chevauchaient */
  [data-steps]>div>div[style*="justify-content: space-between"]{flex-wrap:wrap;row-gap:8px}
  /* étapes et frise : lecture verticale */
  [data-proc-grid],[data-timeline]{grid-template-columns:minmax(0,1fr)!important}
  [data-proc-grid]>[data-proc-line],[data-timeline]>[data-tl-track]{display:none!important}
}
@media (max-width:860px){
  /* Télécom, parcours d'appel, et Internet, comparatif FTTH / FTTO : une colonne */
  [data-flow],[data-cmp-grid]{grid-template-columns:minmax(0,1fr)!important}
}
@media (max-width:700px){
  [data-adv-grid]:has(>:nth-child(3):last-child),[data-steps]:has(>:nth-child(3):last-child),
  [data-price-grid]:has(>:nth-child(3):last-child),
  [data-evo-grid]:has(>:nth-child(3):last-child),[data-rec-grid]:has(>:nth-child(3):last-child),
  [data-chan-grid]:has(>:nth-child(3):last-child),[data-sov-grid]:has(>:nth-child(3):last-child),
  [data-cap-grid]:has(>:nth-child(3):last-child),[data-alarme-eq]:has(>:nth-child(3):last-child){grid-template-columns:minmax(0,1fr)!important}
  /* zones d'intervention (9 départements) : 2 colonnes, le dernier sur toute la largeur */
  [data-zones-grid]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  [data-zones-grid]>:last-child:nth-child(odd){grid-column:1/-1}
}
@media (max-width:600px){
  [data-svc-grid],[data-eng-grid],[data-cap-grid],[data-cat-grid],[data-yeastar-grid],[data-sect-grid],
  [data-reassure],[data-prest-grid],[data-zones-grid],[data-tut-grid],[data-alarme-eq],[data-adv-grid],
  [data-steps],[data-fin-cards],[data-stat-grid]:has(>:nth-child(3):last-child){grid-template-columns:minmax(0,1fr)!important}
  /* publications Instagram : 2 par ligne, comme dans l'appli */
  [data-ig-grid]{gap:10px!important}
}
@media (max-width:360px){
  [data-impact],[data-stat-grid],[data-trust-grid],[data-ig-grid]{grid-template-columns:minmax(0,1fr)!important}
}

/* Pourquoi VITALIS : mosaïque 2 colonnes (tuiles larges sur toute la ligne), puis 1 */
@media (max-width:980px){
  [data-bento]{grid-template-columns:1fr 1fr!important}
  [data-bento]>[data-b-wide]{grid-column:1/-1!important}
}
@media (max-width:860px){
  [data-bento]{grid-template-columns:1fr!important}
}


/* Accueil, bandeau de chiffres (4 blocs) : filets en 2 × 2 */
@media (max-width:900px){
  [data-impact]>div{padding:26px 16px 22px!important;border-left:0!important;border-top:0!important}
  [data-impact]>div:nth-child(even){border-left:1px solid #E3E8F2!important}
  [data-impact]>div:nth-child(n+3){border-top:1px solid #E3E8F2!important}
}
@media (max-width:360px){
  [data-impact]>div:nth-child(even){border-left:0!important}
  [data-impact]>div:nth-child(n+2){border-top:1px solid #E3E8F2!important}
}

/* Colonnes « prestations par ville » des pages métier et de la page zones */
@media (max-width:900px){
  [data-villes-seo]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:600px){
  [data-villes-seo]{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:18px!important}
}
@media (max-width:360px){
  [data-villes-seo]{grid-template-columns:minmax(0,1fr)!important}
}

/* Tuiles 2 × 2 des tableaux de bord (écart ≤ 10 px) : restent en 2 colonnes */
@media (min-width:341px) and (max-width:600px){
  [style*="grid-template-columns: 1fr 1fr;"][style*="gap: 8px;"],
  [style*="grid-template-columns: 1fr 1fr;"][style*="gap: 10px;"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Formulaires : un champ par ligne, carte moins rembourrée sur petit écran */
@media (max-width:600px){
  form [style*="grid-template-columns: 1fr 1fr"]{grid-template-columns:minmax(0,1fr)!important}
}
@media (max-width:400px){
  div[style*="padding: 32px"]:has(form){padding:24px 18px!important}
}

/* 5.4 Pied de page : marque sur toute la largeur, colonnes de liens dessous */
@media (max-width:900px){
  [data-foot-grid]{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:34px 28px!important}
  [data-foot-grid]>:first-child{grid-column:1/-1}
}
@media (max-width:600px){
  [data-foot-grid]{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:30px 20px!important}
}
@media (max-width:400px){
  [data-foot-grid]{grid-template-columns:minmax(0,1fr)!important}
}

/* 5.5 Visuels du héros : badges flottants et cartes décalées
   Les décalages négatifs (-18 à -26 px) ne débordent que lorsque la marge
   latérale de la page (4 vw) devient plus petite qu'eux : sous 700 px. */
@media (max-width:700px){
  [style*="rv-floaty"][style*="right: -"]{right:10px!important}
  [style*="rv-floaty"][style*="left: -"]{left:10px!important}
  /* réseaux VDI : badge « 100 % testées » */
  [style*="bottom: -20px"][style*="right: -16px"]{right:10px!important}
}
@media (max-width:600px){
  /* badges remontés au-dessus de la carte : ils ne masquent plus son titre ni ses jauges */
  [style*="rv-floaty"]{padding:9px 12px!important;gap:9px!important}
  [style*="rv-floaty"][style*="top: -"]{top:-52px!important}
  [style*="rv-floaty"][style*="bottom: -"]{bottom:-34px!important}
  [style*="rv-floaty"]>span:first-child{width:32px!important;height:32px!important}
  /* pastille d'état « EN LIGNE / EN COURS / ARMÉ » sur une seule ligne */
  [data-hero-grid] span[style*="margin-left: auto"]{white-space:nowrap}
  /* accueil : coche verte de l'étape 03, sans dépasser du bord de l'écran */
  [data-steps] .rv-check{top:-12px;right:-6px}
  /* chiffres du héros séparés par des filets verticaux : grille de 3 */
  div:has(>[style*="width: 1px; height: 32px"]),div:has(>[style*="width: 1px; height: 34px"]){display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px!important}
  [style*="width: 1px; height: 32px"],[style*="width: 1px; height: 34px"]{display:none!important}
  /* Télécom, carte « Forfaits mobiles » : l'image en absolu écrasait le texte */
  [data-mobile-grid] [data-card]{padding:26px!important}
  [data-mobile-grid] [data-card]>img{position:static!important;order:10;align-self:center;width:190px!important;max-width:70%!important;margin-top:20px}
  [data-mobile-grid] [data-card]>h3,[data-mobile-grid] [data-card]>p,[data-mobile-grid] [data-card]>ul{max-width:none!important}
}

/* 5.6 Rythme vertical et détails mobiles */
@media (max-width:600px){
  section[style*="padding: 96px 0px;"],section[style*="padding: 90px 0px;"],section[style*="padding: 88px 0px;"],
  section[style*="padding: 84px 0px;"],section[style*="padding: 80px 0px;"]{padding-top:60px!important;padding-bottom:60px!important}
  section[style*="padding: 140px 0px 96px"]{padding-top:104px!important;padding-bottom:64px!important}
  section[style*="padding: 0px 0px 96px"]{padding-bottom:60px!important}
  /* titres de section : marge basse réduite */
  [data-reveal][style*="margin: 0px auto 52px"]{margin-bottom:36px!important}
  /* catalogues et fiches : le bouton principal prend toute la largeur */
  a[style*="min-width: 150px"][style*="flex: 1 1 0%"]{flex-basis:100%!important;white-space:nowrap}
}
@media (max-width:700px){
  /* guides et articles : tableaux comparatifs défilables horizontalement */
  div.art-body table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;font-size:13.5px}
  div.art-body th,div.art-body td{min-width:110px;padding:8px 10px}
}
