
  /* ═══════════════════════════════════════════════════════════════
     Pure Studio Design System V1
     Ultra-premium · Artisans locaux · 2026
     Polices : DM Sans (titres) + Inter (corps)
     Palette : #111 fond sombre · #F5F4F1 fond clair · accent client
     ═══════════════════════════════════════════════════════════════ */

  :root {
    --acc:    #D16B27;
    --acc2:   #B25B21;
    --acc-bg: color-mix(in srgb, #D16B27 10%, transparent);
    /* ── Fonds harmonisés (structurels, indépendants du client) ──
       3 fonds max : ivoire chaud (clair), beige doux (transition), anthracite (fort). */
    --fond-clair: #F6F6F4;
    --fond-beige: #ECEBE8;
    /* --ink = anthracite UNIQUE pour toutes les sections sombres (entreprise, avis, devis). */
    --ink:    #111418;
    --ink2:   #111418;
    --ink3:   #1A1F26;
    /* --header-bg = fond du header UNIQUEMENT (réglable sans impacter le reste).
       Si l'utilisateur a choisi un header transparent, couleur_primaire vaut
       "transparent" → on retombe sur la couleur solide calculée par le générateur
       pour ne jamais avoir un fond cassé. */
    --header-bg: #FFFFFF;
    /* Fond plein appliqué au header transparent une fois scrollé */
    --header-solid: #FFFFFF;
    --off:    #FBF3EE;
    --off2:   color-mix(in srgb, #FBF3EE 80%, #000);
    --white:  #FFFFFF;
    --menu:   #FFFFFF;
    --menu-scroll-text: #16181D;
    --btn-text: #FFFFFF;
    --footer-bg: #F4F5F7;
    --footer-text: #3A3F4A;
    --footer-title: #16181D;
    --footer-link: #3A3F4A;
    --footer-link-hover: #D16B27;
    --footer-border: #E3E2DF;
    --footer-font: var(--f-body);
    --logo-h: 58px;
    --logo-h-mobile: 58px;
    /* Couleur du logo une fois la page scrollée (header transparent). Déclarée
       seulement si elle est réglée : une valeur vide casserait le var() du
       calque de recolorisation (cf. .logo-swap). */
    
    /* Assombrissement du hero, réglé à l'étape Identité visuelle (0 = photo brute,
       55 = défaut, 100 = quasi noir). Deux facteurs, cf. voileHero() dans context.ts :
       --hero-voile-forme = intensité du voile DESSINÉ (dégradé directionnel + vignette)
       --hero-voile-plat  = voile UNIFORME ajouté au-delà de 55, celui qui assombrit
                            réellement toute la surface (le dégradé seul laisse
                            toujours un bord clair). */
    --hero-voile-forme: 1;
    --hero-voile-plat: 0.622;
    --bd:     #E3E2DF;
    --bd2:    #CFCFCB;
    --t1:     #16181D;
    --t2:     #514D43;
    --t3:     #736E64;
    --w1:     #FFFFFF;
    --w2:     #B9B6AF;
    --w3:     #8C887E;
    --radius: 10px;
    --radius-lg: 16px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.05);
    --shadow:    0 4px 16px rgba(0,0,0,.09), 0 1px 4px rgba(0,0,0,.05);
    --shadow-lg: 0 16px 48px rgba(0,0,0,.13), 0 4px 12px rgba(0,0,0,.07);
    --f-title: 'DM Sans', 'Montserrat', sans-serif;
    /* Titres éditoriaux (hero, H2 de sections, CTA) : serif premium. Les
       éléments d'interface (boutons, badges, menu, chiffres) restent en
       --f-title pour garder leur lisibilité utilitaire. */
    --f-display: 'Fraunces', Georgia, serif;
    --f-body:  'Inter', 'Open Sans', sans-serif;
  }

  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
  html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:clip}
  /* Garde anti-débordement horizontal (mobile) : clip n'établit PAS de conteneur
     de défilement -> le header position:sticky continue de fonctionner. */
  body{font-family:var(--f-body);color:var(--t1);background:var(--fond-clair);line-height:1.6;font-size:15px;-webkit-font-smoothing:antialiased;overflow-x:clip;width:100%;max-width:100%;position:relative}
  h1,h2,h3,h4{font-family:var(--f-title);line-height:1.12;letter-spacing:-.025em}
  a{text-decoration:none;color:inherit}
  img{max-width:100%;display:block}

  /* Fonts chargées via <link> dans le <head> de chaque page (non bloquant) */

  /* ── Container ── */
  .container{max-width:1320px;margin:0 auto;padding:0 40px;width:100%}
  @media(max-width:900px){.container{padding:0 24px}}
  @media(max-width:600px){.container{padding:0 16px}}

  /* ── Sections ── */
  .sec      {padding:100px 0}
  .sec-sm   {padding:72px 0}
  .sec-dark {background:var(--fond-clair)}
  .sec-dark2{background:var(--fond-clair)}
  .sec-off  {background:var(--fond-clair)}
  .sec-off2 {background:var(--off2)}
  @media(max-width:760px){.sec{padding:64px 0}.sec-sm{padding:48px 0}}

  /* ── Typographie globale ── */
  .eyebrow{font-family:var(--f-title);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--acc);margin-bottom:14px;display:block}
  .eyebrow-w{color:var(--acc)}
  .sh{font-family:var(--f-display);font-weight:600;line-height:1.08;letter-spacing:-.02em;color:var(--t1)}
  .sh-w{color:#fff}
  .sh-xl{font-size:52px}
  .sh-lg{font-size:40px}
  .sh-md{font-size:32px}
  .sh-sm{font-size:24px}
  .lead{font-size:16.5px;color:var(--t2);line-height:1.72;max-width:560px}
  .lead-w{color:var(--w2)}
  @media(max-width:760px){.sh-xl{font-size:36px}.sh-lg{font-size:30px}.sh-md{font-size:26px}}

  /* ── Boutons ── */
  .btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--f-title);font-weight:700;font-size:14px;border-radius:8px;padding:14px 28px;cursor:pointer;border:none;transition:all .15s;white-space:nowrap;letter-spacing:-.01em}
  /* Icône SVG dans un bouton — hérite de la couleur du texte du bouton */
  .btn-ico{width:16px;height:16px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .btn-acc .btn-ico{stroke:#fff}
  .cta-tel .btn-ico{width:15px;height:15px;stroke:var(--acc)}
  .btn:active{transform:scale(.98)}
  .btn-acc{background:var(--acc);color:var(--btn-text);box-shadow:0 4px 20px color-mix(in srgb,var(--acc) 40%,transparent)}
  .btn-acc:hover{background:var(--acc2);box-shadow:0 6px 24px color-mix(in srgb,var(--acc) 50%,transparent);transform:translateY(-1px)}
  .btn-wh{background:#fff;color:var(--ink);border:1.5px solid #fff}
  .btn-wh:hover{background:rgba(255,255,255,.9);transform:translateY(-1px);box-shadow:0 6px 24px rgba(255,255,255,.15)}
  .btn-outline{background:transparent;color:var(--t1);border:2px solid var(--bd2)}
  .btn-outline:hover{border-color:var(--acc);color:var(--acc)}
  .btn-sm{padding:10px 20px;font-size:13px}
  .btn-lg{padding:17px 36px;font-size:15px}

  /* ── Link arrow ── */
  .link-arr{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-title);font-weight:700;font-size:13px;color:var(--t1);border-bottom:2px solid var(--t1);padding-bottom:2px;transition:gap .15s}
  .link-arr:hover{gap:10px}
  .link-arr-w{color:#fff;border-bottom-color:rgba(255,255,255,.5)}
  .link-arr-w:hover{border-bottom-color:#fff}

  /* ══════════════ HEADER ══════════════ */
  header.site-hdr{
    position:sticky;top:0;z-index:200;
    transition:transform .28s cubic-bezier(.4,0,.2,1), background .3s ease, border-color .3s ease, backdrop-filter .3s ease;
    background:var(--header-bg);
    backdrop-filter:blur(16px) saturate(180%);
    -webkit-backdrop-filter:blur(16px) saturate(180%);
    border-bottom:1px solid rgba(255,255,255,.07)
  }
  header.site-hdr.hdr-hidden{transform:translateY(-100%);}

  /* ── Header transparent (posé sur le hero) ───────────────────────────
     Activé quand le générateur ajoute la classe .hdr-transparent.
     En haut de page : fond transparent, pas de bordure ni de flou.
     Dès qu'on scrolle (.hdr-scrolled ajouté en JS) : fond plein lisible. */
  header.site-hdr.hdr-transparent{
    position:absolute;top:0;left:0;right:0;
    background:transparent;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    border-bottom-color:transparent;
  }
  /* Au scroll, le header transparent repasse en fixed pour rester visible
     et prend un fond plein lisible. */
  header.site-hdr.hdr-transparent.hdr-scrolled{
    position:fixed;
    background:var(--header-solid, #16181D);
    backdrop-filter:blur(16px) saturate(180%);
    -webkit-backdrop-filter:blur(16px) saturate(180%);
    border-bottom-color:rgba(255,255,255,.07);
    box-shadow:0 6px 24px rgba(0,0,0,.18);
  }
  /* Texte du menu lisible une fois scrollé : couleur contrastée calculée
     sur le fond scrollé (sombre si fond clair, clair si fond sombre). */
  header.site-hdr.hdr-transparent.hdr-scrolled .logo-name,
  header.site-hdr.hdr-transparent.hdr-scrolled .logo-sub,
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-nav > a,
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-nav .has-drop > a,
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-tel-num{
    color:var(--menu-scroll-text, var(--menu));
  }
  /* Bouton « Etre rappele » : au scroll (fond plein), son texte doit passer
     a la couleur lisible comme le reste du menu, sinon il reste blanc et
     devient invisible sur fond clair. Au survol, le fond passe a l'accent :
     on garde le texte blanc pour le contraste. */
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-rappel-btn{
    color:var(--menu-scroll-text, var(--menu));
  }
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-rappel-btn:hover{
    color:#fff;
  }
  /* Filet de sécurité : si jamais --header-bg vaut littéralement "transparent"
     sans que la classe soit posée (page dont le générateur n'injecte pas encore
     la variable), on garde un fond plein lisible plutôt qu'un header invisible. */
  header.site-hdr:not(.hdr-transparent){
    background:var(--header-bg, #16181D);
  }
  .hdr{
    height:max(80px, calc(var(--logo-h, 48px) + 24px));display:flex;align-items:center;justify-content:space-between;
    max-width:1320px;margin:0 auto;padding:0 40px;width:100%
  }
  /* Taille du logo dédiée au mobile (réglage wizard) : ne touche pas au
     rendu ordinateur. Le logo ET la hauteur du header suivent. */
  @media(max-width:760px){
    :root{--logo-h:var(--logo-h-mobile,48px)}
  }
  .hdr-logo{display:flex;align-items:center;gap:11px;flex-shrink:0;color:inherit}
  /* Aucun fond derriere le logo, jamais : un logo clair sur fond scrolle clair
     est recolorise via le masque ci-dessous (logo-swap), pas via une plaque. */
  /* ── Logo recolorise au scroll ──────────────────────────────────────
     Cas type : monogramme blanc sur hero transparent, header blanc au scroll.
     Le wrapper .logo-swap n'est genere QUE si une couleur de scroll est reglee.
     Une fois scrolle, l'image d'origine est masquee (visibility -> la place est
     conservee, aucun saut) et un calque de la couleur choisie est decoupe a la
     forme du logo (mask-image) : la transparence du PNG est respectee. */
  .logo-swap{position:relative;display:inline-flex;flex-shrink:0}
  header.site-hdr.hdr-scrolled .logo-swap > img{visibility:hidden}
  header.site-hdr.hdr-scrolled .logo-swap::after{
    content:'';position:absolute;inset:0;
    background:var(--logo-scroll-color,#16181D);
    -webkit-mask:var(--logo-mask) center/contain no-repeat;
    mask:var(--logo-mask) center/contain no-repeat;
  }
  /* Drawer mobile (fond blanc) : le logo clair y est recolorise en permanence,
     pas seulement au scroll. */
  .mob-drawer .logo-swap > img{visibility:hidden}
  .mob-drawer .logo-swap::after{
    content:'';position:absolute;inset:0;
    background:var(--logo-scroll-color,#16181D);
    -webkit-mask:var(--logo-mask) center/contain no-repeat;
    mask:var(--logo-mask) center/contain no-repeat;
  }
  /* Navigateur sans mask-image : on garde le logo d'origine plutot qu'un vide. */
  @supports not ((-webkit-mask-image:url(#a)) or (mask-image:url(#a))){
    header.site-hdr.hdr-scrolled .logo-swap > img,
    .mob-drawer .logo-swap > img{visibility:visible}
    header.site-hdr.hdr-scrolled .logo-swap::after,
    .mob-drawer .logo-swap::after{display:none}
  }
  .logo-mark{
    width:34px;height:34px;background:var(--acc);border-radius:8px;
    display:flex;align-items:center;justify-content:center;flex-shrink:0
  }
  .logo-mark svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:2.2}
  .logo-img{height:var(--logo-h,48px);max-height:var(--logo-h,48px);width:auto;max-width:280px;object-fit:contain;flex-shrink:0;display:block}
  .logo-name{font-family:var(--f-title);font-weight:800;font-size:14px;color:var(--menu);letter-spacing:-.02em}
  .logo-sub{font-size:9px;color:var(--menu);opacity:.6;text-transform:uppercase;letter-spacing:.1em;font-weight:600;display:block;margin-top:1px}

  .hdr-nav{display:flex;align-items:center;gap:0;flex:1;justify-content:center}
  .hdr-nav > a,.hdr-nav .has-drop > a{
    font-family:var(--f-title);font-size:13px;font-weight:600;color:var(--menu);opacity:.78;
    padding:0 15px;height:72px;display:flex;align-items:center;gap:5px;
    border-bottom:2px solid transparent;white-space:nowrap;transition:color .12s,opacity .12s
  }
  .hdr-nav > a:hover,.hdr-nav .has-drop > a:hover{color:var(--menu);opacity:1}
  .hdr-nav > a.on,.hdr-nav .has-drop > a.on{color:var(--menu);opacity:1;border-bottom-color:var(--acc)}
  .hdr-nav a .caret{font-size:8px;opacity:.5;transition:transform .15s}
  .hdr-nav .has-drop:hover .caret{transform:rotate(180deg)}

  /* Dropdown */
  .hdr-nav .has-drop{position:relative}
  /* Pont invisible pour combler le gap entre le lien et le menu */
  .hdr-nav .has-drop::after{content:'';position:absolute;top:100%;left:0;right:0;height:12px;display:none}
  .hdr-nav .has-drop:hover::after{display:block}
  .nav-drop{
    display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);
    background:rgba(22,21,20,.98);border:1px solid rgba(255,255,255,.1);
    border-radius:12px;padding:8px;min-width:210px;z-index:500;
    box-shadow:0 20px 60px rgba(0,0,0,.5);
  }
  .hdr-nav .has-drop:hover .nav-drop,
  .hdr-nav .has-drop:focus-within .nav-drop{display:block}
  .nav-drop a{
    display:flex;align-items:center;gap:10px;
    padding:10px 14px;font-size:13px;font-weight:600;
    font-family:var(--f-title);color:var(--w2);
    border-radius:8px;transition:all .1s;
    border:none!important;height:auto
  }
  .nav-drop a:hover{color:#fff;background:rgba(255,255,255,.07)}
  .nav-drop-sep{height:1px;background:rgba(255,255,255,.07);margin:6px 0}
  .nav-drop-footer{padding:8px 14px 4px}
  .nav-drop-footer a{font-size:12px;color:var(--acc);font-weight:700;border:none!important;padding:0!important;background:none!important}

  .hdr-right{display:flex;align-items:center;gap:18px;flex-shrink:0}
  .hdr-tel-block{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
  .hdr-tel-block .hdr-tel-num{text-decoration:none}
  .hdr-tel{display:flex;flex-direction:column;align-items:flex-end}
  .hdr-tel-num{font-family:var(--f-title);font-weight:800;font-size:15px;color:var(--menu);letter-spacing:-.01em}
  .hdr-tel-sub{font-size:9px;color:var(--acc);font-weight:700;text-transform:uppercase;letter-spacing:.07em}
  .hdr-cta{
    background:var(--acc);color:#fff;
    padding:10px 20px;border-radius:8px;
    font-family:var(--f-title);font-weight:700;font-size:13px;
    white-space:nowrap;display:flex;align-items:center;gap:7px;
    box-shadow:0 2px 12px color-mix(in srgb,var(--acc) 35%,transparent);
    transition:all .15s
  }
  .hdr-cta:hover{transform:translateY(-1px);box-shadow:0 4px 20px color-mix(in srgb,var(--acc) 45%,transparent)}

  .hdr-burger{display:none;background:none;border:none;cursor:pointer;width:36px;height:36px;flex-direction:column;align-items:center;justify-content:center;gap:5px;flex-shrink:0}
  .hdr-burger span{display:block;width:22px;height:2px;background:#16181D;border-radius:1px;transition:.2s}
  /* Header transparent posé sur le hero : barres blanches (lisibles sur photo).
     Sinon (header plein), barres sombres — jamais liées à --menu qui peut valoir blanc. */
  header.site-hdr.hdr-transparent:not(.hdr-scrolled) .hdr-burger span{background:#fff}
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-burger span{background:#16181D}

  /* Drawer mobile */
  /* Drawer mobile : FOND BLANC + ÉCRITURE NOIRE, en dur (jamais de variable
     qui pourrait retomber en blanc sur blanc selon le header du client). */
  .mob-drawer{display:none;position:fixed;inset:0;z-index:300;background:#fff;overflow-y:auto}
  .mob-drawer.open{display:block}
  .mob-drawer-head{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid rgba(0,0,0,.09)}
  .mob-drawer-close{background:none;border:none;color:#16181D;font-size:28px;cursor:pointer;line-height:1}
  .mob-drawer nav{display:flex;flex-direction:column;padding:12px 0}
  .mob-drawer nav a{font-family:var(--f-title);font-weight:700;font-size:16px;color:#16181D;padding:15px 24px;border-bottom:1px solid rgba(0,0,0,.07)}
  .mob-drawer nav a.sub{font-size:14px;color:#16181D;opacity:.62;padding-left:40px}
  /* Accordéon Services du drawer mobile — replié par défaut */
  .mob-drawer nav details.mob-acc{border-bottom:1px solid rgba(0,0,0,.07)}
  .mob-drawer nav details.mob-acc > summary{
    list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
    font-family:var(--f-title);font-weight:700;font-size:16px;color:#16181D;padding:15px 24px;
  }
  .mob-drawer nav details.mob-acc > summary::-webkit-details-marker{display:none}
  .mob-drawer nav details.mob-acc > summary::after{content:'▾';font-size:12px;opacity:.55;transition:transform .2s ease}
  .mob-drawer nav details.mob-acc[open] > summary::after{transform:rotate(180deg)}
  .mob-drawer nav details.mob-acc a.sub{display:block;color:#16181D;opacity:.72;padding:13px 24px 13px 40px;border-bottom:1px solid rgba(0,0,0,.05)}
  .mob-drawer-tel{display:flex;align-items:center;justify-content:center;gap:8px;margin:20px 20px 8px;background:var(--acc);color:var(--btn-text);padding:16px;border-radius:10px;font-family:var(--f-title);font-weight:800;font-size:16px}

  @media(max-width:1024px){.hdr-nav{display:none}.hdr{padding:0 24px}.hdr-burger{display:flex}.hdr-tel-block{display:none}.hdr-cta{display:none}}
  @media(max-width:600px){.hdr{padding:0 16px}.hdr-right{gap:10px}}
  @media(max-width:380px){.hdr-rappel-btn{padding-left:11px;padding-right:11px;font-size:13px}}

  /* ══════════════ HERO ══════════════ */
  .hero{
    position:relative;min-height:720px;
    display:flex;flex-direction:column;
    overflow:hidden;
    background:var(--ink)
  }
  /* Bande sombre en haut : lisibilité du menu blanc avec header transparent.
     Suit --hero-voile comme le reste du voile du hero. */
  .hero::after{content:'';position:absolute;top:0;left:0;right:0;height:160px;z-index:2;pointer-events:none;
    background:linear-gradient(to bottom,
      rgb(8 7 6 / calc(var(--hero-voile-forme,1) * 55%)) 0%,
      rgb(8 7 6 / calc(var(--hero-voile-forme,1) * 26%)) 55%,
      transparent 100%)}
  .hero-bg{
    position:absolute;inset:0;
    background:repeating-linear-gradient(45deg,#1e1c1a 0,#1e1c1a 1px,#141210 1px,#141210 20px);
    z-index:0
  }
  .hero-photo{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    z-index:1;
  }
  /* Voile par-dessus la photo : assez pour garder le texte blanc lisible à
     gauche, mais bien plus léger qu'avant pour laisser respirer la photo. */
  .hero-bg::before{
    content:'';position:absolute;inset:0;z-index:2;
    background:linear-gradient(105deg,
        rgb(12 11 10 / calc(var(--hero-voile-forme,1) * 60%)) 0%,
        rgb(12 11 10 / calc(var(--hero-voile-forme,1) * 40%)) 42%,
        rgb(12 11 10 / calc(var(--hero-voile-forme,1) * 20%)) 72%,
        rgb(12 11 10 / calc(var(--hero-voile-forme,1) * 5%)) 100%),
      /* Voile uniforme : seul capable d'assombrir le côté clair du dégradé */
      linear-gradient(rgb(12 11 10 / calc(var(--hero-voile-plat,0) * 100%)),
        rgb(12 11 10 / calc(var(--hero-voile-plat,0) * 100%)))
  }
  /* Accent diagonal subtil */
  .hero-bg::after{
    content:'';position:absolute;
    top:-20%;right:-10%;width:55%;height:140%;
    background:radial-gradient(ellipse at center,color-mix(in srgb,var(--acc) 12%,transparent) 0%,transparent 65%);
    z-index:1
  }
  /* Une seule colonne : la carte « Pourquoi nous choisir » a cede la place
     au bandeau d'honneurs sous le contenu. flex:1 centre le contenu entre
     le header et le bandeau. */
  .hero-inner{
    position:relative;z-index:3;
    max-width:1320px;margin:0 auto;padding:140px 40px 0;
    width:100%;flex:1;
    display:grid;grid-template-columns:1fr;align-items:center
  }
  /* Hero centré (retour Benjamin 2026-08) : le titre court (domaines) laisse
     la place — tout le bloc vit dans l'axe de la photo. */
  .hero-content{max-width:880px;margin:0 auto;text-align:center}
  .hero-kicker{
    display:inline-flex;align-items:center;gap:8px;
    font-family:var(--f-title);font-size:11px;font-weight:700;
    text-transform:uppercase;letter-spacing:.18em;color:var(--acc);
    margin-bottom:22px
  }
  /* Titre du hero : 72px max (le 92px écrasait tout avec les intitulés à
     deux métiers — retour Benjamin 2026-08), lignes équilibrées. */
  .hero-h1{
    font-family:var(--f-display);font-weight:600;font-size:clamp(38px,5.2vw,72px);
    line-height:1.05;letter-spacing:-.025em;color:#fff;
    margin-bottom:22px;text-wrap:balance
  }
  .hero-h1 em{color:var(--acc);font-style:italic;display:block}
  .hero-sub{font-size:17px;color:rgba(255,255,255,.72);line-height:1.68;max-width:620px;margin:0 auto 32px}
  .hero-sep{color:rgba(255,255,255,.2);font-size:18px}
  .hero-ctas{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
  .hero-micro{margin-top:16px;font-size:12.5px;color:rgba(255,255,255,.6);font-weight:600;letter-spacing:.02em}
  /* ── Carte locale (zone d'intervention) ── */
  .zone-svg{width:100%;height:auto;max-width:460px;display:block;margin:0 auto}
  .zone-chip{fill:var(--white);fill-opacity:.86;stroke:var(--bd);stroke-width:1}
  .zone-chip-base{fill-opacity:.96}
  .zone-lbl{font-family:var(--f-title);font-size:11px;font-weight:700;fill:var(--t1)}
  .zone-lbl-base{font-size:13px;fill:var(--t1);font-weight:800}
  @media(max-width:480px){
    .hero-ctas{flex-wrap:nowrap;gap:8px}
    .hero-ctas .btn{flex:1;text-align:center;justify-content:center;padding-left:10px;padding-right:10px;font-size:.82rem;white-space:nowrap;min-width:0}
  }

  /* ══ Bandeau d'honneurs — les preuves du CRM sous le contenu du hero.
     Filet + items séparés par des traits verticaux ; le logo Compagnons
     (compagnon_logo_url) s'affiche sur pastille blanche. ══ */
  .hero-honneurs{position:relative;z-index:3;max-width:1320px;width:100%;margin:0 auto;padding:26px 40px 42px}
  /* Filet centré, trait de chaque côté — assise du hero centré. */
  .hh-filet{display:flex;align-items:center;gap:14px;margin-bottom:22px}
  .hh-filet span{font-family:var(--f-title);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.24em;color:rgba(255,255,255,.55);white-space:nowrap}
  .hh-filet::before{content:'';flex:1;height:1px;background:linear-gradient(270deg,rgba(255,255,255,.22),transparent)}
  .hh-filet::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.22),transparent)}
  .hh-rail{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;row-gap:20px}
  .hh-item{display:flex;align-items:center;gap:12px;padding:0 20px}
  .hh-item+.hh-item{border-left:1px solid rgba(255,255,255,.16)}
  .hh-ico{flex:none;width:42px;height:42px;display:flex;align-items:center;justify-content:center}
  .hh-ico svg{width:30px;height:30px;fill:none;stroke:rgba(255,255,255,.9);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
  /* Le G de Google garde ses couleurs : pas de gravure blanche héritée */
  .hh-ico .hh-g{width:26px;height:26px}
  .hh-ico .hh-g path{stroke:none}
  .hh-ico-blanc{background:#fff;border-radius:10px;padding:4px;width:46px;height:46px;box-shadow:0 6px 18px rgba(0,0,0,.35)}
  .hh-ico-blanc img{width:100%;height:100%;object-fit:contain}
  .hh-txt b{display:block;font-family:var(--f-title);font-weight:700;font-size:14.5px;color:#fff;letter-spacing:-.01em;line-height:1.2}
  .hh-txt b .hh-etoiles{font-style:normal;color:#FBBC05;letter-spacing:1.5px;font-size:12px}
  .hh-txt span{display:block;font-family:var(--f-title);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.55);margin-top:3px}

  /* Écrans moyens : items resserrés pour que 6 preuves tiennent sur une ligne */
  @media(max-width:1460px){
    .hh-item{padding:0 14px}
    .hh-ico{width:38px;height:38px}
    .hh-ico svg{width:27px;height:27px}
    .hh-ico-blanc{width:42px;height:42px}
    .hh-txt b{font-size:13.5px}
  }
  @media(max-width:1024px){
    .hero-inner{padding:140px 24px 0}
    .hero-h1{font-size:44px}
    .hero-honneurs{padding:22px 24px 36px}
  }
  @media(max-width:600px){
    .hero{min-height:auto}
    .hero-h1{font-size:33px;margin-bottom:16px}
    .hero-kicker{font-size:10px;letter-spacing:.14em;margin-bottom:16px}
    .hero-sub{font-size:15px;line-height:1.62;margin-bottom:24px}
    .hero-inner{padding:112px 16px 0}
    .hero-honneurs{padding:18px 16px 26px}
    .hh-filet{margin-bottom:16px}
    .hh-rail{row-gap:14px}
    .hh-item{padding:0;border-left:none !important;width:50%}
    .hh-ico{width:34px;height:34px}
    .hh-ico svg{width:24px;height:24px}
    .hh-txt b{font-size:12.5px}
    .hh-txt span{font-size:10px}
  }
  @media(max-width:340px){
    .hh-item{width:100%}
  }

  /* ══ Hero pages internes ══
     Realisations / Contact / Mentions / Confidentialite utilisaient ici un hero
     « srv-hero » de 720 px de haut, deux fois plus grand que celui des pages
     service / ville. Uniformisation 2026-08 : toutes les pages internes rendent
     desormais le hero « vs2 » de _locale_styles.html. Regles retirees. */

  /* ══════════════ CHIFFRES CLÉS ══════════════ */
  .kpis{background:var(--ink2)}
  .kpis-inner{
    display:grid;grid-template-columns:repeat(4,1fr);
    border-top:1px solid rgba(255,255,255,.08);
    max-width:1320px;margin:0 auto
  }
  .kpi{
    padding:36px 32px;border-right:1px solid rgba(255,255,255,.08);
    display:flex;flex-direction:column;align-items:flex-start;
    transition:background .15s
  }
  .kpi:last-child{border-right:none}
  .kpi:hover{background:rgba(255,255,255,.03)}
  .kpi-n{font-family:var(--f-title);font-weight:900;font-size:44px;color:#fff;line-height:1;letter-spacing:-.04em}
  .kpi-n .a{color:var(--acc);font-size:28px}
  .kpi-l{font-size:13px;color:var(--w3);margin-top:8px;font-weight:600;letter-spacing:.01em}
  .kpi-bar{width:32px;height:2px;background:var(--acc);border-radius:1px;margin-top:16px}
  @media(max-width:900px){.kpis-inner{grid-template-columns:1fr 1fr}.kpi{border-bottom:1px solid rgba(255,255,255,.08)}}
  @media(max-width:500px){.kpis-inner{grid-template-columns:1fr 1fr}.kpi{padding:24px 20px}.kpi-n{font-size:36px}}

  /* ══════════════ SERVICES ══════════════ */

  /* ══════════════ GRILLE SERVICES ══════════════
     Layout : carte prioritaire (gauche, pleine hauteur)
     + toutes les autres cartes en auto-fill à droite.
     S'adapte à n'importe quel nombre de services.
  ══════════════════════════════════════════════ */
  .srv-grid{
    display:grid;
    /* Colonne gauche fixe (carte prioritaire) + droite auto-fill */
    grid-template-columns:300px 1fr;
    gap:12px;
    align-items:start;
  }
  /* Grille des cartes standard à droite */
  .srv-grid-rest{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
    gap:12px;
  }
  .srv-01{
    background:var(--ink2);border-radius:var(--radius-lg);
    padding:32px;display:flex;flex-direction:column;position:relative;overflow:hidden;
    border:1px solid rgba(255,255,255,.06);
    min-height:320px;
  }
  .srv-01::before{
    content:'';position:absolute;bottom:0;right:0;width:180px;height:180px;
    background:radial-gradient(circle at bottom right,color-mix(in srgb,var(--acc) 20%,transparent),transparent 70%);
    z-index:0
  }
  .srv-icon{width:44px;height:44px;border-radius:10px;background:var(--acc-bg);border:1px solid color-mix(in srgb,var(--acc) 25%,transparent);display:flex;align-items:center;justify-content:center;margin-bottom:20px;position:relative;z-index:1;flex-shrink:0}
  .srv-icon svg{width:22px;height:22px;stroke:var(--acc);fill:none;stroke-width:2}
  .srv-icon{transition:background .15s,border-color .15s}
  .srv-card:hover .srv-icon{background:color-mix(in srgb,var(--acc) 16%,#fff);border-color:color-mix(in srgb,var(--acc) 45%,transparent)}
  .srv-01 .srv-icon{width:52px;height:52px;margin-bottom:24px}
  .srv-01 .srv-icon svg{width:26px;height:26px;stroke:#fff}

  /* ── Grille de services : une carte par prestation ──
     Cartes claires sur le fond de page, la couleur d'accent tenue partout
     (icônes, filet de survol, pastille de catégorie) plutôt que réservée au
     survol : sans elle la grille tombe dans le gris. Tout le contenu est
     rendu côté serveur, le JS ne fait que masquer/afficher. */
  .svc-head{text-align:center;max-width:680px;margin:0 auto 40px}
  .svc-head-lead{font-size:15.5px;line-height:1.72;color:var(--t2);margin-top:18px}

  .svc-filtres{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-bottom:40px}
  .svc-filtre{
    appearance:none;font-family:var(--f-title);font-size:13px;font-weight:600;
    padding:10px 20px;border-radius:100px;cursor:pointer;line-height:1.2;
    background:#fff;color:var(--t1);border:1px solid var(--bd);
    transition:background .2s,color .2s,border-color .2s
  }
  .svc-filtre:hover{border-color:var(--acc);color:var(--acc)}
  .svc-filtre.on{background:var(--acc);color:var(--btn-text);border-color:var(--acc)}
  .svc-filtre:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

  .svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
  .svc-card{
    display:flex;flex-direction:column;position:relative;overflow:hidden;
    background:#fff;border:1px solid var(--bd);border-radius:18px;
    padding:30px 28px 26px;min-height:228px;color:inherit
  }
  /* Filet d'accent qui se déroule sur le bord haut au survol : la carte
     réagit sans avoir à changer de couleur de fond. */
  .svc-card::before{
    content:'';position:absolute;left:0;right:0;top:0;height:3px;z-index:2;
    background:var(--acc);transform:scaleX(0);transform-origin:left;
    transition:transform .32s cubic-bezier(.2,.8,.2,1)
  }
  .svc-card:hover::before{transform:scaleX(1)}
  /* Après l'entrée au défilement (.rv puis .in), la carte reprend une
     transition courte : sinon elle hérite des .7s de l'animation d'arrivée. */
  .svc-card, .svc-card.in{transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease}
  .svc-card:hover{transform:translateY(-5px);box-shadow:0 22px 44px -18px color-mix(in srgb,var(--acc) 26%,rgba(20,20,20,.2));border-color:color-mix(in srgb,var(--acc) 34%,var(--bd))}
  .svc-card:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
  .svc-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px}
  .svc-card-ico{
    width:52px;height:52px;border-radius:14px;flex-shrink:0;
    background:color-mix(in srgb,var(--acc) 11%,#fff);color:var(--acc);
    display:flex;align-items:center;justify-content:center;
    transition:background .28s ease,color .28s ease
  }
  .svc-card-ico svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
  .svc-card:hover .svc-card-ico{background:var(--acc);color:var(--btn-text)}
  .svc-card-num{font-family:var(--f-display);font-style:italic;font-size:15px;color:color-mix(in srgb,var(--acc) 40%,var(--t3));transition:color .28s ease}
  .svc-card:hover .svc-card-num{color:var(--acc)}
  .svc-card-title{font-family:var(--f-title);font-weight:700;font-size:16.5px;line-height:1.35;color:var(--t1);margin-bottom:9px;letter-spacing:-.01em}
  .svc-card-desc{font-size:13.5px;line-height:1.65;color:var(--t2);margin-bottom:auto}
  .svc-card-bot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px}
  .svc-card-badge{font-family:var(--f-title);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--t3)}
  .svc-card-badge::before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--acc);margin-right:8px;vertical-align:1px}
  .svc-card-arr{
    width:33px;height:33px;border-radius:50%;flex-shrink:0;
    border:1px solid var(--bd);color:var(--t1);
    display:flex;align-items:center;justify-content:center;
    transition:background .28s ease,border-color .28s ease,color .28s ease,transform .28s ease
  }
  .svc-card-arr svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
  .svc-card:hover .svc-card-arr{background:var(--acc);border-color:var(--acc);color:var(--btn-text);transform:rotate(-45deg)}
  .svc-cache{display:none}

  /* ── Carte vedette : la prestation phare, sur deux colonnes ──
     Fond teinté accent (surtout pas un bloc noir : il écrasait toute la
     grille) et photo de chantier fondue dans ce fond sur la droite. */
  .svc-card-star{
    --star-bg:color-mix(in srgb,var(--acc) 10%,#fff);
    grid-column:span 2;padding:36px 34px 30px;
    background:var(--star-bg);
    border-color:color-mix(in srgb,var(--acc) 26%,transparent)
  }
  .svc-card-star > *{position:relative;z-index:1}
  .svc-card-star .svc-card-title,
  .svc-card-star .svc-card-desc,
  .svc-card-star .svc-card-bot{max-width:min(46ch,58%)}
  .svc-card-star .svc-card-title{font-family:var(--f-display);font-style:italic;font-weight:600;font-size:clamp(22px,2.3vw,31px);line-height:1.12;margin-bottom:12px}
  .svc-card-star .svc-card-desc{font-size:14.5px;color:var(--t2)}
  .svc-card-star .svc-card-ico{background:var(--acc);color:var(--btn-text);width:56px;height:56px}
  .svc-card-star .svc-card-ico svg{width:27px;height:27px}
  .svc-card-star:hover{border-color:color-mix(in srgb,var(--acc) 45%,transparent)}
  /* Étiquette à la place du numéro : elle dit pourquoi cette carte est grande */
  .svc-card-phare{
    font-family:var(--f-title);font-size:10px;font-weight:800;letter-spacing:.16em;
    text-transform:uppercase;color:var(--acc);white-space:nowrap;
    background:#fff;border:1px solid color-mix(in srgb,var(--acc) 24%,transparent);
    border-radius:100px;padding:7px 13px;line-height:1
  }
  /* Photo : elle occupe la droite de la carte et se fond dans le fond teinté */
  .svc-card-media{position:absolute;top:0;right:0;bottom:0;width:52%;z-index:0;overflow:hidden}
  .svc-card-media img{width:100%;height:100%;object-fit:cover;display:block}
  .svc-card-media::after{
    content:'';position:absolute;inset:0;
    background:linear-gradient(100deg,var(--star-bg) 8%,color-mix(in srgb,var(--star-bg) 55%,transparent) 46%,transparent 78%)
  }

  /* Pied de section : le chantier qui ne rentre dans aucune case */
  .svc-pied{
    margin-top:44px;background:#fff;border:1px solid var(--bd);border-radius:18px;
    padding:30px 36px;display:flex;align-items:center;justify-content:space-between;
    gap:24px;flex-wrap:wrap;position:relative;overflow:hidden
  }
  .svc-pied::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--acc)}
  .svc-pied-txt strong{font-family:var(--f-display);font-style:italic;font-weight:600;font-size:21px;color:var(--t1);display:block;margin-bottom:5px;line-height:1.25}
  .svc-pied-txt span{font-size:14px;color:var(--t2)}
  .svc-pied-cta{flex-shrink:0}

  @media(max-width:1024px){
    .svc-grid{grid-template-columns:repeat(2,1fr)}
    .svc-card-star{grid-column:span 2}
    .svc-card-media{width:44%}
    .svc-card-star .svc-card-title,
    .svc-card-star .svc-card-desc,
    .svc-card-star .svc-card-bot{max-width:56%}
  }
  @media(max-width:640px){
    .svc-head{margin-bottom:28px}
    .svc-filtres{gap:7px;margin-bottom:26px}
    .svc-filtre{font-size:12px;padding:9px 15px}
    .svc-grid{grid-template-columns:1fr;gap:12px}
    .svc-card{min-height:0;padding:24px 22px 22px}
    /* Téléphone : la photo n'a plus de place à droite, on garde le fond teinté */
    .svc-card-star{grid-column:span 1;padding:26px 22px 22px}
    .svc-card-media{display:none}
    .svc-card-star .svc-card-title,
    .svc-card-star .svc-card-desc,
    .svc-card-star .svc-card-bot{max-width:none}
    .svc-pied{margin-top:30px;padding:26px 22px;gap:18px}
    .svc-pied-cta{width:100%;justify-content:center}
  }
  @media(prefers-reduced-motion:reduce){
    .svc-card,.svc-card.in,.svc-card::before,.svc-card-ico,.svc-card-arr,.svc-card-num,.svc-filtre{transition:none}
    .svc-card:hover{transform:none}
    .svc-card:hover .svc-card-arr{transform:none}
  }

  /* ══════════════ PROCESS ══════════════ */
  .process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:56px;position:relative}
  .process-grid::before{
    content:'';position:absolute;top:28px;left:calc(12.5%);right:calc(12.5%);
    height:2px;background:linear-gradient(to right,var(--bd),var(--acc),var(--bd));
    z-index:0
  }
  .process-step{display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;z-index:1;padding:0 16px}
  .process-num{
    width:56px;height:56px;border-radius:50%;border:2px solid var(--bd);background:var(--white);
    display:flex;align-items:center;justify-content:center;margin-bottom:20px;
    font-family:var(--f-title);font-weight:900;font-size:18px;color:var(--t3);
    position:relative;box-shadow:0 0 0 6px var(--white)
  }
  .process-step:hover .process-num{background:var(--acc);border-color:var(--acc);color:#fff}
  .process-title{font-family:var(--f-title);font-weight:800;font-size:15px;color:var(--t1);margin-bottom:8px}
  .process-desc{font-size:13px;color:var(--t2);line-height:1.6}
  @media(max-width:760px){
    .process-grid{grid-template-columns:1fr 1fr;gap:32px}
    .process-grid::before{display:none}
  }

  /* ══════════════ ARGUMENTS (Pourquoi nous) ══════════════
     Tête centrée + cartes en rangées équilibrées + CTA centrés — même
     schéma que le hero (retour Benjamin 2026-08 : plus jamais de colonne
     titre calée à gauche avec boutons empilés). */
  .why-head{text-align:center;max-width:660px;margin:0 auto 40px}
  .why-items{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
  .why-item{
    display:flex;gap:16px;padding:22px;
    flex:1 1 340px;max-width:430px;min-width:0;
    background:#fff;border:1px solid var(--bd);border-radius:16px;
    box-shadow:0 10px 30px rgba(20,18,15,.05)
  }
  .why-item:hover{border-color:color-mix(in srgb,var(--acc) 40%,var(--bd));box-shadow:0 18px 40px rgba(20,18,15,.09)}
  /* Jamais de carte orpheline : à 4 cartes, 2+2 au lieu de 3+1 (les autres
     comptes — 3, 5, 6 — se répartissent déjà sans orpheline). Desktop
     uniquement : la spécificité du :has écraserait la colonne unique mobile. */
  @media(min-width:901px){
    .why-items:has(.why-item:nth-child(4):last-child) .why-item{flex-basis:40%;max-width:520px}
  }
  .why-item-icon{
    width:44px;height:44px;border-radius:12px;flex-shrink:0;
    background:color-mix(in srgb,var(--acc) 8%,#fff);border:1px solid color-mix(in srgb,var(--acc) 22%,var(--bd));
    display:flex;align-items:center;justify-content:center
  }
  .why-item-icon svg{width:20px;height:20px;stroke:var(--acc);fill:none;stroke-width:1.8}
  .why-title{font-family:var(--f-title);font-weight:800;font-size:15.5px;color:var(--t1);margin-bottom:6px;line-height:1.3}
  .why-desc{font-size:13.5px;color:var(--t2);line-height:1.6}
  .why-cta{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:36px}
  /* Petits mobiles : les deux boutons restent côte à côte (même traitement
     que les CTA du hero) — plus compacts au lieu d'empilés. */
  @media(max-width:480px){
    .why-cta{flex-wrap:nowrap;gap:8px}
    .why-cta .btn{flex:1;justify-content:center;padding:12px 10px;font-size:.8rem;white-space:nowrap;min-width:0}
  }
  .why-micro{text-align:center;margin-top:14px;font-size:12.5px;color:var(--t3);font-weight:600;letter-spacing:.02em}
  @media(max-width:900px){
    .why-head{margin-bottom:28px}
    .why-item{flex-basis:100%;max-width:none}
    .why-cta{margin-top:26px}
  }

  /* ══════════════ RÉALISATIONS ══════════════ */
  .real-intro{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:40px;gap:24px}
  /* Vidéos de réalisation — section dédiée (accueil + page réalisations) */
  .real-videos{margin-top:56px}
  .real-videos-head{text-align:center;margin-bottom:28px}
  .real-videos-head .eyebrow{margin-bottom:10px}
  .real-videos-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;justify-items:center;width:100%}
  .real-video{width:100%;max-width:520px;aspect-ratio:16/9;height:auto;display:block;object-fit:cover;border-radius:14px;background:#000;box-shadow:var(--shadow);border:1px solid var(--bd)}
  @media(max-width:760px){
    .real-videos{margin-top:40px}
    .real-videos-grid{grid-template-columns:1fr;gap:14px}
    .real-video{max-width:100%;max-height:72vh}
  }
  .real-grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:300px 220px;gap:10px}
  .rg{border-radius:var(--radius-lg);overflow:hidden;position:relative}
  .rg.tall{grid-row:1/3}
  /* Fonds variés par service — pas tous identiques */
  .rg-c1{background:linear-gradient(135deg,#2C2420 0%,#3D3028 100%)}
  .rg-c2{background:linear-gradient(135deg,#1E2830 0%,#253540 100%)}
  .rg-c3{background:linear-gradient(135deg,#1E2A20 0%,#253828 100%)}
  .rg-c4{background:linear-gradient(135deg,#2A2020 0%,#382828 100%)}
  .rg-c5{background:linear-gradient(135deg,#28241E 0%,#363020 100%)}
  /* Motif texture */
  .rg::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.03) 0,rgba(255,255,255,.03) 1px,transparent 1px,transparent 18px)}
  .rg-ov{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.88) 0%,rgba(0,0,0,.2) 55%,transparent 100%)}
  .rg-info{position:absolute;bottom:0;left:0;right:0;padding:20px}
  .rg-tag{display:inline-block;background:var(--acc);color:#fff;font-size:10px;font-weight:800;padding:4px 10px;border-radius:20px;font-family:var(--f-title);margin-bottom:8px;text-transform:uppercase;letter-spacing:.06em}
  .rg-title{font-family:var(--f-title);font-weight:800;font-size:15px;color:#fff;line-height:1.3}
  .rg-meta{font-size:12px;color:rgba(255,255,255,.6);margin-top:4px;font-weight:600;display:flex;align-items:center;gap:5px}
  .rg-meta::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc);flex-shrink:0}

  /* Slider avant/après */
  .ba-slider{position:relative;border-radius:var(--radius-lg);overflow:hidden;height:240px;margin-top:10px;user-select:none;cursor:col-resize}
  .ba-after{position:absolute;inset:0;background:linear-gradient(135deg,#3a2818 0%,#4a3020 100%)}
  .ba-after::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 1px,transparent 1px,transparent 18px)}
  .ba-before{position:absolute;inset:0;background:linear-gradient(135deg,#c8c4bc 0%,#d8d4cc 100%);clip-path:inset(0 50% 0 0)}
  .ba-before::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(0,0,0,.06) 0,rgba(0,0,0,.06) 1px,transparent 1px,transparent 16px)}
  .ba-divider{position:absolute;top:0;bottom:0;left:50%;width:3px;background:#fff;z-index:10;transform:translateX(-50%);box-shadow:0 0 12px rgba(0,0,0,.3)}
  .ba-handle{
    position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    width:48px;height:48px;border-radius:50%;background:#fff;z-index:11;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 4px 20px rgba(0,0,0,.4);cursor:col-resize
  }
  .ba-handle svg{width:20px;height:20px;fill:var(--t1)}
  .ba-lbl{position:absolute;bottom:14px;font-size:11px;font-weight:800;padding:4px 12px;border-radius:20px;font-family:var(--f-title);z-index:5;pointer-events:none;letter-spacing:.04em;text-transform:uppercase}
  .ba-lbl.left{left:14px;background:rgba(0,0,0,.7);color:#fff;backdrop-filter:blur(4px)}
  .ba-lbl.right{right:14px;background:var(--acc);color:#fff}

  @media(max-width:900px){
    .real-intro{flex-direction:column;gap:16px}
    .real-grid{grid-template-columns:1fr 1fr;grid-template-rows:200px 160px 160px}
    .rg.tall{grid-row:auto;grid-column:1/3;height:220px}
  }
  @media(max-width:560px){
    .real-grid{grid-template-columns:1fr;grid-template-rows:repeat(5,200px)}
    .rg.tall{grid-column:auto}
  }

  /* ══════════════ AVIS ══════════════ */
  .avis-top{display:grid;grid-template-columns:220px 1fr;gap:56px;align-items:center;margin-bottom:48px}
  .avis-score{
    text-align:center;background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);padding:32px 24px
  }
  .avis-big{font-family:var(--f-title);font-weight:900;font-size:60px;color:#fff;line-height:1;letter-spacing:-.04em}
  .avis-big em{color:var(--acc);font-style:normal;font-size:28px;letter-spacing:0}
  .avis-stars-lg{font-size:22px;color:#F5A623;letter-spacing:4px;margin:10px 0 6px}
  .avis-base{font-size:12px;color:var(--w3);font-weight:600;font-family:var(--f-title)}
  .avis-glogobox{display:flex;align-items:center;gap:7px;margin-top:16px;justify-content:center}
  .avis-glogo{font-size:18px;font-weight:900;background:linear-gradient(135deg,#4285F4,#EA4335);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
  .avis-google-txt{font-size:12px;color:var(--w3);font-weight:600}
  .avis-voir-link{display:block;margin-top:14px;font-size:12px;font-weight:700;font-family:var(--f-title);color:var(--acc)}
  .avis-resume{font-size:16px;color:var(--w1);line-height:1.72;margin-bottom:20px}
  /* ── Carrousel d'avis défilant (premium) ── */
  .avis-marquee{margin-top:34px;overflow:hidden;position:relative;width:100%}
  .avis-marquee::before,.avis-marquee::after{content:"";position:absolute;top:0;bottom:0;width:90px;z-index:2;pointer-events:none}
  .avis-marquee::before{left:0;background:linear-gradient(to right,var(--ink2,#171A1F),transparent)}
  .avis-marquee::after{right:0;background:linear-gradient(to left,var(--ink2,#171A1F),transparent)}
  .avis-track{display:flex;gap:18px;padding:8px 24px 12px}
  .avis-marquee:not(.is-live){overflow-x:auto;scrollbar-width:none}
  .avis-marquee:not(.is-live)::-webkit-scrollbar{display:none}
  .avis-marquee.is-live .avis-track{width:max-content;animation:avis-scroll 50s linear infinite}
  .avis-marquee.is-live:hover .avis-track{animation-play-state:paused}
  @keyframes avis-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
  .avis-mcard{width:330px;flex-shrink:0;background:var(--ink3);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:22px 22px 18px;display:flex;flex-direction:column}
  .avis-mcard-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
  .avis-mstars{color:#f5a623;font-size:15px;letter-spacing:2px}
  .avis-mg{width:22px;height:22px;border-radius:50%;background:#fff;color:#4285F4;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;font-family:Arial,Helvetica,sans-serif;flex-shrink:0}
  .avis-mtext{font-size:13.5px;line-height:1.65;color:rgba(255,255,255,.82);margin:0 0 16px}
  .avis-mfoot{display:flex;align-items:center;gap:10px;border-top:1px solid rgba(255,255,255,.1);padding-top:14px;margin-top:auto}
  .avis-mav{width:36px;height:36px;border-radius:50%;background:var(--acc,#e46a2e);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .avis-mname{font-size:13px;font-weight:700;color:#fff}
  .avis-mdate{font-size:11px;color:rgba(255,255,255,.5)}
  @media(max-width:768px){.avis-mcard{width:280px}.avis-track{animation-duration:62s}}

  /* ══════════════ SECTIONS CLAIRES UNIFORMES ══════════════
     Les anciennes sections sombres (entreprise, avis, devis) passent en clair
     pour un arrière-plan uniforme. Les accents (couleur principale/secondaire)
     ponctuent la mise en page : bordures, étoiles, boutons, halos. */
  .sec-dark .sh-w, .sec-dark2 .sh-w{color:var(--t1)}
  .sec-dark .lead-w, .sec-dark2 .lead-w{color:var(--t2)}
  .sec-dark .btn-wh, .sec-dark2 .btn-wh{background:var(--acc);color:var(--btn-text,#fff);border-color:var(--acc)}
  .sec-dark .btn-wh:hover, .sec-dark2 .btn-wh:hover{background:var(--acc2,var(--acc));box-shadow:0 8px 24px color-mix(in srgb,var(--acc) 30%,transparent)}
  /* Entreprise locale — les cartes portent leur propre fond (cf. .why-item) */
  .sec-dark .why-item:hover .why-item-icon{background:color-mix(in srgb,var(--acc) 16%,#fff)}
  /* Avis : carte de note + carrousel en clair, accent en touches */
  .sec-dark2 .avis-resume{color:var(--t2)}
  .sec-dark2 .avis-score{background:color-mix(in srgb,var(--acc) 5%,#fff);border-color:color-mix(in srgb,var(--acc) 18%,var(--bd));box-shadow:0 18px 44px rgba(20,18,15,.06)}
  .sec-dark2 .avis-big{color:var(--t1)}
  .sec-dark2 .avis-base, .sec-dark2 .avis-google-txt{color:var(--t3)}
  .sec-dark2 .avis-marquee::before{background:linear-gradient(to right,var(--fond-clair),transparent)}
  .sec-dark2 .avis-marquee::after{background:linear-gradient(to left,var(--fond-clair),transparent)}
  .sec-dark2 .avis-mcard{background:#fff;border-color:var(--bd);border-top:3px solid var(--acc);box-shadow:0 10px 30px rgba(20,18,15,.07)}
  .sec-dark2 .avis-mtext{color:var(--t2)}
  .sec-dark2 .avis-mname{color:var(--t1)}
  .sec-dark2 .avis-mdate{color:var(--t3)}
  .sec-dark2 .avis-mfoot{border-top-color:var(--bd)}
  .sec-dark2 .avis-mg{background:#F1F3F4}
  /* Section invite « déposez un avis » (pas encore d'avis mais fiche Google) */
  .avis-invite{max-width:680px;margin:0 auto;text-align:center;background:color-mix(in srgb,var(--acc) 5%,#fff);border:1px solid color-mix(in srgb,var(--acc) 18%,var(--bd));border-radius:20px;padding:44px 34px;box-shadow:0 18px 44px rgba(20,18,15,.06)}
  .avis-invite-ico{width:60px;height:60px;margin:0 auto 18px;border-radius:50%;background:color-mix(in srgb,var(--acc) 12%,#fff);display:flex;align-items:center;justify-content:center}
  .avis-invite-ico svg{width:32px;height:32px;fill:var(--acc)}
  .avis-invite .eyebrow-w{color:var(--acc);display:inline-block;margin-bottom:10px}
  .avis-invite .sh-w{color:var(--t1)}
  .avis-invite-txt{font-size:16px;color:var(--t2);line-height:1.72;margin-bottom:26px}
  .avis-invite-btn{display:inline-flex;align-items:center;gap:10px}
  .avis-invite-g{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#fff;color:#4285F4;font-weight:900;font-size:14px;line-height:1}
  .avis-invite-note{font-size:12.5px;color:var(--t3);margin-top:14px}
  /* Mobile : la section avis et celle qui la suit (FAQ) cumulent 128px de vide — on resserre */
  /* NB : jamais « { » suivi de « # » collés — Nunjucks y voit l'ouverture d'un commentaire */
  @media(max-width:760px){ #avis{padding-bottom:36px} #avis + .sec{padding-top:36px} }
  /* Devis : colonne gauche en clair (le formulaire reste clair) */
  .sec-dark .home-contact-point{background:#fff;border-color:var(--bd);box-shadow:0 10px 28px rgba(20,18,15,.05)}
  .sec-dark .home-contact-point strong{color:var(--t1)}
  .sec-dark .home-contact-point small{color:var(--t2)}
  .sec-dark .fli{background:#fff;border-color:var(--bd);box-shadow:0 10px 28px rgba(20,18,15,.05)}
  .sec-dark .fli:hover{box-shadow:0 14px 32px rgba(20,18,15,.08)}
  .sec-dark .fli-title{color:var(--t1)}
  .sec-dark .fli-val, .sec-dark .fli-val a{color:var(--t2)}
  @media(prefers-reduced-motion:reduce){.avis-track{animation:none;overflow-x:auto;width:100%}}
  .avis-cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
  .avis-card{
    background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
    border-radius:var(--radius-lg);padding:24px;
    transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out),border-color .18s
  }
  .avis-card:hover{
    transform:translateY(-3px);
    border-color:color-mix(in srgb,var(--acc) 45%,rgba(255,255,255,.1));
    box-shadow:0 12px 32px rgba(0,0,0,.28)
  }
  .avis-stars{font-size:15px;color:#F5A623;letter-spacing:2px;margin-bottom:12px}
  .avis-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
  .avis-card-top .avis-stars{margin-bottom:0}
  .avis-verif{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:#34d399;background:rgba(52,211,153,.14);border-radius:20px;padding:3px 10px}
  .avis-verif svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2.8}
  .avis-text{font-size:14px;color:var(--w1);line-height:1.68;font-style:italic;margin-bottom:16px}
  .avis-author{display:flex;align-items:center;gap:10px}
  .avis-av{width:36px;height:36px;border-radius:50%;background:var(--acc);display:flex;align-items:center;justify-content:center;font-family:var(--f-title);font-weight:800;font-size:13px;color:#fff;flex-shrink:0}
  .avis-name{font-family:var(--f-title);font-weight:800;font-size:13px;color:#fff}
  .avis-loc{font-size:12px;color:var(--w3);font-weight:600;margin-top:1px}
  @media(max-width:900px){
    .avis-top{grid-template-columns:1fr;gap:28px}
    .avis-cards{grid-template-columns:1fr;gap:12px}
    /* Cohérence avec le reste du mobile (hero, pourquoi-nous, FAQ centrés) */
    .avis-top > div:last-child{text-align:center}
    .avis-top .btn{margin-left:auto;margin-right:auto}
    .avis-score{max-width:340px;margin:0 auto}
  }

  /* ══════════════ ZONES ══════════════ */
  .zones-head{text-align:center;padding:0 0 40px;max-width:640px;margin:0 auto}
  /* Stats en carte raffinée (même langage que la carte de France : blanc,
     bordure teintée accent, ombre douce, chiffres en serif éditoriale). */
  .zones-kpis{
    display:flex;align-items:stretch;gap:0;margin-bottom:26px;
    background:#fff;border:1px solid color-mix(in srgb,var(--acc) 14%,var(--bd));
    border-radius:16px;box-shadow:0 16px 40px rgba(20,18,15,.06);overflow:hidden
  }
  .zki{
    flex:1;min-width:150px;text-align:left;
    padding:20px 26px;
    display:flex;flex-direction:column;gap:6px;
    justify-content:center
  }
  /* Séparateur vertical fin entre les deux stats */
  .zki + .zki{border-left:1px solid var(--bd)}
  .zki-n{
    font-family:var(--f-display);font-weight:600;font-size:27px;
    color:var(--t1);line-height:1;letter-spacing:-.02em
  }
  .zki-l{
    font-size:12.5px;color:var(--t3);font-weight:600;
    letter-spacing:.02em
  }
  @media(max-width:600px){
    /* min-width:0 : les deux stats restent côte à côte (sinon elles
       s'empilaient avec un séparateur vertical orphelin). */
    .zki{padding:14px 16px;min-width:0}
    .zki-n{font-size:18px}
    .zki-l{font-size:11.5px}
  }

  .zones-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:24px}
  .zcard{
    background:var(--white);border:1.5px solid var(--bd);border-radius:8px;
    padding:10px 16px;display:inline-flex;align-items:center;gap:8px;
    white-space:nowrap;transition:all .15s;text-decoration:none;color:inherit;
    box-shadow:var(--shadow-sm)
  }
  .zcard:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-2px);box-shadow:var(--shadow)}
  /* Ville de base : accent, pas de noir (retour Benjamin — rendu premium). */
  .zcard.main{background:color-mix(in srgb,var(--acc) 8%,#fff);border-color:var(--acc);color:var(--t1);cursor:default}
  .zcard.main:hover{transform:none}
  .zc-dot{width:6px;height:6px;border-radius:50%;background:var(--acc);flex-shrink:0}
  .zcard.main .zc-dot{background:var(--acc);box-shadow:0 0 8px color-mix(in srgb,var(--acc) 60%,transparent)}
  .zc-name{font-family:var(--f-title);font-weight:700;font-size:13.5px}
  .zc-dist{font-size:10.5px;font-weight:800;color:var(--t3);background:var(--off);border-radius:20px;padding:2px 8px;font-family:var(--f-title)}
  .zc-dist.base{background:var(--acc);color:#fff}
  .zones-note{text-align:center;font-size:13.5px;color:var(--t2);font-weight:600}
  /* Communes + carte de France dans la même section (un seul titre) */
  .zones-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:52px;align-items:center;margin-top:34px}
  .zones-layout > *{min-width:0}
  .zones-layout .zones-pills{justify-content:flex-start}
  .zones-layout .zones-note{text-align:left}
  @media(max-width:900px){
    .zones-layout{grid-template-columns:1fr;gap:30px}
    .zones-layout .zones-pills{justify-content:center}
    .zones-layout .zones-note{text-align:center}
  }
  /* Carte claire premium — carte blanche teintée accent, la France en gris
     chaud bien lisible, le département d'attache pulse en accent. Tout dérive
     de --acc : chaque site adapte la carte à sa propre couleur sans réglage. */
  .zmap-card{position:relative;background:linear-gradient(165deg,#fff 0%,color-mix(in srgb,var(--acc) 7%,#fff) 100%);border:1px solid color-mix(in srgb,var(--acc) 16%,var(--bd));border-radius:22px;padding:24px 24px 20px;overflow:hidden;box-shadow:0 22px 55px rgba(20,18,15,.10)}
  .zmap-card::before{content:'';position:absolute;inset:0;background:radial-gradient(80% 60% at 70% 30%,color-mix(in srgb,var(--acc) 9%,transparent),transparent 70%);pointer-events:none}
  .zmap-canvas{position:relative;padding:4px 10px 6px}
  .zmap-card .france-map{max-height:430px}
  .zmap-card .france-map .dept{fill:color-mix(in srgb,var(--acc) 5%,#E6E2DA);stroke:#fff;stroke-width:1.1}
  .zmap-card .france-map .dept:hover{fill:color-mix(in srgb,var(--acc) 10%,#DDD8CF)}
  .zmap-chips{position:relative;display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  .zmap-chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--f-title);font-weight:700;font-size:12px;color:var(--t1);background:#fff;border:1px solid var(--bd);border-radius:20px;padding:7px 13px;box-shadow:var(--shadow-sm)}
  .zmap-chip.alt{color:var(--t2)}
  .zmap-dot{width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px color-mix(in srgb,var(--acc) 70%,transparent);flex-shrink:0}
  @keyframes fmap-pulse{
    0%,100%{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--acc) 50%,transparent))}
    50%{filter:drop-shadow(0 0 16px color-mix(in srgb,var(--acc) 85%,transparent))}
  }
  @media(max-width:900px){.zmap-card{padding:20px 18px 16px}.zmap-card .france-map{max-height:340px}}

  /* ══════════════ CARTE ══════════════ */
  .map-section{background:var(--off)}
  .map-section-inner{display:grid;grid-template-columns:360px 1fr;min-height:480px;align-items:center}
  .map-info{padding:60px 48px;display:flex;flex-direction:column;justify-content:center}
  .map-legend{display:flex;flex-direction:column;gap:12px;margin-top:24px}
  .map-legend-item{display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--t2);font-weight:600}
  .map-legend-dot{width:14px;height:14px;border-radius:4px;flex-shrink:0}
  .map-legend-dot.main{background:var(--acc)}
  .map-legend-dot.zone{background:color-mix(in srgb,var(--acc) 20%,#fff);border:1px solid color-mix(in srgb,var(--acc) 35%,#fff)}
  .map-legend-dot.ring{background:transparent;border:2px solid var(--acc);border-radius:50%}
  .map-benefits{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-direction:column;gap:13px}
  .map-benefits li{display:flex;align-items:center;gap:11px;font-size:13.5px;color:var(--t2);font-weight:600}
  .map-benefits svg{width:19px;height:19px;flex-shrink:0;stroke:var(--acc);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .map-cta{display:inline-flex;align-items:center;gap:7px;margin-top:26px;font-family:var(--f-title);font-weight:700;font-size:14px;color:var(--acc);align-self:flex-start}
  .map-cta span{transition:transform .15s}
  .map-cta:hover span{transform:translateX(3px)}
  .map-canvas{position:relative;display:block}
  .map-canvas-svg{display:flex;align-items:center;justify-content:center;padding:32px}
  .zone-leaflet{width:100%;height:440px;border-radius:14px;overflow:hidden;border:1px solid var(--bd);background:#eef1f3;z-index:0}
  .leaflet-tooltip.zone-tip{background:#fff;border:1px solid var(--bd);border-radius:7px;box-shadow:0 4px 14px rgba(0,0,0,.10);color:var(--t1);font-family:var(--f-title);font-weight:700;font-size:12px;padding:3px 8px;white-space:nowrap}
  .leaflet-tooltip.zone-tip.leaflet-tooltip-top:before{border-top-color:#fff}
  .leaflet-tooltip.zone-tip-base{font-size:13px;font-weight:800;border-color:var(--acc)}
  .zone-base-pin{background:var(--acc);border:3px solid #fff;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.28)}
  .zone-dot{background:var(--acc);border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.35);opacity:.85}
  .zone-dot-imp{opacity:1;box-shadow:0 2px 5px rgba(0,0,0,.4)}

  /* ── Carte contact (ancien bloc — voir bloc France SVG plus bas) ── */
  .contact-map-address{font-size:.875rem;color:var(--t2);margin:0}
  .contact-map-highlights{display:flex;flex-direction:column;gap:8px;margin-top:8px}
  .contact-map-highlights div{display:flex;align-items:center;gap:8px;font-size:.8125rem;color:var(--t2);font-weight:600}
  .contact-map-highlights span{width:8px;height:8px;border-radius:50%;background:var(--acc);flex-shrink:0;display:inline-block}
  @media(max-width:900px){.map-section-inner{grid-template-columns:1fr}.map-info{padding:40px 24px}.map-canvas-svg{padding:24px}}

  /* ══════════════ FAQ ══════════════ */
  .faq-layout{display:grid;grid-template-columns:300px 1fr;gap:72px}
  /* Accueil : tête centrée + liste centrée + appel centré (même schéma que
     le reste de la page). .faq-layout reste pour les pages internes. */
  .faq-head{text-align:center;max-width:640px;margin:0 auto 36px}
  .faq-centre{max-width:860px;margin:0 auto}
  .faq-cta{display:flex;justify-content:center;margin-top:30px}
  .faq-list{border-top:1px solid var(--bd)}
  .faq-row{border-bottom:1px solid var(--bd)}
  .faq-row summary{
    display:flex;justify-content:space-between;align-items:center;gap:24px;
    padding:20px 0;cursor:pointer;list-style:none
  }
  .faq-row summary::-webkit-details-marker{display:none}
  .faq-q{font-family:var(--f-title);font-weight:700;font-size:15.5px;color:var(--t1);line-height:1.4}
  .faq-plus{
    width:28px;height:28px;border-radius:50%;border:1.5px solid var(--bd2);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
    font-size:16px;color:var(--t3);transition:all .15s
  }
  .faq-plus::before{content:'+'}
  .faq-row[open] .faq-plus{background:var(--acc);border-color:var(--acc);color:#fff;transform:rotate(45deg)}
  .faq-row[open] .faq-plus::before{content:'+'}
  .faq-a{padding:0 0 20px;font-size:14.5px;color:var(--t2);line-height:1.72}
  @media(max-width:900px){.faq-layout{grid-template-columns:1fr;gap:28px}}

  /* ══════════════ CONTACT SECTION ══════════════ */
  .form-layout{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
  .form-left-info{display:flex;flex-direction:column;gap:14px;margin-top:8px}
  /* Cards contact cohérentes : même fond, bordure, radius que la famille de cards */
  .fli{
    display:flex;align-items:center;gap:16px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.1);
    border-radius:var(--radius-lg);
    padding:16px 18px;
    transition:transform .18s var(--ease-out),border-color .18s,box-shadow .18s
  }
  .fli:hover{
    transform:translateY(-2px);
    border-color:color-mix(in srgb,var(--acc) 40%,rgba(255,255,255,.1));
    box-shadow:0 10px 26px rgba(0,0,0,.25)
  }
  .fli-icon{
    width:44px;height:44px;border-radius:12px;flex-shrink:0;
    background:var(--acc-bg);border:1px solid color-mix(in srgb,var(--acc) 25%,transparent);
    display:flex;align-items:center;justify-content:center
  }
  .fli-icon svg,.fli-icon span{font-size:18px;color:var(--acc)}
  .fli-icon svg{width:20px;height:20px;stroke:var(--acc);fill:none;stroke-width:1.8}
  .fli-content{}
  .fli-title{font-family:var(--f-title);font-weight:800;font-size:14px;color:#fff;margin-bottom:3px;display:block}
  .fli-val{font-size:13.5px;color:var(--w2);font-weight:500}
  .fli-val a{color:var(--w2)}

  .form-box{background:var(--white);border-radius:var(--radius-lg);padding:36px;box-shadow:var(--shadow-lg)}
  .form-title{font-family:var(--f-title);font-weight:800;font-size:20px;color:var(--t1);margin-bottom:4px}
  .form-sub{font-size:13.5px;color:var(--t3);margin-bottom:28px}
  .frow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
  .fld{display:flex;flex-direction:column;gap:5px}
  .flbl{font-size:11.5px;font-weight:700;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;font-family:var(--f-title)}
  .finput{background:var(--off);border:1.5px solid var(--bd);border-radius:8px;padding:13px 15px;font-size:14px;color:var(--t1);font-family:var(--f-body);width:100%;transition:border-color .12s,box-shadow .12s}
  .fmicro{text-align:center;font-size:11.5px;color:var(--t3);margin-top:10px;font-weight:600}
  .finput:focus,.ftxt:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 15%,transparent)}
  .finput::placeholder,.ftxt::placeholder{color:var(--t3)}
  .ftxt{background:var(--off);border:1.5px solid var(--bd);border-radius:8px;padding:12px 14px;min-height:100px;font-size:14px;color:var(--t1);font-family:var(--f-body);width:100%;resize:vertical}
  .fsubmit{background:var(--acc);color:var(--btn-text);border:none;padding:15px;border-radius:8px;font-size:15px;font-weight:800;width:100%;font-family:var(--f-title);display:flex;align-items:center;justify-content:center;gap:9px;margin-top:8px;cursor:pointer;transition:all .15s;box-shadow:0 4px 16px color-mix(in srgb,var(--acc) 35%,transparent)}
  .fsubmit:hover{transform:translateY(-1px);box-shadow:0 6px 24px color-mix(in srgb,var(--acc) 45%,transparent)}
  .fnote{font-size:11.5px;color:var(--t3);text-align:center;margin-top:10px}
  @media(max-width:900px){.form-layout{grid-template-columns:1fr;gap:40px}.frow{grid-template-columns:1fr}}

  /* ══════════════ CTA BLOCK ══════════════ */
  .cta-block{position:relative;overflow:hidden;min-height:300px;display:flex;align-items:center;background:#FFFFFF}
  .cta-bbg{
    position:absolute;inset:0;
    background:
      radial-gradient(ellipse 100% 140% at 8% 0%, color-mix(in srgb,var(--acc) 12%,transparent) 0%, transparent 50%),
      radial-gradient(ellipse 90% 120% at 100% 100%, color-mix(in srgb,var(--acc) 9%,transparent) 0%, transparent 48%),
      #FFFFFF;
  }
  .cta-bbg::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(135deg,rgba(0,0,0,.01) 0,rgba(0,0,0,.01) 1px,transparent 1px,transparent 30px)}
  .cta-bbg::after{content:'';position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,transparent,var(--acc),transparent)}
  .cta-inner{position:relative;z-index:2;padding:56px 40px;max-width:1320px;margin:0 auto;width:100%;display:grid;grid-template-columns:1fr auto;gap:60px;align-items:center}
  .cta-eyebrow,.cta-label{font-family:var(--f-title);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--acc);margin-bottom:14px}
  .cta-h{font-family:var(--f-display);font-weight:600;font-size:44px;color:var(--t1);letter-spacing:-.02em;line-height:1.07;margin-bottom:20px}
  .cta-sub{font-size:15px;color:var(--t2);line-height:1.55;margin:-8px 0 22px;max-width:430px;font-weight:500}
  .cta-proofs{display:flex;gap:20px;flex-wrap:wrap}
  .cta-p{font-size:13px;color:var(--t2);font-family:var(--f-title);font-weight:600;display:flex;align-items:center;gap:6px}
  .cta-p::before{content:'✓';color:var(--acc);font-weight:900}
  .cta-right{display:flex;flex-direction:column;gap:16px;align-items:flex-end;flex-shrink:0}
  .cta-tel{font-family:var(--f-title);font-weight:900;font-size:24px;letter-spacing:-.02em;text-align:right}
  .cta-tel a{color:var(--t1)!important;display:inline-flex;align-items:center;gap:8px;transition:color .2s ease}
  .cta-tel a:hover{color:var(--acc)!important}
  .cta-tel-sub{font-size:12px;color:var(--t3);font-weight:600;margin-top:4px}
  .cta-tel-block{font-family:var(--f-title);font-weight:900;font-size:22px;color:var(--t1);text-align:right;letter-spacing:-.02em}
  .cta-tel-block a{color:var(--t1);transition:color .2s ease}
  .cta-tel-block a:hover{color:var(--acc)}
  @media(max-width:760px){.cta-inner{grid-template-columns:1fr;gap:28px;text-align:center}.cta-h{font-size:32px}.cta-right{align-items:center}.cta-tel{text-align:center}.cta-proofs{justify-content:center}}

  /* ══════════════ FOOTER ══════════════ */
  footer.site-ftr{background:var(--footer-bg);border-top:1px solid var(--footer-border,rgba(255,255,255,.08));padding:64px 0 32px;font-family:var(--footer-font,var(--f-body))}
  .ft-inner{max-width:1320px;margin:0 auto;padding:0 40px}
  .ft-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.2fr;gap:48px;margin-bottom:56px}
  .ft-brand{display:flex;align-items:center;gap:11px;margin-bottom:16px}
  .ft-brand-mark{width:34px;height:34px;background:var(--acc);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .ft-brand-mark:has(.ft-logo-img){width:auto;height:auto;background:transparent;border-radius:0}
  .ft-logo-img{height:calc(var(--logo-h,48px) + 8px);width:auto;max-width:260px;object-fit:contain;display:block}
  .ft-brand-mark svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:2.2}
  .ft-brand-name{font-family:var(--footer-font,var(--f-title));font-weight:800;font-size:14px;color:var(--footer-text);letter-spacing:-.02em}
  .ft-brand-sub{font-size:9.5px;color:var(--footer-text);opacity:.55;text-transform:uppercase;letter-spacing:.1em;font-weight:600}
  .ft-desc{font-size:13.5px;color:var(--w3);line-height:1.72;margin-bottom:20px;max-width:260px}
  .ft-certifs{display:flex;flex-wrap:wrap;gap:8px}
  .ft-certif{font-size:11px;font-weight:700;color:var(--w3);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);padding:4px 10px;border-radius:20px;font-family:var(--f-title);text-transform:uppercase;letter-spacing:.04em}
  .ft-h{font-family:var(--footer-font,var(--f-title));font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--footer-title,rgba(255,255,255,.55));margin-bottom:18px}
  .ft-l{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--footer-link,var(--footer-text));opacity:.82;margin-bottom:10px;font-weight:500;transition:opacity .12s,color .12s}
  .ft-l:hover{opacity:1;color:var(--footer-link-hover,var(--acc))}
  .ft-contact-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
  .ft-ci{color:var(--acc);flex-shrink:0;margin-top:2px}
  .ft-ci svg{width:15px;height:15px;stroke:var(--acc);fill:none;stroke-width:1.8}
  /* Icône pin de localisation (remplace l'emoji 📍) — colorée en accent */
  .loc-ico{width:13px;height:13px;stroke:var(--acc);fill:none;stroke-width:1.8;flex-shrink:0;display:inline-block;vertical-align:middle;margin-right:5px}
  .ft-cv{font-size:13.5px;color:var(--w2);line-height:1.5;font-weight:500}
  .ft-cv a{color:var(--w2);transition:color .12s}
  .ft-cv a:hover{color:#fff}
  .ft-bottom{border-top:1px solid var(--footer-border,rgba(255,255,255,.08));padding-top:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
  .ft-copy{font-size:12px;color:var(--w2);font-weight:500}
  .ft-links{display:flex;gap:20px}
  .ft-links a{font-size:12px;color:var(--footer-text);opacity:.7;font-weight:500;transition:color .12s,opacity .12s}
  .ft-links a:hover{color:var(--footer-link-hover,var(--acc));opacity:1}
  @media(max-width:900px){.ft-inner{padding:0 24px}.ft-top{grid-template-columns:1fr 1fr;gap:32px}}
  @media(max-width:560px){footer.site-ftr{padding:48px 0 24px}.ft-inner{padding:0 16px}.ft-top{grid-template-columns:1fr;gap:28px}.ft-bottom{flex-direction:column;align-items:flex-start}}

  /* ══════════════ STICKY MOBILE ══════════════ */
  .sticky-mob{display:none}
  @media(max-width:760px){
    .sticky-mob{
      display:grid;grid-template-columns:1fr 1fr;gap:0;
      position:fixed;bottom:0;left:0;right:0;z-index:95;
      background:rgba(20,19,17,.96);backdrop-filter:blur(14px);
      border-top:1px solid rgba(255,255,255,.08);
      box-shadow:0 -4px 24px rgba(0,0,0,.3);
      padding-bottom:env(safe-area-inset-bottom,0);
      transform:translateY(100%);
      transition:transform .28s cubic-bezier(.4,0,.2,1);
    }
    .sticky-mob.sticky-visible{transform:translateY(0)}
    .sticky-mob a{
      display:flex;align-items:center;justify-content:center;gap:10px;
      padding:16px 10px;text-decoration:none;color:#fff;
      font-family:var(--f-title);transition:background .2s ease
    }
    .sticky-mob .sticky-ico{font-size:20px;flex-shrink:0;line-height:1}
    .sticky-mob .sticky-ico .btn-ico{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
    .sticky-mob .sticky-txt{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15;min-width:0}
    .sticky-mob .sticky-lbl{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
    .sticky-mob .sticky-sub{font-weight:600;font-size:11px;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
    .sticky-call{background:var(--acc)}
    .sticky-call:active{background:var(--acc2)}
    .sticky-quote{background:transparent;border-left:1px solid rgba(255,255,255,.1)}
    .sticky-quote:active{background:rgba(255,255,255,.06)}
    .sticky-call .sticky-sub{color:rgba(255,255,255,.85)}
    .sticky-quote .sticky-ico{color:var(--acc)}
    .sticky-full{grid-column:1/-1;background:var(--acc)!important;justify-content:center}
    .sticky-full .sticky-lbl{font-size:15px}
    /* L'espace réservé à la barre fixe vit DANS le footer (même fond sombre) :
       un padding sur body laisserait une bande claire entre footer et barre */
    footer.site-ftr{padding-bottom:calc(24px + 64px + env(safe-area-inset-bottom,0px))}
  }
  @media(max-width:360px){
    .sticky-mob .sticky-sub{display:none}
    .sticky-mob a{padding:14px 10px}
  }

  /* ══════════════ BREADCRUMB ══════════════ */
  .bc{font-size:12px;color:rgba(255,255,255,.45);font-family:var(--f-title);font-weight:600;margin-bottom:18px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .bc a{color:rgba(255,255,255,.45);transition:color .12s}
  .bc a:hover{color:rgba(255,255,255,.8)}
  .bc strong{color:rgba(255,255,255,.9)}
  .bc-sep{color:rgba(255,255,255,.2)}

  /* ══════════════ Pages internes ══════════════ */
  .two-col{display:grid;grid-template-columns:2fr 1fr;gap:60px;align-items:start}
  @media(max-width:900px){.two-col{grid-template-columns:1fr;gap:36px}}
  @media(min-width:901px){.sticky-side{position:sticky;top:88px}}

  .srv-detail-block{margin-bottom:32px}
  .srv-detail-title{font-family:var(--f-title);font-weight:800;font-size:13px;color:var(--t2);margin-bottom:12px;text-transform:uppercase;letter-spacing:.08em}
  .srv-detail-list{display:flex;flex-direction:column;gap:10px}
  .srv-dl{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;color:var(--t2);line-height:1.6}
  .srv-dl-check{color:var(--acc);font-weight:900;flex-shrink:0;font-size:16px;margin-top:-1px}

  .sidebar-card{background:var(--off);border-radius:var(--radius-lg);padding:28px;border:1px solid var(--bd);box-shadow:var(--shadow-sm)}
  .sb-title{font-family:var(--f-title);font-weight:800;font-size:15px;color:var(--t1);margin-bottom:18px}
  .sb-tel{font-family:var(--f-title);font-weight:900;font-size:24px;color:var(--acc);margin-bottom:4px;display:flex;align-items:center;gap:8px;letter-spacing:-.02em}
  .sb-tel .btn-ico{width:20px;height:20px;stroke:var(--acc)}
  .cta-tel-block .btn-ico{width:18px;height:18px;stroke:currentColor;display:inline-block;vertical-align:middle;margin-right:6px}
  .sb-sub{font-size:12.5px;color:var(--t2);margin-bottom:18px}
  .sb-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:var(--acc);color:#fff;padding:13px;border-radius:8px;font-family:var(--f-title);font-weight:700;font-size:14px;transition:all .15s;box-shadow:0 4px 16px color-mix(in srgb,var(--acc) 30%,transparent)}
  .sb-btn:hover{transform:translateY(-1px)}
  .sb-certifs{display:flex;flex-direction:column;gap:9px;margin-top:18px;border-top:1px solid var(--bd);padding-top:18px}
  .sb-cert{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--t1);font-weight:600}
  .sb-cert-dot{width:7px;height:7px;border-radius:50%;background:var(--acc);flex-shrink:0}

  .args-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
  @media(max-width:760px){.args-grid{grid-template-columns:1fr 1fr}}
  .ag-card{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm)}
  .ag-t{font-size:14px;font-weight:800;color:var(--t1);margin-bottom:6px;font-family:var(--f-title)}
  .ag-s{font-size:13px;color:var(--t2);line-height:1.55}

  .mesh-title{font-family:var(--f-title);font-weight:800;font-size:12px;color:var(--t2);text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px}
  /* Infos locales sidebar ville — icônes en accent */
  .city-infos{display:flex;flex-direction:column;gap:10px}
  .city-info{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--t1);font-weight:600}
  .city-info .loc-ico{width:15px;height:15px;stroke:var(--acc);fill:none;stroke-width:1.8;flex-shrink:0;margin-right:0}
  .mesh-links{display:flex;flex-wrap:wrap;gap:8px}
  .mesh-link{background:var(--white);border:1.5px solid var(--bd);border-radius:8px;padding:8px 14px;font-size:13px;color:var(--t1);font-family:var(--f-title);font-weight:700;transition:all .12s;box-shadow:var(--shadow-sm)}
  .mesh-link:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-1px)}

  .local-ctx{background:var(--off);border-left:4px solid var(--acc);border-radius:0 var(--radius) var(--radius) 0;padding:22px 26px;margin:32px 0}
  .vs-local-title{font-family:var(--f-title);font-weight:800;font-size:15px;color:var(--t1);margin-bottom:14px}
  .vs-local-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  @media(max-width:640px){.vs-local-grid{grid-template-columns:1fr}}
  .vs-litem{font-size:14px;color:var(--t2);display:flex;align-items:flex-start;gap:8px;line-height:1.55}
  .vs-litem-dot{color:var(--acc);font-weight:900;flex-shrink:0}

  .other-srv-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
  .other-srv-pill{display:inline-flex;align-items:center;background:var(--white);border:1px solid var(--bd);border-radius:999px;padding:9px 18px;font-size:13.5px;color:var(--t1);font-family:var(--f-title);font-weight:600;box-shadow:var(--shadow-sm);transition:background .14s,color .14s,border-color .14s,transform .14s,box-shadow .14s}
  .other-srv-pill:hover{background:var(--acc);border-color:var(--acc);color:var(--btn-text);transform:translateY(-1px);box-shadow:var(--shadow)}

  .villes-links{display:flex;flex-wrap:wrap;gap:8px}
  .ville-link{background:var(--white);border:1.5px solid var(--bd);border-radius:8px;padding:9px 14px;font-size:13px;color:var(--t1);font-family:var(--f-title);font-weight:700;display:inline-flex;align-items:center;gap:7px;box-shadow:var(--shadow-sm);transition:all .12s}
  .ville-link:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-1px)}
  .ville-link.forte{border-color:color-mix(in srgb,var(--acc) 40%,transparent)}
  .ville-link .vl-dist{font-size:10.5px;color:var(--t3);font-weight:700;background:var(--off);border-radius:20px;padding:2px 7px}
  /* ── Repli "Voir toutes les communes" (liens gardés dans le HTML pour le SEO) ── */
  .villes-links.is-collapsed .ville-link:nth-child(n+16),
  .mesh-links.is-collapsed .mesh-link:nth-child(n+16){display:none}
  .zones-pills.is-collapsed .zcard:nth-child(n+14){display:none}
  .voir-plus-wrap{margin-top:16px}
  .voir-plus-btn{display:inline-flex;align-items:center;gap:8px;background:var(--white);border:1.5px solid var(--bd);border-radius:8px;padding:10px 18px;font-size:13px;font-weight:700;font-family:var(--f-title);color:var(--t1);cursor:pointer;box-shadow:var(--shadow-sm);transition:all .12s}
  .voir-plus-btn:hover{border-color:var(--acc);color:var(--acc)}
  .voir-plus-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.4}
  /* ── Services prioritaires (page ville) : cartes + tags secondaires ── */
  .vsrv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:8px}
  @media(max-width:640px){.vsrv-grid{grid-template-columns:1fr}}
  .vsrv-card{display:block;background:var(--white);border:1.5px solid var(--bd);border-radius:12px;padding:18px 20px;box-shadow:var(--shadow-sm);transition:all .14s;text-decoration:none}
  .vsrv-card:hover{border-color:var(--acc);transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.09)}
  .vsrv-name{font-family:var(--f-title);font-weight:800;font-size:15.5px;color:var(--t1);display:flex;align-items:center;justify-content:space-between;gap:10px}
  .vsrv-arr{color:var(--acc);font-size:17px;font-weight:700}
  .vsrv-desc{margin-top:7px;font-size:12.5px;color:var(--t3);line-height:1.5}
  .vsrv-sub{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--t3);margin:20px 0 12px}
  .other-srv-block{margin-top:48px;padding-top:38px;border-top:1px solid var(--bd)}
  .other-srv-block .vsrv-sub{font-size:16px;color:var(--acc);letter-spacing:.08em;margin-bottom:6px}
  .other-srv-intro{text-align:center;font-size:14px;color:var(--t2);max-width:540px;margin:0 auto 24px;line-height:1.55}
  /* ── Phase 2 : infos clés premium (page ville) ── */
  .local-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:10px}
  @media(max-width:760px){.local-kpi-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:420px){.local-kpi-grid{grid-template-columns:1fr}}
  .local-kpi{background:var(--white);border:1.5px solid var(--bd);border-radius:12px;padding:18px;box-shadow:var(--shadow-sm)}
  .local-kpi-ico{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--acc) 12%,transparent);display:flex;align-items:center;justify-content:center;margin-bottom:12px}
  .local-kpi-ico svg{width:20px;height:20px;stroke:var(--acc);fill:none;stroke-width:2}
  .local-kpi-val{font-family:var(--f-title);font-weight:800;font-size:15.5px;color:var(--t1);line-height:1.25}
  .local-kpi-lbl{margin-top:5px;font-size:12px;color:var(--t3);line-height:1.45}
  /* ── Phase 2 : pourquoi nous choisir (3 cartes) ── */
  .vchoix-sec{margin-top:8px;background:var(--off);border:1px solid var(--bd);border-radius:18px;padding:40px 34px}
  @media(max-width:600px){.vchoix-sec{padding:30px 20px}}
  .vchoix-title{font-family:var(--f-title);font-weight:800;font-size:24px;color:var(--t1);text-align:center;margin-bottom:6px}
  .vchoix-sub{text-align:center;font-size:14px;color:var(--t3);margin:0 auto 28px;max-width:560px}
  .vchoix-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  @media(max-width:760px){.vchoix-grid{grid-template-columns:1fr}}
  .vchoix-card{background:var(--white);border:1.5px solid var(--bd);border-radius:14px;padding:26px 24px;box-shadow:var(--shadow-sm);transition:all .14s}
  .vchoix-card:hover{border-color:color-mix(in srgb,var(--acc) 35%,transparent);transform:translateY(-2px)}
  .vchoix-ico{width:46px;height:46px;border-radius:12px;background:color-mix(in srgb,var(--acc) 12%,transparent);display:flex;align-items:center;justify-content:center;margin-bottom:16px}
  .vchoix-ico svg{width:24px;height:24px;stroke:var(--acc);fill:none;stroke-width:2}
  .vchoix-card h3{font-family:var(--f-title);font-weight:800;font-size:17px;color:var(--t1);margin:0 0 8px}
  .vchoix-card p{font-size:13.5px;color:var(--t3);line-height:1.55;margin:0}
  /* ── Phase 2 : avis premium ── */
  .local-avis-rating{display:flex;align-items:center;gap:11px;margin-bottom:14px;flex-wrap:wrap}
  .lar-num{font-family:var(--f-title);font-weight:800;font-size:30px;color:var(--t1);line-height:1}
  .lar-stars{color:#f5a623;font-size:16px;letter-spacing:1.5px}
  .lar-verif{font-size:11.5px;font-weight:700;color:#1a9d5a;background:color-mix(in srgb,#1a9d5a 12%,transparent);border-radius:20px;padding:4px 11px;display:inline-flex;align-items:center;gap:5px}
  .lar-verif svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2.6}
  /* ── Phase 3 : page service ── */
  .signaux-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
  @media(max-width:600px){.signaux-grid{grid-template-columns:1fr}}
  .signal-card{background:var(--white);border:1.5px solid var(--bd);border-left:3px solid var(--acc);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow-sm)}
  .signal-ico{width:32px;height:32px;border-radius:8px;background:color-mix(in srgb,var(--acc) 12%,transparent);display:flex;align-items:center;justify-content:center;margin-bottom:10px}
  .signal-ico svg{width:18px;height:18px;stroke:var(--acc);fill:none;stroke-width:2}
  .signal-t{font-family:var(--f-title);font-weight:800;font-size:14.5px;color:var(--t1);margin-bottom:5px}
  .signal-d{font-size:12.5px;color:var(--t3);line-height:1.5}
  .interv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
  @media(max-width:600px){.interv-grid{grid-template-columns:1fr}}
  .interv-card{display:flex;align-items:flex-start;gap:10px;background:var(--off);border:1px solid var(--bd);border-radius:10px;padding:13px 15px;font-size:13.5px;color:var(--t1);font-weight:600;line-height:1.4}
  .interv-check{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--acc);display:flex;align-items:center;justify-content:center;margin-top:1px}
  .interv-check svg{width:13px;height:13px;stroke:#fff;fill:none;stroke-width:3}
  .urgence-block{display:flex;gap:16px;align-items:flex-start;background:color-mix(in srgb,var(--acc) 7%,var(--off));border:1.5px solid color-mix(in srgb,var(--acc) 22%,transparent);border-radius:14px;padding:22px 24px;margin-bottom:32px}
  .urgence-ico{flex-shrink:0;width:44px;height:44px;border-radius:12px;background:var(--acc);display:flex;align-items:center;justify-content:center}
  .urgence-ico svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:2}
  .urgence-t{font-family:var(--f-title);font-weight:800;font-size:17px;color:var(--t1);margin-bottom:6px}
  .urgence-p{font-size:13.5px;color:var(--t2);line-height:1.6;margin:0}
  .engage-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
  @media(max-width:600px){.engage-grid{grid-template-columns:1fr}}
  .engage-card{display:flex;align-items:flex-start;gap:12px;background:var(--white);border:1.5px solid var(--bd);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow-sm)}
  .engage-check{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:color-mix(in srgb,var(--acc) 14%,transparent);display:flex;align-items:center;justify-content:center;margin-top:1px}
  .engage-check svg{width:14px;height:14px;stroke:var(--acc);fill:none;stroke-width:3}
  .engage-t{font-family:var(--f-title);font-weight:800;font-size:14.5px;color:var(--t1);margin-bottom:4px}
  .engage-d{font-size:12.5px;color:var(--t3);line-height:1.5}

  /* ── Section Avis clients ── */
  .avis-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
  @media(max-width:900px){.avis-grid{grid-template-columns:1fr}}
  .avis-card{background:var(--card,#fff);border:1px solid var(--bd,#eee);border-radius:var(--radius-lg,14px);padding:28px;display:flex;flex-direction:column;gap:14px;transition:transform .18s,box-shadow .18s}
  .avis-card:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(0,0,0,.08)}
  .avis-stars{color:#F5A623;font-size:16px;letter-spacing:2px}
  .avis-text{font-size:14.5px;line-height:1.7;color:var(--t2);flex:1}
  .avis-author{display:flex;align-items:center;gap:12px;margin-top:4px}
  .avis-avatar{width:42px;height:42px;border-radius:50%;background:var(--acc);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--f-title);font-weight:800;font-size:17px;flex-shrink:0}
  .avis-name{font-family:var(--f-title);font-weight:700;font-size:14px;color:var(--t1)}
  .avis-loc{font-size:12.5px;color:var(--t3,#999);font-weight:600}
  /* Avis local (pages ville + service) — carte claire premium */
  .local-avis-wrap{margin-top:40px}
  .local-avis-list{margin-top:14px}
  .local-avis-card{position:relative;background:#fff;border:1px solid var(--bd);border-radius:var(--radius-lg);padding:26px 28px;box-shadow:var(--shadow-sm);display:block}
  .local-avis-quote{font-family:var(--f-title);font-size:40px;font-weight:900;color:color-mix(in srgb,var(--acc) 35%,#fff);line-height:.6;margin-bottom:10px}
  .local-avis-text{font-size:14.5px;line-height:1.7;color:var(--t1);margin-bottom:18px;font-style:normal}
  .local-avis-author{display:flex;align-items:center;gap:12px}
  .local-avis-av{width:40px;height:40px;border-radius:50%;background:var(--acc);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--f-title);font-weight:800;font-size:14px;flex-shrink:0}
  .local-avis-name{font-family:var(--f-title);font-weight:800;font-size:13.5px;color:var(--t1)}
  .local-avis-loc{font-size:12.5px;color:var(--t3);font-weight:600;margin-top:1px}
  .avis-loc-stars{color:#F5A623;letter-spacing:1px}

  /* ── Animation chiffres au scroll ── */
  .zki-n{transition:opacity .4s ease}

  /* ═══════════ ANIMATIONS HOVER ORGANIQUES ═══════════ */
  /* Courbe d'accélération naturelle partagée */
  :root{--ease-out:cubic-bezier(.22,.61,.36,1);--ease-soft:cubic-bezier(.4,0,.2,1)}

  /* Cartes services — soulèvement + accent qui apparaît */
  .srv-card{transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),border-color .25s ease!important;will-change:transform}
  .srv-card:hover{transform:translateY(-6px)!important;box-shadow:0 18px 44px rgba(0,0,0,.13),0 4px 12px rgba(0,0,0,.06)!important;border-color:color-mix(in srgb,var(--acc) 45%,var(--bd))!important}
  .srv-card .srv-card-arrow,.srv-card .link-arr{transition:transform .35s var(--ease-out)}
  .srv-card:hover .srv-card-arrow,.srv-card:hover .link-arr{transform:translateX(5px)}

  /* Cartes zones — léger zoom + lueur accent */
  .zcard{transition:transform .3s var(--ease-out),box-shadow .3s var(--ease-out),border-color .25s ease,color .25s ease!important}
  .zcard:not(.main):hover{transform:translateY(-4px) scale(1.015)!important;box-shadow:0 14px 34px color-mix(in srgb,var(--acc) 14%,rgba(0,0,0,.1))!important}

  /* Cartes avis — soulèvement doux */
  .avis-card{transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out)!important}
  .avis-card:hover{transform:translateY(-5px)!important;box-shadow:0 18px 44px rgba(0,0,0,.1)!important}

  /* Why-items (cartes) — soulèvement doux + icône réactive */
  .why-item{transition:transform .28s var(--ease-out),box-shadow .28s ease,border-color .28s ease}
  .why-item:hover{transform:translateY(-3px)}
  .why-item-icon{transition:transform .35s var(--ease-out),background .25s ease}
  .why-item:hover .why-item-icon{transform:scale(1.08)}

  /* Coordonnées contact (fli) — icône réactive */
  .fli-icon{transition:transform .35s var(--ease-out),box-shadow .3s ease}

  /* Boutons — accélération plus naturelle */
  .btn{transition:transform .25s var(--ease-out),box-shadow .3s var(--ease-out),background .2s ease!important}
  .btn-acc:hover{transform:translateY(-2px)!important}

  /* Liens flèche — déplacement fluide */
  .link-arr{transition:gap .3s var(--ease-out),color .2s ease!important}
  .link-arr:hover{gap:11px}

  /* Process steps — numéro qui réagit */
  .process-num{transition:transform .35s var(--ease-out),background .3s ease,border-color .3s ease,box-shadow .3s ease}
  .process-step:hover .process-num{transform:translateY(-4px) scale(1.08);box-shadow:0 10px 26px color-mix(in srgb,var(--acc) 30%,transparent)}

  /* Galerie — image qui respire */
  .gal-card{transition:transform .4s var(--ease-out),box-shadow .4s var(--ease-out)!important}
  .gal-card:hover{transform:translateY(-5px) scale(1.012)!important;box-shadow:0 20px 50px rgba(0,0,0,.18)!important}

  /* CTA final — bouton qui rayonne */
  .cta-block .btn-acc:hover{transform:translateY(-2px) scale(1.02)!important;box-shadow:0 10px 30px color-mix(in srgb,var(--acc) 55%,transparent)!important}

  /* Logo header — subtil */
  .hdr-logo{transition:opacity .2s ease}
  .hdr-logo:hover{opacity:.85}

  /* Footer liens — glissement */
  .ft-col a,.footer a{transition:color .2s ease,padding-left .25s var(--ease-out)}
  .ft-col a:hover{padding-left:4px}

  /* Respect des préférences de mouvement réduit */
  @media(prefers-reduced-motion:reduce){
    *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  }


  /* ══════════════ CONTACT PREMIUM OVERRIDES — PURE STUDIO ══════════════ */
  .contact-premium-sec{
    padding:88px 0 96px;
    background:
      radial-gradient(900px 420px at 80% -10%, color-mix(in srgb,var(--acc) 7%, transparent), transparent 58%),
      linear-gradient(180deg,#fff 0%,#fbfaf7 100%);
  }
  .contact-premium-layout{
    max-width:1120px;margin:0 auto;
    display:grid;grid-template-columns:minmax(0,.92fr) minmax(420px,1.08fr);
    gap:56px;align-items:start;
  }
  .contact-info-panel{min-width:0;}
  .contact-title{margin:8px 0 14px;color:var(--t1);letter-spacing:-.045em;}
  .contact-lead{font-size:15px;color:var(--t2);line-height:1.75;max-width:520px;margin-bottom:24px;}
  .contact-cards{display:grid;gap:12px;margin-top:24px;}
  .contact-card{
    display:flex;gap:14px;align-items:center;padding:16px 17px;
    background:#fff;border:1px solid var(--bd);border-radius:14px;color:var(--t1);
    box-shadow:0 10px 28px rgba(0,0,0,.045);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
  }
  .contact-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--acc) 38%,var(--bd));box-shadow:0 18px 42px rgba(0,0,0,.075);}
  .contact-card-main{border-color:color-mix(in srgb,var(--acc) 35%,var(--bd));background:linear-gradient(135deg,#fff 0%,color-mix(in srgb,var(--acc) 6%,#fff) 100%);}
  .contact-card-icon{width:40px;height:40px;border-radius:12px;background:var(--acc);color:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 40px;box-shadow:0 10px 22px color-mix(in srgb,var(--acc) 25%,transparent);}
  .ci-ico{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .contact-card-body{display:flex;flex-direction:column;min-width:0;line-height:1.25;}
  .contact-card-label{font-family:var(--f-title);font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--acc);margin-bottom:5px;}
  .contact-card strong{font-family:var(--f-title);font-size:15px;font-weight:900;color:var(--t1);letter-spacing:-.015em;overflow-wrap:anywhere;}
  .contact-card small{font-size:12.5px;color:var(--t2);font-weight:600;margin-top:4px;}
  .contact-hours-card{
    margin-top:18px;padding:20px;background:var(--off);border:1px solid var(--bd);border-radius:14px;
  }
  .contact-mini-title{font-family:var(--f-title);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.12em;color:var(--t1);margin-bottom:10px;}
  .contact-hours-list{display:grid;gap:0;}
  .contact-hour-row{display:flex;justify-content:space-between;gap:18px;padding:7px 0;border-bottom:1px solid rgba(0,0,0,.06);font-size:13px;}
  .contact-hour-row:last-child{border-bottom:0;}
  .contact-hour-row span{font-weight:700;color:var(--t1);}
  .contact-hour-row strong{font-weight:800;color:var(--t2);}
  .contact-hours-note{margin-top:12px;padding:10px 12px;border-radius:10px;background:#fff;color:var(--t2);font-size:12.5px;font-weight:700;border:1px solid var(--bd);}
  .contact-urgent-card{
    margin-top:18px;padding:22px;border-radius:16px;background:linear-gradient(135deg,var(--ink) 0%,#172019 100%);border:1px solid rgba(255,255,255,.08);
    box-shadow:0 18px 40px rgba(0,0,0,.18);color:#fff;display:grid;gap:16px;position:relative;overflow:hidden;
  }
  .contact-urgent-card::after{content:'';position:absolute;right:-60px;bottom:-80px;width:190px;height:190px;background:radial-gradient(circle,color-mix(in srgb,var(--acc) 18%,transparent),transparent 65%);}
  .contact-urgent-kicker{font-family:var(--f-title);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);font-weight:900;display:block;margin-bottom:5px;}
  .contact-urgent-card strong{font-family:var(--f-title);font-size:18px;font-weight:900;display:block;}
  .contact-urgent-card p{color:var(--w2);font-size:13.5px;line-height:1.6;margin-top:7px;max-width:420px;}
  .contact-urgent-card .btn{width:max-content;position:relative;z-index:1;}
  .contact-legal-line{margin-top:14px;color:var(--t3);font-size:12px;font-weight:700;}
  .contact-form-wrap{position:sticky;top:112px;}
  .contact-form-card{padding:34px;border-radius:18px;border:1px solid rgba(0,0,0,.05);box-shadow:0 28px 70px rgba(0,0,0,.16);background:#FBFBF9;}
  .form-kicker{font-family:var(--f-title);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.15em;color:var(--acc);display:block;margin-bottom:8px;}
  .contact-form-card .form-title{font-size:24px;font-weight:900;letter-spacing:-.035em;color:#1E1E1E;}
  .contact-form-card .form-sub{font-size:13.5px;color:#6F6A62;font-weight:600;margin-bottom:24px;}
  .contact-form-card .flbl{color:#6F6A62;}
  .contact-form-card .finput,.contact-form-card .ftxt{background:#FFFFFF;border-color:#E5E5E1;border-radius:9px;min-height:46px;color:#1F1F1F;}
  .contact-form-card .ftxt{min-height:118px;}
  .contact-form-card .fsubmit{min-height:48px;border-radius:9px;box-shadow:0 10px 24px color-mix(in srgb,var(--acc) 28%,transparent);}
  .form-trust-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:13px;color:var(--t3);font-size:11.5px;font-weight:700;}

  .contact-map-section{padding:0 0 92px;background:linear-gradient(180deg,#fbfaf7 0%,var(--off) 100%);}
  .contact-map-shell{
    max-width:1120px;margin:0 auto;display:grid;grid-template-columns:360px 1fr;
    min-height:460px;background:#fff;border:1px solid var(--bd);border-radius:22px;overflow:hidden;
    box-shadow:0 28px 80px rgba(0,0,0,.11);
  }
  .contact-map-info{padding:46px 42px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(135deg,#fff 0%,color-mix(in srgb,var(--acc) 5%,#fff) 100%);}
  .contact-map-address{font-size:15px;color:var(--t2);line-height:1.65;font-weight:700;margin:10px 0 18px;}
  .contact-map-highlights{display:grid;gap:10px;margin:6px 0 22px;}
  .contact-map-highlights div{display:flex;align-items:center;gap:9px;color:var(--t2);font-weight:800;font-size:13px;}
  .contact-map-highlights span{width:9px;height:9px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 5px color-mix(in srgb,var(--acc) 12%,transparent);flex:0 0 9px;}
  .contact-map-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
  .contact-map-pills a{padding:8px 12px;border-radius:999px;background:var(--off);border:1px solid var(--bd);font-family:var(--f-title);font-size:12.5px;font-weight:800;color:var(--t1);transition:all .15s;}
  .contact-map-pills a:hover{background:var(--acc);border-color:var(--acc);color:#fff;transform:translateY(-1px);}
  .contact-map-frame{position:relative;min-height:460px;background:linear-gradient(135deg,#fbfaf7 0%,var(--off) 100%);overflow:hidden;display:flex;align-items:center;justify-content:center;padding:32px;}
  /* Carte France SVG — statique, premium */
  .france-map{width:100%;height:auto;max-height:420px;display:block}
  .france-map .dept{
    fill:#ECEAE5;stroke:#fff;stroke-width:1.2;
    transition:fill .2s ease;
  }
  .france-map .dept:hover{fill:#DDD9D1}
  /* Les départements actifs (colorés via <style> injecté) ne réagissent pas au hover gris */
  .france-map-legend{position:absolute;left:22px;bottom:22px;z-index:5;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:14px 16px;box-shadow:0 14px 34px rgba(0,0,0,.12);display:flex;flex-direction:column;gap:8px;}
  .fml-row{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:var(--t2);font-family:var(--f-title);}
  .fml-dot{width:12px;height:12px;border-radius:4px;flex-shrink:0;}
  .fml-dot.principal{background:var(--acc);}
  .fml-dot.couvert{background:color-mix(in srgb,var(--acc) 20%,#fff);border:1px solid color-mix(in srgb,var(--acc) 35%,#fff);}
  .contact-map-overlay{position:absolute;left:22px;top:22px;z-index:5;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:13px 16px;box-shadow:0 14px 34px rgba(0,0,0,.12);}
  .contact-map-overlay strong{display:block;font-family:var(--f-title);font-size:16px;font-weight:900;color:var(--t1);}
  .contact-map-overlay span{display:block;font-size:12.5px;color:var(--t2);font-weight:700;margin-top:2px;}

  @media(max-width:980px){
    .contact-premium-layout{grid-template-columns:1fr;gap:34px;max-width:680px;}
    .contact-form-wrap{position:static;}
    .contact-map-shell{grid-template-columns:1fr;max-width:680px;}
    .contact-map-frame{min-height:340px;}
    .france-map{width:100%;height:auto;max-height:320px;}
  }
  @media(max-width:600px){
    .contact-premium-sec{padding:58px 0 66px;}
    .contact-form-card{padding:24px;border-radius:16px;}
    .contact-card{padding:14px;}
    .contact-map-section{padding-bottom:58px;}
    .contact-map-info{padding:30px 22px;}
    .contact-map-shell{border-radius:16px;}
    .contact-map-frame{min-height:280px;padding:20px;}
    .france-map{max-height:260px;}
    .contact-map-overlay{left:14px;bottom:14px;right:14px;}
  }


  /* ══════════════ HOME PREMIUM OVERRIDES ══════════════ */
  .hero-content{max-width:820px}
  .hero-h1{max-width:820px}

  .srv-grid{gap:18px;align-items:stretch}
  .srv-grid-rest{gap:14px}
  .srv-01{min-height:360px;padding:36px;border-radius:20px;box-shadow:0 24px 60px rgba(0,0,0,.10)}
  .srv-01-title{font-size:28px}
  .srv-01-desc{font-size:14px;max-width:34ch}
  .srv-card{min-height:168px;padding:18px;border-radius:14px}
  .srv-desc{font-size:13px}
  .srv-cta{margin-top:16px}

  .process-grid{gap:18px;grid-template-columns:repeat(4,1fr)}
  .process-grid::before{display:none}
  .process-step{background:#fff;border:1px solid var(--bd);border-radius:18px;padding:28px 20px 24px;box-shadow:var(--shadow-sm)}
  .process-step:hover{border-color:color-mix(in srgb,var(--acc) 28%,var(--bd));box-shadow:0 18px 44px color-mix(in srgb,var(--acc) 12%,rgba(0,0,0,.06))}
  .process-num{margin-bottom:18px;box-shadow:none}
  .process-desc{max-width:28ch}
  @media(max-width:760px){.process-grid{grid-template-columns:1fr 1fr;gap:14px}.process-step{padding:22px 16px}}

  .why-left{padding-top:12px}

  .real-grid{grid-template-columns:1.15fr 1fr 1fr;grid-template-rows:320px 220px;gap:14px}
  .rg{border:1px solid rgba(0,0,0,.06);box-shadow:0 16px 38px rgba(0,0,0,.08)}
  .rg-info{padding:24px}
  .rg-title{font-size:17px}
  .rg-meta{font-size:12.5px}
  .rg-tag{box-shadow:0 6px 18px color-mix(in srgb,var(--acc) 28%,transparent)}

  .zones-head{padding-bottom:28px}
  .zones-kpis{max-width:880px;margin:0 auto 28px;background:#fff;box-shadow:0 18px 50px rgba(0,0,0,.06)}
  .zones-pills{max-width:940px;margin:0 auto 20px}
  .zones-note{font-size:14px}
  .map-section{padding:40px 40px 100px;background:linear-gradient(180deg,var(--off) 0%,#f9f8f5 100%)}
  .map-section-inner{max-width:1240px;margin:0 auto;background:#fff;border:1px solid var(--bd);border-radius:24px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.09)}
  .map-info{padding:54px 46px;background:linear-gradient(135deg,#fff 0%,color-mix(in srgb,var(--acc) 6%,#fff) 100%)}
  .map-canvas{min-height:480px;display:flex;align-items:center;justify-content:center;padding:32px;background:#fff}
  @media(max-width:900px){.map-section{padding:32px 16px 70px}.map-section-inner{border-radius:18px}.map-canvas{min-height:auto;padding:24px}}

  .faq-layout{gap:54px;align-items:start}
  .faq-layout > div:first-child{position:sticky;top:110px}
  .faq-list{background:#fff;border:1px solid var(--bd);border-radius:20px;padding:0 24px;box-shadow:var(--shadow-sm)}
  .faq-row summary{padding:22px 0}
  .faq-a{padding-right:18px}
  @media(max-width:900px){.faq-layout > div:first-child{position:static}.faq-list{padding:0 18px}}

  .home-contact-premium{position:relative;overflow:hidden}
  .home-contact-premium::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at left top,color-mix(in srgb,var(--acc) 12%,transparent) 0%,transparent 38%),radial-gradient(ellipse at right bottom,color-mix(in srgb,var(--acc) 10%,transparent) 0%,transparent 40%);pointer-events:none}
  .home-contact-layout{grid-template-columns:1fr 520px;gap:72px;position:relative;z-index:1}
  .home-contact-left{padding-top:10px}
  .home-contact-highlights{display:grid;gap:12px;margin-bottom:28px}
  .home-contact-point{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:14px;background:var(--ink3);border:1px solid rgba(255,255,255,.07)}
  .home-contact-point span{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--acc) 18%,transparent);color:var(--acc);font-weight:900;flex-shrink:0}
  .home-contact-point strong{display:block;font-family:var(--f-title);font-size:14px;color:#fff;margin-bottom:2px}
  .home-contact-point small{display:block;color:var(--w2);font-size:12.5px;line-height:1.55}
  .home-contact-infos{gap:18px}
  /* Le formulaire suit le défilement (comme le panneau de la vitrine
     services) : il reste sous les yeux pendant qu'on parcourt la colonne
     d'informations. align-self:start est requis, sinon la grille étire la
     carte sur toute la hauteur et le sticky n'a plus de course. */
  .home-contact-layout{align-items:start}
  .home-contact-form{margin-top:-12px;position:sticky;top:96px;align-self:start}
  @media(max-width:980px){.home-contact-layout{grid-template-columns:1fr;gap:36px}.home-contact-form{margin-top:0;position:static}}

  .home-cta-urgent .cta-h{max-width:none;font-size:34px}
  .home-cta-urgent .cta-inner{gap:40px}

  @media(max-width:980px){
    .srv-grid{grid-template-columns:1fr}
    .real-grid{grid-template-columns:1fr 1fr;grid-template-rows:220px 180px 180px}
  }
  @media(max-width:560px){
    .srv-01{min-height:280px;padding:26px}
    .srv-01-title{font-size:24px}
    .srv-grid-rest{grid-template-columns:1fr 1fr}
    /* Les deux stats restent côte à côte (cf. règle 600px plus haut) */
    .real-grid{grid-template-columns:1fr;grid-template-rows:repeat(3,220px)}
    .faq-list{border-radius:16px}
  }


  /* ══════════════ HOME REFINEMENTS V2 ══════════════ */
  .srv-grid-uniform{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;align-items:stretch}
  /* Nombre de colonnes calculé côté template selon le nombre de services,
     pour équilibrer les rangées (ex. 6 services = 3+3 plutôt que 5+1). */
  .srv-grid-uniform.srv-cols-1{grid-template-columns:minmax(0,360px);justify-content:center}
  .srv-grid-uniform.srv-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .srv-grid-uniform.srv-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .srv-grid-uniform.srv-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .srv-grid-uniform.srv-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}
  .srv-card-uniform{min-height:210px;padding:22px 18px;border-radius:16px;display:flex}
  .srv-card-uniform .srv-icon{width:46px;height:46px;margin-bottom:18px}
  .srv-card-uniform .srv-title{font-size:16px;line-height:1.2;margin-bottom:10px}
  .srv-card-uniform .srv-desc{font-size:13px;line-height:1.65}
  @media(max-width:600px){
    .srv-grid-uniform{grid-template-columns:1fr 1fr;gap:10px}
    .srv-card-uniform{min-height:160px;padding:16px 14px}
    .srv-card-uniform .srv-desc{display:none}
  }
  @media(max-width:340px){.srv-grid-uniform.srv-grid-uniform{grid-template-columns:1fr}}
  .srv-card-uniform .srv-cta{margin-top:18px}
  @media(max-width:1100px){.srv-grid-uniform.srv-grid-uniform{grid-template-columns:repeat(3,minmax(0,1fr))}}
  @media(max-width:780px){.srv-grid-uniform.srv-grid-uniform{grid-template-columns:repeat(2,minmax(0,1fr))}.srv-card-uniform{min-height:210px}}
  @media(max-width:520px){.srv-grid-uniform.srv-grid-uniform{grid-template-columns:1fr 1fr;gap:12px}.srv-card-uniform{padding:16px 14px;min-height:180px}.srv-card-uniform .srv-title{font-size:15px}.srv-card-uniform .srv-desc{font-size:12px;line-height:1.5}}

  .real-simple-section{padding-top:88px}
  /* Galerie simple : 6 photos, grille 3×2, sans texte */
  .real-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
  .real-photo{
    display:block;aspect-ratio:4/3;border-radius:14px;overflow:hidden;
    border:1px solid var(--bd);box-shadow:var(--shadow-sm);
    background:linear-gradient(135deg,#2e251f 0%,#403129 55%,#231d19 100%);
    position:relative;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)
  }
  .real-photo::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 1px,transparent 1px,transparent 22px)}
  .real-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1;transition:transform .4s var(--ease-out)}
  .real-photo:hover img{transform:scale(1.06)}
  .real-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;min-height:55%;display:flex;align-items:flex-end;padding:14px 16px;color:#fff;font-family:var(--f-title);font-weight:700;font-size:13px;background:linear-gradient(to top,rgba(0,0,0,.62) 0%,rgba(0,0,0,.15) 60%,transparent 100%);opacity:0;transform:translateY(6px);transition:opacity .22s ease,transform .22s ease}
  .real-photo:hover .real-cap{opacity:1;transform:translateY(0)}
  .real-photo:nth-child(2){background:linear-gradient(135deg,#1f2d39 0%,#30465b 55%,#1c2631 100%)}
  .real-photo:nth-child(3){background:linear-gradient(135deg,#243123 0%,#2f4a33 55%,#1c291e 100%)}
  .real-photo:nth-child(4){background:linear-gradient(135deg,#352c21 0%,#4a4030 55%,#2a241d 100%)}
  .real-photo:nth-child(5){background:linear-gradient(135deg,#2a2533 0%,#3d3550 55%,#221d2c 100%)}
  .real-photo:nth-child(6){background:linear-gradient(135deg,#2e2420 0%,#473329 55%,#241c18 100%)}
  .real-photo:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
  @media(max-width:760px){.real-gallery{grid-template-columns:1fr 1fr;gap:12px}}
  @media(max-width:440px){.real-gallery{grid-template-columns:1fr 1fr;gap:8px}}

  .zones-head .lead{max-width:620px}
  .zones-note{max-width:720px;margin:0 auto}

  .avis-top{align-items:start}
  .avis-resume{max-width:66ch}

  .faq-list .faq-row:last-child{border-bottom:none}

  .home-contact-highlights{grid-template-columns:1fr}
  .home-contact-point{padding:13px 15px}
  .home-contact-left .lead{max-width:52ch}

  .home-cta-urgent .cta-inner{align-items:center}
  .home-cta-urgent .cta-proofs{margin-top:16px}


  /* ══════════════ MÉGA-MENU (Nos Services) ══════════════
     Pleine largeur (position:static + left/right:0), flex, fond blanc.
     Icônes neutres par défaut, accent au survol. CTA promo aligné en HAUT.
     MASQUÉ par défaut (display:none) — CRITIQUE : sinon il reste affiché en permanence. */
  .has-drop.has-mega{position:static}
  .nav-mega{
    position:absolute;top:calc(100% + 6px);left:40px;right:40px;z-index:200;display:none;gap:16px;max-width:1240px;margin-inline:auto;
    padding:18px;background:#fff;border:1px solid var(--bd);border-radius:16px;box-shadow:0 22px 55px rgba(0,0,0,.17)}
  .has-mega:hover .nav-mega,.has-mega:focus-within .nav-mega,.nav-mega:hover{display:flex}
  .nav-mega::before{content:"";position:absolute;top:-48px;left:0;right:0;height:48px}
  .mega-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:3px}
  .mega-col-title{font-family:var(--f-title);font-weight:800;font-size:.72rem;text-transform:uppercase;
    letter-spacing:.06em;color:var(--acc);padding:2px 8px 9px;border-bottom:2px solid var(--acc);margin-bottom:7px}
  .mega-card{display:flex;align-items:flex-start;gap:12px;padding:10px 9px;border-radius:11px;text-decoration:none;transition:background .14s}
  .mega-card:hover{background:var(--bg2,#f5f6f8)}
  .mega-ico{flex-shrink:0;width:40px;height:40px;border-radius:10px;background:var(--bg2,#f1f2f5);
    display:flex;align-items:center;justify-content:center;color:var(--ink);transition:.14s;margin-top:1px}
  .mega-ico svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .mega-card:hover .mega-ico{background:var(--acc);color:var(--btn-text)}
  .mega-txt{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}
  .mega-name{font-family:var(--f-title);font-weight:700;font-size:.88rem;color:var(--ink);line-height:1.22}
  .mega-desc{font-size:.76rem;color:var(--t3);line-height:1.35}
  .mega-arrow{flex-shrink:0;color:var(--acc);opacity:0;transform:translateX(-3px);transition:.14s;font-weight:700;margin-top:2px}
  .mega-card:hover .mega-arrow{opacity:1;transform:none}
  .mega-urgence{position:relative;overflow:hidden;width:250px;flex-shrink:0;align-self:stretch;
    background:var(--ink);border-radius:13px;color:#fff}
  .mega-urg-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:.9;z-index:0}
  .mega-urgence::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,
    var(--ink) 0%,
    color-mix(in srgb,var(--ink) 88%,transparent) 42%,
    color-mix(in srgb,var(--ink) 46%,transparent) 100%)}
  .mega-urg-inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;padding:20px}
  .mega-urg-badge{background:var(--acc);color:var(--btn-text);font-size:.68rem;font-weight:800;
    text-transform:uppercase;letter-spacing:.04em;padding:5px 11px;border-radius:20px}
  .mega-urg-title{font-family:var(--f-title);font-weight:800;font-size:1.15rem;line-height:1.15;margin:13px 0 9px}
  .mega-urg-title::first-letter{text-transform:uppercase}
  .mega-urg-sub{font-size:.79rem;line-height:1.5;color:rgba(255,255,255,.82);margin-bottom:16px}
  .mega-urg-cta{display:block;width:100%;box-sizing:border-box;text-align:center;background:var(--acc);
    color:var(--btn-text);font-family:var(--f-title);font-weight:800;font-size:.85rem;padding:12px;border-radius:10px;text-decoration:none;margin-bottom:9px;transition:filter .15s}
  .mega-urg-cta:hover{filter:brightness(.94)}
  .mega-urg-tel{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;box-sizing:border-box;
    background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;font-family:var(--f-title);
    font-weight:700;font-size:.83rem;padding:11px;border-radius:10px;text-decoration:none;transition:background .15s}
  .mega-urg-tel:hover{background:rgba(255,255,255,.08)}
  .mega-urg-tel .btn-ico{width:15px;height:15px;fill:currentColor}
  /* ── Méga-menu Zones : lignes typographiques + badge km ──
     Pas d'icône répétée (12 épingles identiques = monotone) : le nom porte,
     le badge kilomètres informe, la base est marquée en accent. */
  .mega-zones-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:4px 6px}
  .mega-zones-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:2px 8px 9px;border-bottom:2px solid var(--acc);margin-bottom:8px}
  .mega-zones-head span{font-family:var(--f-title);font-weight:800;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--acc)}
  .mega-zones-head em{font-style:normal;font-family:var(--f-title);font-size:.72rem;font-weight:700;color:var(--t3)}
  .mega-zones-grid{columns:3;column-gap:30px}
  .mega-ville{display:flex;align-items:center;gap:11px;padding:8px;border-radius:9px;text-decoration:none;break-inside:avoid;transition:background .14s}
  .mega-ville:hover{background:var(--bg2,#f5f6f8)}
  /* Épingle discrète (30px, pas les pavés de 40) — accent au survol, la base
     reste allumée en permanence. */
  .mega-ville-ico{flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--bg2,#f1f2f5);display:flex;align-items:center;justify-content:center;color:var(--t3);transition:.14s}
  .mega-ville-ico svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .mega-ville:hover .mega-ville-ico{background:var(--acc);color:var(--btn-text,#fff)}
  .mega-ville-ico.base{background:var(--acc);color:var(--btn-text,#fff)}
  .mega-ville-nom{font-family:var(--f-title);font-weight:700;font-size:.88rem;color:var(--ink);transition:color .14s;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
  .mega-ville:hover .mega-ville-nom{color:var(--acc)}
  .mega-ville-km{font-family:var(--f-title);font-size:.68rem;font-weight:800;color:var(--t3);background:var(--bg2,#f1f2f5);border-radius:20px;padding:3px 9px;flex-shrink:0;white-space:nowrap}
  .mega-ville-km.base{background:var(--acc);color:var(--btn-text,#fff)}
  @media(max-width:1024px){.nav-mega{display:none !important}}


  /* ══════════════ POP-UP RAPPEL (exit-intent) ══════════════
     MASQUÉ par défaut — CRITIQUE. Affiché via .open (ajouté en JS). */
  .ps-pop{display:none;position:fixed;inset:0;z-index:1000;align-items:center;justify-content:center;padding:20px}
  .ps-pop.open{display:flex}
  .ps-pop-overlay{position:absolute;inset:0;background:rgba(10,9,8,.62);backdrop-filter:blur(3px)}
  .ps-pop-card{position:relative;z-index:1;display:grid;grid-template-columns:230px 1fr;width:min(720px,100%);background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 40px 100px rgba(0,0,0,.4)}
  .ps-pop-x{position:absolute;top:12px;right:14px;z-index:3;background:rgba(0,0,0,.28);border:none;color:#fff;cursor:pointer;width:30px;height:30px;border-radius:50%;font-size:20px;line-height:1}
  .ps-pop-visual{position:relative;background:var(--ink);display:flex;align-items:center;justify-content:center;min-height:200px}
  .ps-pop-visual > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
  .ps-pop-logo{position:relative;z-index:2;max-width:72%;max-height:78px;width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 6px 18px rgba(0,0,0,.5))}
  .ps-pop-body{padding:28px 26px}
  .ps-pop-title{font-family:var(--f-title);font-weight:800;font-size:21px;color:var(--t1);line-height:1.2;margin-bottom:8px}
  .ps-pop-sub{font-size:13.5px;color:var(--t2);line-height:1.6;margin:0 0 18px}
  .ps-pop-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
  .ps-pop-fld{display:flex;flex-direction:column;gap:5px}
  .ps-pop-fld span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--t2);font-family:var(--f-title)}
  .ps-pop-fld input{background:var(--off,#faf7f2);border:1.5px solid var(--bd);border-radius:8px;padding:11px 13px;font-size:14px;color:var(--t1);font-family:var(--f-body);width:100%}
  .ps-pop-fld input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 15%,transparent)}
  .ps-pop-submit{width:100%;background:var(--acc);color:#fff;border:none;cursor:pointer;font-family:var(--f-title);font-weight:800;font-size:14.5px;padding:13px;border-radius:8px;transition:background .12s;box-shadow:0 4px 16px color-mix(in srgb,var(--acc) 32%,transparent)}
  .ps-pop-submit:hover{background:var(--acc2)}
  @media(max-width:560px){
    .ps-pop-card{grid-template-columns:1fr}
    .ps-pop-visual{min-height:120px}
    .ps-pop-row{grid-template-columns:1fr}
    .ps-pop-body{padding:22px 20px}
  }


  /* ══════════════ BANDEAU COOKIES ══════════════
     MASQUÉ par défaut — affiché via .show (ajouté en JS si pas de consentement). */
  .ps-cookie{display:none;position:fixed;left:16px;right:16px;bottom:16px;z-index:900;max-width:560px;margin:0 auto;background:#fff;border:1px solid var(--bd);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.18);padding:18px 20px;flex-direction:column;gap:14px}
  .ps-cookie.show{display:flex}
  .ps-cookie-txt strong{font-family:var(--f-title);font-weight:800;font-size:14px;color:var(--t1);display:block;margin-bottom:5px}
  .ps-cookie-txt p{font-size:12.5px;color:var(--t2);line-height:1.55;margin:0}
  .ps-cookie-txt a{color:var(--acc);font-weight:700;text-decoration:underline}
  .ps-cookie-btns{display:flex;gap:10px;justify-content:flex-end}
  .ps-cookie-refuse,.ps-cookie-accept{font-family:var(--f-title);font-weight:700;font-size:13px;cursor:pointer;padding:10px 18px;border-radius:8px;transition:all .12s}
  .ps-cookie-refuse{background:transparent;border:1.5px solid var(--bd);color:var(--t2)}
  .ps-cookie-refuse:hover{border-color:var(--t3);color:var(--t1)}
  .ps-cookie-accept{background:var(--acc);border:1.5px solid var(--acc);color:#fff}
  .ps-cookie-accept:hover{background:var(--acc2);border-color:var(--acc2)}
  @media(min-width:520px){.ps-cookie{flex-direction:row;align-items:center;gap:18px;max-width:640px}.ps-cookie-btns{flex-shrink:0}}

  /* Defilement continu des avis (fond clair). Classe .is-live posee par le
     script une fois la liste dupliquee : sans JS, la bande reste scrollable. */
  .avis-defile{overflow:hidden;position:relative;margin-top:34px}
  .avis-defile::before,.avis-defile::after{content:'';position:absolute;top:0;bottom:0;width:64px;z-index:2;pointer-events:none}
  .avis-defile::before{left:0;background:linear-gradient(to right,var(--fond-clair),transparent)}
  .avis-defile::after{right:0;background:linear-gradient(to left,var(--fond-clair),transparent)}
  .avis-defile .avis-cards{display:flex;flex-wrap:nowrap;gap:18px;width:max-content;grid-template-columns:none}
  .avis-defile .avis-card{width:330px;flex-shrink:0}
  .avis-defile:not(.is-live){overflow-x:auto;scrollbar-width:none}
  .avis-defile.is-live .avis-cards{animation:avis-def 52s linear infinite}
  .avis-defile.is-live:hover .avis-cards{animation-play-state:paused}
  @keyframes avis-def{from{transform:translateX(0)}to{transform:translateX(-50%)}}
  @media (prefers-reduced-motion:reduce){.avis-defile.is-live .avis-cards{animation:none}}
  /* ── Bloc 1 : entrees au defilement ──────────────────────────────
     La classe .rv est posee par le script, jamais par le HTML : sans JS
     (et pour Googlebot), rien n'est masque. Le hero n'est pas concerne,
     il doit s'afficher immediatement (LCP). */
  .rv{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1)}
  .rv.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}
  /* ── Bloc 2 : hero vivant (CSS seul) ─────────────────────────────
     Dezoom cinematique a l'arrivee (1.14 → 1.02, une seule fois) : la photo
     se pose, plus percutant que le zoom infini. Une video hero bouge deja,
     donc le selecteur ne cible que l'image. */
  img.hero-photo{transform:scale(1.14);animation:ps-dezoom 2.6s cubic-bezier(.22,.9,.24,1) forwards;will-change:transform}
  @keyframes ps-dezoom{to{transform:scale(1.02)}}

  .hero-kicker,.hero-h1,.hero-sub,.hero-ctas{
    opacity:0;animation:ps-hero-up .85s cubic-bezier(.2,.8,.2,1) both}
  .hero-kicker{animation-delay:.04s}
  .hero-h1{animation-delay:.12s}
  .hero-sub{animation-delay:.30s}
  .hero-ctas{animation-delay:.52s}
  @keyframes ps-hero-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

  /* La ville arrive juste apres le metier : titre en deux temps. */
  .hero-h1 em{opacity:0;animation:ps-hero-up .8s cubic-bezier(.2,.8,.2,1) .28s both}

  /* Le bandeau d'honneurs entre apres le contenu : filet, puis chaque
     preuve en cascade. */
  .hh-filet,.hh-item{opacity:0;animation:ps-hero-up .8s cubic-bezier(.2,.8,.2,1) both}
  .hh-filet{animation-delay:.9s}
  .hh-item:nth-child(1){animation-delay:1.0s}
  .hh-item:nth-child(2){animation-delay:1.12s}
  .hh-item:nth-child(3){animation-delay:1.24s}
  .hh-item:nth-child(4){animation-delay:1.36s}
  .hh-item:nth-child(5){animation-delay:1.48s}
  .hh-item:nth-child(6){animation-delay:1.6s}
  .hh-item:nth-child(7){animation-delay:1.72s}

  @media (prefers-reduced-motion:reduce){
    img.hero-photo,.hero-kicker,.hero-h1,.hero-h1 em,.hero-sub,
    .hero-ctas,.hh-filet,.hh-item{animation:none;opacity:1;transform:none}
  }
  /* ── Bloc 2b : la ville se remplit ───────────────────────────────
     Le nom de la commune arrive en contour puis se remplit de gauche a
     droite. @supports protege les navigateurs sans background-clip:text :
     ils gardent simplement le texte plein, jamais de texte invisible. */
  @supports ((-webkit-background-clip:text) or (background-clip:text)){
    .hero-h1 em{
      color:transparent;
      -webkit-text-stroke:1.5px var(--acc);
      background-image:linear-gradient(var(--acc),var(--acc));
      background-repeat:no-repeat;background-size:0% 100%;background-position:0 0;
      -webkit-background-clip:text;background-clip:text;
      animation:ps-hero-up .8s cubic-bezier(.2,.8,.2,1) .28s both,
                ps-remplir 1.1s cubic-bezier(.6,.05,.2,1) .62s forwards;
    }
    @keyframes ps-remplir{from{background-size:0% 100%}to{background-size:100% 100%}}
  }

  /* Entree plus franche : le mouvement doit se voir. */
  .hero-kicker,.hero-h1,.hero-sub,.hero-ctas{
    animation-duration:.95s}
  @keyframes ps-hero-up{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
  .hero-sub{animation-delay:.34s}
  .hero-ctas{animation-delay:.60s}

  @media (prefers-reduced-motion:reduce){
    .hero-h1 em{color:var(--acc);-webkit-text-stroke:0;background:none;animation:none}
  }
  /* ── Bloc 3 : la page reagit ─────────────────────────────────────
     Numeros du parcours qui s'allument en sequence (classe posee par le
     script), et micro-interactions au survol. Tout est en transform et
     opacity : aucun reflow, animation compositee par le GPU. */
  .process-step.ps-on .process-num{background:var(--acc);border-color:var(--acc);color:#fff;
    transform:translateY(-3px) scale(1.06);box-shadow:0 10px 26px color-mix(in srgb,var(--acc) 28%,transparent)}

  .srv-card{transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s ease,border-color .22s ease}
  .srv-card:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--acc) 45%,transparent);
    box-shadow:0 22px 50px color-mix(in srgb,var(--acc) 16%,transparent)}
  .srv-icon{transition:transform .22s cubic-bezier(.2,.8,.2,1),background .22s ease,color .22s ease}
  .srv-card:hover .srv-icon{transform:rotate(-6deg) scale(1.08)}

  .real-photo{overflow:hidden}
  .real-photo img{transition:transform .55s cubic-bezier(.2,.8,.2,1)}
  .real-photo:hover img{transform:scale(1.06)}

  .link-arr{display:inline-flex;align-items:center;gap:8px;transition:gap .2s ease}
  .link-arr:hover{gap:14px}

  .why-item{transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s ease}
  .why-item:hover{transform:translateX(5px)}

  @media (prefers-reduced-motion:reduce){
    .srv-card,.srv-card:hover,.srv-icon,.real-photo img,.link-arr,.why-item{transition:none;transform:none}
  }
  /* ── Bloc 4 : hero au niveau du prototype ────────────────────────
     Badge d'urgence en pilule pulsante, titre a echelle fluide, CTA
     secondaire en contour. Les couleurs derivent toutes de --acc :
     la charte du client est respectee, quelle qu'elle soit. */
  .hero-kicker-urg{
    background:color-mix(in srgb,var(--acc) 16%,transparent);
    border:1px solid color-mix(in srgb,var(--acc) 55%,transparent);
    color:color-mix(in srgb,var(--acc) 28%,#fff);
    padding:9px 18px;border-radius:99px;font-size:12.5px;letter-spacing:.14em;
    animation:ps-hero-up .85s cubic-bezier(.2,.8,.2,1) .04s both, ps-pulse 2.8s ease-out .9s infinite}
  .hk-dot{width:8px;height:8px;border-radius:50%;background:var(--acc);flex-shrink:0}
  @keyframes ps-pulse{
    0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--acc) 42%,transparent)}
    55%{box-shadow:0 0 0 14px transparent}}

  /* Echelle fluide : remplace la taille fixe de 62px et les paliers mobiles. */
  .hero-h1{font-size:clamp(40px,6.6vw,92px);letter-spacing:-.035em;line-height:1.02}

  .hero-ctas .btn{border-radius:12px}
  .hero-ctas .btn-wh{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.45)}
  .hero-ctas .btn-wh:hover{background:#fff;color:var(--ink);border-color:#fff}

  @media (prefers-reduced-motion:reduce){.hero-kicker-urg{animation:none}}
  /* ── Bloc 5 : bande defilante (separateur de sections) ───────────
     DROITE — l'inclinaison faisait food-truck, pas artisan premium
     (retour Benjamin 2026-08). Le contenu est double dans le HTML : la
     boucle a -50% est ainsi sans couture. */
  .ps-bande{background:var(--acc);color:var(--btn-text,#fff);overflow:hidden;
    padding:14px 0;margin:0;position:relative;z-index:5}
  .ps-bande-in{display:flex;gap:48px;width:max-content;
    font-family:var(--f-title);font-weight:800;font-size:14px;
    letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;
    animation:ps-bande-mq 30s linear infinite}
  .ps-bande-in span{display:flex;align-items:center;gap:48px}
  .ps-bande-in b{opacity:.45;font-weight:400}
  @keyframes ps-bande-mq{to{transform:translateX(-50%)}}
  @media(max-width:600px){.ps-bande{padding:11px 0}.ps-bande-in{font-size:12px;gap:32px}.ps-bande-in span{gap:32px}}
  @media (prefers-reduced-motion:reduce){.ps-bande-in{animation:none}}
  /* ── Bloc 6 : hero pleine hauteur ────────────────────────────────
     100svh plutot que 100vh : sur mobile, svh exclut la barre d'URL,
     donc pas de saut quand elle se retracte. La ligne 100vh reste en
     repli pour les navigateurs qui ignorent svh.
     C'est un min-height : un hero au contenu plus haut grandit encore,
     rien n'est jamais tronque. */
  .hero{min-height:100vh;min-height:100svh}

  /* Le contenu etait 30px trop bas : la marge haute (degagement du header
     fixe) etait bien plus grande que la basse, et le centrage flex portait
     sur le bloc entier, padding compris. On reequilibre. */
  .hero-inner{padding-top:150px;padding-bottom:125px}
  @media(max-width:900px){.hero-inner{padding-top:128px;padding-bottom:104px}}
  @media(max-width:600px){.hero-inner{padding-top:112px;padding-bottom:88px}}
  /* ── Bloc 8 : plus de bande sous le hero (elle doublait les honneurs) —
     le hero occupe le premier ecran en entier. ── */
  :root{--ps-bande-offset:0px}
  @media(max-width:600px){:root{--ps-bande-offset:0px}}
  .hero{
    min-height:calc(100vh - var(--ps-bande-offset));
    min-height:calc(100svh - var(--ps-bande-offset));
  }
  /* ── Bloc 9 : « Comment ca marche » en timeline ──────────────────
     On retire le fond carte pour laisser reapparaitre le trait, et on
     ajoute un second trait (::after) qui se remplit a l'arrivee a
     l'ecran. Le halo autour du numero reprend la couleur de la section :
     c'est lui qui « coupe » le trait proprement derriere chaque cercle. */
  .process-grid{gap:0;grid-template-columns:repeat(4,1fr)}
  .process-step{background:transparent;border:none;box-shadow:none;padding:0 18px}
  .process-step:hover{border-color:transparent;box-shadow:none}

  .process-grid::before{display:block;content:'';position:absolute;
    top:28px;left:12.5%;right:12.5%;height:2px;border-radius:2px;
    background:var(--bd);z-index:0}
  .process-grid::after{content:'';position:absolute;
    top:28px;left:12.5%;width:0;height:2px;border-radius:2px;
    background:var(--acc);z-index:1;
    transition:width 1.9s cubic-bezier(.55,.05,.2,1)}
  .process-grid.ps-go::after{width:75%}

  .process-num{background:var(--white,#fff);box-shadow:0 0 0 7px var(--fond-clair);
    margin-bottom:20px;z-index:2}

  @media(max-width:760px){
    .process-grid{gap:28px}
    .process-grid::before,.process-grid::after{display:none}
    .process-step{padding:0 8px}
  }
  @media (prefers-reduced-motion:reduce){.process-grid::after{transition:none;width:75%}}
  /* Correctif bloc 9 : les etapes passent devant les deux traits.
     .process-step cree son propre contexte d'empilement (position:relative),
     donc le z-index du numero ne suffit pas : c'est l'etape entiere qui doit
     etre au-dessus. Traits en 0 et 1, etapes en 3. */
  .process-step{z-index:3}
  /* ── Titres facon prototype ──────────────────────────────────────
     Echelle fluide au lieu de 40px fixes, graisse 800 (900 tasse les
     contreformes a grande taille), et surtitre precede d'un tiret
     colore. inline-flex plutot que flex : le surtitre reste centre
     dans les sections centrees. */
  .sh{font-weight:800;letter-spacing:-.028em;line-height:1.06}
  .sh-lg{font-size:clamp(32px,4.1vw,56px)}
  .sh-md{font-size:clamp(27px,3.1vw,42px)}
  .sh em{font-style:italic;color:var(--acc)}

  .eyebrow{display:inline-flex;align-items:center;gap:12px;
    font-size:11.5px;letter-spacing:.22em;margin-bottom:18px}
  .eyebrow::before{content:'';width:34px;height:2px;background:var(--acc);
    flex-shrink:0;border-radius:2px}
  /* Tous les titres de sections a la meme taille : .sh-lg et .sh-md ne se
     distinguent plus. .sh-sm reste a l'ecart, il sert aux encarts (carte). */
  .sh-lg,.sh-md{font-size:clamp(30px,3.8vw,50px)}
  /* Hierarchie des titres, en trois niveaux nets :
     - titres de SECTION (sh-lg, sh-md sur un h2) : identiques entre eux
     - sous-titre de section (h3) : nettement plus petit, il depend d'une section
     - titre dans un encart (sh-sm) : plus petit encore, la carte est etroite */
  .sh-lg,.sh-md{font-size:clamp(30px,3.8vw,50px)}
  h3.sh{font-size:clamp(23px,2.3vw,30px)}
  .sh-sm{font-size:clamp(21px,2vw,27px)}
  /* ── Section « Pourquoi nous choisir » : encart infos pratiques ───
     Horaires reels du CRM, etat ouvert/ferme calcule au chargement,
     et deux appels a l'action cote a cote. */
  .infos-card{margin-top:28px;background:var(--white,#fff);border:1px solid var(--bd);
    border-radius:var(--radius-lg);padding:22px 24px;box-shadow:var(--shadow-sm)}
  .infos-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding-bottom:14px;margin-bottom:6px;border-bottom:1px solid var(--bd)}
  .infos-titre{font-family:var(--f-title);font-weight:800;font-size:14px;color:var(--t1);
    letter-spacing:.01em}
  .infos-etat{font-family:var(--f-title);font-size:11.5px;font-weight:700;
    padding:5px 11px;border-radius:99px;letter-spacing:.04em;white-space:nowrap}
  .infos-etat.est-ouvert{background:color-mix(in srgb,#1D9E75 14%,transparent);color:#12795a}
  .infos-etat.est-ferme{background:color-mix(in srgb,var(--t3) 14%,transparent);color:var(--t2)}
  .infos-jours{list-style:none;margin:0;padding:0}
  .infos-jour{display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:7px 0;font-size:13.5px;color:var(--t2);border-bottom:1px solid transparent}
  .ij-label{font-weight:600}
  .ij-h{font-variant-numeric:tabular-nums;color:var(--t1)}
  .infos-jour.est-aujourdhui{color:var(--t1)}
  .infos-jour.est-aujourdhui .ij-label{color:var(--acc);font-weight:800}
  .infos-jour.est-aujourdhui .ij-h{font-weight:700}
  .infos-urg{margin-top:14px;padding-top:13px;border-top:1px solid var(--bd);
    font-size:12.5px;font-weight:600;color:var(--acc)}
  .infos-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
  .btn-outline{background:transparent;color:var(--t1);border:1.5px solid var(--bd)}
  .btn-outline:hover{border-color:var(--acc);color:var(--acc)}
  .infos-micro{margin-top:14px;font-size:12.5px;color:var(--t3);font-weight:600}
  @media(max-width:560px){.infos-cta .btn{width:100%;justify-content:center}}
  /* Bande d'appel a l'action finale : fond accent, carte telephone en avant. */
  .cta-block{background:var(--acc);min-height:auto}
  .cta-bbg{background:radial-gradient(900px 420px at 82% 120%, rgba(255,255,255,.16), transparent 60%),radial-gradient(700px 400px at 8% -30%, rgba(0,0,0,.14), transparent 62%)}
  .cta-bbg::after{display:none}
  .cta-inner{padding:64px 40px;gap:56px;align-items:center}
  .cta-eyebrow{color:rgba(255,255,255,.72)}
  .cta-h{font-size:clamp(28px,3.4vw,46px);font-weight:800;color:#fff;line-height:1.08}
  .cta-h em{font-style:italic;color:rgba(255,255,255,.62)}
  .cta-proofs{gap:14px;margin-top:22px}
  .cta-p{color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);padding:7px 14px;border-radius:99px;font-size:12.5px}
  .cta-p::before{content:'';width:6px;height:6px;border-radius:50%;background:#fff;opacity:.75}
  .cta-right{align-items:stretch}
  .cta-carte{background:#fff;border-radius:var(--radius-lg);padding:26px 28px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;min-width:290px;box-shadow:0 26px 60px rgba(0,0,0,.18)}
  .cta-carte-lbl{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--t3)}
  .cta-tel-xl{font-family:var(--f-title);font-weight:900;letter-spacing:-.02em;font-size:clamp(24px,2.4vw,31px);color:var(--t1);margin:4px 0 2px;display:block;transition:color .2s}
  .cta-tel-xl:hover{color:var(--acc)}
  .cta-carte-sub{font-size:12.5px;font-weight:600;color:var(--acc);margin-bottom:16px}
  .cta-carte-btn{width:100%;justify-content:center}
  .cta-carte-note{font-size:11.5px;color:var(--t3);margin-top:12px}
  @media(max-width:860px){.cta-inner{grid-template-columns:1fr;gap:34px;padding:48px 24px}.cta-carte{min-width:0}}
  /* Ajustements bande finale : sur un aplat de couleur, le contraste doit
     venir de la graisse et non de l'opacite — un blanc transparent y donne
     un gris sale qui ressemble a un texte desactive. */
  .cta-h{font-size:clamp(32px,4.6vw,62px);letter-spacing:-.03em}
  .cta-h em{color:#fff;font-weight:400;opacity:1}
  .cta-eyebrow{color:rgba(255,255,255,.9)}
  .cta-p{font-size:13px}
  /* Horaires dans la bande finale : 7 jours en ligne, jour courant en blanc
     plein. Sur l'aplat de couleur, le contraste vient de l'inversion. */
  .cta-horaires{margin-top:26px;max-width:660px}
  .cta-h-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
  .cta-h-titre{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.85)}
  .cta-h-etat{font-family:var(--f-title);font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:99px;background:rgba(255,255,255,.2);color:#fff;white-space:nowrap}
  .cta-h-etat.est-ouvert{background:#fff;color:var(--acc)}
  .cta-h-jours{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
  .cta-h-jour{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.2);border-radius:10px;padding:9px 4px;text-align:center;color:#fff}
  .chj-l{display:block;font-family:var(--f-title);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.78;margin-bottom:4px}
  .cta-horaires .ij-h{display:block;color:inherit;font-size:11.5px;font-weight:600;line-height:1.35;font-variant-numeric:tabular-nums}
  .cta-h-jour.est-aujourdhui{background:#fff;border-color:#fff;color:var(--acc)}
  .cta-h-jour.est-aujourdhui .chj-l{opacity:1}
  @media(max-width:660px){.cta-h-jours{grid-template-columns:repeat(4,1fr)}}
  /* Popup de rappel : le logo faisait doublon avec le header et surchargeait
     le panneau. La photo assombrie suffit comme visuel. */
  .ps-pop-logo{display:none}
  /* ── Typographie des titres ──────────────────────────────────────
     Fraunces sur les grands titres uniquement. Variable font a axe
     optique (opsz) : le navigateur affine automatiquement les formes
     selon la taille rendue, donc un rendu juste de 30px a 92px sans
     reglage manuel. L'interface reste en DM Sans. */
  :root{--f-display:'Fraunces',Georgia,'Times New Roman',serif}
  .hero-h1,.sh,.cta-h{font-family:var(--f-display);font-optical-sizing:auto}
  .hero-h1{font-weight:600;letter-spacing:-.015em;line-height:1.03}
  .sh{font-weight:600;letter-spacing:-.012em;line-height:1.08}
  .cta-h{font-weight:600;letter-spacing:-.012em}
  /* La partie accentuee reste distincte par la couleur, pas par la graisse :
     en serif, un contraste 600/800 sur la meme ligne devient brouillon. */
  .sh em,.hero-h1 em{font-weight:600}
  .cta-h em{font-weight:400}
  /* ── Ajustements mobile / tablette ───────────────────────────────
     Corrections ciblees sur les blocs ajoutes aujourd'hui. */

  /* Horaires : la grille de 7 cartes devient une liste lisible. */
  @media(max-width:680px){
    .cta-h-jours{grid-template-columns:1fr;gap:0}
    .cta-h-jour{display:flex;align-items:center;justify-content:space-between;
      background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.18);
      border-radius:0;padding:9px 2px;text-align:left}
    .cta-h-jour:last-child{border-bottom:none}
    .chj-l{margin-bottom:0;font-size:12px;opacity:1}
    .cta-horaires .ij-h{font-size:12.5px}
    .cta-h-jour.est-aujourdhui{background:rgba(255,255,255,.16);border-radius:8px;
      padding-left:10px;padding-right:10px;color:#fff}
  }

  /* Avis : la carte doit tenir dans la largeur de l'ecran. */
  @media(max-width:420px){.avis-defile .avis-card{width:min(280px,80vw)}}

  /* Badge d'urgence : jamais sur deux lignes. */
  @media(max-width:430px){
    .hero-kicker-urg{font-size:11px;padding:7px 13px;letter-spacing:.1em;white-space:nowrap}
  }

  /* Titre du hero : palier supplementaire pour les tres petits ecrans. */
  @media(max-width:360px){.hero-h1{font-size:33px}}

  /* Bande finale : le contenu respire au lieu de coller aux bords. */
  @media(max-width:520px){
    .cta-inner{padding:40px 18px}
    .cta-carte{padding:22px 18px}
    .cta-proofs{gap:8px}
    .cta-p{font-size:12px;padding:6px 11px}
  }
  /* ── « Comment ca marche » sur mobile : timeline verticale ───────
     A 4 colonnes sur un telephone, chaque etape faisait 90px de large et
     le texte se brisait mot par mot. En vertical, chaque etape dispose de
     toute la largeur : le numero a gauche, le titre a sa hauteur, la
     description dessous. Le trait devient vertical et se remplit de haut
     en bas. Regle placee en fin de feuille pour l'emporter sur la base. */
  @media(max-width:760px){
    .process-grid{grid-template-columns:1fr;gap:0;position:relative;margin-top:36px}

    .process-grid::before{display:block;content:'';position:absolute;
      left:21px;right:auto;top:14px;bottom:26px;width:2px;height:auto;
      background:var(--bd);border-radius:2px;z-index:0}
    .process-grid::after{display:block;content:'';position:absolute;
      left:21px;right:auto;top:14px;width:2px;height:0;
      background:var(--acc);border-radius:2px;z-index:1;
      transition:height 1.9s cubic-bezier(.55,.05,.2,1)}
    .process-grid.ps-go::after{width:2px;height:calc(100% - 40px)}

    .process-step{flex-direction:row;flex-wrap:wrap;align-items:center;
      text-align:left;gap:0 16px;padding:0 0 26px;background:transparent;
      border:none;box-shadow:none;z-index:3}
    .process-step:last-child{padding-bottom:0}

    .process-num{flex:0 0 44px;width:44px;height:44px;font-size:16px;
      margin-bottom:0;box-shadow:0 0 0 6px var(--fond-clair)}
    .process-title{flex:1 1 0;min-width:0;margin-bottom:0;font-size:16px}
    .process-desc{flex:0 0 100%;padding-left:60px;margin-top:7px;
      max-width:none;font-size:13.5px}
  }
  @media (prefers-reduced-motion:reduce){
    @media(max-width:760px){.process-grid::after{transition:none;height:calc(100% - 40px)}}
  }
  /* ── Debordement horizontal sur mobile ───────────────────────────
     Un enfant de grille a `min-width:auto` par defaut : il refuse de
     descendre sous la largeur de son contenu et elargit toute la page.
     `minmax(0,1fr)` et `min-width:0` l'autorisent a retrecir. C'est ce
     qui coupait la carte de note, le titre des avis et la carte de
     France au bord droit de l'ecran. */
  .avis-top > *, .why-layout > *, .faq-layout > *,
  .map-section-inner > *, .cta-inner > *, .hero-inner > *{min-width:0}

  @media(max-width:900px){
    .avis-top{grid-template-columns:minmax(0,1fr)}
    .why-layout,.faq-layout,.map-section-inner{grid-template-columns:minmax(0,1fr)}
  }

  /* La piste des avis est volontairement plus large que l'ecran : on
     s'assure que son conteneur, lui, ne l'est jamais. */
  .avis-defile,.avis-marquee{max-width:100%}
  /* ── Menu hamburger : suit la couleur du texte du header ─────────
     Il etait fige a #16181D : sur un header sombre, noir sur noir.
     Regle a retenir pour tout element du header — il doit deriver de
     --menu (couleur de texte choisie par le client), jamais d'une
     valeur en dur. --menu-scroll-text est deja calcule par contraste
     avec le fond, il convient donc a l'etat scrolle. */
  .hdr-burger span{background:var(--menu)}
  header.site-hdr.hdr-transparent:not(.hdr-scrolled) .hdr-burger span{background:#fff}
  header.site-hdr.hdr-transparent.hdr-scrolled .hdr-burger span{background:var(--menu-scroll-text)}
  /* ── Avis : defilement au doigt sur mobile ───────────────────────
     Sur petit ecran on abandonne l'animation par transform (aucune prise
     au doigt) pour un defilement natif : le pouce agit directement, et un
     script fait avancer scrollLeft en continu. Les degrades lateraux sont
     masques ici : etant en position absolue dans le conteneur devenu
     scrollable, ils defileraient avec le contenu. */
  @media(max-width:900px){
    .avis-defile.is-live{
      overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
      scrollbar-width:none;overscroll-behavior-x:contain;
      scroll-snap-type:x proximity}
    .avis-defile.is-live::-webkit-scrollbar{display:none}
    .avis-defile.is-live::before,.avis-defile.is-live::after{display:none}
    .avis-defile.is-live .avis-cards{animation:none;transform:none}
    .avis-defile.is-live .avis-card{scroll-snap-align:center}
  }
  /* ── Perf mobile : moins d'animation sur petits ecrans ───────────
     Les entrees au scroll et le zoom du hero sont couteux sur les
     telephones modestes. Sous 600px, le contenu s'affiche directement,
     sans mouvement decoratif. Lisibilite intacte, fluidite retrouvee. */
  @media(max-width:600px){
    .rv,.rv-l,.rv-r{opacity:1!important;transform:none!important;transition:none!important}
    img.hero-photo{animation:none!important;transform:none!important}
    .hero-kicker,.hero-h1,.hero-h1 em,.hero-sub,.hero-ctas,.hh-filet,.hh-item{
      animation:none!important;opacity:1!important;transform:none!important}
    /* L'animation de remplissage de la ville est coupee ci-dessus (perf) :
       sans elle, le background-clip reste a 0% et le texte garde color:transparent
       (juste le contour) => la ville ne parait pas orange. On force donc l'etat
       final rempli : orange plein, sans contour ni degrade. */
    .hero-h1 em{color:var(--acc)!important;-webkit-text-stroke:0!important;background:none!important}
    .ps-bande-in{animation-duration:40s}
  }
  .ouvert-continu{font-family:var(--f-title);font-weight:800;font-size:16px;color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:12px;padding:16px 18px;text-align:center}
  /* ── Demande de rappel : bouton header + panneau ─────────────────*/
  .hdr-rappel-btn{background:transparent;border:1.5px solid color-mix(in srgb,var(--acc) 55%,transparent);color:var(--menu,#fff);font-family:var(--f-title);font-weight:700;font-size:13.5px;padding:9px 15px;border-radius:10px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
  .hdr-rappel-btn:hover{background:var(--acc);color:#fff;border-color:var(--acc)}
  .rappel-overlay{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:20px}
  .rappel-overlay[hidden]{display:none}
  .rappel-panel{position:relative;background:#fff;border-radius:18px;padding:32px 28px;max-width:380px;width:100%;box-shadow:0 30px 70px rgba(0,0,0,.3);text-align:center}
  .rappel-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:26px;line-height:1;color:var(--t3,#888);cursor:pointer}
  .rappel-panel-h{font-family:var(--f-display,var(--f-title));font-weight:700;font-size:26px;color:var(--t1);margin-bottom:8px}
  .rappel-panel-sub{font-size:14px;color:var(--t2,#555);line-height:1.55;margin-bottom:22px}
  .rappel-panel .rappel-input{width:100%;padding:14px 16px;border-radius:12px;border:1.5px solid var(--bd);font-size:16px;margin-bottom:12px;text-align:center}
  .rappel-panel .rappel-input:focus{outline:none;border-color:var(--acc)}
  .rappel-send{width:100%;justify-content:center}
  /* ── Ruban des communes (sous le hero) ─────────────────────────────
     Bande fine et claire — pas la bande accent : elle sert de respiration
     entre le hero sombre et les prestations, pas d'argument. */
  .rb{background:#fff;border-bottom:1px solid var(--bd);overflow:hidden;padding:15px 0;position:relative;z-index:5}
  .rb-in{display:flex;width:max-content;white-space:nowrap;animation:ps-bande-mq 60s linear infinite}
  .rb-in span{display:flex;align-items:center}
  .rb-in i{font-style:normal;font-family:var(--f-title);font-weight:600;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--t2)}
  .rb-in b{color:var(--acc);font-size:10px;margin:0 22px;opacity:.85}
  /* Même ruban entre deux sections claires (garanties, avant Réalisations) */
  .rb-off{background:var(--fond-clair);border-top:1px solid var(--bd)}
  @media(max-width:600px){.rb{padding:12px 0}.rb-in i{font-size:11.5px}.rb-in b{margin:0 16px}}
  @media (prefers-reduced-motion:reduce){.rb-in{animation:none}}

  /* ── Bloc « L'artisan » : qui parle ────────────────────────────────
     Photo portrait à gauche, texte à droite. Sans photo, le texte prend
     une colonne unique, limitée en largeur pour rester lisible. */
  .art-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:64px;align-items:center}
  .art-photo{position:relative;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4/5;background:var(--bd);box-shadow:var(--shadow-lg)}
  .art-photo img{width:100%;height:100%;object-fit:cover;display:block}
  .art-intro .sh{margin-bottom:22px;text-wrap:balance}
  .art-p{font-size:16.5px;color:var(--t2);line-height:1.72;max-width:62ch;margin-bottom:14px}
  .art-liens{display:flex;flex-wrap:wrap;gap:28px;margin-top:22px}
  /* Sans photo : titre collant à gauche, histoire à droite — le même
     schéma que la section « matière », pour ne pas laisser la moitié de
     l'écran vide. */
  .art-sans-photo .art-grid{grid-template-columns:1fr}
  .art-sans-photo .art-txt{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px;align-items:start}
  .art-sans-photo .art-intro{position:sticky;top:96px}
  .art-sans-photo .art-intro .sh{margin-bottom:0}
  .art-sans-photo .art-p{max-width:none}
  @media(max-width:900px){
    .art-grid,.art-sans-photo .art-txt{grid-template-columns:1fr;gap:32px}
    .art-sans-photo .art-intro{position:static}
    .art-sans-photo .art-intro .sh{margin-bottom:0}
    .art-photo{max-width:340px;aspect-ratio:4/5}
  }

  /* ══════════════ HERO v2 : texte à gauche, photo dans une carte à droite,
     motif métier au trait fin en fond (retour Benjamin 2026-09, d'après le
     hero de robert-couvreur-92.fr). Ce bloc vient APRÈS toutes les couches
     précédentes et les redéfinit : plus de photo pleine largeur ni de voile,
     plus de bandeau d'honneurs (les preuves tiennent sur une ligne sous les
     boutons), H1 ramené à 64 px max avec la ville en accent dans la phrase. */
  /* Pleine hauteur d'écran moins le ruban des communes : le ruban affleure
     en bas du premier écran (retour Benjamin 2026-09, comme la référence). */
  .hero{min-height:calc(100vh - 52px);min-height:calc(100svh - 52px);background:var(--ink)}
  @media(max-width:900px){.hero{min-height:0}}
  .hero-bg{background:var(--ink)}
  .hero-bg::before,.hero-bg::after{display:none}
  /* Plus de bande sombre sous le header (retour Benjamin 2026-09) : le
     header transparent laisse voir le motif des toits jusqu'en haut. */
  .hero::after{display:none}
  .hero-motif{top:24px}
  /* ── Hero CLAIR (retour Benjamin 2026-09 : « enlève le côté sombre, garde
     les toits ») : même fond clair que le reste du site, texte sombre, motif
     un peu plus présent pour rester visible sur le clair. Le menu du header
     transparent passe en sombre tant qu'on est en haut de page. ── */
  .hero{background:var(--fond-clair)}
  /* Profondeur sur fond clair : plus lumineux en haut (le header y est posé),
     une nappe d'accent très diluée derrière la photo, et un halo bas. */
  .hero-bg{background:linear-gradient(180deg,#fff 0%,var(--fond-clair) 46%,var(--fond-clair) 100%)}
  .hero-halo{background:
    radial-gradient(520px 420px at 78% 42%,color-mix(in srgb,var(--acc) 13%,transparent),transparent 70%),
    radial-gradient(760px 300px at 50% 118%,color-mix(in srgb,var(--acc) 9%,transparent),transparent 65%)}
  .hero-h1{color:var(--t1)}
  .hero-sub{color:var(--t2)}
  .hero-kicker-urg{color:var(--acc);border-color:color-mix(in srgb,var(--acc) 45%,transparent);background:color-mix(in srgb,var(--acc) 8%,#fff)}
  .hero-ctas .btn-wh{background:#fff;color:var(--t1);border:1.5px solid var(--bd2)}
  .hero-ctas .btn-wh:hover{background:var(--t1);color:#fff;border-color:var(--t1)}
  .rb{border-top:1px solid var(--bd)}
  header.site-hdr.hdr-transparent:not(.hdr-scrolled){--menu:var(--t1)}
  /* Logo clair (fait pour un fond sombre) : recolorisé dès le haut de page,
     pas seulement au scroll — le hero est clair maintenant. */
  header.site-hdr.hdr-transparent .logo-swap > img{visibility:hidden}
  header.site-hdr.hdr-transparent .logo-swap::after{
    content:'';position:absolute;inset:0;
    background:var(--logo-scroll-color,#16181D);
    -webkit-mask:var(--logo-mask) center/contain no-repeat;
    mask:var(--logo-mask) center/contain no-repeat}
  /* Fond scrollé SOMBRE : le logo clair d'origine y est lisible, on le
     rend (sinon logo recolorisé sombre sur header sombre = invisible). */
  header.site-hdr.hdr-transparent.hdr-scroll-sombre.hdr-scrolled .logo-swap > img{visibility:visible}
  header.site-hdr.hdr-transparent.hdr-scroll-sombre.hdr-scrolled .logo-swap::after{display:none}
  @supports not ((-webkit-mask-image:url(#a)) or (mask-image:url(#a))){
    header.site-hdr.hdr-transparent .logo-swap > img{visibility:visible}
    header.site-hdr.hdr-transparent .logo-swap::after{display:none}}
  header.site-hdr.hdr-transparent:not(.hdr-scrolled) .hdr-burger span{background:var(--t1)}
  header.site-hdr.hdr-transparent:not(.hdr-scrolled) .hdr-rappel-btn{color:var(--t1);border-color:color-mix(in srgb,var(--acc) 55%,transparent)}
  .hero-motif{position:absolute;left:0;right:0;top:24px;width:100%;height:auto;opacity:.18;pointer-events:none;z-index:1}
  .hero-motif *{stroke:var(--acc);fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
  .hero-halo{position:absolute;inset:0;pointer-events:none;z-index:1;
    background:radial-gradient(760px 340px at 50% 118%,color-mix(in srgb,var(--acc) 16%,transparent),transparent 65%)}
  .hero-inner{padding:132px 40px 84px;display:grid;grid-template-columns:1fr;gap:56px;align-items:center}
  /* Deux colonnes égales. La carte, elle, NE S'ÉTIRE PLUS à la hauteur du
     bloc de texte : elle prend la forme de la photo.

     Elle s'étirait auparavant (retour Benjamin 2026-09 : « augmenter la
     photo »), ce qui donnait un cadre portrait — mesuré : 561 x 632 — dans
     lequel une photo paysage de 1920 x 1080 était recadrée par `cover`. On
     n'en voyait plus que la bande centrale, agrandie du double. Retour
     Benjamin 2026-09 : « la photo est coupée, zoomée, on ne voit pas toute
     la photo ».

     Désormais la carte épouse le format de l'image : rien n'est rogné, et il
     n'y a pas non plus de bandes vides puisque le cadre suit la photo. Elle
     est centrée verticalement en regard du texte. */
  .hero-avec-media .hero-inner{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px}
  .hero-avec-media .hero-card{align-self:center;aspect-ratio:auto;min-height:0}
  .hero-avec-media .hero-content{max-width:none;margin:0;text-align:left}
  .hero-avec-media .hero-h1{max-width:none}
  .hero-avec-media .hero-sub{margin-left:0;margin-right:0}
  .hero-avec-media .hero-ctas,.hero-avec-media .hero-proofs{justify-content:flex-start}
  .hero-h1{font-size:clamp(38px,4.6vw,64px);letter-spacing:-.025em;line-height:1.04;margin-bottom:20px}
  .hero-h1 em{display:inline}
  .hero-accroche{font-family:var(--f-title);font-weight:700;font-size:19px;line-height:1.35;color:var(--t1);letter-spacing:-.01em;margin:0 0 14px}
  .hero-accroche em{font-style:normal;color:var(--acc)}
  .hero-sub{margin-bottom:28px}
  .hero-proofs{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 24px;margin-top:26px;
    font-family:var(--f-title);font-size:13px;font-weight:600;color:var(--t2)}
  .hero-proofs span{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
  .hero-proofs svg{width:15px;height:15px;flex-shrink:0;stroke:var(--acc);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  /* Plaque décalée derrière la carte photo (ombre pleine : reste hors de
     l'overflow de la carte) — la photo a une assise, elle ne flotte plus. */
  .hero-card{position:relative;z-index:2;border-radius:18px;overflow:hidden;background:var(--bd);
    box-shadow:16px 16px 0 -1px color-mix(in srgb,var(--acc) 18%,#fff),0 24px 60px rgba(20,18,15,.14),0 0 0 1px var(--bd)}
  /* `height:auto` : c'est l'image qui donne sa hauteur au cadre, donc aucun
     recadrage. `max-height` borne les portraits très hauts, qui feraient
     descendre le hero sans fin ; dans ce seul cas `contain` réduit la photo
     au lieu de la rogner, et laisse deux bandes sur les côtés. */
  .hero-card img,.hero-card video{width:100%;height:auto;max-height:min(76vh,700px);object-fit:contain;display:block}
  /* Entrées : mêmes courbes que le reste du hero, dans l'ordre de lecture */
  .hero-accroche{opacity:0;animation:ps-hero-up .85s cubic-bezier(.2,.8,.2,1) .22s both}
  .hero-proofs{opacity:0;animation:ps-hero-up .85s cubic-bezier(.2,.8,.2,1) .68s both}
  .hero-card{opacity:0;animation:ps-hero-up 1s cubic-bezier(.2,.8,.2,1) .36s both}
  @media (prefers-reduced-motion:reduce){.hero-accroche,.hero-proofs,.hero-card{animation:none;opacity:1;transform:none}}
  @media(max-width:900px){
    .hero-inner,.hero-avec-media .hero-inner{grid-template-columns:1fr;gap:28px;padding:112px 24px 56px}
    .hero-card,.hero-avec-media .hero-card{aspect-ratio:auto;min-height:0;align-self:auto;box-shadow:10px 10px 0 -1px color-mix(in srgb,var(--acc) 18%,#fff),0 18px 40px rgba(20,18,15,.12),0 0 0 1px var(--bd)}
    .hero-card img,.hero-card video{max-height:min(60vh,520px)}
    .hero-motif{top:40px}
  }
  @media(max-width:600px){
    .hero-inner,.hero-avec-media .hero-inner{padding:100px 16px 48px}
    .hero-h1{font-size:34px}
    .hero-accroche{font-size:17px}
    .hero-proofs{gap:6px 16px;font-size:12.5px}
    .hero-accroche,.hero-proofs,.hero-card{animation:none;opacity:1;transform:none}
  }

  /* ══════════════ SERVICES compacts (retour Benjamin 2026-09 : « trop grand,
     manque de nuance ») : tête de section à gauche avec le chapeau à droite,
     quatre colonnes de cartes basses, plus de carte vedette géante. ══════ */
  .svc-head{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:48px;align-items:end;
    max-width:none;margin:0 0 36px;text-align:left}
  .svc-head .sh{font-size:clamp(26px,2.9vw,38px);text-wrap:balance}
  .svc-head-lead{margin-top:0;padding-bottom:6px;font-size:15px}
  .svc-filtres{justify-content:flex-start;margin-bottom:28px}
  .svc-grid{grid-template-columns:repeat(4,1fr);gap:12px}
  .svc-card{gap:10px;border-radius:12px;padding:20px 20px 18px;min-height:0}
  .svc-card::before{display:none}
  .svc-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px -14px rgba(20,20,20,.25);border-color:color-mix(in srgb,var(--acc) 40%,var(--bd))}
  .svc-card-top{margin-bottom:0;align-items:center}
  .svc-card-ico{width:36px;height:36px;border-radius:9px}
  .svc-card-ico svg{width:18px;height:18px}
  .svc-card-num{font-size:13px}
  .svc-card-title{font-size:15px;margin-bottom:0;line-height:1.3}
  .svc-card-desc{font-size:13px;line-height:1.55;margin-bottom:0;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .svc-card-go{margin-top:auto;padding-top:8px;font-family:var(--f-title);font-size:12px;font-weight:700;color:var(--t1);display:inline-flex;align-items:center;gap:6px}
  .svc-card-go::after{content:'→';color:var(--acc);transition:transform .2s}
  .svc-card:hover .svc-card-go::after{transform:translateX(3px)}
  /* La spécialité : même gabarit, juste marquée */
  .svc-card-star{grid-column:auto;padding:20px 20px 18px;
    background:linear-gradient(180deg,color-mix(in srgb,var(--acc) 7%,#fff),#fff);
    border-color:color-mix(in srgb,var(--acc) 35%,var(--bd))}
  .svc-card-star .svc-card-title,.svc-card-star .svc-card-desc{max-width:none}
  .svc-card-star .svc-card-title{font-family:var(--f-title);font-style:normal;font-weight:700;font-size:15px;line-height:1.3;margin-bottom:0}
  .svc-card-star .svc-card-desc{font-size:13px}
  .svc-card-star .svc-card-ico{width:36px;height:36px;background:color-mix(in srgb,var(--acc) 11%,#fff);color:var(--acc)}
  .svc-card-star .svc-card-ico svg{width:18px;height:18px}
  .svc-card-phare{font-size:9.5px;letter-spacing:.14em;padding:5px 9px}
  .svc-pied{margin-top:22px;background:none;border:0;border-radius:0;padding:0;box-shadow:none;font-size:14px;color:var(--t2)}
  .svc-pied::before{display:none}
  .svc-pied strong{font-family:var(--f-title);color:var(--t1);font-weight:700}
  @media(max-width:1100px){.svc-grid{grid-template-columns:repeat(3,1fr)}}
  @media(max-width:900px){.svc-head{grid-template-columns:1fr;gap:12px}.svc-grid{grid-template-columns:repeat(2,1fr)}.svc-card-star{grid-column:auto}}
  @media(max-width:600px){.svc-grid{grid-template-columns:1fr}.svc-card,.svc-card-star{padding:18px 18px 16px}.svc-pied{margin-top:18px;padding:0}}

  /* ══════════════ ZONES : liste alignée + carte Leaflet (retour Benjamin
     2026-09 : « boutons mieux rangés, moins pâté ; la même carte que sur
     Contact »). ══════ */
  .zones-layout{align-items:start}
  .zones-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:28px;row-gap:0;margin-bottom:22px}
  .zl-row{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--bd);color:inherit;min-width:0;transition:color .15s}
  a.zl-row:hover{color:var(--acc)}
  .zl-dot{width:5px;height:5px;border-radius:50%;background:var(--acc);opacity:.7;flex-shrink:0}
  .zl-name{font-family:var(--f-title);font-weight:600;font-size:13.5px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .zl-dist{font-family:var(--f-title);font-size:11.5px;font-weight:700;color:var(--t3);font-variant-numeric:tabular-nums;flex-shrink:0}
  .zl-base .zl-dot{opacity:1;box-shadow:0 0 8px color-mix(in srgb,var(--acc) 70%,transparent)}
  .zl-base .zl-name{font-weight:800}
  .zl-base .zl-dist{color:var(--acc)}
  /* La carte suit le défilement le long de la liste (toutes les communes
     sont affichées) : collante sous le header, hauteur bornée à l'écran. */
  .zones-map{position:sticky;top:92px}
  .zmap-card .zmap-canvas{padding:0}
  .zmap-card .zone-leaflet{height:min(560px,calc(100vh - 200px));min-height:380px;border-radius:14px;border:1px solid var(--bd)}
  @media(max-width:900px){.zones-list{grid-template-columns:repeat(2,minmax(0,1fr))}.zones-map{position:static}.zmap-card .zone-leaflet{height:380px;min-height:0}}
  @media(max-width:480px){.zones-list{grid-template-columns:1fr}}

  /* ── Bloc contact de l'accueil : un seul gabarit d'icône pour les trois
     points (réponse, déplacement, suivi) et les trois cartes (téléphone,
     email, adresse). ── */
  .home-contact-point .hcp-ico,.home-contact-infos .fli-icon{
    width:40px;height:40px;border-radius:12px;flex:0 0 40px;
    background:color-mix(in srgb,var(--acc) 12%,#fff);border:1px solid color-mix(in srgb,var(--acc) 28%,transparent);
    display:flex;align-items:center;justify-content:center;color:var(--acc);font-weight:400}
  .home-contact-point .hcp-ico svg,.home-contact-infos .fli-icon svg{width:19px;height:19px;stroke:var(--acc);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .home-contact-point{align-items:center;gap:14px}

  /* ── Section « matière » : ce que l'artisan pose ou travaille ─────
     Intro collante à gauche, liste numérotée à droite (pas une grille de
     cartes : l'accueil en a déjà trois). Fond blanc entre deux filets pour
     la détacher des sections voisines sur fond clair. */
  .mat{background:#fff;border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
  .mat-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px;align-items:start}
  .mat-intro{position:sticky;top:96px}
  .mat-intro .sh{margin-bottom:20px;text-wrap:balance}
  .mat-intro .lead{margin-bottom:28px}
  .mat-list{display:flex;flex-direction:column;border-top:1px solid var(--bd2)}
  .mat-item{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:28px 0 30px;border-bottom:1px solid var(--bd)}
  .mat-num{font-family:var(--f-display);font-weight:400;font-style:italic;font-size:30px;line-height:1;color:var(--acc);padding-top:2px}
  .mat-title{font-family:var(--f-title);font-weight:700;font-size:18.5px;letter-spacing:-.02em;line-height:1.25;margin-bottom:8px;color:var(--t1)}
  .mat-desc{font-size:15.5px;color:var(--t2);line-height:1.7;max-width:56ch}
  @media(max-width:960px){
    .mat-grid{grid-template-columns:1fr;gap:40px}
    .mat-intro{position:static}
    .mat-item{grid-template-columns:44px 1fr;gap:16px;padding:22px 0}
    .mat-num{font-size:24px}
  }
  /* ══════════════ ÉCHELLE TYPOGRAPHIQUE UNIQUE (retour Benjamin 2026-09 :
     « titres, sous-titres, textes uniformisés »). Six rôles, six tailles,
     posés en DERNIER pour l'emporter sur les réglages épars des couches
     précédentes :
       h1 hero        Fraunces 600   clamp 38–64
       h2 de section  Fraunces 600   clamp 28–42
       h3 / titres de cartes  DM Sans 700  16px
       chapeau de section / paragraphe éditorial  16px
       texte de carte / réponse / légende  14.5px
       étiquettes  12.5px                                                 */
  :root{
    --fs-h1:clamp(38px,4.6vw,64px);
    --fs-h2:clamp(28px,3.2vw,42px);
    --fs-h2-sm:clamp(22px,2.2vw,28px);
    --fs-h3:16px;
    --fs-lead:16px;
    --fs-body:14.5px;
    --fs-small:12.5px;
    --lh-body:1.65;
  }
  .hero-h1{font-size:var(--fs-h1)}
  .sh,.sh-lg,.sh-md,.svc-head .sh,.art-intro .sh,.mat-intro .sh,.cta-h,.home-cta-urgent .cta-h{
    font-family:var(--f-display);font-weight:600;font-size:var(--fs-h2);line-height:1.08;letter-spacing:-.015em}
  .sh-sm,h3.sh{font-size:var(--fs-h2-sm)}
  /* Préfixe [class] : spécificité (0,2,0) pour l'emporter sur les réglages
     composés des couches précédentes (.svc-card-star .svc-card-title, etc.). */
  [class] .lead,[class] .svc-head-lead,[class] .hero-sub,[class] .cta-sub,[class] .form-sub,[class] .art-p{font-size:var(--fs-lead);line-height:1.7}
  .hero-accroche{font-size:19px}
  [class] .svc-card-title,[class] .mat-title,[class] .why-title,[class] .process-title,[class] .faq-q,[class] .fli-title,[class] .home-contact-point strong,[class] .avis-name,[class] .svc-pied strong{
    font-family:var(--f-title);font-style:normal;font-weight:700;font-size:var(--fs-h3);line-height:1.3;letter-spacing:-.01em}
  [class] .form-title{font-size:20px;font-weight:700;letter-spacing:-.02em}
  [class] .svc-card-desc,[class] .mat-desc,[class] .why-desc,[class] .process-desc,[class] .faq-a,[class] .fli-val,[class] .home-contact-point small,[class] .zones-note,[class] .svc-pied,[class] .avis-txt,[class] .avis-invite-txt,[class] .avis-google-txt{
    font-size:var(--fs-body);line-height:var(--lh-body)}
  [class] .zki-l,[class] .zl-dist,[class] .svc-card-num,[class] .svc-card-badge,[class] .hero-proofs,[class] .rb-in i,[class] .svc-card-go,[class] .link-arr{font-size:var(--fs-small)}
  @media(max-width:600px){
    .hero-h1{font-size:34px}
    .sh,.sh-lg,.sh-md,.cta-h{font-size:28px}
    .lead,.svc-head-lead,.hero-sub,.art-p{font-size:15px}
  }

  /* ══════════════ FOND UNIQUE (retour Benjamin 2026-09 : « tous les
     arrière-plans uniformes et de la même couleur »). Toutes les sections,
     le hero et les rubans sur --fond-clair, sans dégradé ni halo ; seuls les
     éléments (cartes, photo, boutons) restent blancs ou colorés. Les sections
     se séparent par leurs filets et leurs espacements, pas par la couleur.
     Le pied de page garde son fond sombre. ══════ */
  .hero,.hero-bg,.rb,.rb-off,.mat,.art,.sec,.sec-sm,.sec-off,.sec-off2,.sec-dark,.sec-dark2,.map-section,.home-contact-premium{background:var(--fond-clair)}
  .hero-halo,.home-contact-premium::before{display:none}
  .rb{border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
  .sec-off2 .svc-card,.sec-off2 .why-item{background:#fff}

  /* ══════════════ RYTHME DE LA PAGE (retour Benjamin 2026-09 : « tout est
     de la même couleur, navigation monotone »). Deux tons clairs qui
     alternent — fond clair / blanc — et UNE section sombre au milieu
     (Pourquoi nous), puis l'accent des infos pratiques et le pied de page
     sombre. Toujours pas de dégradé ni de teinte : trois fonds, pas plus. */
  .rb,#services,#process,#zones-intervention,#faq{background:#fff}
  .rb{border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
  #services .svc-card,#faq .faq-list{background:transparent}
  #services .svc-card{background:var(--fond-clair);border-color:var(--bd)}
  #services .svc-card-star{background:linear-gradient(180deg,color-mix(in srgb,var(--acc) 8%,var(--fond-clair)),var(--fond-clair))}
  #zones-intervention .zmap-card{background:var(--fond-clair)}
  /* Section sombre : Pourquoi nous */
  #pourquoi{background:var(--ink)}
  #pourquoi .sh{color:#fff} #pourquoi .lead{color:var(--w2)}
  #pourquoi .why-item{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);box-shadow:none}
  #pourquoi .why-item:hover{border-color:color-mix(in srgb,var(--acc) 55%,transparent);box-shadow:none}
  #pourquoi .why-item-icon{background:color-mix(in srgb,var(--acc) 22%,transparent);color:var(--acc)}
  #pourquoi .why-item-icon svg{stroke:var(--acc)}
  #pourquoi .why-item:hover .why-item-icon{background:var(--acc)} #pourquoi .why-item:hover .why-item-icon svg{stroke:#fff}
  #pourquoi .why-title{color:#fff} #pourquoi .why-desc{color:var(--w2)}
  #pourquoi .why-micro{color:var(--w3)}
  #pourquoi .btn-outline{color:#fff;border-color:rgba(255,255,255,.4)} #pourquoi .btn-outline:hover{background:#fff;color:var(--ink);border-color:#fff}
  /* Mobile : un logo large ne doit pas passer sous le bouton « Être rappelé » */
  @media(max-width:600px){
    .hdr-logo{min-width:0;flex:1 1 auto}
    .hdr-logo img.logo-img,.hdr-logo .logo-swap > img{max-width:min(44vw,190px);width:auto;height:auto!important;max-height:40px;object-fit:contain}
    .hdr-right{flex-shrink:0}
  }
  /* Header scrollé sur site clair : blanc, filet, ombre douce */
  header.site-hdr.hdr-transparent.hdr-scrolled{border-bottom-color:var(--bd);box-shadow:0 6px 24px rgba(20,18,15,.08)}
  /* ══════════════ SECTIONS ÉDITORIALES v2 (retour Benjamin 2026-09 : « trop
     plat, le reste du site paraît plus premium ») — L'artisan, FAQ, Contact,
     Infos pratiques. Même grammaire que la matière : intro collante, lignes
     filetées, numéros Fraunces italiques, plaques décalées. ══════ */
  /* ── L'artisan v2 ── */
  .art .art-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px;align-items:start}
  .art .art-intro{position:sticky;top:96px}
  .art .art-intro .sh{margin-bottom:0}
  .art .art-photo{margin-top:30px;max-width:420px}
  .art-fiche{margin-top:34px;border-top:1px solid var(--bd2)}
  .art-fiche div{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:12px 0;border-bottom:1px solid var(--bd);align-items:baseline}
  .art-fiche dt{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--t3)}
  .art-fiche dd{font-family:var(--f-title);font-size:15px;font-weight:700;color:var(--t1)}
  .art-fiche dd small{display:block;font-family:var(--f-body);font-size:13px;font-weight:400;color:var(--t2)}
  .art .art-liens{margin-top:26px}
  .art-cite{font-family:var(--f-display);font-style:italic;font-weight:400;font-size:clamp(20px,1.9vw,24px);line-height:1.35;color:var(--t1);padding:0 0 26px;border-bottom:1px solid var(--bd2)}
  .art-cite::before{content:'« ';color:var(--acc)} .art-cite::after{content:' »';color:var(--acc)}
  .art-chap article{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:26px 0 28px;border-bottom:1px solid var(--bd)}
  .art-num{font-family:var(--f-display);font-style:italic;font-size:30px;line-height:1;color:var(--acc);padding-top:4px}
  .art-chap h3{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--t3);margin-bottom:8px}
  .art-chap p{font-size:var(--fs-lead);color:var(--t2);line-height:1.72;max-width:62ch}
  .art.art-sans-photo .art-txt,.art .art-txt{display:block}
  @media(max-width:900px){.art .art-grid{grid-template-columns:1fr;gap:36px}.art .art-intro{position:static}.art-chap article{grid-template-columns:44px 1fr;gap:16px;padding:20px 0}.art-num{font-size:24px}}

  /* ── FAQ v2 ── */
  .faq-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px;align-items:start}
  .faq-intro{position:sticky;top:96px;text-align:left}
  .faq-intro .lead{margin:16px 0 0;max-width:40ch}
  .faq-aide{margin-top:34px;padding-top:22px;border-top:1px solid var(--bd2)}
  .faq-aide b{display:block;font-family:var(--f-title);font-size:var(--fs-h3);margin-bottom:6px}
  .faq-aide span{display:block;font-size:var(--fs-body);color:var(--t2);margin-bottom:14px}
  .faq-list{background:none;border:0;border-radius:0;box-shadow:none;padding:0;max-width:none;margin:0;border-top:1px solid var(--bd2)}
  .faq-row{border:0;border-bottom:1px solid var(--bd);border-radius:0;background:none;padding:0}
  .faq-row summary{list-style:none;display:grid;grid-template-columns:52px 1fr 36px;gap:14px;align-items:center;padding:22px 0;cursor:pointer}
  .faq-row summary::-webkit-details-marker{display:none}
  .faq-n{font-family:var(--f-display);font-style:italic;font-size:22px;color:var(--acc);line-height:1}
  .faq-row .faq-q{font-family:var(--f-title);font-weight:700;font-size:var(--fs-h3);line-height:1.35;color:var(--t1)}
  .faq-row .faq-plus{width:32px;height:32px;border-radius:50%;border:1px solid var(--bd2);background:none;display:flex;align-items:center;justify-content:center;transition:transform .25s,background .2s,border-color .2s;position:static}
  .faq-row .faq-plus::before,.faq-row .faq-plus::after{content:none}
  .faq-row .faq-plus::before{content:'+';font-family:var(--f-title);font-weight:500;font-size:20px;line-height:1;color:var(--t1);position:static;width:auto;height:auto;background:none;transform:none}
  .faq-row[open] .faq-plus{transform:rotate(45deg);background:var(--acc);border-color:var(--acc)} .faq-row[open] .faq-plus::before{color:#fff}
  .faq-row summary:hover .faq-q{color:var(--acc)}
  .faq-row .faq-a{padding:0 36px 24px 66px;font-size:var(--fs-body);color:var(--t2);line-height:1.72;max-width:70ch}
  @media(max-width:900px){.faq-grid{grid-template-columns:1fr;gap:36px}.faq-intro{position:static}.faq-row .faq-a{padding-left:0}}

  /* ── Contact v2 : promesses en trois colonnes filetées, formulaire sur plaque ── */
  .home-contact-layout{gap:72px;align-items:start}
  .home-contact-left .sh{color:var(--t1)} .home-contact-left .lead{color:var(--t2)}
  .ct-promesses{display:grid;grid-template-columns:repeat(3,1fr);margin-top:34px;border-top:1px solid var(--bd2)}
  .ct-promesses div{padding:18px 18px 0 0;border-right:1px solid var(--bd)} .ct-promesses div:last-child{border-right:0} .ct-promesses div+div{padding-left:18px}
  .ct-promesses svg{width:18px;height:18px;stroke:var(--acc);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-bottom:10px}
  .ct-promesses b{display:block;font-family:var(--f-title);font-size:14px;margin-bottom:3px;color:var(--t1)}
  .ct-promesses span{font-size:13px;color:var(--t2);line-height:1.5;display:block}
  .home-contact-form{border:0;box-shadow:16px 16px 0 -1px color-mix(in srgb,var(--acc) 16%,#fff),0 24px 60px rgba(20,18,15,.10),0 0 0 1px var(--bd);border-radius:20px}
  .home-contact-form .form-title{font-family:var(--f-display);font-weight:600;font-size:26px;letter-spacing:-.015em}
  @media(max-width:900px){.ct-promesses{grid-template-columns:1fr}.ct-promesses div{border-right:0;border-bottom:1px solid var(--bd);padding:14px 0}.ct-promesses div+div{padding-left:0}.home-contact-form{box-shadow:10px 10px 0 -1px color-mix(in srgb,var(--acc) 16%,#fff),0 18px 40px rgba(20,18,15,.10),0 0 0 1px var(--bd)}}

  /* ── Infos pratiques (bloc final) : coordonnées + vraie grille d'horaires,
     sur l'accent avec le motif du métier ── */
  .cta-block{background:var(--acc);color:#fff;min-height:auto;overflow:hidden}
  .cta-bbg{display:none}
  .cta-block .hero-motif{top:10px;opacity:.16;z-index:0}
  .cta-block .hero-motif *{stroke:#fff}
  .cta-block::after{content:'';position:absolute;inset:0;background:radial-gradient(640px 320px at 20% 110%,rgba(0,0,0,.14),transparent 70%);pointer-events:none;z-index:1}
  .cta-inner{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;align-items:center;padding:84px 40px}
  .cta-block .eyebrow{color:#fff} .cta-block .eyebrow::before{background:#fff}
  .cta-block .cta-h{color:#fff;font-size:var(--fs-h2);font-weight:600;margin-bottom:26px;max-width:none} .cta-block .cta-h em{color:#fff;opacity:.85;font-style:italic}
  .cta-block .cta-tel-xl{display:block;font-family:var(--f-display);font-weight:600;font-size:clamp(32px,3.4vw,44px);letter-spacing:-.02em;color:#fff;line-height:1;margin:0 0 4px}
  .cta-block .cta-tel-sub{display:block;font-family:var(--f-title);font-size:var(--fs-small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.85);margin:0}
  .cta-def{margin-top:26px;border-top:1px solid rgba(255,255,255,.35)}
  .cta-def div{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.25);align-items:baseline}
  .cta-def dt{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.75)}
  .cta-def dd{font-size:15px;color:#fff;font-weight:500} .cta-def dd a:hover{text-decoration:underline} .cta-def dd small{color:rgba(255,255,255,.75);font-size:13px}
  .cta-block .cta-btn{margin-top:24px;background:#fff;color:var(--acc);border:0} .cta-block .cta-btn:hover{background:var(--ink);color:#fff}
  .cta-right{align-items:stretch}
  .cta-block .cta-carte{position:relative;background:#fff;color:var(--t1);border-radius:20px;padding:26px 26px 22px;text-align:left;box-shadow:16px 16px 0 -1px rgba(0,0,0,.18),0 30px 70px rgba(0,0,0,.22)}
  .cta-block .cta-h-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
  .cta-block .cta-h-titre{font-family:var(--f-title);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--t3)}
  .cta-block .cta-h-etat{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:5px 11px;border-radius:99px;background:var(--fond-clair);color:var(--t2)}
  .cta-block .cta-h-etat.est-ouvert{background:color-mix(in srgb,var(--acc) 12%,#fff);color:var(--acc)}
  .cta-block .cta-h-etat.est-ferme{background:#F1EFEA;color:var(--t3)}
  .cta-h-grille{border-top:1px solid var(--bd2)}
  .cta-block .cta-h-jour{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--bd);background:none;border-radius:0}
  .cta-block .cta-h-jour .chj-l{font-family:var(--f-title);font-size:13px;font-weight:600;color:var(--t2);letter-spacing:0;text-transform:none}
  .cta-block .cta-h-jour .ij-h{font-family:var(--f-title);font-size:13.5px;font-weight:700;color:var(--t1);font-variant-numeric:tabular-nums;line-height:1.2}
  .cta-block .cta-h-jour.est-aujourdhui{background:none;padding-left:12px;border-left:3px solid var(--acc)}
  .cta-block .cta-h-jour.est-aujourdhui .chj-l{color:var(--acc);font-weight:800}
  .cta-h-note{margin-top:12px;font-size:12.5px;color:var(--t2);line-height:1.5}
  .cta-24{font-family:var(--f-title);font-size:15px;font-weight:700;color:var(--t1);line-height:1.5}
  @media(max-width:900px){.cta-inner{grid-template-columns:1fr;gap:36px;padding:56px 24px}.cta-block .cta-carte{box-shadow:10px 10px 0 -1px rgba(0,0,0,.18),0 18px 40px rgba(0,0,0,.2)}}

  /* ── Contact v3 : colonne gauche utile et non répétitive ── */
  .ct-aide{margin-top:34px;padding-top:24px;border-top:1px solid var(--bd2)}
  .ct-aide-titre{font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--t3);margin-bottom:6px}
  .ct-aide-liste{list-style:none;margin:0;padding:0}
  .ct-aide-liste li{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-bottom:1px solid var(--bd);font-size:15px;color:var(--t1);line-height:1.5}
  .ct-aide-liste svg{width:18px;height:18px;flex-shrink:0;margin-top:3px;stroke:var(--acc);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
  .ct-photo{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:22px;padding:18px 20px;background:#fff;border:1px solid var(--bd);border-radius:14px}
  .ct-photo b{display:block;font-family:var(--f-title);font-size:15px;color:var(--t1)}
  .ct-photo span{display:block;font-size:13.5px;color:var(--t2)}
  .ct-photo-btns{display:flex;gap:8px}
  .ct-photo-btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-title);font-weight:700;font-size:13px;padding:10px 14px;border-radius:10px;border:1.5px solid var(--bd2);color:var(--t1);background:#fff;transition:border-color .15s,color .15s}
  .ct-photo-btn:hover{border-color:var(--acc);color:var(--acc)}
  .ct-photo-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .ct-qui{display:flex;align-items:center;gap:14px;margin-top:26px}
  .ct-qui img,.ct-qui-ini{width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0}
  .ct-qui-ini{display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--acc) 12%,#fff);border:1px solid color-mix(in srgb,var(--acc) 30%,transparent);color:var(--acc);font-family:var(--f-display);font-weight:600;font-size:20px}
  .ct-qui b{display:block;font-family:var(--f-title);font-size:15px;color:var(--t1)}
  .ct-qui span{display:block;font-size:13.5px;color:var(--t2);line-height:1.5}
  @media(max-width:600px){.ct-photo{padding:16px}.ct-photo-btns{width:100%}.ct-photo-btn{flex:1;justify-content:center}}

  /* ── Contact v3 : la pastille d'initiales doit rester centrée (le
     « .ct-qui span » de la ligne de texte l'emportait sur la pastille). ── */
  .ct-qui .ct-qui-logo{display:flex;align-items:center;justify-content:center;width:auto;height:56px;max-width:180px;flex-shrink:0;border:0;background:none;border-radius:0}
  .ct-qui .ct-qui-logo img{height:44px;width:auto;max-width:180px;object-fit:contain;display:block;border-radius:0}
  .home-contact-left .lead{max-width:44ch}

  /* ── L'artisan v3 : portrait façon page de magazine (tête + citation,
     frise de repères en grands chiffres, prose sur deux colonnes avec
     lettrine). Rien de numéroté : c'est la section matière qui l'est. ── */
  .art-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:end;margin-bottom:40px}
  .art-head .sh{margin-bottom:0}
  .art-head .art-cite{border:0;padding:0 0 6px;margin:0;font-size:clamp(20px,1.9vw,25px)}
  .art-reperes{display:flex;flex-wrap:wrap;border-top:1px solid var(--bd2);border-bottom:1px solid var(--bd2);margin-bottom:48px}
  .art-repere{flex:1 1 0;min-width:150px;padding:22px 24px 22px 0;border-right:1px solid var(--bd)}
  .art-repere+.art-repere{padding-left:24px}
  .art-repere:last-child{border-right:0;padding-right:0}
  .art-repere b{display:block;font-family:var(--f-display);font-weight:600;font-size:clamp(26px,2.4vw,34px);letter-spacing:-.02em;line-height:1;color:var(--t1);margin-bottom:8px}
  .art-repere span{display:block;font-family:var(--f-title);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);line-height:1.5}
  .art-repere i{font-style:normal;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--t2);font-family:var(--f-body);font-size:12.5px}
  .art-corps{display:block}
  .art-prose{columns:2;column-gap:56px;column-rule:1px solid var(--bd)}
  .art-prose p{font-size:var(--fs-lead);color:var(--t2);line-height:1.75;margin:0 0 18px;break-inside:avoid}
  .art-prose p:first-child::first-letter{font-family:var(--f-display);font-weight:600;font-size:64px;line-height:.8;float:left;padding:8px 10px 0 0;color:var(--acc)}
  .art-prose .art-liens{column-span:all;margin-top:14px;padding-top:22px;border-top:1px solid var(--bd2)}
  .art-corps-photo{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:56px;align-items:start}
  .art-corps-photo .art-photo{margin:0;max-width:none}
  .art-corps-photo .art-prose{columns:1;column-rule:0}
  @media(max-width:900px){
    .art-head{grid-template-columns:1fr;gap:20px;margin-bottom:28px}
    .art-repere{flex:1 1 45%;min-width:0;padding:16px 16px 16px 0}
    .art-repere:nth-child(2n){border-right:0;padding-right:0}
    .art-prose{columns:1}
    .art-corps-photo{grid-template-columns:1fr;gap:28px}
    .art-corps-photo .art-photo{max-width:340px}
  }

  /* ── Pied de page : logo sombre recolorisé en clair par masque ── */
  .ft-logo-swap{position:relative;display:inline-flex;flex-shrink:0}
  .ft-logo-swap > img{visibility:hidden}
  .ft-logo-swap::after{content:'';position:absolute;inset:0;background:var(--footer-text,#fff);-webkit-mask:var(--logo-mask) left center/contain no-repeat;mask:var(--logo-mask) left center/contain no-repeat}
  @supports not ((-webkit-mask-image:url(#a)) or (mask-image:url(#a))){.ft-logo-swap > img{visibility:visible}.ft-logo-swap::after{display:none}}
  /* ── Placé en DERNIER : doit l'emporter sur le bloc « artisan v3 » ── */
  /* Repères de l'artisan en mobile : deux colonnes propres (le retrait de la
     2e colonne ne doit pas s'appliquer au début des lignes suivantes). */
  @media(max-width:900px){
    .art-reperes{display:grid;grid-template-columns:1fr 1fr}
    .art-repere,.art-repere+.art-repere{padding:16px 16px 16px 0;border-right:1px solid var(--bd);border-bottom:1px solid var(--bd);min-width:0}
    .art-repere:nth-child(even){padding-left:16px;border-right:0;padding-right:0}
    .art-repere:nth-child(odd){padding-left:0}
    .art-repere:nth-last-child(-n+2):nth-child(odd),.art-repere:last-child{border-bottom:0}
    .art-repere b{font-size:24px}
  }

