/* ================================================================
   EUROVALO — Landing page
   ----------------------------------------------------------------
   Maquette de référence : 1920 px de large. Toutes les mesures
   desktop sont exprimées en "unités maquette" (var(--u)) : 1 unité
   = 1 px à 1920 px, et la page se réduit proportionnellement
   jusqu'à 1024 px. En dessous, les règles mobiles prennent le relais.

   Polices :
   - Plus Jakarta Sans : titres de section et textes courants
   - Poppins           : cartes, boutons de la bannière
   - Space Mono        : titres monospace (nav, partenaires, points forts)
   - PP Supply Mono    : étiquettes système (licence à acquérir,
                         JetBrains Mono prend le relais en attendant)
   ================================================================ */

:root{
  --u: min(1px, calc(100vw / 1920));

  --orange:#FF5E00;
  --orange-2:#F76A14;
  --orange-hover:#FF7424;
  --ink:#0B0C0C;
  --ink-2:#191A1A;
  --ink-3:#222526;
  --black:#000;
  --muted:#4A4A4A;
  --on-dark:#B6B7B7;
  --on-dark-2:#797A7A;
  --line:#EAEAEA;
  --line-2:#E7E7E7;
  --off:#F9F9F7;
  --ph:#D9D9D9;
  --bar-grey:#D7D8D5;

  --f-sans:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-pop:'Poppins',system-ui,sans-serif;
  --f-mono-d:'Space Mono',ui-monospace,monospace;
  --f-mono:'PP Supply Mono','JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --gut:16px;
  --nav-h:calc(var(--u) * 84);
}
@media (min-width:1921px){ :root{ --u:1px } }

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:90px}
/* défilement adouci (assets/js/smooth.js) */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:clip}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }
body{
  margin:0;background:#fff;color:var(--ink);
  font-family:var(--f-sans);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;text-align:inherit}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none;margin:0;padding:0}
h1,h2,h3,h4,p,figure,dl,dd{margin:0}
:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
[hidden]{display:none!important}

.wrap{width:calc(var(--u) * 1522);margin-inline:auto}

/* ---------------- Étiquette de section ---------------- */
.tag{
  display:inline-flex;align-items:center;gap:calc(var(--u) * 15);
  font-family:var(--f-mono);font-size:max(12px, calc(var(--u) * 16));font-weight:400;
  letter-spacing:.15em;text-transform:uppercase;color:var(--muted);line-height:1;
}
.tag::before{content:"";flex:none;width:calc(var(--u) * 8);height:calc(var(--u) * 8);min-width:6px;min-height:6px;background:var(--orange)}
.tag--dark{color:var(--on-dark-2)}
.tag--light{color:#fff}

/* ---------------- Titres & chapeaux ---------------- */
.h2{
  font-family:var(--f-sans);font-weight:800;color:var(--ink);
  font-size:max(34px, calc(var(--u) * 76));line-height:1.02;letter-spacing:-.035em;
  max-width:calc(var(--u) * 1010);
}
.lead{
  font-size:max(17px, calc(var(--u) * 28));line-height:1.57;color:var(--muted);
  letter-spacing:-.012em;max-width:calc(var(--u) * 1010);
}

/* ---------------- Boutons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--f-sans);font-weight:600;font-size:max(15px, calc(var(--u) * 20));
  line-height:1.2;white-space:nowrap;text-align:center;
  min-height:max(52px, calc(var(--u) * 78));padding:0 calc(var(--u) * 40);border-radius:max(8px, calc(var(--u) * 10));
  transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),transform .2s var(--ease),box-shadow .25s var(--ease);
}
.btn svg{width:1.1em;height:1.1em;flex:none;transition:transform .3s var(--ease)}
.btn:active{transform:translateY(1px)}
.btn--orange{background:var(--orange);color:#fff}
.btn--orange:hover{background:var(--orange-hover);box-shadow:0 10px 30px -12px rgba(255,94,0,.6)}
.btn--orange:hover svg{transform:translateX(3px)}
.btn--dark{background:var(--ink);color:#fff}
.btn--dark:hover{background:var(--ink-3)}
/* WhatsApp : vert profond demandé par Eurovalo ; logo en vert WhatsApp pour le distinguer du bouton noir voisin */
.btn--wa{background:#003A27;color:#fff}
.btn--wa:hover{background:#00523A}
.btn--wa svg{color:#25D366}
.btn--line{border:1.5px solid var(--ink);color:var(--ink)}
.btn--line:hover{background:var(--ink);color:#fff}
.btn--ghost{border:1px solid rgba(255,255,255,.16);color:#fff}
.btn--ghost:hover{background:rgba(255,255,255,.08)}
.btn--wide{width:100%}
.btn--ic{padding:0;width:52px;flex:none}

/* ---------------- Hachures des emplacements photo ---------------- */
.hatch{
  background-color:#E6E6E6;
  background-image:repeating-linear-gradient(135deg, rgba(0,0,0,.07) 0 1px, transparent 1px 22px);
}
.hatch--dark{
  background-color:#121313;
  background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.05) 0 1px, transparent 1px 22px);
}
.ph{
  display:inline-block;text-align:center;
  font-family:var(--f-mono);font-size:max(11px, calc(var(--u) * 16));letter-spacing:.15em;line-height:1.72;
  text-transform:uppercase;color:var(--muted);
  padding:calc(var(--u) * 10) calc(var(--u) * 34);border:1px dashed #BDBDBD;border-radius:calc(var(--u) * 8);
  background:rgba(255,255,255,.35);
}
.ph--dark{color:var(--on-dark-2);border-color:#3A3B3B;background:rgba(255,255,255,.015)}

/* ================================================================
   NAVIGATION
   ================================================================ */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:60;height:var(--nav-h);min-height:64px;
  display:grid;grid-template-columns:max(190px, calc(var(--u) * 232)) 1fr max(92px, calc(var(--u) * 98)) max(64px, calc(var(--u) * 105));
  align-items:stretch;background:rgba(255,255,255,0);
  border-bottom:1px solid var(--line-2);
  transition:background-color .35s var(--ease),transform .45s var(--ease-out),box-shadow .35s var(--ease);
}
.nav.is-solid{background:rgba(255,255,255,.9);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);box-shadow:0 10px 30px -22px rgba(0,0,0,.25)}
.nav.is-hidden{transform:translateY(-101%)}
.nav__brand{display:flex;align-items:center;padding-left:max(24px, calc(var(--u) * 47));border-right:1px solid var(--line-2)}
.nav__brand img{width:150px;height:auto}
.nav__links{
  position:absolute;left:50%;top:0;bottom:0;transform:translateX(-50%);
  display:flex;align-items:center;gap:calc(var(--u) * 31);
}
.nav__links a{
  position:relative;font-family:var(--f-mono-d);font-weight:700;
  font-size:max(12px, calc(var(--u) * 15));letter-spacing:.12em;text-transform:uppercase;color:var(--ink);
  padding:8px 0;white-space:nowrap;
}
.nav__links a::after{
  content:"";position:absolute;left:0;right:0;bottom:2px;height:2px;background:var(--orange);
  transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease);
}
.nav__links a:hover::after,.nav__links a.is-active::after{transform:scaleX(1);transform-origin:left}
.nav__lang{grid-column:3;position:relative;display:flex;border-left:1px solid var(--line-2);border-right:1px solid var(--line-2)}
.nav__lang-btn{
  flex:1;display:flex;align-items:center;justify-content:center;
  font-family:var(--f-mono-d);font-weight:700;font-size:max(12px, calc(var(--u) * 15));letter-spacing:.12em;
}
.nav__lang-btn:hover{color:var(--orange)}
.nav__lang-btn::after{content:"";width:6px;height:6px;margin-left:2px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .25s var(--ease)}
.nav__lang.is-open .nav__lang-btn::after{transform:translateY(1px) rotate(-135deg)}
.nav__lang-menu{
  position:absolute;top:100%;left:-1px;right:-1px;background:#fff;border:1px solid var(--line-2);border-top:0;
  display:grid;opacity:0;visibility:hidden;transform:translateY(-6px);transition:all .25s var(--ease);
}
.nav__lang.is-open .nav__lang-menu{opacity:1;visibility:visible;transform:none}
.nav__lang-menu button{padding:13px 10px;text-align:center;font-family:var(--f-mono-d);font-weight:700;font-size:13px;letter-spacing:.12em;transition:color .2s,background-color .2s}
.nav__lang-menu button:hover{background:var(--off)}
.nav__lang-menu button+button{border-top:1px solid var(--line-2)}
.nav__lang-menu button:hover,.nav__lang-menu button[aria-pressed="true"]{color:var(--orange)}
.nav__call{grid-column:4;display:grid;place-items:center;color:var(--ink);transition:color .25s var(--ease),background-color .25s var(--ease)}
.nav__call svg{width:22px;height:22px}
.nav__call:hover{color:#fff;background:var(--orange)}
.nav__burger{display:none}
.flag{width:18px;height:12px;flex:none;border-radius:1px;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.nav__lang-btn{gap:9px}
.nav__lang-menu button{display:flex;align-items:center;justify-content:center;gap:9px}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Menu mobile */
.menu{
  position:fixed;inset:0;z-index:55;background:#fff;padding:96px 20px 28px;
  display:flex;flex-direction:column;justify-content:space-between;
  opacity:0;visibility:hidden;transition:opacity .3s var(--ease),visibility .3s;
}
.menu.is-open{opacity:1;visibility:visible}
.menu nav{display:flex;flex-direction:column}
.menu nav a{
  font-family:var(--f-mono-d);font-weight:700;font-size:20px;letter-spacing:.08em;text-transform:uppercase;
  padding:18px 0;border-bottom:1px solid var(--line-2);
  transform:translateY(14px);opacity:0;transition:transform .5s var(--ease-out),opacity .5s var(--ease-out);
}
.menu.is-open nav a{transform:none;opacity:1}
.menu.is-open nav a:nth-child(2){transition-delay:.05s}
.menu.is-open nav a:nth-child(3){transition-delay:.1s}
.menu.is-open nav a:nth-child(4){transition-delay:.15s}
.menu__act{display:grid;gap:10px}

/* ================================================================
   HERO
   Composition : titre à bandes (à gauche) · carte de devis posée
   sur la photo et les bandes grises (à droite). La carte de devis
   est le premier élément visible, sur ordinateur comme sur mobile.
   ================================================================ */
.hero{
  position:relative;overflow:hidden;background:#fff;
  padding:calc(max(64px, var(--nav-h)) + max(40px, var(--u) * 64)) 0 calc(var(--u) * 92);
}
/* repères verticaux discrets, dans le prolongement des séparateurs de la nav */
.hero::before,.hero::after{
  content:"";position:absolute;top:0;bottom:0;width:1px;pointer-events:none;
  background:linear-gradient(var(--line-2),rgba(231,231,231,0) 85%);
}
.hero::before{left:calc(var(--u) * 232)}
.hero::after{right:calc(var(--u) * 203)}
.hero__inner{
  position:relative;z-index:1;width:calc(var(--u) * 1522);margin-inline:auto;
  display:grid;grid-template-columns:minmax(0,1fr) calc(var(--u) * 720);column-gap:calc(var(--u) * 70);
  align-items:center;padding-left:calc(var(--u) * 110);
}
.hero__kicker{margin-bottom:calc(var(--u) * 34)}
.hero__title{
  font-family:var(--f-sans);font-weight:300;text-transform:uppercase;color:var(--ink);
  font-size:max(34px, calc(var(--u) * 66));line-height:1.12;letter-spacing:-.03em;
}
.hero__line{position:relative;display:block}
.hero__line>span{display:block}
.hero__line--bold{font-weight:800;letter-spacing:-.035em}
.hero__line--bold em{font-style:normal;color:var(--orange)}
/* bandes orange alignées sur chaque ligne du titre, jusqu'au bord de l'écran */
.hero__line::before{
  content:"";position:absolute;top:50%;right:calc(100% + var(--u) * 42);width:100vw;
  height:calc(var(--u) * 34);margin-top:calc(var(--u) * -15);background:var(--orange);
  transform-origin:left center;
}
.hero__line:nth-child(2)::before{background:var(--orange-2)}
.hero__sub{
  margin-top:calc(var(--u) * 38);max-width:calc(var(--u) * 540);
  font-size:max(16px, calc(var(--u) * 21));line-height:1.62;color:var(--muted);
}
.hero__cta{display:flex;flex-wrap:wrap;gap:calc(var(--u) * 14);margin-top:calc(var(--u) * 40)}
.btn--sq{
  border-radius:2px;min-height:max(52px, calc(var(--u) * 62));padding:0 calc(var(--u) * 30);
  font-weight:700;font-size:max(13px, calc(var(--u) * 15));letter-spacing:.07em;text-transform:uppercase;
}
.hero__facts{
  display:flex;flex-wrap:wrap;gap:10px max(18px, calc(var(--u) * 28));margin-top:calc(var(--u) * 44);
  font-family:var(--f-mono);font-size:max(11px, calc(var(--u) * 13));letter-spacing:.14em;text-transform:uppercase;color:#7F7F7F;
}
.hero__facts li{display:inline-flex;align-items:center;gap:10px;line-height:1.2;white-space:nowrap}
.hero__facts li::before{content:"";width:5px;height:5px;background:var(--orange);flex:none}
.hero__facts b{font-weight:500;color:var(--ink)}

/* ---------- Colonne droite : photo + bandes + carte de devis ---------- */
.hero__media{position:relative;padding:calc(var(--u) * 84) 0 calc(var(--u) * 40)}
.hero__visual{position:absolute;right:0;top:0;bottom:calc(var(--u) * 120);width:calc(var(--u) * 450)}
.hero__bars{position:absolute;z-index:0;top:46%;left:calc(var(--u) * -330);width:100vw;display:grid;gap:calc(var(--u) * 30)}
.hero__bars i{display:block;height:calc(var(--u) * 34);background:var(--bar-grey);transform-origin:left center}
.hero__bars i:nth-child(2){background:#CFD0CC}
.hero__photo{position:relative;z-index:1;width:100%;height:100%}
.hero__photo img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:46% 62%;
  transform:scale(1.001);will-change:transform;
}
.hero__photo::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(11,12,12,0) 55%,rgba(11,12,12,.55))}
.hero__mark{position:absolute;z-index:2;width:calc(var(--u) * 20);height:calc(var(--u) * 20);min-width:12px;min-height:12px;border:0 solid var(--orange)}
.hero__mark--tl{top:calc(var(--u) * -14);left:calc(var(--u) * -14);border-top-width:2px;border-left-width:2px}
.hero__mark--tr{top:calc(var(--u) * -14);right:calc(var(--u) * -14);border-top-width:2px;border-right-width:2px}
.hero__mark--bl{bottom:calc(var(--u) * -14);left:calc(var(--u) * -14);border-bottom-width:2px;border-left-width:2px}
.hero__mark--br{bottom:calc(var(--u) * -14);right:calc(var(--u) * -14);border-bottom-width:2px;border-right-width:2px}
.hero__cap{
  position:absolute;z-index:2;right:calc(var(--u) * 18);bottom:calc(var(--u) * 22);
  writing-mode:vertical-rl;transform:rotate(180deg);
  font-family:var(--f-mono);font-size:max(10px, calc(var(--u) * 12));letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.78);
}
.hero__badge{
  position:absolute;z-index:4;top:calc(var(--u) * 44);right:calc(var(--u) * -28);
  display:inline-flex;align-items:center;gap:10px;background:#fff;color:var(--ink);
  padding:calc(var(--u) * 14) calc(var(--u) * 20);border:1px solid var(--line-2);white-space:nowrap;
  font-family:var(--f-mono);font-size:max(11px, calc(var(--u) * 13));letter-spacing:.14em;text-transform:uppercase;
  box-shadow:0 18px 40px -20px rgba(0,0,0,.35);
}
.dot{position:relative;width:8px;height:8px;border-radius:50%;background:var(--orange);flex:none}
.dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--orange);animation:ping 1.8s var(--ease-out) infinite}
@keyframes ping{0%{transform:scale(1);opacity:.7}100%{transform:scale(3);opacity:0}}

/* ---------- Carte de devis ---------- */
.qcard{
  position:relative;z-index:3;
  width:clamp(340px, calc(var(--u) * 444), 444px);
  background:var(--ink);color:#fff;border-radius:4px;
  padding:max(18px, calc(var(--u) * 30)) max(14px, calc(var(--u) * 15)) max(14px, calc(var(--u) * 18));
  box-shadow:0 50px 90px -40px rgba(11,12,12,.55),0 0 0 1px rgba(255,255,255,.04) inset;
}
.qcard__top{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:0 0 max(12px, calc(var(--u) * 15));border-bottom:1px solid #2A2B2B;
  font-family:var(--f-mono-d);font-size:max(11px, calc(var(--u) * 14));letter-spacing:.12em;text-transform:uppercase;line-height:1;
}
.qcard__tag{display:inline-flex;align-items:center;gap:10px;color:#8C8C8C}
.qcard__tag::before{content:"";width:5px;height:5px;background:var(--orange);flex:none}
.qcard__min{display:inline-flex;align-items:center;gap:8px;color:var(--orange);white-space:nowrap}
.qcard__min .dot{width:5px;height:5px}
.qcard__t{margin-top:max(20px, calc(var(--u) * 32));font-family:var(--f-pop);font-weight:600;font-size:max(19px, calc(var(--u) * 21));line-height:1.2;letter-spacing:-.005em}
.qcard__s{margin-top:6px;font-size:max(12px, calc(var(--u) * 12.5));color:#8C8C8C;letter-spacing:-.005em}
.qcard__opts{display:grid;grid-template-columns:1fr 1fr;gap:max(10px, calc(var(--u) * 14)) max(10px, calc(var(--u) * 14));margin-top:max(16px, calc(var(--u) * 22))}
.qopt{
  position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:max(6px, calc(var(--u) * 8));
  min-height:max(104px, calc(var(--u) * 119));padding:max(13px, calc(var(--u) * 15));text-align:left;
  background:var(--ink-2);border:1px solid #2A2B2B;border-radius:6px;
  transition:border-color .25s var(--ease),background-color .25s var(--ease),transform .2s var(--ease);
}
.qopt:hover{border-color:var(--orange);background:#1F1C1A}
.qopt:active{transform:scale(.985)}
.qopt svg{width:max(20px, calc(var(--u) * 24));height:max(20px, calc(var(--u) * 24));color:var(--orange);flex:none;margin-bottom:auto;transition:transform .35s var(--ease)}
.qopt:hover svg{transform:translateY(-2px)}
.qopt__n{font-family:var(--f-pop);font-weight:600;font-size:max(14px, calc(var(--u) * 15));line-height:1.25}
.qopt__m{font-family:var(--f-mono-d);font-size:max(10px, calc(var(--u) * 12));letter-spacing:.12em;text-transform:uppercase;color:#8C8C8C;line-height:1.2}
.qopt--row{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:flex-start;gap:max(12px, calc(var(--u) * 14));min-height:max(58px, calc(var(--u) * 69));margin-top:max(0px, calc(var(--u) * 7))}
.qopt--row svg{margin-bottom:0}
.qopt::after{
  content:"";position:absolute;right:max(12px, calc(var(--u) * 15));top:max(12px, calc(var(--u) * 15));width:7px;height:7px;
  border-top:1.5px solid #5F6060;border-right:1.5px solid #5F6060;transform:rotate(45deg);transition:border-color .25s,transform .25s var(--ease);
}
.qopt--row::after{top:50%;margin-top:-4px}
.qopt:hover::after{border-color:var(--orange);transform:translateX(2px) rotate(45deg)}
.qcard__price{
  display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  margin-top:max(12px, calc(var(--u) * 21));min-height:max(60px, calc(var(--u) * 70));padding:0 max(14px, calc(var(--u) * 16));
  background:var(--ink-2);border-radius:6px;text-align:left;transition:background-color .25s var(--ease);
}
.qcard__price:hover{background:#1F2020}
.qcard__price span{font-family:var(--f-mono-d);font-size:max(10px, calc(var(--u) * 12));letter-spacing:.12em;text-transform:uppercase;color:#8C8C8C;line-height:1.4}
.qcard__price b{font-family:var(--f-pop);font-weight:600;font-size:max(20px, calc(var(--u) * 26));white-space:nowrap;letter-spacing:-.01em}
.qcard__cta{
  display:flex;align-items:center;justify-content:center;width:100%;
  margin-top:max(12px, calc(var(--u) * 18));min-height:max(60px, calc(var(--u) * 79));padding:0 16px;
  background:var(--orange);color:#fff;border-radius:6px;
  font-family:var(--f-pop);font-weight:600;font-size:max(15px, calc(var(--u) * 15));text-align:center;
  transition:background-color .25s var(--ease),box-shadow .25s var(--ease);
}
.qcard__cta:hover{background:var(--orange-hover);box-shadow:0 14px 34px -14px rgba(255,94,0,.75)}
.qcard__foot{
  display:grid;justify-items:center;gap:max(8px, calc(var(--u) * 10));margin-top:max(12px, calc(var(--u) * 14));text-align:center;
  font-family:var(--f-mono-d);font-size:max(10px, calc(var(--u) * 11));letter-spacing:.14em;text-transform:uppercase;color:#8C8C8C;line-height:1.6;
}
.qcard__foot svg{width:13px;height:13px;color:var(--orange)}

.hero__scroll{
  position:absolute;z-index:1;left:calc(50% - var(--u) * 761 + var(--u) * 110);bottom:calc(var(--u) * 40);
  display:flex;align-items:center;gap:14px;
  font-family:var(--f-mono);font-size:max(10px, calc(var(--u) * 12));letter-spacing:.2em;text-transform:uppercase;color:#8C8C8C;
}
.hero__scroll i{position:relative;display:block;width:calc(var(--u) * 70);min-width:40px;height:1px;background:#D6D6D6;overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;inset:0;background:var(--orange);transform:translateX(-100%);animation:scrollLine 2.2s var(--ease) infinite}
@keyframes scrollLine{0%{transform:translateX(-100%)}55%{transform:translateX(0)}100%{transform:translateX(100%)}}

/* ---------- Animations d'entrée (activées par JS) ---------- */
.js .hero [data-in]{opacity:0;transform:translateY(22px)}
.js .hero .hero__line{opacity:1;transform:none}
.js .hero .hero__line>span{clip-path:inset(-10% -4% 100% -4%);transform:translateY(45%)}
.js .hero .hero__line::before{transform:scaleX(0)}
.js .hero__bars i{transform:scaleX(0)}
.js .hero__photo{clip-path:inset(100% 0 0 0)}
.js .hero__photo img{transform:scale(1.18)}
.js .hero__mark,.js .hero__cap{opacity:0}
.js .hero__badge{opacity:0;transform:translateY(12px)}
.js .qcard{opacity:0;transform:translateY(26px)}

.is-loaded .hero [data-in]{opacity:1;transform:none;transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}
.is-loaded .hero .hero__line>span{clip-path:inset(-10% -4% -30% -4%);transform:none;transition:clip-path 1s var(--ease-out),transform 1s var(--ease-out)}
.is-loaded .hero .hero__line::before{transform:scaleX(1);transition:transform 1.1s var(--ease-out)}
.is-loaded .hero__bars i{transform:scaleX(1);transition:transform 1.2s var(--ease-out)}
.is-loaded .hero__photo{clip-path:inset(0 0 0 0);transition:clip-path 1.25s var(--ease-out) .3s}
.is-loaded .hero__photo img{transform:scale(1);transition:transform 1.8s var(--ease-out) .3s}
.is-loaded .hero__mark,.is-loaded .hero__cap{opacity:1;transition:opacity .6s var(--ease) 1.1s}
.is-loaded .hero__badge{opacity:1;transform:none;transition:opacity .7s var(--ease-out) 1.2s,transform .7s var(--ease-out) 1.2s}
.is-loaded .qcard{opacity:1;transform:none;transition:opacity .8s var(--ease-out) .15s,transform .9s var(--ease-out) .15s}
.is-loaded .hero [data-in="1"]{transition-delay:.05s}
.is-loaded .hero [data-in="2"]>span,.is-loaded .hero [data-in="2"]::before{transition-delay:.12s}
.is-loaded .hero [data-in="3"]>span,.is-loaded .hero [data-in="3"]::before{transition-delay:.22s}
.is-loaded .hero [data-in="4"]>span,.is-loaded .hero [data-in="4"]::before{transition-delay:.32s}
.is-loaded .hero [data-in="5"]{transition-delay:.5s}
.is-loaded .hero [data-in="6"]{transition-delay:.6s}
.is-loaded .hero [data-in="7"]{transition-delay:.7s}
.is-loaded .hero__bars i:nth-child(1){transition-delay:.45s}
.is-loaded .hero__bars i:nth-child(2){transition-delay:.55s}
.is-loaded .hero__bars i:nth-child(3){transition-delay:.65s}

/* ================================================================
   PARTENAIRES
   ================================================================ */
.partners{background:#fff;color:var(--ink);padding-top:calc(var(--u) * 104);border-top:1px solid #EDEDED}
.partners__title{
  font-family:var(--f-mono-d);font-weight:700;text-transform:uppercase;
  font-size:max(20px, calc(var(--u) * 46));letter-spacing:.22em;line-height:1;padding-left:calc(var(--u) * 2);
}
.partners__row{
  width:calc(var(--u) * 1686);margin:calc(var(--u) * 66) auto 0;
  display:grid;grid-template-columns:repeat(6,1fr);height:calc(var(--u) * 200);
}
.partners__cell{display:grid;place-items:center;border-left:1px solid #E7E7E7;min-width:0}
.partners__cell:first-child{border-left:0}
.partners__cell img{display:block;width:100%;max-width:calc(var(--u) * 300);height:auto;aspect-ratio:16/9;object-fit:contain;transition:transform .4s var(--ease)}
.partners__cell:hover img{transform:scale(1.06)}

/* ================================================================
   POINTS FORTS
   ================================================================ */
.strengths{position:relative;background:#fff;padding:calc(var(--u) * 175) 0 calc(var(--u) * 85)}
.strengths::before{content:"";position:absolute;inset:0 0 auto;height:calc(var(--u) * 26);background:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,0))}
.strengths__title{
  display:flex;align-items:center;gap:calc(var(--u) * 34);padding-left:calc(var(--u) * 4);
  font-family:var(--f-mono-d);font-weight:700;text-transform:uppercase;color:#404040;
  font-size:max(16px, calc(var(--u) * 26));letter-spacing:.155em;line-height:1;
}
.strengths__title svg{width:calc(var(--u) * 30);height:calc(var(--u) * 30);min-width:20px;min-height:20px;color:var(--ink);flex:none}
.strengths__body{position:relative;margin-top:calc(var(--u) * 74);min-height:calc(var(--u) * 443)}
.strengths__truck{position:absolute;left:0;top:calc(var(--u) * 0);width:calc(var(--u) * 572);height:auto}
.strengths__cols{
  display:grid;grid-template-columns:372fr 383fr 342fr;
  margin-left:calc(50% - var(--u) * 960 + var(--u) * 623);width:calc(var(--u) * 1097);
  padding-top:calc(var(--u) * 100);
}
.strength{border-left:1px solid #E5E5E5;padding:0 calc(var(--u) * 24) calc(var(--u) * 100) calc(var(--u) * 31)}
.strength__ic{
  display:grid;place-items:center;width:calc(var(--u) * 50);height:calc(var(--u) * 50);min-width:36px;min-height:36px;
  background:var(--orange-2);color:rgba(255,255,255,.75);transition:transform .5s var(--ease)
}
.strength__ic svg{width:calc(var(--u) * 24);height:calc(var(--u) * 24);min-width:16px;min-height:16px;transition:transform .5s var(--ease)}
.strength:hover .strength__ic svg{transform:rotate(90deg)}
.strength h3{
  margin-top:calc(var(--u) * 27);font-family:var(--f-pop);font-weight:400;
  font-size:max(20px, calc(var(--u) * 29));line-height:1.2;letter-spacing:-.005em;color:var(--ink);
}
.strength p{
  margin-top:calc(var(--u) * 25);font-size:max(14px, calc(var(--u) * 15.4));line-height:1.24;color:var(--ink);
  max-width:calc(var(--u) * 312);letter-spacing:-.01em;
}

/* ================================================================
   SECTIONS GÉNÉRIQUES
   ================================================================ */
.sec{background:#fff}
.sec--off{background:var(--off)}

/* ---------------- Comment ça marche ---------------- */
.steps-sec{padding:calc(var(--u) * 64) 0 calc(var(--u) * 66)}
.steps-sec__title{margin-top:calc(var(--u) * 33)}
.steps-sec__lead{margin-top:calc(var(--u) * 18)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);column-gap:calc(var(--u) * 40);margin-top:calc(var(--u) * 66);counter-reset:s}
.step{position:relative;padding-top:calc(var(--u) * 34)}
.step::before,.step::after{content:"";position:absolute;left:0;right:0;top:0;height:3px}
.step::before{background:#DADAD8}
.step::after{background:var(--ink);transform-origin:left;transition:transform 1s var(--ease-out)}
.step:first-child::after{background:var(--orange)}
.js .step::after{transform:scaleX(0)}
.js .step.is-in::after{transform:scaleX(1)}
.step__n{
  display:block;font-family:var(--f-mono);font-size:max(13px, calc(var(--u) * 17));letter-spacing:.14em;color:var(--orange);line-height:1;
}
.step h3{
  margin-top:calc(var(--u) * 30);font-family:var(--f-sans);font-weight:700;color:var(--ink);
  font-size:max(21px, calc(var(--u) * 33));line-height:1.18;letter-spacing:-.022em;max-width:calc(var(--u) * 320);
}
.step p{margin-top:calc(var(--u) * 20);font-size:max(15px, calc(var(--u) * 21));line-height:1.58;color:var(--muted);letter-spacing:-.01em;max-width:calc(var(--u) * 340)}

/* ---------------- Nos solutions ---------------- */
.sols-sec{padding:calc(var(--u) * 46) 0 calc(var(--u) * 43)}
.sols-sec__title{margin-top:calc(var(--u) * 34)}
.sols-sec__lead{margin-top:calc(var(--u) * 26)}
.sols{display:grid;grid-template-columns:repeat(3,1fr);column-gap:calc(var(--u) * 28);row-gap:calc(var(--u) * 40);margin-top:calc(var(--u) * 54)}
.sol{
  display:flex;flex-direction:column;background:#fff;border:1px solid #EAEAEA;border-radius:calc(var(--u) * 20);overflow:hidden;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .45s var(--ease);
}
.sol:not(.sol--cta):hover{transform:translateY(-6px);box-shadow:0 30px 60px -36px rgba(0,0,0,.28);border-color:#E0E0E0}
.sol__img{height:calc(var(--u) * 365);background:var(--ph);position:relative;overflow:hidden}
.sol__img img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.sol:hover .sol__img img{transform:scale(1.04)}
.sol__img--illus{background:#efefeb;height:auto;aspect-ratio:4/3}
.sol__img--illus img{object-fit:contain}
.sol__img--illus::after{display:none}
@media(hover:none){.sol:hover .sol__img img{transform:none}.sol:hover .sol__img::after{transform:translateX(-100%)}}
@media(prefers-reduced-motion:reduce){.sol .sol__img img,.sol .sol__img::after{transition:none;transform:none}}
.cap__img img{width:100%;height:100%;object-fit:contain;transition:transform .6s var(--ease)}
.cap:hover .cap__img img{transform:scale(1.05)}
.voirie__img{position:relative;overflow:hidden}
.voirie__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 52%}
.sol__img::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-100%);transition:transform .9s var(--ease)}
.sol:hover .sol__img::after{transform:translateX(100%)}
.sol__b{display:flex;flex-direction:column;flex:1;padding:calc(var(--u) * 44) calc(var(--u) * 36) calc(var(--u) * 36)}
.sol__m{font-family:var(--f-mono);font-size:max(12px, calc(var(--u) * 16));letter-spacing:.15em;text-transform:uppercase;color:var(--orange);line-height:1}
.sol h3{margin-top:calc(var(--u) * 24);font-weight:700;font-size:max(22px, calc(var(--u) * 35));line-height:1.15;letter-spacing:-.025em;color:var(--ink)}
.sol p{margin-top:calc(var(--u) * 18);font-size:max(15px, calc(var(--u) * 21));line-height:1.6;color:var(--muted);letter-spacing:-.012em}
.sol__l{
  display:inline-flex;align-items:center;gap:10px;align-self:flex-start;margin-top:auto;padding-top:calc(var(--u) * 26);min-height:44px;
  font-family:var(--f-pop);font-weight:600;font-size:max(15px, calc(var(--u) * 18));color:var(--orange);text-align:left;
}
.sol__l svg{width:18px;height:18px;flex:none;transition:transform .3s var(--ease)}
.sol__l:hover svg,.sol:hover .sol__l svg{transform:translateX(4px)}
.sol__l::after{content:"";position:absolute;inset:0;z-index:1}
.sol{position:relative}
.sol--cta{background:var(--ink);border-color:var(--ink);justify-content:center;color:#fff}
.sol--cta__in{padding:0 calc(var(--u) * 47)}
.sol--cta h3{margin-top:calc(var(--u) * 34);color:#fff;font-weight:600;font-size:max(24px, calc(var(--u) * 38));letter-spacing:-.025em}
.sol--cta p{margin-top:calc(var(--u) * 22);color:var(--on-dark);font-size:max(15px, calc(var(--u) * 21))}
.sol--cta__btn{margin-top:calc(var(--u) * 28);min-height:max(52px, calc(var(--u) * 78));font-size:max(15px, calc(var(--u) * 21))}

/* ---------------- Nos bennes ---------------- */
.bennes-sec{padding:calc(var(--u) * 86) 0 calc(var(--u) * 80)}
.bennes-sec__title{margin-top:calc(var(--u) * 34)}
.bennes-sec__lead{margin-top:calc(var(--u) * 42)}
.caps{
  display:grid;grid-template-columns:repeat(var(--n,5),minmax(0,1fr));margin-top:calc(var(--u) * 78);
  background:#fff;border:1px solid #EAEAEA;border-radius:calc(var(--u) * 22);overflow:hidden;
}
.cap[hidden]{display:none}
.cap{display:flex;flex-direction:column;text-align:left;cursor:pointer;position:relative;border-left:1px solid #E7E7E7}
.cap:first-child{border-left:0}
.cap__img{display:grid;place-items:center;height:calc(var(--u) * 228);border-bottom:0;transition:background-color .35s var(--ease)}
.cap__img .ph{padding:calc(var(--u) * 12) calc(var(--u) * 20);font-size:max(10px, calc(var(--u) * 16))}
.cap__b{display:flex;flex-direction:column;flex:1;padding:calc(var(--u) * 28) calc(var(--u) * 26) calc(var(--u) * 36) calc(var(--u) * 27);background:#fff;transition:background-color .35s var(--ease)}
.cap__v{font-weight:800;font-size:max(28px, calc(var(--u) * 42));line-height:1;letter-spacing:-.04em;color:var(--ink)}
.cap__v sup{font-size:.45em;font-weight:700;letter-spacing:0;margin-left:1px;vertical-align:.95em;line-height:0}
.cap__f{margin-top:calc(var(--u) * 20);font-size:max(14px, calc(var(--u) * 21));line-height:1.5;color:var(--muted);letter-spacing:-.012em;flex:1}
.cap__p{
  margin-top:calc(var(--u) * 16);padding-top:calc(var(--u) * 22);border-top:1px solid #E5E5E5;
  font-family:var(--f-mono);font-size:max(12px, calc(var(--u) * 16));letter-spacing:.15em;text-transform:uppercase;color:var(--ink);line-height:1;
}
.cap__p b{font-weight:500;color:var(--orange)}
.cap::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--orange);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.cap:hover::after{transform:scaleX(1)}
.cap:hover .cap__img{background-color:#E0E0E0}
.cap:hover .cap__b{background:#FCFCFB}
.caps__note{
  margin-top:calc(var(--u) * 33);font-family:var(--f-mono);font-size:max(11px, calc(var(--u) * 16));
  letter-spacing:.15em;text-transform:uppercase;color:var(--muted);line-height:1.5;
}

/* ---------------- Déchets acceptés ---------------- */
.waste-sec{padding:calc(var(--u) * 17) 0 calc(var(--u) * 48)}
.waste{display:grid;grid-template-columns:minmax(0,1fr) calc(var(--u) * 690);column-gap:calc(var(--u) * 100);align-items:start}
.waste__l{padding-top:calc(var(--u) * 21)}
.waste__title{margin-top:calc(var(--u) * 38);font-size:max(34px, calc(var(--u) * 72));max-width:calc(var(--u) * 700)}
.waste__lead{margin-top:calc(var(--u) * 38);max-width:calc(var(--u) * 770)}
.chips{display:flex;flex-wrap:wrap;gap:calc(var(--u) * 15);margin-top:calc(var(--u) * 44)}
.chips--no{margin-top:calc(var(--u) * 21);row-gap:calc(var(--u) * 15)}
.chip-br{flex-basis:100%;height:0;margin-top:calc(var(--u) * -15)}
.chip{
  display:inline-flex;align-items:center;gap:calc(var(--u) * 16);
  height:calc(var(--u) * 70);min-height:44px;padding:0 calc(var(--u) * 28);border:1px solid #E7E7E7;border-radius:999px;
  font-weight:500;font-size:max(15px, calc(var(--u) * 22));letter-spacing:-.01em;color:var(--ink);
  transition:border-color .3s var(--ease),background-color .3s var(--ease),transform .3s var(--ease);
}
.chip svg{width:calc(var(--u) * 20);height:calc(var(--u) * 20);min-width:15px;min-height:15px;color:var(--orange);flex:none}
.chip:not(.chip--no):hover{border-color:var(--orange);background:#FFF6F0}
.chip--no{border-style:dashed;border-color:#E2E2E2;color:var(--muted);font-weight:400}
.chip--no svg{color:var(--muted)}
.waste__box{
  border:1px solid #E8E8E8;border-radius:calc(var(--u) * 24);background:#fff;padding:calc(var(--u) * 44);
}
.waste__img{display:grid;place-items:center;height:calc(var(--u) * 337);border-radius:calc(var(--u) * 20);overflow:hidden}
.waste__img{position:relative}
.b3d__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:pan-y;animation:fade .8s var(--ease)}
.b3d__canvas:active{cursor:grabbing}
.waste__img.is-3d .ph{display:none}
.waste__img.is-loading::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);background-size:220% 100%;animation:b3dLoad 1.3s linear infinite}
@keyframes b3dLoad{from{background-position:120% 0}to{background-position:-120% 0}}
.b3d__hint{
  position:absolute;left:14px;bottom:14px;display:inline-flex;align-items:center;gap:8px;padding:8px 12px;
  background:rgba(255,255,255,.88);color:var(--ink);font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  pointer-events:none;transition:opacity .4s var(--ease);
}
.b3d__hint svg{width:16px;height:16px;color:var(--orange)}
.is-touched .b3d__hint{opacity:0}
.b3d__controls{position:absolute;top:12px;right:12px;display:flex;gap:6px;z-index:2}
.b3d__controls button{display:grid;place-items:center;width:44px;height:44px;border:1px solid rgba(30,30,30,.12);border-radius:12px;background:rgba(255,255,255,.94);color:var(--ink);box-shadow:0 2px 8px #00000008;transition:background .2s,transform .2s;touch-action:manipulation}
.b3d__controls button:hover{background:#fff;transform:translateY(-2px)}
.b3d__controls button:disabled{opacity:.4;cursor:default;transform:none}
.b3d__controls svg{width:19px;height:19px}
.b3d__controls button:focus-visible,.b3d__canvas:focus-visible{outline:3px solid var(--orange);outline-offset:-3px}
.b3d__hint{border-radius:10px;max-width:calc(100% - 28px);letter-spacing:.06em}
.waste__img:not(.is-3d) .b3d__controls,.waste__img:not(.is-3d) .b3d__hint,.waste__img:not(.is-3d) .b3d__canvas{visibility:hidden}
.b3d__fallback{width:100%;height:100%;object-fit:contain;background:#e6e6e3}
.waste__img.is-3d .b3d__fallback{display:none}
@media(prefers-reduced-motion:reduce){.b3d__canvas,.waste__img.is-loading::after{animation:none}.b3d__controls button{transition:none}}
.waste__box h3{margin-top:calc(var(--u) * 40);font-weight:700;font-size:max(22px, calc(var(--u) * 34));letter-spacing:-.025em;line-height:1.15;color:var(--ink)}
.waste__box p{margin-top:calc(var(--u) * 22);font-size:max(15px, calc(var(--u) * 20));line-height:1.66;color:var(--muted);letter-spacing:-.01em}
.waste__btn{margin-top:calc(var(--u) * 30)}

/* ---------------- Zone d'intervention ---------------- */
.zone-sec{background:var(--black);padding:calc(var(--u) * 84) 0 calc(var(--u) * 80)}
.zone{
  width:calc(var(--u) * 1656);margin-inline:auto;background:var(--ink);color:#fff;
  display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1fr);
  column-gap:max(36px, calc(var(--u) * 96));align-items:center;
  padding:calc(var(--u) * 120) calc(var(--u) * 67) calc(var(--u) * 120) calc(var(--u) * 66);
}
.zone__title{margin-top:calc(var(--u) * 40);color:#fff;font-size:max(34px, calc(var(--u) * 76));max-width:calc(var(--u) * 640)}
.zone__lead{margin-top:calc(var(--u) * 26);color:var(--on-dark);max-width:calc(var(--u) * 680)}
.deps{display:flex;flex-wrap:wrap;gap:calc(var(--u) * 12);margin-top:calc(var(--u) * 38)}
.deps li{
  display:inline-flex;align-items:center;gap:calc(var(--u) * 12);height:calc(var(--u) * 55);min-height:40px;padding:0 calc(var(--u) * 20);
  border:1px solid #2B2C2C;border-radius:calc(var(--u) * 7);
  font-family:var(--f-mono);font-size:max(13px, calc(var(--u) * 17));letter-spacing:.1em;color:#AFAFAF;
  cursor:pointer;user-select:none;touch-action:manipulation;
  transition:border-color .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease);
}
.deps li b{font-weight:400;color:#F7F7F7}
.deps li:hover,.deps li.is-hover{border-color:var(--orange);color:#fff}
.deps li.is-sel{border-color:var(--orange);background:var(--orange);color:#fff}
.deps li.is-sel b{color:#fff}
.deps li:not([data-dep]){cursor:default;border-style:dashed}
.deps li:not([data-dep]):hover{border-color:#2B2C2C;color:#AFAFAF}
.zone__btn{margin-top:calc(var(--u) * 44);min-height:max(56px, calc(var(--u) * 90));padding:0 calc(var(--u) * 49);border-radius:calc(var(--u) * 12);font-size:max(16px, calc(var(--u) * 22))}
.zone__map{min-width:0;scroll-margin-top:96px}

/* ---------------- Carte interactive <idf-map> ----------------
   Trois blocs empilés : code postal + légende, dessin (zoom posé
   dessus), panneau. Les blocs s'adaptent à la largeur du composant
   (requêtes de conteneur), pas à celle de l'écran. */
idf-map{display:block}
.imap{
  position:relative;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;color:#fff;container-type:inline-size;
  background-color:#101111;border-radius:max(16px, calc(var(--u) * 26));
  background-image:
    radial-gradient(ellipse at 45% 50%,rgba(255,94,0,.07),transparent 60%),
    radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.2px);
  background-size:100% 100%,22px 22px;
}
.imap::after{content:"";position:absolute;inset:0;border:1px solid #232424;border-radius:inherit;pointer-events:none;z-index:6}

/* en-tête : code postal + légende */
.imap__head{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px 20px;padding:20px 20px 4px}
.imap__cp{display:grid;gap:7px;flex:1 1 240px;max-width:340px}
.imap__cp-l{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#b0b4b4}
.imap__cp-f{display:flex;background:#181a1a;border:1px solid #414444;border-radius:10px;overflow:hidden;transition:border-color .25s var(--ease)}
.imap__cp-f:focus-within{border-color:var(--orange)}
.imap__cp-f input{
  flex:1;width:auto;min-width:0;height:46px;padding:0 14px;background:transparent;border:0;color:#fff;outline:none;border-radius:0;
  font-family:var(--f-mono-d);font-weight:700;font-size:16px;letter-spacing:.22em;
}
.imap__cp-f input::placeholder{color:#7d8181}
.imap__cp-f button{display:grid;place-items:center;width:48px;height:46px;flex:none;background:var(--orange);color:#fff;transition:background-color .2s}
.imap__cp-f button:hover{background:var(--orange-hover)}
.imap__cp-f button svg{width:18px;height:18px}
.imap__cp-r{min-height:16px;font-family:var(--f-mono);font-size:11px;line-height:1.4;letter-spacing:.06em;text-transform:uppercase;color:#8C8C8C}
.imap__cp-r:empty{display:none}
.imap__cp-r.is-idf{color:var(--orange)}
.imap__cp-r.is-lim{color:#E8C9B5}
.imap__cp-r.is-out,.imap__cp-r.is-err{color:#fff}
.imap__legend{display:flex;flex-direction:column;gap:9px;padding-top:24px}
.imap__sw{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#b0b4b4;white-space:nowrap}
.imap__sw-i{width:14px;height:10px;flex:none}
.imap__sw-i--idf{background:#2A2C2C;box-shadow:inset 0 0 0 1px var(--orange)}
.imap__sw-i--lim{background:#141515 repeating-linear-gradient(135deg,rgba(255,255,255,.18) 0 1px,transparent 1px 4px);box-shadow:inset 0 0 0 1px #2D2E2E}

/* sélecteur (seulement sans liste synchronisée) */
.imap__pick{position:relative;z-index:3;display:grid;gap:8px;padding:8px 20px 0;color:#b8bbbb;font-size:12px}
.imap__pick select{width:100%;min-height:46px;border:1px solid #414444;border-radius:10px;padding:8px 10px;color:#fff;background:#202222;font:inherit;font-size:16px;color-scheme:dark;cursor:pointer}

/* dessin */
.imap__stage{position:relative;z-index:1;aspect-ratio:5/4;overflow:hidden;isolation:isolate;touch-action:pan-y}
.imap__stage svg{display:block;width:100%;height:100%}

/* tracés */
.imap__dep{cursor:pointer;outline:none;stroke-linejoin:round;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:fill .3s var(--ease),stroke .3s var(--ease),stroke-width .3s var(--ease),fill-opacity .9s var(--ease),stroke-dashoffset 1.5s var(--ease-out)}
.imap__dep--idf{fill:#1E2020;stroke:#3A3C3C;stroke-width:calc(1.2px / var(--z, 1));stroke-dasharray:1;stroke-dashoffset:1;fill-opacity:0;transition-delay:0s,0s,0s,calc(.7s + var(--i) * 70ms),calc(var(--i) * 90ms)}
.imap__dep--small{fill:#282A2A}
.imap__dep--paris{fill:#323434}
.imap__dep--lim{stroke:#1D1E1E;stroke-width:1;opacity:0;transition:opacity 1s var(--ease) .2s,stroke .3s var(--ease)}
.imap.is-drawn .imap__dep--idf{stroke-dashoffset:0;fill-opacity:1}
.imap.is-drawn .imap__dep--lim{opacity:1}
.imap__dep--idf.is-hover{fill:#3A2414;stroke:var(--orange);stroke-width:calc(2px / var(--z, 1));transition-delay:0s}
.imap__dep--idf.is-sel{fill:var(--orange);stroke:#FFB27F;stroke-width:calc(1.6px / var(--z, 1));transition-delay:0s}
.imap__dep--lim.is-hover{stroke:var(--orange);stroke-dasharray:4 4;stroke-width:1.4}
.imap__dep--lim.is-sel{fill:rgba(255,94,0,.2);stroke:var(--orange);stroke-width:2;stroke-dasharray:none}
.imap__dep:focus-visible{stroke:#fff;stroke-width:calc(2.4px / var(--z, 1))}

/* étiquettes : taille constante à l'écran quel que soit le zoom */
.imap__labels text{pointer-events:none}
.imap__lbl{font-family:var(--f-mono-d);font-weight:700;font-size:calc(15px / var(--z, 1));letter-spacing:.06em;fill:#C9CACA;text-anchor:middle;dominant-baseline:central;opacity:0;transition:opacity .6s var(--ease) 1.2s,fill .3s}
.imap__lbl--small{font-size:calc(10px / var(--z, 1))}
.imap__lbl[data-code="75"]{font-size:calc(8.5px / var(--z, 1));transform:translateY(calc(8px / var(--z, 1)))}
.imap.is-zoomed .imap__lbl--small{font-size:calc(19px / var(--z, 1))}
.imap.is-zoomed .imap__lbl[data-code="75"]{font-size:calc(16px / var(--z, 1));transform:translateY(9px)}
.imap.is-drawn .imap__lbl{opacity:1}
.imap:not(.is-zoomed) .imap__lbl[data-code="75"]{visibility:hidden}
.imap__lbl.is-sel{fill:#fff}

/* rayons autour de Paris */
.imap__radar{pointer-events:none}
.imap__glow{mix-blend-mode:screen;opacity:0;transition:opacity 1.2s var(--ease) 1s}
.imap.is-drawn .imap__glow{opacity:1}
.imap__ring{fill:none;stroke:rgba(255,94,0,.42);stroke-width:calc(1px / var(--z, 1));stroke-dasharray:2 6;transform-box:fill-box;transform-origin:center;animation:ringSpin 90s linear infinite;opacity:0;transition:opacity .8s var(--ease) calc(1.1s + var(--n) * .15s)}
.imap__ring:nth-of-type(odd){animation-direction:reverse}
.imap.is-drawn .imap__ring{opacity:1}
@keyframes ringSpin{to{transform:rotate(360deg)}}
.imap__ring-l{font-family:var(--f-mono);font-size:calc(10px / var(--z, 1));letter-spacing:.12em;fill:rgba(255,94,0,.85);opacity:0;transition:opacity .6s var(--ease) 1.6s}
.imap.is-drawn .imap__ring-l{opacity:1}
.imap__pulse{fill:var(--orange);transform-box:fill-box;transform-origin:center;animation:mapPulse 2.4s var(--ease-out) infinite}
.imap__core{fill:var(--orange);stroke:#fff;stroke-width:calc(1.2px / var(--z, 1))}
.imap.is-zoomed .imap__pulse{r:calc(7px / var(--z, 1))}
.imap.is-zoomed .imap__core{r:calc(3.2px / var(--z, 1) + 1px)}
@keyframes mapPulse{0%{transform:scale(.6);opacity:.55}100%{transform:scale(4.2);opacity:0}}

/* commandes de zoom (sur le dessin, coin haut droit) */
.imap__zoom{position:absolute;z-index:3;top:12px;right:14px;display:flex;flex-direction:column;border:1px solid #3a3d3d;border-radius:12px;overflow:hidden;background:rgba(24,26,26,.92);box-shadow:0 10px 24px -14px rgba(0,0,0,.8)}
.imap__zoom button{display:grid;place-items:center;width:44px;height:44px;color:#fff;touch-action:manipulation;transition:background-color .18s,color .18s}
.imap__zoom button+button{border-top:1px solid #3a3d3d}
.imap__zoom button svg{width:18px;height:18px}
.imap__zoom button:hover:not(:disabled){background:#32251e;color:var(--orange)}
.imap__zoom button:disabled{color:#5d6161;cursor:default}

/* boussole + échelle (coin bas droit) */
.imap__scale{position:absolute;z-index:3;right:16px;bottom:14px;display:flex;align-items:flex-end;gap:16px;font-family:var(--f-mono);font-size:10px;letter-spacing:.14em;color:#9a9d9d;pointer-events:none}
.imap__n{display:grid;justify-items:center;gap:4px;color:#C9CACA}
.imap__n svg{width:10px;height:14px;fill:var(--orange)}
.imap__bar{display:grid;gap:6px;justify-items:start}
.imap__bar i{display:block;width:var(--bar-px,60px);height:6px;border:1px solid #6B6C6C;border-top:0}

/* infobulle */
.imap__tip{
  position:absolute;z-index:5;left:0;top:0;pointer-events:none;width:max-content;max-width:calc(100% - 16px);
  padding:9px 13px;background:#fff;color:var(--ink);font-size:13px;font-weight:600;line-height:1.3;border-radius:10px;
  box-shadow:0 14px 30px -12px rgba(0,0,0,.55);opacity:0;transition:opacity .18s var(--ease);
}
.imap__tip.is-on{opacity:1}
.imap__tip b{font-family:var(--f-mono-d);font-weight:700;color:var(--orange);margin-right:4px}
.imap__tip span{display:block;margin-top:2px;font-family:var(--f-mono);font-size:10px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:#6B6C6C}
.imap__tip.is-lim b{color:#8C8C8C}

/* panneau d'information : une ligne en large, empilé en étroit */
.imap__panel{
  position:relative;z-index:3;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px 18px;
  margin:0 14px 14px;padding:16px 18px;border:1px solid #2B2C2C;border-radius:14px;background:#1b1d1d;min-height:108px;
}
.imap__p-n{font-family:var(--f-mono-d);font-weight:700;font-size:30px;line-height:1;letter-spacing:.02em;color:var(--orange);min-width:2.4ch}
.imap__p-txt{display:grid;gap:3px;min-width:0}
.imap__p-st{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#C9CACA}
.imap__panel[data-zone="lim"] .imap__p-n{color:#E8C9B5}
.imap__panel[data-zone="lim"] .dot,.imap__panel[data-zone="out"] .dot{background:#8C8C8C}
.imap__panel[data-zone="lim"] .dot::after,.imap__panel[data-zone="out"] .dot::after{display:none}
.imap__panel[data-zone="out"] .imap__p-n{color:#fff;font-size:22px}
.imap__p-name{display:block;font-weight:700;font-size:19px;line-height:1.2;letter-spacing:-.02em}
.imap__p-hint{display:block;font-size:13.5px;line-height:1.45;color:#b8bbbb}
.imap__p-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--orange);border-radius:10px;font-weight:600;font-size:14px;color:var(--orange);white-space:nowrap;transition:background-color .2s,color .2s}
.imap__p-cta:hover{background:var(--orange);color:#fff}
.imap__p-cta svg{width:16px;height:16px;transition:transform .3s var(--ease)}
.imap__p-cta:hover svg{transform:translateX(3px)}
.imap :is(button,select,input):focus-visible{outline:2px solid #ff974f;outline-offset:2px}
.imap:not(.is-active) :is(.imap__ring,.imap__pulse),.imap:not(.is-active) .dot::after{animation-play-state:paused}

@container (max-width:560px){
  .imap__head{padding:16px 16px 2px}
  .imap__cp{flex-basis:100%;max-width:none}
  .imap__legend{flex-direction:row;flex-wrap:wrap;gap:8px 16px;padding-top:0}
  .imap__panel{grid-template-columns:auto minmax(0,1fr);margin:0 12px 12px;padding:14px 16px}
  .imap__p-n{font-size:26px;align-self:start}
  .imap__p-cta{grid-column:1/-1;margin-top:8px}
  .imap__zoom{top:10px;right:10px}
  .imap__zoom button{width:42px;height:42px}
  .imap__scale{display:none}
  .imap__ring-l{display:none}
}
@container (max-width:440px){
  .imap__stage{aspect-ratio:1/1}
  .imap__lbl{font-size:calc(22px / var(--z, 1))}
  .imap__lbl--small{font-size:calc(13px / var(--z, 1))}
  .imap__lbl[data-code="75"]{font-size:calc(10px / var(--z, 1));transform:translateY(calc(10px / var(--z, 1)))}
  .imap.is-zoomed .imap__lbl--small{font-size:calc(26px / var(--z, 1))}
  .imap.is-zoomed .imap__lbl[data-code="75"]{font-size:calc(22px / var(--z, 1));transform:translateY(9px)}
}
@media(prefers-reduced-motion:reduce){
  .imap .imap__dep,.imap .imap__lbl,.imap .imap__glow,.imap .imap__ring-l{transition:none}
  .imap .imap__ring,.imap .imap__pulse{animation:none}
}

/* ---------------- Autorisation de voirie ---------------- */
.voirie-sec{padding:calc(var(--u) * 127) 0 calc(var(--u) * 138)}
.voirie{display:grid;grid-template-columns:calc(var(--u) * 846) 1fr;border-radius:calc(var(--u) * 24);overflow:hidden;min-height:calc(var(--u) * 741)}
.voirie__c{background:var(--ink);color:#fff;padding:calc(var(--u) * 84) calc(var(--u) * 60) calc(var(--u) * 68) calc(var(--u) * 68)}
.voirie__title{margin-top:calc(var(--u) * 34);font-weight:800;font-size:max(32px, calc(var(--u) * 58));line-height:1.08;letter-spacing:-.035em}
.voirie__lead{margin-top:calc(var(--u) * 22);font-size:max(16px, calc(var(--u) * 26));line-height:1.5;color:var(--on-dark);letter-spacing:-.012em}
.voirie__list{margin-top:calc(var(--u) * 38);display:grid;gap:calc(var(--u) * 21)}
.voirie__list li{display:flex;align-items:center;gap:calc(var(--u) * 18);font-size:max(15px, calc(var(--u) * 22));color:var(--on-dark);letter-spacing:-.012em;line-height:1.36}
.voirie__list svg{width:calc(var(--u) * 22);height:calc(var(--u) * 22);min-width:16px;min-height:16px;color:var(--orange);flex:none;stroke-dasharray:24;stroke-dashoffset:0}
.js .voirie:not(.is-in) .voirie__list svg{stroke-dashoffset:24}
.voirie.is-in .voirie__list svg{transition:stroke-dashoffset .6s var(--ease-out)}
.voirie.is-in .voirie__list li:nth-child(1) svg{transition-delay:.35s}
.voirie.is-in .voirie__list li:nth-child(2) svg{transition-delay:.5s}
.voirie.is-in .voirie__list li:nth-child(3) svg{transition-delay:.65s}
.voirie.is-in .voirie__list li:nth-child(4) svg{transition-delay:.8s}
.voirie__btn{margin-top:calc(var(--u) * 44);min-height:max(52px, calc(var(--u) * 78));padding:0 calc(var(--u) * 37);border-radius:calc(var(--u) * 12)}
.voirie__img{display:grid;place-items:center}
.voirie__img .ph{padding:calc(var(--u) * 12) calc(var(--u) * 36)}

/* ---------------- Bannière demande de devis ---------------- */
.final{position:relative;height:calc(var(--u) * 600);min-height:440px;overflow:hidden;background:#140801;color:#fff;display:grid;place-items:center;text-align:center}
.final__bg{position:absolute;inset:0}
.final__bg img{width:100%;height:118%;object-fit:cover;object-position:50% 62%;transform:scaleX(-1);will-change:transform}
.final__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,8,1,.12),rgba(0,0,0,.1) 50%,rgba(0,0,0,.25)),rgba(0,0,0,.08)}
.final__in{position:relative;z-index:1;padding-top:calc(var(--u) * 6)}
.final__title{
  margin:calc(var(--u) * 30) auto 0;max-width:calc(var(--u) * 700);
  font-family:var(--f-pop);font-weight:600;font-size:max(34px, calc(var(--u) * 68));line-height:1.07;letter-spacing:-.02em;
}
.final__p{margin:calc(var(--u) * 34) auto 0;max-width:calc(var(--u) * 690);font-size:max(15px, calc(var(--u) * 20));line-height:1.2;letter-spacing:.03em}
.final__cta{display:flex;justify-content:center;gap:calc(var(--u) * 60);margin-top:calc(var(--u) * 40)}
.final__btn{width:calc(var(--u) * 414);min-height:max(54px, calc(var(--u) * 79));font-family:var(--f-pop);font-weight:600;font-size:max(14px, calc(var(--u) * 15));border-radius:calc(var(--u) * 10)}
.final__btn--o{background:#C44800;color:#fff}
.final__btn--o:hover{background:var(--orange)}
.final__btn--wa{background:#003A27;color:#00D854;gap:calc(var(--u) * 12)}
.final__btn--wa:hover{background:#00492F}
.final__btn--wa svg{width:max(18px, calc(var(--u) * 22));height:max(18px, calc(var(--u) * 22));flex:none}

/* ---------------- FAQ ---------------- */
.faq-sec{padding:calc(var(--u) * 171) 0 calc(var(--u) * 192)}
.faq{display:grid;grid-template-columns:calc(var(--u) * 650) 1fr;align-items:start}
.faq__l{padding-top:calc(var(--u) * 19)}
.faq__title{margin-top:calc(var(--u) * 34);font-size:max(34px, calc(var(--u) * 72));max-width:calc(var(--u) * 470)}
.faq__p{margin-top:calc(var(--u) * 30);font-size:max(15px, calc(var(--u) * 20));line-height:1.68;color:var(--muted);max-width:calc(var(--u) * 480);letter-spacing:-.01em}
.btn--phone{
  margin-top:calc(var(--u) * 36);min-height:max(52px, calc(var(--u) * 77));padding:0 calc(var(--u) * 38) 0 calc(var(--u) * 40);border-radius:calc(var(--u) * 12);
  border:1px solid #E7E7E7;background:#fff;color:var(--ink);font-weight:600;font-size:max(15px, calc(var(--u) * 20));gap:calc(var(--u) * 18);
}
.btn--phone:hover{border-color:var(--ink)}
.btn--phone svg{width:calc(var(--u) * 22);height:calc(var(--u) * 22);min-width:18px;min-height:18px}
.acc{border-top:1px solid #E7E7E7}
.acc__i{border-bottom:1px solid #E7E7E7}
.acc__q{
  position:relative;display:flex;align-items:center;justify-content:space-between;gap:calc(var(--u) * 40);width:100%;
  padding:calc(var(--u) * 37) 0;min-height:calc(var(--u) * 106);
  font-weight:600;font-size:max(17px, calc(var(--u) * 26));line-height:1.18;letter-spacing:-.018em;color:var(--ink);text-align:left;
  transition:color .25s var(--ease);
}
.acc__q:hover{color:var(--orange)}
.acc__p{position:relative;flex:none;width:calc(var(--u) * 28);height:calc(var(--u) * 28);min-width:20px;min-height:20px}
.acc__p::before,.acc__p::after{content:"";position:absolute;left:50%;top:50%;background:currentColor;transition:transform .4s var(--ease)}
.acc__p::before{width:100%;height:2px;transform:translate(-50%,-50%)}
.acc__p::after{width:2px;height:100%;transform:translate(-50%,-50%)}
.acc__i.on .acc__p::after{transform:translate(-50%,-50%) rotate(90deg)}
.acc__i.on .acc__p{color:var(--orange)}
.acc__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.acc__a>div{overflow:hidden}
.acc__i.on .acc__a{grid-template-rows:1fr}
.acc__a p{font-size:max(15px, calc(var(--u) * 20));line-height:1.65;color:var(--muted);max-width:calc(var(--u) * 760)}
.acc__a p+p{margin-top:12px}
.acc__a p:last-child{padding-bottom:calc(var(--u) * 36)}

/* ================================================================
   FOOTER
   ================================================================ */
.foot{background:var(--ink);color:var(--on-dark);padding:calc(var(--u) * 106) 0 calc(var(--u) * 38)}
.foot__g{display:grid;grid-template-columns:calc(var(--u) * 487) calc(var(--u) * 362) calc(var(--u) * 362) 1fr}
.foot__b img{width:150px;height:auto}
.foot__b p{margin-top:calc(var(--u) * 30);font-size:max(15px, calc(var(--u) * 20));line-height:1.68;color:var(--on-dark-2);max-width:calc(var(--u) * 425);letter-spacing:-.01em}
.foot__act{display:flex;align-items:center;gap:calc(var(--u) * 58);margin-top:calc(var(--u) * 32)}
.foot__wa{min-height:max(52px, calc(var(--u) * 78));padding:0 calc(var(--u) * 38);border-radius:calc(var(--u) * 10);font-size:max(15px, calc(var(--u) * 21));gap:calc(var(--u) * 16)}
.foot__call{display:inline-flex;align-items:center;gap:calc(var(--u) * 16);color:#fff;font-weight:600;font-size:max(15px, calc(var(--u) * 21));transition:color .25s var(--ease)}
.foot__call:hover{color:var(--orange)}
.foot__call svg,.foot__wa svg{width:calc(var(--u) * 22);height:calc(var(--u) * 22);min-width:18px;min-height:18px}
.foot__c h4{font-family:var(--f-mono);font-weight:400;font-size:max(12px, calc(var(--u) * 16));letter-spacing:.15em;text-transform:uppercase;color:var(--on-dark-2);line-height:1;padding-top:calc(var(--u) * 4)}
.foot__c ul{margin-top:calc(var(--u) * 36);display:grid;row-gap:calc(var(--u) * 26)}
.foot__c li{font-size:max(15px, calc(var(--u) * 21.5));line-height:1.35;letter-spacing:-.012em}
.foot__c a{transition:color .25s var(--ease)}
.foot__c a:hover{color:#fff}
.foot__bar{
  display:flex;flex-wrap:wrap;align-items:center;column-gap:calc(var(--u) * 83);row-gap:10px;
  margin-top:calc(var(--u) * 84);padding-top:calc(var(--u) * 40);border-top:1px solid #262727;
  font-family:var(--f-mono);font-size:max(11px, calc(var(--u) * 16));letter-spacing:.15em;text-transform:uppercase;color:var(--on-dark-2);
}
.foot__lnk{font:inherit;letter-spacing:inherit;color:inherit;text-align:left;transition:color .25s var(--ease)}
.foot__lnk:hover{color:#fff}
.foot__soc{display:flex;flex-wrap:wrap;gap:10px;margin:calc(var(--u) * 30) 0 0;padding:0;list-style:none}
.foot__soc a{display:grid;place-items:center;width:44px;height:44px;border:1px solid #333535;border-radius:10px;color:#fff;transition:border-color .25s var(--ease),color .25s var(--ease),background-color .25s var(--ease)}
.foot__soc a:hover{border-color:var(--orange);color:var(--orange)}
.foot__soc svg{width:20px;height:20px}
.foot__lg{display:flex;flex-wrap:wrap;gap:calc(var(--u) * 30)}
.foot__lg a:hover{color:#fff}

/* ================================================================
   BARRE MOBILE
   ================================================================ */
.mobar{display:none}

/* ================================================================
   RÉVÉLATION AU SCROLL
   ================================================================ */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}
.js .rv.rv--left{transform:translateX(-60px)}
.js .rv.is-in{opacity:1;transform:none}

/* ================================================================
   POP-UP CONTACT
   ================================================================ */
.pop{position:fixed;inset:0;z-index:210;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:16px}
.pop__scrim{position:absolute;inset:0;background:rgba(11,12,12,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .3s var(--ease)}
.pop__card{position:relative;width:min(420px,100%);background:#fff;padding:32px 28px 28px;animation:popIn .4s var(--ease-out)}
.pop__card h2{margin:16px 0 22px;font-weight:800;font-size:26px;line-height:1.15;letter-spacing:-.03em}
.pop__btn{min-height:58px;font-size:16px;white-space:normal;text-align:center;line-height:1.25;padding-block:10px}
.pop__btn+.pop__btn{margin-top:10px}
.pop__x{position:absolute;top:14px;right:14px;width:36px;height:36px;display:grid;place-items:center;color:var(--muted)}
.pop__x:hover{color:var(--ink)}
.pop__x svg{width:20px;height:20px}
@keyframes fade{from{opacity:0}}
@keyframes popIn{from{opacity:0;transform:translateY(16px) scale(.98)}}

/* ================================================================
   MODALE DEVIS
   ================================================================ */
.modal{position:fixed;inset:0;z-index:200;display:none}
.modal.is-open{display:block}
.modal__scrim{position:absolute;inset:0;background:rgba(11,12,12,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .35s var(--ease)}
.modal__panel{
  position:absolute;top:0;right:0;bottom:0;width:min(620px,100%);
  background:var(--ink);color:#fff;display:flex;flex-direction:column;
  animation:slideIn .5s var(--ease-out);
}
@keyframes slideIn{from{transform:translateX(100%)}}
.mtop{padding:20px 32px 18px;border-bottom:1px solid rgba(255,255,255,.08);flex:none}
.mtop__row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.mclose{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.12);border-radius:8px;transition:border-color .2s}
.mclose:hover{border-color:var(--orange)}
.mclose svg{width:18px;height:18px}
.prog{display:flex;gap:6px}
.prog i{flex:1;height:3px;background:rgba(255,255,255,.12);position:relative;overflow:hidden}
.prog i::after{content:"";position:absolute;inset:0;background:var(--orange);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.prog i.on::after{transform:scaleX(1)}
.mbody{flex:1;overflow-y:auto;padding:28px 32px 32px;overscroll-behavior:contain}
.mstep{display:none}
.mstep.on{display:block;animation:stepIn .4s var(--ease-out)}
@keyframes stepIn{from{opacity:0;transform:translateX(18px)}}
.mstep__k{font-family:var(--f-mono);font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:var(--on-dark-2)}
.mstep h2{margin-top:10px;font-weight:800;font-size:clamp(26px,4vw,32px);line-height:1.1;letter-spacing:-.03em}
.mstep__sh{margin:8px 0 24px;font-size:15px;color:var(--on-dark-2);line-height:1.5}
.mgrid{display:grid;gap:10px}
.mgrid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.mgrid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ch{
  position:relative;display:flex;align-items:center;gap:14px;min-height:64px;padding:14px 44px 14px 16px;
  background:var(--ink-2);border:1px solid #2A2B2B;border-radius:8px;text-align:left;
  transition:border-color .2s var(--ease),background-color .2s var(--ease),transform .15s var(--ease);
}
.ch:hover{border-color:#3A3B3B;background:#1F2020}
.ch:active{transform:scale(.985)}
.ch.sel{border-color:var(--orange);background:rgba(255,94,0,.1)}
.ch>svg{width:24px;height:24px;color:var(--orange);flex:none}
.ch__x{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.ch__t,.ch__s{overflow-wrap:anywhere;hyphens:auto}
.ch__t{font-family:var(--f-pop);font-weight:600;font-size:15px;line-height:1.25}
.ch__s{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8C8C8C}
.ch--col{flex-direction:column;align-items:flex-start;justify-content:flex-end;min-height:118px;padding:16px}
.ch--col>svg{margin-bottom:auto}
.ch--full{grid-column:1/-1}
.ch--hors{border-color:rgba(255,94,0,.45)}
.ch--hors>svg{color:var(--orange)}
.ch--hors .ch__s{color:var(--orange)}
.tick{position:absolute;top:50%;right:14px;width:22px;height:22px;margin-top:-11px;border:1px solid #3A3B3B;border-radius:50%;display:grid;place-items:center;transition:all .2s var(--ease)}
.ch--col .tick{top:14px;margin-top:0}
.tick svg{width:12px;height:12px;opacity:0;color:#fff}
.ch.sel .tick{background:var(--orange);border-color:var(--orange)}
.ch.sel .tick svg{opacity:1}
.mnote{display:flex;gap:12px;margin-top:18px;padding:14px 16px;background:rgba(255,255,255,.04);border-left:2px solid var(--orange)}
.mnote svg{width:20px;height:20px;color:var(--orange);flex:none;margin-top:1px}
.mnote p{font-size:14px;line-height:1.5;color:var(--on-dark)}
.mest{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding:16px;background:var(--ink-2);border-radius:8px}
.mest span{font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#8C8C8C}
.mest b{font-family:var(--f-pop);font-weight:600;font-size:20px}
.f{display:block;margin-top:18px}
.f label,.f__l{display:block;margin-bottom:8px;font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--on-dark-2)}
.f input,.f textarea{
  width:100%;min-height:56px;padding:14px 16px;background:var(--ink-2);border:1px solid #2A2B2B;border-radius:8px;
  color:#fff;font:inherit;font-size:16px;transition:border-color .2s var(--ease);color-scheme:dark;
}
.f textarea{min-height:110px;resize:vertical}
.f input:focus,.f textarea:focus{outline:none;border-color:var(--orange)}
.f input::placeholder,.f textarea::placeholder{color:#5F6060}
.f__e{display:none;margin-top:6px;font-size:13px;color:var(--orange)}
.f.err .f__e{display:block}
.f .f__e--nf,.f.err.nf .f__e{display:none}
.f.err.nf .f__e--nf{display:block}
/* adresse : suggestions + résultat de la vérification */
.adr{position:relative}
.adr__list{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:#1F2121;border:1px solid #3A3B3B;border-radius:10px;box-shadow:0 18px 40px -18px rgba(0,0,0,.8);max-height:280px;overflow:auto}
.adr__list li{display:flex;flex-direction:column;gap:2px;padding:11px 12px;border-radius:7px;cursor:pointer;font-size:15px;line-height:1.3;color:#fff}
.adr__list li small{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;color:#8C8C8C}
.adr__list li[aria-selected="true"],.adr__list li:hover{background:rgba(255,94,0,.14)}
.adr__info{display:flex;gap:8px;align-items:flex-start;margin-top:8px;font-size:13.5px;line-height:1.45;color:var(--on-dark)}
.adr__info::before{content:"";flex:none;width:8px;height:8px;margin-top:6px;border-radius:50%;background:var(--orange)}
.adr__info.is-lim::before,.adr__info.is-out::before{background:#8C8C8C}
.adr__info.is-busy::before{background:transparent;border:2px solid var(--orange);border-right-color:transparent;width:10px;height:10px;margin-top:4px;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* mini-carte sous l'adresse : ordinateur uniquement */
.adr__map{position:relative;margin:12px 0 0;height:160px;border-radius:8px;overflow:hidden;background:#E9E6DF;border:1px solid #2A2B2B}
.adr__map img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s var(--ease)}
.adr__map.is-on img{opacity:1}
.adr__pin{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-33px 0 0 -17px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.35))}
.adr__pin svg{display:block;width:100%;height:100%}
.adr__map figcaption{position:absolute;right:0;bottom:0;padding:2px 7px;background:rgba(255,255,255,.82);color:#333;font-size:10px;line-height:1.5;border-top-left-radius:6px}
@media (max-width:1023px),(hover:none){.adr__map{display:none!important}}
/* parcours « Guidez-moi » : l'étape 6 réduite aux coordonnées */
.modal:not(.is-aide) .for-aide,.modal.is-aide .for-std{display:none!important}
.ch--aide{border-color:rgba(255,94,0,.35)}
.mprivacy{margin-top:14px;font-size:13.5px;line-height:1.5;color:var(--on-dark-2)}
.mprivacy a{color:#fff;text-decoration:underline;text-underline-offset:2px}
.f.err input,.f.err .ch{border-color:var(--orange)}
.f2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mcom-t{display:inline-flex;align-items:center;gap:10px;margin-top:20px;font-weight:600;font-size:15px;color:var(--on-dark)}
.mcom-t svg{width:16px;height:16px;color:var(--orange);transition:transform .3s var(--ease)}
.mcom-t[aria-expanded="true"] svg{transform:rotate(45deg)}
.mcom-t:hover{color:#fff}
.mcap{display:flex;align-items:center;gap:14px;margin-top:20px;padding:14px 16px;background:var(--ink-2);border:1px solid #2A2B2B;border-radius:8px;cursor:pointer;font-size:15px}
.mcap small{margin-left:auto;font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#6F7070}
.mcap__b{width:24px;height:24px;border:1.5px solid #4A4B4B;border-radius:4px;display:grid;place-items:center;transition:all .2s}
.mcap__b svg{width:14px;height:14px;opacity:0}
.mcap.ok .mcap__b{background:var(--orange);border-color:var(--orange)}
.mcap.ok .mcap__b svg{opacity:1}
.mcap.err{border-color:var(--orange)}
.mcap-f{margin-top:16px}
.mcap-f .mcap{margin-top:0}
.mcap-g{min-height:78px}
.mcap-g:empty{min-height:0}
.mcap-f .f__e--v3,.f.err .f__e--down,.mcap-f.down .f__e,.mcap-f.v3.err .f__e--v2{display:none}
.mcap-f.v3.err:not(.down) .f__e--v3,.mcap-f.down .f__e--down{display:block}
.mcap-v3{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;background:rgba(255,255,255,.04);border:1px solid #2A2B2B;border-radius:8px}
.mcap-v3[hidden]{display:none}
.mcap-v3__i{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:rgba(255,94,0,.14);color:var(--orange)}
.mcap-v3__i svg{width:22px;height:22px}
.mcap-v3__t{display:grid;gap:4px;min-width:0}
.mcap-v3__t b{font-size:14.5px;line-height:1.35;color:var(--on-dark)}
.mcap-v3__s{display:flex;align-items:baseline;gap:8px;font-size:13.5px;line-height:1.45;color:var(--on-dark)}
.mcap-v3__s::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--on-dark-2);transform:translateY(-1px)}
.mcap-v3__s--load::before{animation:capPulse 1s ease-in-out infinite alternate}
.mcap-v3__s--ok{display:none}
.mcap-v3__s--ok::before{background:#3DD68C;box-shadow:0 0 0 3px rgba(61,214,140,.18)}
.mcap-f.ready .mcap-v3__s--ok{display:flex}
.mcap-f.ready .mcap-v3__s--load,.mcap-f.down .mcap-v3__s{display:none}
.mcap-f.ready .mcap-v3__i{background:rgba(61,214,140,.14);color:#3DD68C}
.mcap-f.err .mcap-v3,.mcap-f.down .mcap-v3{border-color:var(--orange)}
.mcap-v3 small{font-size:12px;line-height:1.5;color:var(--on-dark-2)}
.mcap-v3 a{color:var(--on-dark);text-decoration:underline;text-underline-offset:2px}
@keyframes capPulse{from{opacity:.35}}
@media (prefers-reduced-motion:reduce){.mcap-v3__s--load::before{animation:none}}
.grecaptcha-badge{visibility:hidden!important}
@media (max-width:359px){.mcap-g{transform:scale(.9);transform-origin:0 0;height:71px;min-height:0}}
.mcgv{display:flex;gap:12px;align-items:flex-start;margin-top:14px;font-size:14px;line-height:1.5;color:var(--on-dark);cursor:pointer}
.mcgv input{width:20px;height:20px;margin-top:1px;accent-color:var(--orange);flex:none}
.mcgv a{color:#fff;text-decoration:underline;text-underline-offset:2px}
.mcgv.err span{color:var(--orange)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.mok__ref{margin-top:12px!important;font-family:var(--f-mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--orange)!important}
.mnote--err{border-left-color:#FF8A8F}
.mnote--err svg{color:#FF8A8F}
.mok{text-align:center;padding:18px 0 8px}
.mok__i{width:64px;height:64px;margin:0 auto 18px;display:grid;place-items:center;background:var(--orange);border-radius:50%;animation:popIn .5s var(--ease-out)}
.mok__i svg{width:30px;height:30px}
.mok h2{margin-top:0}
.mok p{margin-top:10px;color:var(--on-dark);font-size:15px}
.recap{margin:24px 0;border-top:1px solid rgba(255,255,255,.08)}
.recap__l{display:grid;grid-template-columns:110px 1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:14px}
.recap__l dt{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-2)}
.recap__l dd{color:#fff;word-break:break-word}
.recap__l button{font-size:12px;color:var(--orange);text-decoration:underline;text-underline-offset:2px}
.mfoot{display:flex;justify-content:space-between;gap:12px;padding:16px 32px calc(16px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.08);flex:none}
.mfoot .btn{min-height:54px;font-size:16px;padding:0 24px}
.mfoot #btnNext{margin-left:auto}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (min-width:1024px) and (max-width:1279px){
  /* tablette paysage / petit portable : titre + carte de devis, photo masquée */
  .hero__inner{width:auto;margin-inline:32px;grid-template-columns:minmax(0,1fr) 380px;column-gap:48px;padding-left:90px}
  .hero__line::before{right:calc(100% + 22px)}
  .hero__media{height:auto;min-height:0}
  .hero__visual{display:none}
  .hero__media{padding:0}
  .qcard{position:relative;top:auto;width:100%}
  .hero__title{font-size:clamp(34px,3.6vw,46px)}
  .hero{padding-bottom:110px}
  .zone{width:auto;margin-inline:32px;padding:72px 40px;column-gap:40px}
  .zone__title{max-width:none}
}

@media (max-width:1023px){
  :root{--u:1px;--nav-h:64px}
  html{scroll-padding-top:72px}
  .wrap{width:auto;margin-inline:var(--gut)}

  /* nav */
  .nav{grid-template-columns:1fr auto auto;height:64px}
  .nav__lang{grid-column:2}
  .nav__burger{grid-column:3}
  .nav__brand{padding-left:var(--gut);border-right:0}
  .nav__brand img{width:132px}
  .nav__links{display:none}
  .nav__call{display:none}
  .nav__lang{border-right:0;padding:0}
  .nav__lang-btn{padding:0 12px}
  .nav__burger{
    display:grid;place-items:center;width:64px;border-left:1px solid var(--line-2);position:relative;z-index:2;
  }
  .nav__burger i,.nav__burger i::before,.nav__burger i::after{display:block;width:22px;height:2px;background:var(--ink);transition:transform .3s var(--ease),background-color .3s}
  .nav__burger i{position:relative}
  .nav__burger i::before,.nav__burger i::after{content:"";position:absolute;left:0}
  .nav__burger i::before{top:-7px}
  .nav__burger i::after{top:7px}
  .nav__burger.is-x i{background:transparent}
  .nav__burger.is-x i::before{transform:translateY(7px) rotate(45deg)}
  .nav__burger.is-x i::after{transform:translateY(-7px) rotate(-45deg)}

  /* hero : la carte de devis passe juste sous le titre */
  .hero{padding:calc(64px + 26px) 0 52px}
  .hero::before,.hero::after{display:none}
  .hero__inner{display:flex;flex-direction:column;align-items:stretch;width:auto;margin-inline:var(--gut);padding-left:0}
  .hero__copy,.hero__media{display:contents}
  .hero__kicker{order:1;margin-bottom:14px;font-size:clamp(9.5px,2.75vw,12px);letter-spacing:.1em;line-height:1.4;white-space:nowrap}
  .hero__title{order:2;font-size:clamp(29px,8.2vw,56px);line-height:1.1}
  /* bandes de la DA : de la fin de chaque ligne jusqu'au bord droit de l'écran */
  .hero__line{display:table}
  .hero__line::before{right:auto;left:calc(100% + 12px);height:.34em;margin-top:-.2em;transform-origin:right center}
  .qcard{order:3;position:relative;left:auto;top:auto;width:100%;max-width:640px;margin-top:22px}
  .hero__media{padding:0}
  .hero__sub{order:4;margin-top:28px;font-size:16px;line-height:1.6;max-width:34em}
  /* la carte porte déjà le bouton devis : on garde seulement le contact */
  .hero__cta{order:5;margin-top:20px;gap:10px}
  .hero__cta [data-devis]{display:none}
  .hero__cta .btn{flex:1 1 auto}
  .hero__facts{order:6;margin-top:24px;font-size:11px;gap:10px 18px}
  .qcard{align-self:flex-start}
  .hero__visual{order:7;position:relative;right:auto;top:auto;bottom:auto;width:auto;height:auto;min-height:0;aspect-ratio:4/3;max-height:520px;margin:40px 14px 0 14px}
  .hero__bars{top:34%;left:-60px;gap:14px}
  .hero__bars i{height:22px}
  .hero__badge{top:16px;right:-10px;padding:9px 13px}
  .hero__mark--tl,.hero__mark--tr{top:-10px}
  .hero__mark--bl,.hero__mark--br{bottom:-10px}
  .hero__mark--tl,.hero__mark--bl{left:-10px}
  .hero__mark--tr,.hero__mark--br{right:-10px}
  .hero__scroll{display:none}
  .hero__cap{display:none}

  /* partenaires */
  .partners{padding-top:56px}
  .partners__title{font-size:clamp(18px,5vw,28px);letter-spacing:.16em;line-height:1.3}
  .partners__row{width:auto;margin:32px 0 0;grid-template-columns:repeat(3,1fr);height:auto;border-top:1px solid #E7E7E7}
  .partners__cell{height:110px;padding:0 6px;border-left:1px solid #E7E7E7;border-bottom:1px solid #E7E7E7}
  .partners__cell:nth-child(3n+1){border-left:0}
  .partners__cell img{max-width:180px}

  /* points forts */
  .strengths{padding:56px 0 24px}
  .strengths__title{font-size:16px;gap:16px}
  .strengths__body{margin-top:24px;min-height:0}
  .strengths__truck{position:relative;width:min(560px,92%)}
  .strengths__cols{margin:8px var(--gut) 0;width:auto;grid-template-columns:1fr;padding-top:0}
  .strength{border-left:0;border-top:1px solid #E5E5E5;padding:28px 0;display:grid;grid-template-columns:44px 1fr;column-gap:18px}
  .strength__ic{grid-row:span 2;width:44px;height:44px}
  .strength h3{margin-top:0;font-size:22px}
  .strength p{margin-top:8px;font-size:15px;line-height:1.5;max-width:none}

  /* sections */
  .steps-sec,.sols-sec,.bennes-sec,.faq-sec{padding:64px 0}
  .waste-sec{padding:56px 0 64px}
  .h2,.waste__title,.zone__title,.faq__title{font-size:clamp(32px,8.6vw,52px);max-width:none}
  .lead{font-size:17px;line-height:1.6;max-width:none}
  .steps-sec__title,.sols-sec__title,.bennes-sec__title,.waste__title,.zone__title,.faq__title{margin-top:18px}
  .steps-sec__lead,.sols-sec__lead,.bennes-sec__lead,.waste__lead,.zone__lead{margin-top:16px}

  .steps{grid-template-columns:1fr 1fr;row-gap:36px;column-gap:20px;margin-top:40px}
  .step{padding-top:22px}
  .step h3{margin-top:16px;font-size:21px;max-width:none}
  .step p{margin-top:10px;font-size:15px;max-width:none}

  .sols{grid-template-columns:1fr 1fr;gap:16px;margin-top:36px}
  .sol{border-radius:16px}
  .sol__img{height:auto;aspect-ratio:4/3}
  .sol__b{padding:24px 22px 22px}
  .sol h3{margin-top:14px;font-size:22px}
  .sol p{margin-top:10px;font-size:15px}
  .sol--cta__in{padding:36px 24px}
  .sol--cta h3{font-size:26px;margin-top:18px}
  .sol--cta p{font-size:15px}

  .caps{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin-top:36px;border-radius:16px;-webkit-overflow-scrolling:touch}
  .cap{flex:0 0 min(260px,72%);scroll-snap-align:start}
  .cap__img{height:150px}
  .cap__b{padding:22px 20px 26px}
  .cap__v{font-size:34px}
  .cap__f{font-size:15px;margin-top:14px}
  .cap__p{font-size:12px;margin-top:16px;padding-top:16px}
  .caps__note{font-size:11px;margin-top:18px}

  .waste{grid-template-columns:1fr;row-gap:40px}
  .waste__l{padding-top:0}
  .chips{gap:10px;margin-top:28px}
  .chips--no{margin-top:12px}
  .chip-br{display:none}
  .chip{height:48px;padding:0 18px;font-size:15px;gap:10px}
  .waste__box{padding:20px;border-radius:18px}
  .waste__img{height:auto;aspect-ratio:16/9;border-radius:12px}
  .waste__box h3{margin-top:24px;font-size:24px}
  .waste__box p{font-size:15px;margin-top:12px}
  .waste__btn{margin-top:22px}

  .zone-sec{padding:0}
  .zone{width:auto;grid-template-columns:minmax(0,1fr);padding:64px var(--gut);row-gap:36px}
  .deps{gap:8px;margin-top:28px}
  .deps li{height:42px;padding:0 12px;font-size:13px;letter-spacing:.06em;gap:8px}
  .zone__btn{margin-top:28px;min-height:58px;padding:0 32px;font-size:16px;border-radius:10px}

  .voirie-sec{padding:56px 0}
  .voirie{grid-template-columns:minmax(0,1fr);border-radius:18px;min-height:0}
  .voirie__c{padding:40px 22px}
  .voirie__title{margin-top:18px;font-size:clamp(30px,8vw,44px)}
  .voirie__lead{font-size:16px;margin-top:14px}
  .voirie__list{margin-top:24px;gap:14px}
  .voirie__list li{font-size:15px;align-items:flex-start}
  .voirie__list svg{margin-top:2px}
  .voirie__btn{margin-top:28px;min-height:56px;border-radius:10px;width:100%;white-space:normal}
  .voirie__img{aspect-ratio:4/3;padding:0}
  .voirie__img img{object-position:50% 80%}

  .final{height:auto;min-height:0;padding:72px var(--gut)}
  .final__title{font-size:clamp(32px,8.6vw,52px);max-width:12em}
  .final__p{font-size:16px;line-height:1.5;letter-spacing:0;max-width:30em;margin-top:18px}
  .final__cta{flex-direction:column;gap:10px;margin-top:28px}
  .final__btn{width:100%;min-height:56px;border-radius:10px;font-size:15px}

  .faq{grid-template-columns:1fr;row-gap:36px}
  .faq__l{padding-top:0}
  .faq__p{font-size:16px;margin-top:16px}
  .btn--phone{margin-top:22px;min-height:56px;font-size:16px;border-radius:10px}
  .acc__q{padding:22px 0;min-height:0;font-size:17px;gap:20px}
  .acc__a p{font-size:15px}
  .acc__a p:last-child{padding-bottom:22px}

  .foot{padding:56px 0 calc(96px + env(safe-area-inset-bottom))}
  .foot__g{grid-template-columns:1fr 1fr;row-gap:40px;column-gap:20px}
  .foot__b{grid-column:1/-1}
  .foot__b p{font-size:15px;margin-top:18px;max-width:none}
  .foot__act{gap:28px;margin-top:22px}
  .foot__wa{min-height:52px;padding:0 24px;font-size:16px;border-radius:10px}
  .foot__call{font-size:16px}
  .foot__c ul{margin-top:18px;row-gap:14px}
  .foot__c li{font-size:15px}
  .foot__bar{margin-top:44px;padding-top:24px;font-size:11px;flex-direction:column;align-items:flex-start}
  .foot__lg{gap:16px}

  /* barre d'action mobile */
  .mobar{
    position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;gap:8px;
    padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.94);
    -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line-2);
    transform:translateY(110%);transition:transform .4s var(--ease-out);
  }
  .mobar.is-on{transform:none}
  .mobar .btn--orange{flex:1;min-height:52px;font-size:16px;border-radius:8px}
  .mobar .btn--line{border-radius:8px;min-height:52px}

  .mbody{padding:24px var(--gut) 28px}
  .mtop{padding:16px var(--gut)}
  .mfoot{padding:14px var(--gut) calc(14px + env(safe-area-inset-bottom))}
}

@media (max-width:620px){
  .steps,.sols{grid-template-columns:1fr}
  .mgrid--3{grid-template-columns:1fr}
  .mgrid--3 .ch--col{flex-direction:row;align-items:center;min-height:64px;padding:14px 44px 14px 16px}
  .mgrid--3 .ch--col>svg{margin-bottom:0}
  .mgrid--3 .ch--col .tick{top:50%;margin-top:-11px}
  .f2{grid-template-columns:1fr}
  .hero__cta .btn{width:100%}
  .foot__g{grid-template-columns:1fr}
}

@media (max-width:440px){
  .f .mgrid--2{grid-template-columns:1fr}
  .ch{padding-right:42px}
  .ch__s{letter-spacing:.08em}
  .mfoot .btn{padding:0 18px}
}

@media (max-width:380px){
  .mgrid--2 .ch--col{min-height:104px}
  .ch__t{font-size:14px}
}

/* ================================================================
   BANDEAU COOKIES + PRÉFÉRENCES
   ================================================================ */
.ck{
  position:fixed;z-index:190;left:24px;bottom:24px;width:min(440px,calc(100% - 32px));
  background:var(--ink);color:#fff;padding:24px 24px 18px;border:1px solid #232424;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.6);
  opacity:0;transform:translateY(24px);transition:opacity .5s var(--ease-out),transform .6s var(--ease-out);
}
.ck.is-on{opacity:1;transform:none}
.ck .tag{font-size:12px}
.ck__t{margin-top:14px;font-family:var(--f-pop);font-weight:600;font-size:20px;line-height:1.25}
.ck__p{margin-top:8px;font-size:14px;line-height:1.6;color:var(--on-dark)}
.ck__p a{color:#fff;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.ck__p a:hover{color:var(--orange)}
.ck__act{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.ck__btn{
  min-height:50px;padding:0 14px;border-radius:6px;font-family:var(--f-pop);font-weight:600;font-size:15px;
  transition:background-color .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease);
}
.ck__btn--orange{background:var(--orange);color:#fff}
.ck__btn--orange:hover{background:var(--orange-hover)}
.ck__btn--line{border:1.5px solid rgba(255,255,255,.85);color:#fff}
.ck__btn--line:hover{background:#fff;color:var(--ink)}
.ck__btn--dline{border:1.5px solid var(--ink);color:var(--ink)}
.ck__btn--dline:hover{background:var(--ink);color:#fff}
.ck__custom{display:block;margin:14px auto 0;font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#9A9B9B;text-decoration:underline;text-underline-offset:4px}
.ck__custom:hover{color:#fff}
.has-ck .mobar{transform:translateY(110%)!important}

.ckp{position:fixed;inset:0;z-index:220;display:grid;place-items:center;padding:16px}
.ckp__scrim{position:absolute;inset:0;background:rgba(11,12,12,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .3s var(--ease)}
.ckp__card{position:relative;width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;padding:32px 28px 26px;animation:popIn .4s var(--ease-out)}
.ckp__card h2{margin-top:14px;font-weight:800;font-size:clamp(24px,4vw,30px);line-height:1.1;letter-spacing:-.03em}
.ckp__intro{margin-top:10px;font-size:15px;line-height:1.6;color:var(--muted)}
.ckp__x{position:absolute;top:14px;right:14px;width:40px;height:40px;display:grid;place-items:center;color:var(--muted)}
.ckp__x:hover{color:var(--ink)}
.ckp__x svg{width:20px;height:20px}
.ckp__row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid var(--line-2)}
.ckp__row:first-of-type{margin-top:16px;border-top:1px solid var(--line-2)}
.ckp__txt{display:grid;gap:4px;min-width:0}
.ckp__name{font-weight:700;font-size:16px}
.ckp__desc{font-size:14px;line-height:1.5;color:var(--muted)}
.ckp__always{flex:none;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--orange);white-space:nowrap}
.ckp__sw{position:relative;flex:none;width:48px;height:28px;border-radius:999px;background:#D6D6D4;transition:background-color .25s var(--ease)}
.ckp__sw i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .25s var(--ease)}
.ckp__sw[aria-checked="true"]{background:var(--orange)}
.ckp__sw[aria-checked="true"] i{transform:translateX(20px)}
.ckp__act{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}

@media (max-width:620px){
  .ck{left:12px;right:12px;bottom:12px;width:auto;padding:20px 18px 14px}
  .ck__t{font-size:18px}
  .ckp__act,.ck__act{grid-template-columns:1fr}
  .ckp__card{padding:28px 20px 20px}
}

/* ================================================================
   PAGES LÉGALES
   ================================================================ */
.lg-hero{background:var(--off);padding:calc(max(64px, var(--nav-h)) + clamp(48px, 6vw, 110px)) 0 clamp(40px, 5vw, 80px);border-bottom:1px solid var(--line-2)}
.lg-hero h1{margin-top:clamp(18px, 2vw, 32px);font-weight:800;font-size:var(--fs-h2);line-height:1.02;letter-spacing:-.035em;max-width:16em}
.lg-meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:clamp(18px, 2vw, 28px);font-family:var(--f-mono);font-size:var(--fs-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.lg-back{display:inline-flex;align-items:center;gap:10px;color:var(--ink)}
.lg-back svg{width:16px;height:16px;transform:rotate(180deg);transition:transform .3s var(--ease)}
.lg-back:hover{color:var(--orange)}
.lg-back:hover svg{transform:rotate(180deg) translateX(4px)}
.lg-notice{display:flex;gap:12px;align-items:flex-start;margin-top:24px;max-width:760px;padding:14px 18px;background:#fff;border-left:3px solid var(--orange);font-size:15px;line-height:1.5;color:var(--ink)}
.lg-notice svg{width:20px;height:20px;flex:none;color:var(--orange);margin-top:1px}
html[lang="fr"] .lg-notice{display:none}
.lg-draft{display:flex;gap:12px;align-items:flex-start;margin-top:16px;max-width:760px;padding:14px 18px;background:#FFF3EB;border:1px dashed #F7A06A;font-size:15px;line-height:1.5;color:#7A3300}
.lg-draft svg{width:20px;height:20px;flex:none;margin-top:1px}

.lg{display:grid;grid-template-columns:minmax(220px, 300px) minmax(0, 1fr);column-gap:clamp(40px, 6vw, 120px);padding:clamp(48px, 6vw, 100px) 0 clamp(64px, 8vw, 140px)}
.lg-toc{position:sticky;top:110px;align-self:start}
.lg-toc__t{font-family:var(--f-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.lg-toc ol{margin-top:16px;display:grid;border-top:1px solid var(--line-2);counter-reset:toc}
.lg-toc li{counter-increment:toc}
.lg-toc a{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2);font-size:15px;line-height:1.35;color:var(--muted);transition:color .2s var(--ease)}
.lg-toc a::before{content:counter(toc, decimal-leading-zero);font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;color:#A6A6A6;padding-top:2px}
.lg-toc a:hover,.lg-toc a.is-active{color:var(--ink)}
.lg-toc a.is-active::before{color:var(--orange)}

.lg>*{min-width:0}
.prose{max-width:780px;color:var(--muted);font-size:var(--fs-text);line-height:1.75}
.prose>section{scroll-margin-top:100px}
.prose>section+section{margin-top:clamp(40px, 4vw, 64px);padding-top:clamp(40px, 4vw, 64px);border-top:1px solid var(--line-2)}
.prose h2{display:flex;gap:14px;align-items:baseline;font-weight:700;font-size:var(--fs-h3);line-height:1.2;letter-spacing:-.025em;color:var(--ink)}
.prose h2 .n{font-family:var(--f-mono);font-weight:400;font-size:var(--fs-mono);letter-spacing:.1em;color:var(--orange)}
.prose h3{margin-top:28px;font-weight:700;font-size:var(--fs-body);color:var(--ink);letter-spacing:-.015em}
.prose p,.prose ul,.prose dl{margin-top:16px}
.prose ul{display:grid;gap:10px}
.prose ul li{position:relative;padding-left:22px}
.prose ul li::before{content:"";position:absolute;left:2px;top:.72em;width:6px;height:6px;background:var(--orange)}
.prose strong{color:var(--ink);font-weight:600}
.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:3px;text-decoration-thickness:2px}
.prose a:hover{color:var(--orange)}
.prose dl{display:grid;grid-template-columns:minmax(140px, 220px) 1fr;border-top:1px solid var(--line-2)}
.prose dt,.prose dd{padding:12px 0;border-bottom:1px solid var(--line-2)}
.prose dt{font-family:var(--f-mono);font-size:var(--fs-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink);padding-right:16px}
.prose .table{margin-top:18px;overflow-x:auto;border:1px solid var(--line-2)}
.prose table{width:100%;border-collapse:collapse;font-size:15px;min-width:560px}
.prose th,.prose td{padding:12px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line-2)}
.prose th{font-family:var(--f-mono);font-weight:400;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:var(--off)}
.prose tr:last-child td{border-bottom:0}
.todo{background:#FFF3EB;color:#B34400;padding:1px 6px;border:1px dashed #F7A06A;border-radius:3px;font-style:normal;white-space:normal}
.lg-btn{margin-top:22px}
.lg-pdf{display:inline-flex;align-items:center;gap:10px;color:var(--ink)}
.lg-pdf svg{width:16px;height:16px;transform:rotate(90deg)}
.lg-pdf:hover{color:var(--orange)}
.lg-pdf[hidden]{display:none}

/* « Annuler ma commande » */
.an-lead{margin-top:clamp(16px, 2vw, 24px);max-width:36em;font-size:var(--fs-text);line-height:1.6;color:var(--muted)}
.an{display:grid;grid-template-columns:minmax(0, 1fr) minmax(240px, 340px);gap:clamp(24px, 4vw, 64px);align-items:start;padding:clamp(40px, 5vw, 80px) 0 clamp(64px, 8vw, 120px)}
.an-card{background:#fff;border:1px solid var(--line-2);border-radius:14px;padding:clamp(22px, 3vw, 40px);box-shadow:0 18px 40px -28px rgba(0,0,0,.25)}
.an-step h2{font-weight:800;font-size:clamp(22px, 2vw, 30px);line-height:1.15;letter-spacing:-.025em;color:var(--ink)}
.an-step p{margin-top:14px;font-size:16px;line-height:1.6;color:var(--muted)}
.an-step b{color:var(--ink)}
.an-f{margin-top:18px}
.an-f label{display:block;margin-bottom:8px;font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.an-f input{width:100%;min-height:54px;padding:12px 16px;border:1px solid #DADAD6;border-radius:10px;background:#fff;font:inherit;font-size:16px;color:var(--ink)}
.an-f input:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,94,0,.15)}
.an-btn{width:100%;margin-top:22px;min-height:56px;font-size:16px;border-radius:10px}
.an-btn[aria-busy="true"]{opacity:.6;pointer-events:none}
.an-link{margin-top:14px;font-size:14px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.an-dl{display:grid;grid-template-columns:minmax(120px, 200px) 1fr;margin-top:18px;border-top:1px solid var(--line-2)}
.an-dl dt,.an-dl dd{padding:12px 0;border-bottom:1px solid var(--line-2);font-size:15px}
.an-dl dt{font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-right:14px}
.an-dl dd{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.an-ok{width:60px;height:60px;display:grid;place-items:center;margin-bottom:18px;border-radius:50%;background:#1F8A4C;color:#fff}
.an-ok svg{width:28px;height:28px}
.an-err{margin-top:16px;padding:12px 14px;border-radius:10px;background:#FDECEC;color:#B0242B;font-size:15px}
.an-rules{padding-top:6px}
.an-rules ul{margin-top:16px;display:grid;border-top:1px solid var(--line-2)}
.an-rules li{padding:14px 0;border-bottom:1px solid var(--line-2);font-size:15px;line-height:1.5;color:var(--muted)}
.an-rules li b{color:var(--ink)}
.an-rules p{margin-top:16px;font-size:14px;line-height:1.55;color:var(--muted)}
.an-rules a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:3px}
@media (max-width:860px){
  .an{grid-template-columns:1fr}
  .an-dl{grid-template-columns:1fr}
  .an-dl dt{border-bottom:0;padding-bottom:0}
}

@media (max-width:1023px){
  .lg{grid-template-columns:1fr;row-gap:36px}
  .lg-toc{position:static}
  .lg-toc ol{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}
  .prose dl{grid-template-columns:1fr}
  .prose dt{border-bottom:0;padding-bottom:0}
}
@media (max-width:620px){
  .lg-toc ol{grid-template-columns:1fr}
  /* tableaux empilés en fiches */
  .prose .table{border:0;overflow:visible}
  .prose table{min-width:0;font-size:15px}
  .prose thead{display:none}
  .prose table,.prose tbody,.prose tr,.prose td{display:block;width:100%}
  .prose tr{padding:14px 16px;border:1px solid var(--line-2);border-bottom-width:1px}
  .prose tr+tr{margin-top:10px}
  .prose td{padding:4px 0;border:0}
  .prose td::before{content:attr(data-label);display:block;margin-bottom:2px;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
}

/* ================================================================
   ÉCHELLE TYPOGRAPHIQUE FLUIDE
   Chaque taille glisse en continu de sa valeur mobile (écran de
   360 px) à sa valeur maquette (écran de 1920 px). Placé en fin de
   feuille : c'est la seule source de vérité pour les tailles de texte
   des sections (le hero et la carte de devis ont leurs propres règles).
   ================================================================ */
:root{
  --fs-h2:clamp(32px, 2.532vw + 22.88px, 71.5px);
  --fs-h2-s:clamp(32px, 2.436vw + 23.23px, 70px);
  --fs-h2-m:clamp(30px, 1.603vw + 24.23px, 55px);
  --fs-h2-final:clamp(32px, 1.923vw + 25.08px, 62px);
  --fs-partners:clamp(18px, 1.795vw + 11.54px, 46px);
  --fs-kicker-l:clamp(15px, 0.705vw + 12.46px, 26px);
  --fs-lead:clamp(17px, 0.821vw + 14.05px, 29.8px);
  --fs-lead-s:clamp(16px, 0.641vw + 13.69px, 26px);
  --fs-text:clamp(15px, 0.385vw + 13.62px, 21px);
  --fs-h3-l:clamp(22px, 1.026vw + 18.31px, 38px);
  --fs-h3:clamp(21px, 0.897vw + 17.77px, 35px);
  --fs-h3-s:clamp(20px, 0.897vw + 16.77px, 34px);
  --fs-h3-xs:clamp(20px, 0.673vw + 17.58px, 30.5px);
  --fs-body:clamp(15px, 0.404vw + 13.55px, 21.3px);
  --fs-body-l:clamp(15px, 0.397vw + 13.57px, 21.2px);
  --fs-small:clamp(14px, 0.090vw + 13.68px, 15.4px);
  --fs-q:clamp(17px, 0.705vw + 14.46px, 28px);
  --fs-foot:clamp(15px, 0.417vw + 13.50px, 21.5px);
  --fs-mono:clamp(11px, 0.321vw + 9.85px, 16px);
  --fs-mono-l:clamp(13px, 0.256vw + 12.08px, 17px);
  --fs-num:clamp(30px, 0.769vw + 27.23px, 42px);
  --fs-btn:clamp(15px, 0.321vw + 13.85px, 20px);
  --fs-btn-l:clamp(16px, 0.385vw + 14.62px, 22px);
}
.btn,.btn--phone,.waste__btn,.voirie__btn{font-size:var(--fs-btn)}
.zone__btn{font-size:var(--fs-btn-l)}
.h2,.zone__title{font-size:var(--fs-h2)}
.waste__title,.faq__title{font-size:var(--fs-h2-s)}
.voirie__title{font-size:var(--fs-h2-m)}
.final__title{font-size:var(--fs-h2-final)}
.partners__title{font-size:var(--fs-partners)}
.strengths__title{font-size:var(--fs-kicker-l)}
.lead{font-size:var(--fs-lead)}
.voirie__lead{font-size:var(--fs-lead-s)}
.waste__box p,.faq__p,.acc__a p,.foot__b p,.final__p{font-size:var(--fs-text)}
.sol--cta h3{font-size:var(--fs-h3-l)}
.sol h3,.waste__box h3{font-size:var(--fs-h3)}
.step h3{font-size:var(--fs-h3-s)}
.strength h3{font-size:var(--fs-h3-xs)}
.step p,.sol p,.sol--cta p,.cap__f,.sol--cta__btn{font-size:var(--fs-body)}
.chip,.voirie__list li{font-size:var(--fs-body-l)}
.strength p{font-size:var(--fs-small)}
.acc__q{font-size:var(--fs-q)}
.foot__c li,.foot__call,.foot__wa{font-size:var(--fs-foot)}
.tag,.sol__m,.cap__p,.caps__note,.foot__c h4,.foot__bar,.ph{font-size:var(--fs-mono)}
.step__n,.deps li{font-size:var(--fs-mono-l)}
.cap__v{font-size:var(--fs-num)}
.btn--sq{font-size:max(13px, calc(var(--u) * 15))}
.final__btn{font-size:max(14px, calc(var(--u) * 15))}
.cap__img .ph{font-size:clamp(10px, .55vw + 7px, 16px)}
.mobar .btn--orange,.pop__btn,.mfoot .btn{font-size:16px}


/* ================================================================
   MOUVEMENT RÉDUIT
   ================================================================ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .js .rv,.js .hero [data-in],.js .hero .hero__line>span{opacity:1!important;transform:none!important;clip-path:none!important}
  .js .hero .hero__line::before,.js .hero__bars i,.js .step::after{transform:none!important}
  .js .hero__photo{clip-path:none!important}
  .js .hero__photo img{transform:none!important}
  .js .hero__mark,.js .hero__badge,.js .qcard,.js .hero__cap{opacity:1!important;transform:none!important}
}

/* Mode capture (?static) : état final sans animation */
.no-anim *,.no-anim *::before,.no-anim *::after{animation:none!important;transition:none!important}
.no-anim .rv,.no-anim .hero [data-in],.no-anim .hero .hero__line>span{opacity:1!important;transform:none!important;clip-path:none!important}
.no-anim .hero .hero__line::before,.no-anim .hero__bars i,.no-anim .step::after{transform:none!important}
.no-anim .hero__photo{clip-path:none!important}
.no-anim .hero__photo img{transform:none!important}
.no-anim .hero__mark,.no-anim .hero__badge,.no-anim .qcard,.no-anim .hero__cap{opacity:1!important;transform:none!important}
.no-anim .voirie__list svg{stroke-dashoffset:0!important}
.no-anim .imap__dep--idf{stroke-dashoffset:0!important;fill-opacity:1!important}
.no-anim .imap__dep--lim,.no-anim .imap__lbl,.no-anim .imap__glow,.no-anim .imap__ring,.no-anim .imap__ring-l{opacity:1!important}
