/* Base (cadre de page du runtime) */
html,body{height:100%;margin:0}#mz-root,#mz-root>.mz-host{height:100%}
[data-off]{display:none!important}

/* Styles globaux de la maquette */
html{scroll-behavior:smooth}
body{margin:0;background:#FFFFFF;color:#000000;font-family:'Figtree',sans-serif;-webkit-font-smoothing:antialiased}
a{color:#000000;text-decoration:none}
a:hover{color:#F15C19}
*{box-sizing:border-box}
img{display:block}
/* Carte animée au scroll */
.zm-scroll{position:relative;height:560vh;background:#000000;color:#FFFFFF}
.zm-stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.zm-stage svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.zm-ui{position:relative;max-width:1280px;height:100%;margin:0 auto;padding:0 clamp(20px,5vw,72px);pointer-events:none}
.zm-caps{position:absolute;top:50%;left:clamp(20px,5vw,72px);width:min(400px,32vw);transform:translateY(-50%);display:grid}
/* Récit de la carte : une étape à la fois seulement une fois le récit armé (.js, au premier geste du visiteur) ;
   avant (moteurs de rendu, sans script), les quatre étapes restent lisibles l'une sous l'autre. */
.zm-cap{grid-area:auto;align-self:center;display:flex;flex-direction:column;gap:20px;transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.zm-caps.js .zm-cap{grid-area:1/1;opacity:0;transform:translateY(24px)}
.zm-caps.js .zm-cap.on{opacity:1;transform:none}
.zm-prog{position:absolute;left:clamp(20px,5vw,72px);bottom:clamp(28px,5vh,56px);display:flex;align-items:center;gap:18px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:600;color:#8A8A8A}
.zm-num{font-family:'Cormorant Garamond',serif;font-size:30px;letter-spacing:0;line-height:1;color:#F15C19}
.zm-segs{display:flex;gap:6px}
.zm-seg{width:44px;height:3px;background:rgba(255,255,255,.2);overflow:hidden}
.zm-seg i{display:block;width:0;height:100%;background:#F15C19}
.zm-t{font-family:'Figtree',sans-serif;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;fill:#FFFFFF}
.zm-halo{paint-order:stroke;stroke:#000000;stroke-width:4px;stroke-linejoin:round}
.zm-ctry{font-size:10px;letter-spacing:.42em;fill:#5A5A5A}
.zm-sea{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:400;font-size:22px;letter-spacing:.02em;text-transform:none;fill:#6B6B6B}
.zm-dept{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:400;font-size:32px;letter-spacing:0;text-transform:none;fill:#F15C19}
.zm-ctx text{font-size:10px;fill:#A6A6A6}
.zm-badge rect{fill:#FFFFFF}.zm-badge text{font-size:10px;letter-spacing:.08em;fill:#000000}
.zm-badge.a rect{fill:#F15C19}.zm-badge.a text{fill:#FFFFFF}
.zm-town rect{fill:#FFFFFF;transition:fill .3s}.zm-town text{fill:#000000;transition:fill .3s}
.zm-town:hover rect,.zm-town:focus-visible rect{fill:#F15C19}.zm-town:hover text,.zm-town:focus-visible text{fill:#FFFFFF}
.zm-town.hq rect{fill:#F15C19}.zm-town.hq text{fill:#FFFFFF}
.zm-town.hq:hover rect{fill:#FFFFFF}.zm-town.hq:hover text{fill:#000000}
.zm-pulse{transform-box:fill-box;transform-origin:center;animation:zmPulse 1.8s cubic-bezier(.2,.7,.2,1) infinite}
.zm-pulse.b{animation-delay:.6s}
@keyframes zmPulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(3.4);opacity:0}}
.zm-card{transition:background .35s,color .35s}
.zm-card .zm-arrow{transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.zm-card:hover .zm-arrow{transform:translateX(6px)}
@media (max-width:860px){
  .zm-caps{top:auto;bottom:0;left:0;right:0;width:auto;transform:none;padding:56px 20px 30px;background:linear-gradient(0deg,#000000 72%,rgba(0,0,0,0))}
  .zm-cap{align-self:end;gap:14px}
  .zm-cap p{font-size:15px!important}
  .zm-prog{top:78px;bottom:auto;left:20px}
}
.zm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px}
.zr-slot{grid-column:1/-1;height:clamp(220px,52vw,340px);perspective:1400px}
.zr-card{position:relative;width:100%;height:100%;overflow:hidden;background:#111111;transform-origin:left center;will-change:transform}
.zr-card img,.zr-fly img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media (min-width:1100px){.zm-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.zr-slot{grid-column:3/span 2;height:auto;min-height:100%}}
/* Bandeau Réalisations */
.zr{position:relative;background:#000000;color:#FFFFFF}
.zr-stage{position:relative;height:88vh;height:88svh;min-height:520px;overflow:hidden}
.zr.pin{height:340vh}
.zr.pin .zr-stage{position:sticky;top:0;height:100vh;height:100svh}
/* Bandeau : animations seulement une fois armé (.js, voir initReal) ; avant, titre, chantiers et bouton restent visibles. */
.zr-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform 1.6s cubic-bezier(.2,.7,.2,1)}
.zr:not(.js) .zr-img + .zr-img{visibility:hidden}
.zr.js .zr-img{opacity:0;transform:scale(1.06)}
.zr.js .zr-img.on{opacity:1;transform:none}
.zr.pin:not(.arrived) .zr-img{visibility:hidden}
.zr-shade{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.82) 0%,rgba(0,0,0,.35) 45%,rgba(0,0,0,.15) 100%)}
.zr-ui{position:relative;height:100%;max-width:1280px;margin:0 auto;padding:110px clamp(20px,5vw,72px) clamp(36px,6vh,64px);display:flex;flex-direction:column;justify-content:flex-end;gap:clamp(20px,3vh,32px)}
.zr-ui > *{transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.zr.js .zr-ui > *{opacity:0;transform:translateY(26px)}
.zr-ui > *:nth-child(2){transition-delay:.08s}.zr-ui > *:nth-child(3){transition-delay:.16s}
.zr.js.show .zr-ui > *{opacity:1;transform:none}
.zr-labs{display:grid;gap:8px}
.zr-lab{display:flex;align-items:baseline;gap:16px;transition:opacity .5s,transform .6s cubic-bezier(.2,.7,.2,1)}
.zr.js .zr-labs{gap:0}
.zr.js .zr-lab{grid-area:1/1;opacity:0;transform:translateY(14px)}
.zr.js .zr-lab.on{opacity:1;transform:none}
.zr-fly{position:fixed;left:0;top:0;z-index:50;overflow:hidden;pointer-events:none;visibility:hidden;background:#111111}
@media (prefers-reduced-motion:reduce){.zm-pulse{animation:none}.zm-cap{transition:none}.zr-img,.zr-lab,.zr-ui > *{transition:none}}

/* États hover (style-hover de la maquette) */
.mzh0:hover{color:#FFFFFF !important}
.mzh1:hover{background:#FFFFFF !important;color:#000000 !important}
.mzh2:hover{border-color:#FFFFFF !important;background:rgba(255,255,255,.1) !important;color:#FFFFFF !important}
.mzh3:hover{background:#000000 !important;color:#FFFFFF !important}
.mzh4:hover{color:#F15C19 !important}

/* Responsive commun */
/* Très petits écrans : en-tête compact, le bouton menu reste entièrement visible */
@media (max-width:359px){
  header[style]{gap:10px!important;padding-left:14px!important;padding-right:14px!important}
  header nav{gap:8px!important}
  header nav>a[href$="contact"]{padding:12px!important;font-size:9.5px!important;letter-spacing:.08em!important}
  header nav>button{width:44px!important;height:44px!important}
}
/* Cartes des communes : sur petit écran, seuls les points ; étiquette pour la ville mise en avant ou survolée (la liste à côté porte les liens) */
@media (max-width:600px){.mz-chip:not(.on){display:none}}
/* Fil d'Ariane : zone tactile confortable */
@media (max-width:767px){nav[aria-label="Fil d'Ariane"] a{display:inline-block;padding:14px 0;margin:-14px 0}}

