/* =====================================================================
   SHELL V2, Newvibes Group
   Navigation, pied de page et primitives partagées de la nouvelle
   identité. Issu de la maquette validée (maquette d'origine).

   Tout est scopé sous .nv2, posé sur le <body> par le layout quand la
   page demande le shell v2. Une page sans .nv2 garde l'ancien habillage
   d'app.css : aucune régression possible tant que la bascule n'est pas
   généralisée.
   ===================================================================== */

/* Le header v2 est fixe et mesure 74px : la variable doit valoir partout,
   y compris sur les pages encore habillées par app.css (66px chez lui), car
   leurs heros immersifs compensent la hauteur du header avec elle. */
:root{--header-h:74px}

/* Sur les pages sans .nv2 sur le body, le header fixe n'occupe plus de place
   dans le flux (l'ancien était sticky) : on rend cette place au contenu. Les
   heros immersifs la reprennent avec leur marge négative, comme avant. */
body:not(.nv2) main{padding-top:var(--header-h)}

.nv2{
  --bg:#0B0712; --bg-2:#120A22; --bg-card:#140A22;
  --ink:#F5F3FF; --ink-2:#B8B0C8; --muted:#8E859F;
  --violet:#8B5CF6; --magenta:#D946EF; --indigo:#6366F1; --cyan:#22D3EE; --lilac:#9F7CF0;
  --on-grad:#120821;
  --grad:linear-gradient(90deg,#8B5CF6,#D946EF 55%,#6366F1);
  --grad-son:linear-gradient(90deg,#6366F1,#8B5CF6 50%,#22D3EE);
  --grad-mobilier:linear-gradient(90deg,#8B5CF6,#9F7CF0 50%,#6366F1);
  --line:rgba(139,92,246,.16); --line-2:rgba(139,92,246,.20);
  --font-display:"Jakarta",system-ui,"Segoe UI",sans-serif;
  --font-sans:"Jakarta",system-ui,"Segoe UI",sans-serif;
  --header-h:74px;
  --pad-x:clamp(20px,4vw,64px);

  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--font-sans); font-size:17px; line-height:1.6;
  overflow-x:hidden;
}
.nv2 *,.nv2 *::before,.nv2 *::after{box-sizing:border-box}
.nv2 img,.nv2 video{display:block; max-width:100%}
.nv2 a{color:inherit; text-decoration:none}
.nv2 h1,.nv2 h2,.nv2 h3{font-family:var(--font-display); font-weight:600; line-height:.98; margin:0; letter-spacing:-.02em}
.nv2 p{margin:0}
.nv2 .grad-text{background:var(--grad-text,var(--grad)); -webkit-background-clip:text; background-clip:text; color:transparent}
.nv2 .grad-son{background:var(--grad-son); -webkit-background-clip:text; background-clip:text; color:transparent}

/* Le décor de fond d'app.css ferait doublon avec les halos. */
.nv2 .bg-decor{display:none}

/* ---------- Halos flottants ---------- */
.nv2 .halo{position:absolute; aspect-ratio:1; pointer-events:none; z-index:1; border-radius:50%}
.nv2 .halo--l{width:32vw; background-image:radial-gradient(circle closest-side,rgba(139,92,246,.30),transparent)}
.nv2 .halo--m{width:15vw; background-image:radial-gradient(circle closest-side,rgba(217,70,239,.26),transparent)}
.nv2 .halo--s{width:4vw;  background-image:radial-gradient(circle closest-side,rgba(34,211,238,.34),transparent)}
.nv2 .l5{left:5%}.nv2 .l10{left:10%}.nv2 .l20{left:20%}.nv2 .l40{left:40%}
.nv2 .r5{right:5%}.nv2 .r10{right:10%}.nv2 .r20{right:20%}
.nv2 .t0{top:0}.nv2 .t20{top:20%}.nv2 .t30{top:30%}
.nv2 .b5{bottom:5%}.nv2 .b10{bottom:10%}.nv2 .b30{bottom:30%}.nv2 .b50{bottom:50%}
.nv2 .halo--float{animation:nv2-floaty 14s ease-in-out infinite alternate}
@keyframes nv2-floaty{from{transform:translate3d(0,0,0)}to{transform:translate3d(3vw,-4vh,0)}}

/* ---------- Fondus sur les médias ---------- */
.nv2 .fade{position:absolute; z-index:3; pointer-events:none}
.nv2 .fade--l{inset:-2px auto -2px -2px; width:38%; background-image:linear-gradient(90deg,var(--bg),transparent)}
.nv2 .fade--r{inset:-2px -2px -2px auto; width:32%; background-image:linear-gradient(270deg,var(--bg),transparent)}
.nv2 .fade--b{inset:auto -2px -2px -2px; height:45%; background-image:linear-gradient(0deg,var(--bg),transparent)}
.nv2 .fade--t{inset:-2px -2px auto -2px; height:30%; background-image:linear-gradient(180deg,var(--bg),transparent)}

/* ---------- Trame ---------- */
.nv2 .section{position:relative; padding:clamp(80px,11vh,150px) 0; z-index:2}
.nv2 .section--tight{padding:clamp(50px,7vh,90px) 0}
/* Marges latérales seulement, jamais le raccourci « padding » : .wrap est
   déclaré après .section et, avec la même spécificité, un raccourci remettrait
   le padding vertical à zéro sur tout élément portant les deux classes. Les
   sections se retrouveraient collées les unes aux autres. */
.nv2 .wrap{width:100%; max-width:1800px; margin:0 auto; padding-left:var(--pad-x); padding-right:var(--pad-x)}
.nv2 .eyebrow{font-weight:500; font-size:13px; letter-spacing:.18em; text-transform:uppercase; color:var(--lilac); font-family:var(--font-sans)}

/* ---------- Navigation ---------- */
.nv2 .nav{position:fixed; inset:0 0 auto 0; z-index:90; height:var(--header-h); display:flex; align-items:center;
     transition:background .4s ease, backdrop-filter .4s ease, border-color .4s}
.nv2 .nav.is-stuck{background:rgba(11,7,18,.82); backdrop-filter:blur(14px); border-bottom:1px solid var(--line)}
/* Un panneau ouvert sur un header transparent flotterait sans attache. */
.nv2 .nav.is-mega-open{background:rgba(11,7,18,.94); backdrop-filter:blur(14px)}
.nv2 .nav__inner{display:flex; align-items:center; justify-content:space-between; gap:24px}
.nv2 .brand{display:flex; align-items:center; gap:11px; padding:0; background:none; border:0}
.nv2 .brand img{width:36px; height:auto}
.nv2 .brand b{font-family:var(--font-display); font-weight:600; letter-spacing:.02em; font-size:17px; display:block; line-height:1}
.nv2 .brand span span{font-size:10.5px; letter-spacing:.34em; color:var(--muted); display:block}
/* Le mot « Newvibes » dans le dessin du client (13/10/2026) : assets/img/newvibes-mot.svg, vectorisé
   depuis son fichier (pilotage/visuels/logo-mot/). Posé en masque, il prend la couleur du texte.
   Sans prise en charge des masques, le mot reste écrit en toutes lettres. */
@supports ((-webkit-mask-image:none) or (mask-image:none)){
  .nv2 .brand .brand__mot{width:112px; height:24px; margin-bottom:5px; font-size:0; background:currentColor;
    -webkit-mask:url(../img/newvibes-mot.svg) left center/contain no-repeat; mask:url(../img/newvibes-mot.svg) left center/contain no-repeat}
}
.nv2 .nav__links{display:flex; gap:26px; font-size:14.5px; font-weight:500; letter-spacing:.02em}
.nv2 .nav__links a{position:relative; padding:6px 0; text-transform:uppercase; font-size:13px; letter-spacing:.1em; white-space:nowrap}
.nv2 .nav__links a::after{content:""; position:absolute; left:0; right:100%; bottom:0; height:1px; background:var(--grad); transition:right .35s ease}
.nv2 .nav__links a:hover::after,.nv2 .nav__links a.is-active::after{right:0}
.nv2 .nav__right{display:flex; align-items:center; gap:18px}
/* Entrée de l'en-tête, accordée à celle du hero. Même principe :
   « backwards » et aucune opacité nulle dans la règle de base, donc rien
   ne peut rester invisible si les animations sont coupées. */
@keyframes nv2-nav-in{from{opacity:0; transform:translateY(-10px)}to{opacity:1; transform:none}}
.nv2 .nav .brand{animation:nv2-nav-in .6s cubic-bezier(.2,.7,.3,1) backwards}
.nv2 .nav__links > *{animation:nv2-nav-in .6s cubic-bezier(.2,.7,.3,1) backwards}
.nv2 .nav__links > *:nth-child(1){animation-delay:.10s}
.nv2 .nav__links > *:nth-child(2){animation-delay:.16s}
.nv2 .nav__links > *:nth-child(3){animation-delay:.22s}
.nv2 .nav__links > *:nth-child(4){animation-delay:.28s}
.nv2 .nav__links > *:nth-child(5){animation-delay:.34s}
.nv2 .nav__links > *:nth-child(6){animation-delay:.40s}
.nv2 .nav__right{animation:nv2-nav-in .6s cubic-bezier(.2,.7,.3,1) .40s backwards}
.nv2 .tel{display:flex; align-items:center; gap:8px; font-size:14px; color:var(--ink-2)}
.nv2 .tel:hover{color:var(--ink)}
.nv2 .burger{display:none; width:44px; height:44px; border:1px solid var(--line); border-radius:50%; background:rgba(255,255,255,.03); cursor:pointer; padding:0; place-items:center}
.nv2 .burger i{display:block; width:17px; height:1.5px; background:var(--ink); margin:3.5px auto; transition:transform .3s, opacity .3s}
.nv2 .burger.is-open i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.nv2 .burger.is-open i:nth-child(2){opacity:0}
.nv2 .burger.is-open i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
.nv2 .navbody{position:fixed; inset:0; z-index:85; background:var(--bg-2); display:flex; flex-direction:column; justify-content:center; padding:0 var(--pad-x);
         clip-path:inset(0 0 100% 0); transition:clip-path .7s cubic-bezier(.76,0,.24,1); visibility:hidden}
.nv2 .navbody.is-open{clip-path:inset(0 0 0 0); visibility:visible}
.nv2 .navbody a{font-family:var(--font-display); font-size:clamp(30px,6vw,64px); line-height:1.14; opacity:.55; transition:opacity .3s, transform .4s; display:block}
.nv2 .navbody a:hover{opacity:1; transform:translateX(14px)}

/* ---------- Menu déroulant des univers (desktop) ----------
   Le panneau appartient au <header> fixe : il se déploie sur toute la largeur,
   juste sous la barre, sans décaler la page. Fermé, il reste dans le DOM mais
   hors du champ du clavier (visibility) : c'est ce qui permet la transition. */
.nv2 .nav__item{position:static; display:flex; align-items:center}
.nv2 .nav__links .nav__toggle{display:inline-flex; align-items:center; gap:6px}
.nv2 .nav__chev{opacity:.55; transition:transform .3s, opacity .3s}
.nv2 .nav__item.is-open .nav__chev{transform:rotate(180deg); opacity:1}
.nv2 .nav__item.is-open .nav__toggle::after{right:0}

.nv2 .mega{
  position:absolute; top:100%; left:0; right:0; z-index:89;
  /* Presque opaque : sur une page claire, un fond translucide laisserait
     remonter le texte de la page sous les listes. */
  background:rgba(12,7,22,.985); backdrop-filter:blur(18px);
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  box-shadow:0 40px 80px -30px rgba(0,0,0,.85);
  opacity:0; visibility:hidden; transform:translateY(-10px);
  transition:opacity .28s ease, transform .28s ease, visibility .28s;
}
.nv2 .mega::before{content:""; position:absolute; inset:0 0 auto 0; height:2px; background:var(--grad); opacity:.9}
.nv2 .mega--son::before{background:var(--grad-son)}
.nv2 .mega--mobilier::before{background:var(--grad-mobilier)}
.nv2 .mega.is-open{opacity:1; visibility:visible; transform:none}
/* Les colonnes gardent leur largeur naturelle et l'encart reste ancré à droite :
   des listes étirées sur toute la largeur seraient illisibles. */
.nv2 .mega__inner{display:grid; grid-template-columns:auto minmax(260px,320px); justify-content:space-between; gap:clamp(28px,4vw,64px); padding-top:clamp(26px,3vw,38px); padding-bottom:clamp(26px,3vw,38px)}
.nv2 .mega__groups{display:flex; flex-wrap:wrap; gap:clamp(24px,3vw,56px)}
.nv2 .mega__group{min-width:0; flex:0 0 auto}
.nv2 .mega__label{display:block; font-size:11.5px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--lilac); margin-bottom:14px}
.nv2 .mega--son .mega__label{color:#7E82F5}
.nv2 .mega--mobilier .mega__label{color:#A78BFA}
/* Colonnes calibrées sur la longueur des noms : au-delà, le compteur se
   retrouverait à l'autre bout de l'écran et la liste ne se lirait plus. */
.nv2 .mega__list{
  list-style:none; margin:0; padding:0;
  /* Colonnes typographiques : la liste se lit de haut en bas, colonne après
     colonne, comme un sommaire, et non de gauche à droite ligne par ligne. */
  columns:var(--mega-cols,1); column-gap:clamp(8px,1.2vw,20px);
  width:calc(var(--mega-cols,1) * 246px); max-width:100%;
}
.nv2 .mega__list li{break-inside:avoid}
.nv2 .mega__list a{
  display:flex; align-items:baseline; gap:9px;
  padding:7px 12px 7px 11px; border-radius:10px;
  font-size:14.5px; color:var(--ink-2); border:1px solid transparent;
  transition:color .2s, background .2s, border-color .2s, transform .2s;
}
.nv2 .mega__list a small{font-size:11.5px; color:var(--muted); font-variant-numeric:tabular-nums}
.nv2 .mega__list a:hover{color:#fff; background:rgba(139,92,246,.12); border-color:var(--line-2); transform:translateX(3px)}
.nv2 .mega--son .mega__list a:hover{background:rgba(99,102,241,.14); border-color:rgba(99,102,241,.28)}
.nv2 .mega--mobilier .mega__list a:hover{background:rgba(139,92,246,.14); border-color:rgba(139,92,246,.28)}

.nv2 .mega__side{
  align-self:start; padding:clamp(20px,2.2vw,26px); border-radius:18px;
  border:1px solid var(--line-2);
  background:linear-gradient(180deg,rgba(139,92,246,.14),rgba(18,10,34,.5));
}
.nv2 .mega--son .mega__side{background:linear-gradient(180deg,rgba(99,102,241,.16),rgba(18,10,34,.5))}
.nv2 .mega--mobilier .mega__side{background:linear-gradient(180deg,rgba(139,92,246,.16),rgba(18,10,34,.5))}
.nv2 .mega__side-label{display:block; font-size:11.5px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
.nv2 .mega__side-title{margin-top:8px; font-family:var(--font-display); font-weight:600; font-size:20px; line-height:1.15; letter-spacing:-.01em}
.nv2 .mega__side-txt{margin-top:10px; font-size:14px; line-height:1.6; color:var(--ink-2)}
.nv2 .mega__cta{margin-top:18px; padding:11px 20px; font-size:14px}
.nv2 .mega--son .mega__cta{background:var(--grad-son); box-shadow:0 12px 30px -12px rgba(99,102,241,.6)}
.nv2 .mega--mobilier .mega__cta{background:var(--grad-mobilier); box-shadow:0 12px 30px -12px rgba(139,92,246,.6)}
.nv2 .mega__side-link{display:inline-flex; align-items:center; gap:7px; margin-top:16px; font-size:14px; font-weight:600; color:var(--magenta); transition:gap .3s}
.nv2 .mega--son .mega__side-link{color:#7E82F5}
.nv2 .mega--mobilier .mega__side-link{color:#A78BFA}
.nv2 .mega__side-link:hover{gap:11px}
.nv2 .mega__tel{display:flex; align-items:center; gap:8px; margin-top:14px; font-size:14px; color:var(--ink-2)}
.nv2 .mega__tel:hover{color:var(--ink)}

/* Le survol n'existe pas au doigt : le panneau ne sert qu'à la souris et au
   clavier, le menu plein écran prend le relais sur les petits écrans. */
@media (hover:none),(max-width:1120px){
  .nv2 .mega{display:none}
  .nv2 .nav__chev{display:none}
}

/* Sous-listes du menu plein écran (mobile) */
/* Les catégories allongent le panneau : il défile et part du haut, sinon le
   centrage vertical rendrait les premières entrées inatteignables. */
.nv2 .navbody{justify-content:flex-start; overflow-y:auto; padding-top:calc(var(--header-h) + 16px); padding-bottom:32px}
.nv2 .navbody a{font-size:clamp(26px,5vw,50px)}
.nv2 .navbody__subs{list-style:none; margin:10px 0 22px; padding:0; display:flex; flex-wrap:wrap; gap:7px}
.nv2 .navbody__subs a{font-family:var(--font-sans); font-size:13px; opacity:1; padding:6px 13px; border-radius:999px; border:1px solid var(--line-2); background:rgba(255,255,255,.03); color:var(--ink-2)}
.nv2 .navbody__subs a:hover{transform:none; color:#fff; border-color:rgba(217,70,239,.5)}
/* Les prestations ne sont pas des catégories du catalogue : elles se détachent. */
.nv2 .navbody__subs .navbody__sub--presta{background:rgba(139,92,246,.14); border-color:rgba(139,92,246,.34); color:#D8CCF5}

/* ---------- Boutons ---------- */
.nv2 .btn{display:inline-flex; align-items:center; gap:11px; padding:13px 24px; border-radius:999px; font-weight:600; font-size:14.5px;
     background:var(--grad); color:var(--on-grad); box-shadow:0 12px 30px -12px rgba(217,70,239,.6);
     transition:transform .3s, box-shadow .3s, gap .3s; border:0; cursor:pointer; font-family:var(--font-sans)}
.nv2 .btn:hover{transform:translateY(-2px); gap:16px; box-shadow:0 18px 40px -12px rgba(217,70,239,.85)}
.nv2 .btn--ghost{background:rgba(255,255,255,.03); color:var(--ink); border:1px solid rgba(245,243,255,.22); box-shadow:none}
.nv2 .btn--ghost:hover{border-color:rgba(217,70,239,.55); background:rgba(217,70,239,.08)}
.nv2 .dots{display:inline-flex; gap:3px}
.nv2 .dots i{width:4px; height:4px; border-radius:50%; background:currentColor; opacity:.5; animation:nv2-blink 1.5s infinite}
.nv2 .dots i:nth-child(2){animation-delay:.2s}
.nv2 .dots i:nth-child(3){animation-delay:.4s}
@keyframes nv2-blink{0%,100%{opacity:.25}50%{opacity:1}}

/* ---------- Gros bouton circulaire ---------- */
.nv2 .circle-cta{position:relative; z-index:7; display:grid; place-items:center; text-align:center;
  width:clamp(138px,13vw,204px); aspect-ratio:1; border-radius:50%; flex:none;
  font-family:var(--font-display); font-size:clamp(16px,1.4vw,25px); line-height:1.05; text-transform:uppercase;
  isolation:isolate; transition:transform .45s cubic-bezier(.34,1.4,.64,1)}
.nv2 .circle-cta__bg{position:absolute; inset:0; border-radius:50%; z-index:-1}
.nv2 .circle-cta__bg--grad{background-image:linear-gradient(225deg,rgba(139,92,246,.85),rgba(217,70,239,.28) 60%,transparent 88%); backdrop-filter:blur(3px); border:1px solid rgba(245,243,255,.14)}
.nv2 .circle-cta__bg--solid{background:var(--grad); opacity:0; transition:opacity .45s ease}
.nv2 .circle-cta span{display:block}
.nv2 .circle-cta em{font-style:normal; display:block; color:var(--cyan); transition:color .45s}
.nv2 .circle-cta:hover{transform:scale(1.07) rotate(-3deg)}
.nv2 .circle-cta:hover .circle-cta__bg--solid{opacity:1}
.nv2 .circle-cta:hover,.nv2 .circle-cta:hover em{color:var(--on-grad)}

/* ---------- Pied de page ---------- */
.nv2 .foot{position:relative; padding-top:clamp(70px,9vh,120px); overflow:hidden; z-index:2; max-width:none; margin:0}
.nv2 .foot__grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:40px; padding-bottom:60px}
.nv2 .foot h4{font-family:var(--font-sans); font-size:12.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin:0 0 18px; font-weight:500}
.nv2 .foot ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; font-size:15px; color:var(--ink-2)}
.nv2 .foot ul a:hover{color:var(--ink)}
.nv2 .foot__intro{color:var(--ink-2); font-size:15px; max-width:34ch; margin-top:18px}
.nv2 .foot__geo{display:flex; gap:10px; align-items:flex-start; color:var(--ink-2); font-size:14.5px; line-height:1.5}
.nv2 .foot__geo svg{flex:none; margin-top:3px}
.nv2 .foot__socials{display:flex; gap:10px; margin-top:20px}
.nv2 .foot__socials a{width:38px; height:38px; border-radius:50%; border:1px solid var(--line); display:grid; place-items:center; font-size:13px; font-weight:600; color:var(--ink-2); transition:border-color .3s, color .3s}
.nv2 .foot__socials a:hover{border-color:rgba(217,70,239,.55); color:var(--ink)}
.nv2 .foot__legal{border-top:1px solid var(--line); padding:24px 0; display:flex; justify-content:space-between; gap:20px; font-size:13px; color:var(--muted); flex-wrap:wrap}
.nv2 .foot__legal a:hover{color:var(--ink)}
.nv2 .marquee{overflow:hidden; border-top:1px solid var(--line); padding:26px 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.nv2 .marquee__row{display:flex; gap:3vw; white-space:nowrap; animation:nv2-slide 26s linear infinite; width:max-content}
.nv2 .marquee__row span{font-family:var(--font-display); font-size:clamp(30px,4.4vw,78px); text-transform:uppercase; color:transparent; -webkit-text-stroke:1px rgba(245,243,255,.22)}
.nv2 .marquee__row span:nth-child(even){color:var(--ink); -webkit-text-stroke:0}
@keyframes nv2-slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- Apparitions au défilement ---------- */

/* ---------- Liens dans le texte ---------- */
.nv2 .inline-link{color:var(--ink); text-decoration:underline; text-decoration-color:rgba(217,70,239,.55); text-underline-offset:3px; transition:text-decoration-color .3s}
.nv2 .inline-link:hover{text-decoration-color:var(--magenta)}

/* ---------- Accessibilité ---------- */
.nv2 .visually-hidden{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0}
.nv2 a:focus-visible,.nv2 button:focus-visible{outline:2px solid var(--cyan); outline-offset:3px; border-radius:4px}

/* Six entrées de menu : on resserre avant de basculer au burger, sinon la
   navigation vient buter sur le numéro de téléphone. */
@media (max-width:1240px){
  .nv2 .nav__links{gap:18px}
  .nv2 .nav__links a{font-size:12px; letter-spacing:.06em}
}
@media (max-width:1100px){
  .nv2 .foot__grid{grid-template-columns:1fr 1fr}
}
/* Bascule au burger à 1120px et non plus 860 : à six entrées, la navigation
   ne tient plus sur une ligne en dessous. */
@media (max-width:1120px){
  .nv2 .nav__links,.nv2 .tel{display:none}
  .nv2 .burger{display:grid}
}
@media (max-width:860px){
  .nv2 .foot__grid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .nv2 *{animation:none !important; transition-duration:.01ms !important}
  .nv2 [data-reveal]{opacity:1; transform:none}
}

/* ----- En-tête : bouton de devis, menu mobile (ajustements du style v3) ----- */
.nv2 .nav .nav__links{gap:20px}
.nv2 .nav__devis{padding:10px 18px; font-size:14px; white-space:nowrap}
.nv2 .nav .nav__right{gap:16px}
.nv2 .nav .brand,.nv2 .nav .tel{flex:none; white-space:nowrap}
@media (max-width:1120px){
  .nv2 .nav .nav__links,.nv2 .nav .tel{display:none}
  .nv2 .nav .burger{display:grid}
}
@media (max-width:600px){ .nv2 .nav__devis{display:none} }
.nv2 .navbody .navbody__titre{display:block; margin-top:16px; font-family:var(--font-display); font-size:clamp(26px,5vw,50px); line-height:1.14; color:var(--ink)}
.nv2 .navbody__pied{display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin-top:32px}
.nv2 .navbody .navbody__pied a{font-family:var(--font-sans); opacity:1; transform:none}
.nv2 .navbody .navbody__pied .btn{font-size:15px; line-height:1.2; color:var(--on-grad)}
.nv2 .navbody__tel{display:inline-flex; align-items:center; gap:8px; font-size:15px; line-height:1.2; font-weight:600; color:var(--ink); padding:8px 0}
.nv2 .navbody__tel svg{color:var(--magenta)}
