@font-face{font-family:'Archivo';font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/fonts/archivo-wdth.woff2?v=e3a28eade2) format('woff2')}
@font-face{font-family:'Archivo';font-style:italic;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/fonts/archivo-wdth-italic.woff2?v=d63de74ee5) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/plex-mono-400.woff2?v=08949f728d) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/plex-mono-500.woff2?v=01d2854474) format('woff2')}
/* Nachrah Group International — styles partagés */
:root{--paper:#F3F2EE;--paper-2:#E8E6E0;--ink:#0F1712;--green:#1E5B36;--deep:#0B1F14;--deep-2:#11291C;--mint:#8FE3A9;--line:#CFCDC5;--line-d:rgba(233,236,230,.14);--muted:#59615B;--muted-d:#A7B5AA;--ease:cubic-bezier(.2,.8,.2,1);--ease-io:cubic-bezier(.7,0,.2,1);--pad:clamp(16px,4vw,56px)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:100px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Archivo',system-ui,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
.site{overflow-x:clip}
.wrap{max-width:1320px;margin:0 auto;padding-inline:var(--pad)}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;font-weight:400;letter-spacing:.08em;text-transform:uppercase}
.disp{font-stretch:66%;font-weight:800;text-transform:uppercase;line-height:.95;letter-spacing:-.01em;margin:0}
.d1{--d:1}.d2{--d:2}.d3{--d:3}.d4{--d:4}.d5{--d:5}

/* ---------- En-tête flottant ---------- */
.hdr{position:fixed;top:14px;left:0;right:0;z-index:50;padding-inline:var(--pad);pointer-events:none}
.hdr-in{pointer-events:auto;max-width:1320px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 8px 8px 16px;background:rgba(11,31,20,.74);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);border:1px solid rgba(233,236,230,.12);border-radius:999px;color:var(--paper);transition:background .4s}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand img{width:38px;height:auto}
.brand b{display:block;font-stretch:68%;font-weight:800;font-size:19px;text-transform:uppercase;letter-spacing:.02em;line-height:1}
.brand small{display:block;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted-d);margin-top:4px}
.nav-d{display:flex;gap:2px}
.nav-d a{padding:10px 16px;font-size:14.5px;font-weight:500;text-decoration:none;border-radius:999px;transition:background .3s,color .3s}
.nav-d a:hover{background:rgba(233,236,230,.1);color:var(--mint)}
.btn-sm{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 20px;border-radius:999px;background:var(--mint);color:var(--deep);font-weight:600;font-size:14.5px;text-decoration:none;transition:background .3s}
.btn-sm:hover{background:var(--paper)}
.btn-sm svg{transition:transform .4s var(--ease)}
.btn-sm:hover svg{transform:translateX(4px)}

/* ---------- Hero ---------- */
.hero{position:relative;isolation:isolate;background:var(--deep);color:var(--paper);padding:clamp(128px,15vw,176px) 0 0;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:88px 88px;-webkit-mask-image:radial-gradient(ellipse 75% 65% at 72% 38%,#000 15%,transparent 72%);mask-image:radial-gradient(ellipse 75% 65% at 72% 38%,#000 15%,transparent 72%)}
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(48px,6vw,96px);align-items:end}
.eyebrow{display:flex;align-items:center;gap:14px;color:var(--mint);margin:0}
.eyebrow i{display:block;width:56px;height:1px;background:currentColor;transform-origin:left}
.h1{margin:26px 0 0;font-size:clamp(64px,9.4vw,160px);line-height:1.06}
.h1 .ln{display:block;overflow:hidden;padding-top:.14em;margin-top:-.14em}
.h1 .ln>span{display:block}
.h1 .ln:nth-child(3){color:var(--mint)}
.hero-lead{max-width:520px;margin:34px 0 0;font-size:clamp(17px,1.35vw,20px);line-height:1.55;color:#C9D2CB}
.hero-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin-top:38px}
.btn{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;gap:14px;min-height:58px;padding:0 10px 0 28px;border-radius:999px;font-weight:600;font-size:16px;text-decoration:none;transition:color .45s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;transform:translateY(101%);transition:transform .55s var(--ease)}
.btn:hover::before{transform:none}
.btn .arr{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;transition:transform .5s var(--ease),background .45s,color .45s}
.btn:hover .arr{transform:rotate(-45deg)}
.btn.plain{padding-right:28px}
.btn-mint{background:var(--mint);color:var(--deep)}
.btn-mint::before{background:var(--paper)}
.btn-mint .arr{background:var(--deep);color:var(--mint)}
.btn-line{border:1px solid rgba(233,236,230,.4);color:var(--paper)}
.btn-line::before{background:var(--paper)}
.btn-line:hover{color:var(--deep)}
.btn-ink{background:var(--ink);color:var(--paper)}
.btn-ink::before{background:var(--green)}
.btn-ink .arr{background:var(--mint);color:var(--deep)}
.btn-out{border:1px solid var(--ink);color:var(--ink)}
.btn-out::before{background:var(--ink)}
.btn-out:hover{color:var(--paper)}

.hero-fig{position:relative;margin:0}
.dim{display:flex;align-items:center;gap:10px;color:var(--muted-d);margin-bottom:14px}
.dim b{display:block;width:1px;height:12px;background:currentColor}
.dim i{display:block;flex:1;height:1px;background:currentColor;transform-origin:left}
.hero-img{position:relative;overflow:hidden;border-radius:6px}
.hero-img img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:52% 50%}
.cartouche{position:absolute;left:0;bottom:0;display:grid;grid-template-columns:auto auto;background:var(--paper);color:var(--ink);font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.05em;text-transform:uppercase}
.cartouche span{padding:8px 12px;border-top:1px solid var(--ink)}
.cartouche span:nth-child(odd){color:var(--muted);border-right:1px solid var(--ink)}
.cartouche span:nth-child(-n+2){border-top:0}
.badge{position:absolute;z-index:2;top:-62px;left:-62px;width:136px;height:136px;border-radius:50%;background:var(--deep);border:1px solid var(--line-d)}
.badge svg{width:100%;height:100%}
.badge text{fill:var(--mint);font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}
.badge img{position:absolute;inset:0;margin:auto;width:54px;height:auto}
.hero-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 32px;margin-top:clamp(56px,7vw,96px);padding:22px 0 26px;border-top:1px solid var(--line-d);color:var(--muted-d)}
.hero-foot ul{display:flex;flex-wrap:wrap;gap:8px 28px;list-style:none;margin:0;padding:0}
.hero-foot li::before{content:"";display:inline-block;width:7px;height:7px;margin-right:10px;background:var(--mint);transform:rotate(45deg) translateY(-2px)}
.cue{display:flex;align-items:center;gap:12px;text-decoration:none}
.cue i{position:relative;display:block;width:1px;height:38px;background:var(--line-d);overflow:hidden}
.cue i::after{content:"";position:absolute;left:0;top:-50%;width:1px;height:50%;background:var(--mint)}

/* ---------- Bandeau défilant ---------- */
.marquee{background:var(--green);color:var(--paper);overflow:hidden}
.mq-track{display:flex;width:max-content}
.mq-group{display:flex;align-items:center;gap:36px;padding:26px 18px;font-stretch:66%;font-weight:800;font-size:clamp(34px,4.4vw,64px);line-height:1;text-transform:uppercase;white-space:nowrap}
.mq-group .o{color:transparent;-webkit-text-stroke:1.2px var(--paper)}
.mq-group .sq{display:block;flex:none;width:12px;height:12px;background:var(--mint);transform:rotate(45deg)}

/* ---------- En-têtes de section ---------- */
.sh{display:flex;align-items:center;gap:16px;color:var(--muted);margin:0 0 48px}
.sh .k{color:var(--green)}
.sh i{display:block;flex:1;height:1px;background:var(--line);transform-origin:left}
.dark .sh{color:var(--muted-d)}
.dark .sh .k{color:var(--mint)}
.dark .sh i{background:var(--line-d)}
.h2{font-size:clamp(50px,6.4vw,104px)}
.h2 em{font-style:normal;color:var(--green)}
.dark .h2 em{color:var(--mint)}

/* ---------- Chiffres ---------- */
.stats{padding:clamp(80px,9vw,128px) 0 clamp(40px,5vw,64px)}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:40px 32px}
.stat{position:relative;padding-top:22px}
.stat::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--ink);transform-origin:left}
.stat .n{display:flex;align-items:baseline;font-stretch:62%;font-weight:800;font-size:clamp(84px,8.4vw,128px);line-height:.9;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat .n small{font-size:.38em;color:var(--green);margin-left:4px;letter-spacing:0}
.stat p{margin:14px 0 0;max-width:240px;color:var(--muted);font-size:15.5px}

/* ---------- Le groupe ---------- */
.about{padding:clamp(72px,9vw,128px) 0}
.about-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px clamp(48px,7vw,112px)}
.about-side{position:sticky;top:120px;align-self:start}
.about-side p{margin:28px 0 0;max-width:380px;color:var(--muted)}
.about-body>p{margin:0 0 22px;font-size:clamp(18px,1.5vw,21px);line-height:1.6;color:#253029}
.quote{position:relative;margin:56px 0;padding:44px 0 40px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.quote .qm{position:absolute;top:-6px;right:0;font-stretch:62%;font-weight:800;font-size:180px;line-height:1;color:transparent;-webkit-text-stroke:1.2px var(--green);opacity:.5}
.quote p{position:relative;margin:16px 0 0;font-style:italic;font-stretch:85%;font-weight:500;font-size:clamp(28px,3.1vw,44px);line-height:1.12;letter-spacing:-.01em}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 0;padding:0;list-style:none}
.chips li{padding:12px 20px;border:1px solid var(--ink);border-radius:999px;font-stretch:72%;font-weight:700;font-size:17px;text-transform:uppercase;letter-spacing:.01em;transition:background .35s,color .35s,transform .35s var(--ease);cursor:default}
.chips li:hover{background:var(--ink);color:var(--mint);transform:translateY(-3px)}
.org{list-style:none;margin:64px 0 0;padding:0;border-top:1px solid var(--line)}
.org-t{margin:0 0 6px;font-stretch:70%;font-weight:800;font-size:30px;text-transform:uppercase;line-height:1}
.org li{position:relative;isolation:isolate;display:grid;grid-template-columns:48px minmax(0,1fr) minmax(0,1.25fr);gap:6px 24px;padding:22px 0;border-bottom:1px solid var(--line)}
.org li::before{content:"";position:absolute;inset:0 -16px;z-index:-1;background:var(--paper-2);border-radius:10px;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.org li:hover::before{transform:none}
.org .l{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--green);padding-top:2px}
.org strong{font-size:18px;line-height:1.35}
.org span:last-child{color:var(--muted);font-size:15.5px}

/* ---------- Pôles ---------- */
.poles{padding:clamp(72px,9vw,128px) 0;background:var(--paper-2)}
.poles-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:24px 64px;margin-bottom:56px}
.poles-head p{margin:0;max-width:420px;color:var(--muted)}
.pole-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:16px}
.pole{position:relative;isolation:isolate;overflow:hidden;min-height:580px;display:flex;flex-direction:column;gap:18px;padding:30px;border-radius:22px;background:var(--paper);border:1px solid var(--line);transition:color .5s var(--ease),border-color .5s}
.pole::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--green);border-radius:inherit;transform:translateY(101%);transition:transform .7s var(--ease)}
.pole:hover::before{transform:none}
.pole:hover{color:var(--paper);border-color:var(--green)}
.pole .top{display:flex;justify-content:space-between;align-items:start}
.pole .logo{height:58px;width:auto;transition:filter .5s}
.pole:hover .logo{filter:brightness(0) invert(1)}
.pole .bg{position:absolute;right:-8px;bottom:-56px;z-index:-1;font-stretch:62%;font-weight:800;font-size:260px;line-height:1;color:transparent;-webkit-text-stroke:1px var(--line);transition:-webkit-text-stroke-color .5s,transform .8s var(--ease)}
.pole:hover .bg{-webkit-text-stroke-color:rgba(233,236,230,.22);transform:translateY(-14px)}
.pole h3{margin:40px 0 0;font-stretch:66%;font-weight:800;font-size:clamp(40px,3.6vw,52px);line-height:.92;text-transform:uppercase}
.pole .slogan{margin:0;font-style:italic;font-size:18px;color:var(--green);transition:color .5s}
.pole:hover .slogan{color:var(--mint)}
.pole .desc{margin:0;font-size:16px;opacity:.88}
.pole ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.pole ul li{padding:6px 12px;border:1px solid currentColor;border-radius:999px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;opacity:.75}
.pole .go{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:20px;font-weight:600;text-decoration:none}
.pole .go::after{content:"";position:absolute;inset:0}
.pole .circ{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;border:1px solid currentColor;transition:transform .6s var(--ease),background .5s,color .5s,border-color .5s}
.pole:hover .circ{transform:rotate(-45deg);background:var(--mint);border-color:var(--mint);color:var(--deep)}

/* ---------- Départements ---------- */
.deps{background:var(--deep);color:var(--paper);padding:clamp(80px,10vw,144px) 0;overflow:hidden}
.deps-head{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px 64px;align-items:end;margin-bottom:56px}
.deps-head p{margin:0;color:var(--muted-d)}
.dep-list{list-style:none;margin:0;padding:0;border-bottom:1px solid var(--line-d)}
.dep-list li{position:relative;isolation:isolate;display:grid;grid-template-columns:130px minmax(0,1fr) minmax(0,1.2fr) 52px;gap:12px 28px;align-items:center;padding:30px 0;border-top:1px solid var(--line-d)}
.dep-list li::before{content:"";position:absolute;inset:0 calc(var(--pad) * -1);z-index:-1;background:var(--green);transform:scaleY(0);transform-origin:bottom;transition:transform .55s var(--ease)}
.dep-list li:hover::before{transform:scaleY(1)}
.dep-n{font-stretch:62%;font-weight:800;font-size:72px;line-height:.9;color:transparent;-webkit-text-stroke:1px var(--muted-d);transition:color .4s,-webkit-text-stroke-color .4s}
.dep-list li:hover .dep-n{color:var(--mint);-webkit-text-stroke-color:var(--mint)}
.dep-t{margin:0;font-stretch:66%;font-weight:800;font-size:clamp(30px,3.2vw,46px);line-height:.98;text-transform:uppercase;transition:transform .55s var(--ease)}
.dep-list li:hover .dep-t{transform:translateX(14px)}
.dep-d{margin:0;color:var(--muted-d);font-size:15.5px;transition:color .4s}
.dep-list li:hover .dep-d{color:#E4ECE6}
.dep-ic{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;border:1px solid var(--line-d);transition:transform .55s var(--ease),background .4s,color .4s,border-color .4s}
.dep-list li:hover .dep-ic{transform:rotate(90deg);background:var(--mint);color:var(--deep);border-color:var(--mint)}

/* ---------- Réalisations ---------- */
.work{padding:clamp(80px,10vw,144px) 0 clamp(64px,8vw,112px);timeline-scope:--gal}
.work-head{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:32px 64px;align-items:end;margin-bottom:48px}
.work-meta{display:grid;grid-template-columns:auto 1fr;border-top:1px solid var(--ink);margin:0;font-size:15.5px}
.work-meta dt{padding:12px 24px 12px 0;border-bottom:1px solid var(--line);color:var(--muted)}
.work-meta dd{margin:0;padding:12px 0;border-bottom:1px solid var(--line)}
.gal{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-timeline:--gal x;overscroll-behavior-x:contain;scrollbar-width:none;padding:6px max(var(--pad),calc((100vw - 1320px) / 2 + var(--pad))) 10px;scroll-padding-inline:max(var(--pad),calc((100vw - 1320px) / 2 + var(--pad)))}
.gal::-webkit-scrollbar{display:none}
.shot{flex:0 0 clamp(280px,40vw,600px);margin:0;scroll-snap-align:start}
.shot.lg{flex-basis:clamp(300px,56vw,820px)}
.shot .ph{position:relative;overflow:hidden;border-radius:18px;background:var(--paper-2)}
.shot img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform 1.1s var(--ease)}
.shot:hover img{transform:scale(1.06)}
.shot .tag{position:absolute;left:14px;top:14px;padding:7px 12px;border-radius:999px;background:rgba(243,242,238,.92);color:var(--ink)}
.shot figcaption{display:flex;justify-content:space-between;gap:16px;padding:14px 4px 0;font-size:16px;font-weight:600}
.shot figcaption span{color:var(--muted)}
.gal-foot{display:flex;align-items:center;gap:24px;margin-top:28px}
.gal-bar{position:relative;flex:1;height:2px;background:var(--line);overflow:hidden}
.gal-bar i{position:absolute;inset:0;background:var(--green);transform-origin:left;transform:scaleX(.18)}
.gal-nav{display:none;gap:10px}
.js .gal-nav{display:flex}
.gal-nav button{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;border:1px solid var(--ink);background:none;color:var(--ink);cursor:pointer;transition:background .3s,color .3s}
.gal-nav button:hover{background:var(--ink);color:var(--paper)}

/* ---------- Méthode ---------- */
.method{padding:clamp(80px,10vw,144px) 0;border-top:1px solid var(--line)}
.method-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px clamp(48px,7vw,112px)}
.method-side{position:sticky;top:120px;align-self:start}
.method-side p{margin:28px 0 0;max-width:380px;color:var(--muted)}
.steps{position:relative;list-style:none;margin:0;padding:0 0 0 64px}
.steps .rail,.steps .prog{position:absolute;left:11px;top:14px;bottom:60px;width:2px}
.steps .rail{background:var(--line)}
.steps .prog{background:var(--green);transform-origin:top}
.step{position:relative;padding:0 0 72px}
.step::before{content:"";position:absolute;left:-60px;top:6px;width:16px;height:16px;border-radius:50%;background:var(--paper);border:2px solid var(--green);box-shadow:0 0 0 6px var(--paper)}
.step .num{font-stretch:62%;font-weight:800;font-size:clamp(80px,8vw,120px);line-height:.85;color:transparent;-webkit-text-stroke:1.2px var(--green)}
.step h3{margin:16px 0 10px;font-stretch:72%;font-weight:800;font-size:32px;line-height:1;text-transform:uppercase}
.step p{margin:0;max-width:520px;color:var(--muted);font-size:17px}

/* ---------- Contact ---------- */
.cta{position:relative;isolation:isolate;background:var(--deep);color:var(--paper);padding:clamp(88px,11vw,160px) 0 clamp(64px,8vw,96px);overflow:hidden}
.cta::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:88px 88px;-webkit-mask-image:radial-gradient(ellipse 60% 70% at 15% 30%,#000 10%,transparent 70%);mask-image:radial-gradient(ellipse 60% 70% at 15% 30%,#000 10%,transparent 70%)}
.cta .h2{font-size:clamp(64px,10.4vw,172px)}
.cta-row{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:32px 64px;margin-top:40px}
.cta-row p{margin:0;max-width:460px;color:#C9D2CB;font-size:18px}
.cta-btns{display:flex;flex-wrap:wrap;gap:12px}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:36px 32px;margin-top:clamp(64px,8vw,104px);padding-top:32px;border-top:1px solid var(--line-d)}
.info h3{margin:0 0 12px;color:var(--muted-d)}
.info p{margin:0;font-size:16.5px;line-height:1.65}
.info a{text-decoration:none;background:linear-gradient(var(--mint),var(--mint)) 0 100%/0 1px no-repeat;transition:background-size .45s var(--ease),color .3s}
.info a:hover{background-size:100% 1px;color:var(--mint)}
.info .sub{color:var(--muted-d);font-size:14.5px}

/* ---------- Pied de page ---------- */
.ft{background:var(--deep);color:var(--paper);border-top:1px solid var(--line-d);overflow:hidden}
.ft-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px;padding-top:48px}
.ft-brand{display:flex;align-items:center;gap:18px}
.ft-brand img{width:72px;height:auto}
.ft-brand b{display:block;font-stretch:66%;font-weight:800;font-size:28px;line-height:1;text-transform:uppercase}
.ft-brand span{display:block;margin-top:6px;font-style:italic;color:var(--muted-d)}
.ft-ents{display:flex;align-items:center;gap:28px}
.ft-ents img{height:30px;width:auto;opacity:.85;transition:opacity .3s}
.ft-ents img:hover{opacity:1}
.ft-word{margin:48px 0 0;font-stretch:62%;font-weight:900;font-size:clamp(96px,24.5vw,380px);line-height:.76;letter-spacing:0;text-transform:uppercase;text-align:center;white-space:nowrap;color:transparent;-webkit-text-stroke:1px rgba(233,236,230,.24);user-select:none}
.ft-legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 32px;padding:22px 0 26px;border-top:1px solid var(--line-d);color:var(--muted-d);position:relative;background:var(--deep)}

/* ---------- Responsive ---------- */
@media (max-width:960px){
.nav-d,.hdr .btn-sm{display:none}
.nav-m{display:block}
.hero-grid,.about-grid,.method-grid,.deps-head,.work-head{grid-template-columns:minmax(0,1fr)}
.about-side,.method-side{position:static}
.hero-fig{max-width:560px}
.badge{top:-48px;left:auto;right:-6px;width:112px;height:112px}
.badge img{width:44px}
.dep-list li{grid-template-columns:76px minmax(0,1fr);padding:26px 0}
.dep-n{font-size:52px}
.dep-d{grid-column:1 / -1}
.dep-ic{display:none}
.org li{grid-template-columns:36px minmax(0,1fr)}
.org li span:last-child{grid-column:2}
.pole{min-height:500px}
.quote .qm{font-size:110px;opacity:.3}
}
@media (max-width:560px){
.brand small{display:none}
.steps{padding-left:44px}
.step::before{left:-40px}
.steps .rail,.steps .prog{left:5px}
.shot,.shot.lg{flex-basis:84vw}
}

/* ---------- Mouvement ---------- */
@keyframes lineUp{from{transform:translateY(112%)}to{transform:none}}
@keyframes drawX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes growY{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes clipUp{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes zoomOut{from{transform:scale(1.28)}to{transform:scale(1)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes popIn{from{opacity:0;transform:scale(.6) rotate(-40deg)}to{opacity:1;transform:none}}
@keyframes rvUp{from{opacity:0;transform:translateY(56px)}to{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes mq{to{transform:translateX(-50%)}}
@keyframes cue{from{top:-50%}to{top:100%}}
@keyframes hdrIn{from{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}
@keyframes barGrow{from{transform:scaleX(.18)}to{transform:scaleX(1)}}
@keyframes parallax{from{transform:translateY(-6%) scale(1.14)}to{transform:translateY(6%) scale(1.14)}}
@keyframes wordUp{from{transform:translateY(45%);opacity:.15}to{transform:none;opacity:1}}

@media (prefers-reduced-motion:no-preference){
.hdr-in{animation:hdrIn .9s .15s var(--ease) backwards}
.hero::before{animation:fadeIn 2.4s .2s both}
.eyebrow{animation:fadeUp .9s .15s var(--ease) both}
.eyebrow i{animation:drawX 1.1s .35s var(--ease-io) both}
.h1 .ln>span{animation:lineUp 1.15s var(--ease) both}
.h1 .ln:nth-child(1)>span{animation-delay:.25s}
.h1 .ln:nth-child(2)>span{animation-delay:.37s}
.h1 .ln:nth-child(3)>span{animation-delay:.49s}
.hero-lead{animation:fadeUp 1s .75s var(--ease) both}
.hero-ctas{animation:fadeUp 1s .9s var(--ease) both}
.dim{animation:fadeIn .8s .9s both}
.dim i{animation:drawX 1.3s 1s var(--ease-io) both}
.hero-img{animation:clipUp 1.5s .45s var(--ease-io) both}
.hero-img img{animation:zoomOut 2.4s .45s var(--ease) both}
.cartouche{animation:fadeUp .8s 1.6s var(--ease) both}
.badge{animation:popIn 1.1s 1.3s var(--ease) both}
.badge svg{animation:spin 24s linear infinite}
.hero-foot{animation:fadeIn 1s 1.3s both}
.cue i::after{animation:cue 1.9s ease-in-out infinite}
.mq-track{animation:mq 38s linear infinite}
.marquee:hover .mq-track{animation-play-state:paused}

@supports (animation-timeline: view()){
.rv{animation:rvUp linear both;animation-timeline:view();animation-range:entry 0% entry 70%;animation-range:entry calc(var(--d,0) * 6%) entry calc(70% + var(--d,0) * 6%)}
.sh i,.stat::before{animation:drawX linear both;animation-timeline:view();animation-range:entry 10% entry 90%}
.par img{animation:parallax linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
.steps .prog{animation:growY linear both;animation-timeline:view();animation-range:cover 15% cover 65%}
.gal-bar i{animation:barGrow linear both;animation-timeline:--gal}
.ft-word{animation:wordUp linear both;animation-timeline:view();animation-range:entry 0% entry 100%}
.dep-list li{animation:rvUp linear both;animation-timeline:view();animation-range:entry 0% entry 60%}
}
}
/* repli JS (navigateurs sans animations au défilement) */
html.io .rv{opacity:0;transform:translateY(56px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:calc(var(--d,0) * 90ms)}
html.io .rv.in{opacity:1;transform:none}
html.io .sh i,html.io .stat::before{transform:scaleX(0);transition:transform 1.2s var(--ease-io)}
html.io .sh i.in,html.io .stat.in::before{transform:scaleX(1)}

/* ======================================================
   Ajouts marketing : pages pôles, diaspora, devis, légal
   ====================================================== */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.nav-d a[aria-current="page"]{color:var(--mint)}
@media (max-width:1120px){.nav-d,.hdr .btn-sm{display:none}.nav-m{display:block}}

/* Bouton WhatsApp flottant */
.wa-float{position:fixed;right:18px;bottom:18px;z-index:60;display:inline-flex;align-items:center;gap:10px;min-height:56px;padding:0 20px 0 16px;border-radius:999px;background:var(--mint);color:var(--deep);font-weight:700;font-size:15px;text-decoration:none;box-shadow:0 10px 30px rgba(11,31,20,.28);transition:transform .35s var(--ease),background .3s}
.wa-float:hover{transform:translateY(-3px);background:var(--paper)}
.wa-float .dot{position:relative;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--deep);color:var(--mint)}
.wa-float .dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--deep);opacity:0}
@media (max-width:560px){.wa-float{padding:0 12px;min-height:56px}.wa-float .lbl{display:none}}

/* Sous-titre mots-clés du hero */
.hero-kw{margin:22px 0 0;font-stretch:80%;font-weight:600;font-size:clamp(19px,1.7vw,24px);line-height:1.3;color:var(--paper)}

/* Bandeau diaspora (accueil) */
.band{position:relative;isolation:isolate;overflow:hidden;background:var(--green);color:var(--paper);border-radius:28px;padding:clamp(36px,5vw,72px);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px 56px;align-items:end}
.band::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(233,236,230,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(233,236,230,.1) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(ellipse 60% 80% at 90% 10%,#000 10%,transparent 70%);mask-image:radial-gradient(ellipse 60% 80% at 90% 10%,#000 10%,transparent 70%)}
.band h2{font-size:clamp(44px,5.4vw,84px)}
.band h2 em{font-style:normal;color:var(--mint)}
.band p{margin:0 0 24px;color:#DCE7DF;font-size:18px}
.band-wrap{padding:clamp(64px,8vw,112px) 0 0}

/* En-tête de page (pages intérieures) */
.phero{position:relative;isolation:isolate;background:var(--deep);color:var(--paper);padding:clamp(132px,14vw,172px) 0 clamp(56px,7vw,96px);overflow:hidden}
.phero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:88px 88px;-webkit-mask-image:radial-gradient(ellipse 70% 70% at 80% 30%,#000 15%,transparent 72%);mask-image:radial-gradient(ellipse 70% 70% at 80% 30%,#000 15%,transparent 72%)}
.phero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:48px clamp(48px,6vw,96px);align-items:end}
.phero h1{margin:22px 0 0;font-size:clamp(54px,7.4vw,120px);line-height:1}
.phero h1 em{font-style:normal;color:var(--mint)}
.phero .lead{max-width:600px;margin:28px 0 0;font-size:clamp(17px,1.35vw,20px);color:#C9D2CB}
.phero .hero-ctas{margin-top:34px}
.phero-fig{margin:0;position:relative}
.phero-fig .ph{overflow:hidden;border-radius:18px}
.phero-fig img{width:100%;aspect-ratio:4/3;object-fit:cover}
.phero-logo{display:grid;place-items:center;aspect-ratio:4/3;border:1px solid var(--line-d);border-radius:18px}
.phero-logo img{width:40%;height:auto;aspect-ratio:auto;object-fit:contain}
.crumbs{display:flex;flex-wrap:wrap;gap:6px 10px;margin:0;padding:0;list-style:none;color:var(--muted-d)}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--mint)}
.crumbs li+li::before{content:"/";margin-right:10px;color:rgba(233,236,230,.3)}

/* Sections intérieures */
.sec{padding:clamp(64px,8vw,112px) 0}
.sec-alt{background:var(--paper-2)}
.sec-head{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:24px 64px;align-items:end;margin-bottom:48px}
.sec-head p{margin:0;color:var(--muted);max-width:520px}

/* Grille de services */
.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:16px}
.svc{position:relative;display:flex;flex-direction:column;gap:12px;padding:28px;border:1px solid var(--line);border-radius:20px;background:var(--paper);transition:transform .45s var(--ease),border-color .3s,box-shadow .45s}
.svc:hover{transform:translateY(-4px);border-color:var(--green);box-shadow:0 18px 40px rgba(15,23,18,.08)}
.svc .ic{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--deep);color:var(--mint)}
.svc h3{margin:10px 0 0;font-stretch:70%;font-weight:800;font-size:28px;line-height:1;text-transform:uppercase}
.svc p{margin:0;color:var(--muted);font-size:16px}
.svc .todo{color:var(--green);font-family:'IBM Plex Mono',monospace;font-size:12.5px}

/* Bloc à compléter (contenu attendu du client) */
.pending{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 40px;padding:32px;border:1px dashed var(--green);border-radius:20px;background:rgba(30,91,54,.05)}
.pending h3{margin:0 0 6px;font-size:22px}
.pending p{margin:0;color:var(--muted)}

/* FAQ */
.faq{border-top:1px solid var(--ink)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 0;font-weight:700;font-size:clamp(18px,1.5vw,21px)}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pm{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--ink);transition:transform .45s var(--ease),background .3s,color .3s}
.faq details[open] summary .pm{transform:rotate(45deg);background:var(--ink);color:var(--paper)}
.faq details p{margin:0 0 26px;max-width:760px;color:var(--muted)}

/* Étapes horizontales (diaspora) */
.hsteps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:16px;list-style:none;margin:0;padding:0;counter-reset:hs}
.hsteps li{position:relative;padding:28px;border-radius:20px;background:var(--deep);color:var(--paper);counter-increment:hs;min-height:260px;display:flex;flex-direction:column;gap:12px}
.hsteps li::before{content:counter(hs,decimal-leading-zero);font-stretch:62%;font-weight:800;font-size:72px;line-height:.9;color:transparent;-webkit-text-stroke:1px var(--mint)}
.hsteps h3{margin:auto 0 0;font-stretch:70%;font-weight:800;font-size:26px;line-height:1;text-transform:uppercase}
.hsteps p{margin:0;color:var(--muted-d);font-size:15.5px}

/* Arguments en liste */
.checks{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.checks li{display:grid;grid-template-columns:28px 1fr;gap:12px;font-size:17px}
.checks li svg{margin-top:4px;color:var(--green)}
.dark .checks li svg{color:var(--mint)}

/* Formulaire de devis */
.form-wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:48px clamp(48px,6vw,96px)}
.form-side{position:sticky;top:120px;align-self:start}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 20px}
.form .full{grid-column:1 / -1}
.fld{display:flex;flex-direction:column;gap:8px}
.fld label,.fld legend{font-weight:600;font-size:15px}
.fld .opt{font-weight:400;color:var(--muted)}
.fld input,.fld select,.fld textarea{width:100%;min-height:54px;padding:14px 16px;border:1px solid #B9B7AF;border-radius:12px;background:#fff;color:var(--ink);font:inherit;font-size:16px;transition:border-color .2s,box-shadow .2s}
.fld textarea{min-height:150px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 4px rgba(30,91,54,.15)}
.fld fieldset{border:0;margin:0;padding:0}
.radios{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.radios label{position:relative;display:inline-flex;align-items:center;min-height:48px;padding:0 18px;border:1px solid #B9B7AF;border-radius:999px;background:#fff;font-weight:500;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.radios input{position:absolute;opacity:0;width:1px;height:1px}
.radios label:has(input:checked){background:var(--deep);border-color:var(--deep);color:var(--mint)}
.radios label:has(input:focus-visible){outline:2px solid var(--green);outline-offset:3px}
.consent{display:grid;grid-template-columns:24px 1fr;gap:12px;align-items:start;font-size:15px;color:var(--muted)}
.consent input{width:20px;height:20px;margin-top:2px;accent-color:var(--green)}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.alert{display:none;padding:16px 20px;border-radius:12px;background:#FBE9E7;color:#7A1F12;font-weight:500}
.alert:target{display:block}
.form button{border:0;cursor:pointer;font:inherit}

/* Contenu légal */
.prose{max-width:780px}
.prose h2{margin:48px 0 12px;font-stretch:70%;font-weight:800;font-size:30px;line-height:1.05;text-transform:uppercase}
.prose p,.prose li{color:#2C342F}
.prose ul{padding-left:20px}
.prose a{color:var(--green)}
.prose .ph{background:rgba(30,91,54,.1);padding:1px 6px;border-radius:4px;font-family:'IBM Plex Mono',monospace;font-size:.9em}

/* Pied de page enrichi */
.ft-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:32px;margin-top:56px;padding-top:40px;border-top:1px solid var(--line-d)}
.ft-cols h3{margin:0 0 16px;color:var(--muted-d)}
.ft-cols ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ft-cols a{text-decoration:none;color:#DCE4DE;transition:color .25s}
.ft-cols a:hover{color:var(--mint)}
.socials{display:flex;flex-wrap:wrap;gap:10px}
.socials a{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:1px solid var(--line-d);color:var(--paper);transition:background .3s,color .3s,border-color .3s}
.socials a:hover{background:var(--mint);border-color:var(--mint);color:var(--deep)}

/* Page merci */
.thanks{min-height:clamp(520px,72vh,760px);display:flex;align-items:center}

@media (max-width:960px){
.phero-grid,.sec-head,.band,.form-wrap{grid-template-columns:minmax(0,1fr)}
.form-side{position:static}
.phero-fig{max-width:560px}
}
@media (max-width:640px){
.form{grid-template-columns:minmax(0,1fr)}
}
@media (prefers-reduced-motion:no-preference){
.wa-float{animation:fadeUp .8s 1.8s var(--ease) both}
.wa-float .dot::after{animation:waPulse 2.6s 3s ease-out infinite}
.phero .eyebrow,.phero .crumbs{animation:fadeUp .9s .15s var(--ease) both}
.phero h1{animation:fadeUp 1s .3s var(--ease) both}
.phero .lead{animation:fadeUp 1s .5s var(--ease) both}
.phero .hero-ctas{animation:fadeUp 1s .65s var(--ease) both}
.phero-fig{animation:fadeIn 1.2s .5s both}
.phero-fig .ph{animation:clipUp 1.4s .45s var(--ease-io) both}
}
@keyframes waPulse{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(1.7)}}
.socials a{width:auto;height:44px;padding:0 16px;border-radius:999px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center}
.ft-legal a{text-decoration:none;color:inherit}
.ft-legal a:hover{color:var(--mint)}

/* ======================================================
   Correctifs issus de l'audit UX / accessibilité
   ====================================================== */
/* Lien d'évitement */
.skip{position:fixed;left:16px;top:-80px;z-index:100;padding:14px 20px;border-radius:12px;background:var(--mint);color:var(--deep);font-weight:700;text-decoration:none;transition:top .2s}
.skip:focus{top:16px}
.hdr .skip:focus-visible{outline:3px solid var(--deep);outline-offset:2px}

/* Focus clavier bien visible : vert sur fond clair, menthe sur fond sombre */
:focus-visible{outline:3px solid var(--green);outline-offset:3px;border-radius:4px}
.hdr :focus-visible,.hero :focus-visible,.phero :focus-visible,.deps :focus-visible,.cta :focus-visible,.ft :focus-visible,.band :focus-visible,.marquee :focus-visible,.hsteps :focus-visible,.nm-panel :focus-visible{outline-color:var(--mint)}
.btn:focus-visible,.btn-sm:focus-visible,.wa-float:focus-visible,.nav-m summary:focus-visible{border-radius:999px}
.fld input:focus-visible,.fld select:focus-visible,.fld textarea:focus-visible{outline:3px solid var(--green);outline-offset:1px;border-color:var(--green)}
.radios label:has(input:focus-visible){outline:3px solid var(--green);outline-offset:3px}
.gal:focus-visible{outline-offset:-3px}
/* l'élément qui prend le focus n'est jamais caché sous l'en-tête fixe ni sous le bouton WhatsApp */
a,button,summary,input,select,textarea,[tabindex]{scroll-margin-top:110px;scroll-margin-bottom:96px}

/* Cibles tactiles d'au moins 24 px (WCAG 2.2) */
.ft-cols ul{gap:4px}
.ft-cols a{display:inline-block;padding:6px 0}
.ft-legal a{display:inline-block;padding:6px 0}
.crumbs a{display:inline-block;padding:5px 0}
.info a.sub{display:inline-block;padding:4px 0}
.consent input{width:24px;height:24px;margin-top:0}
.prose a{padding:2px 0}

/* Titres du pied de page (h2) */
.ft-cols h2{margin:0 0 12px;color:var(--muted-d)}
.skip{pointer-events:auto}

/* Bouton WhatsApp : apparaît après le premier écran, libellé visible sur mobile */
@media (max-width:560px){.wa-float{right:12px;bottom:12px;min-height:52px;padding:0 16px 0 10px}.wa-float .lbl{display:inline}}
@supports (animation-timeline: scroll()){
@media (prefers-reduced-motion:no-preference){
.wa-float{animation:waShow linear both;animation-timeline:scroll(root);animation-range:0 360px}
}
@media (prefers-reduced-motion:reduce){
.wa-float{animation:waShowStep linear both;animation-timeline:scroll(root);animation-range:0 360px}
}
}
@keyframes waShow{0%{opacity:0;transform:translateY(24px);visibility:hidden}60%{opacity:0;transform:translateY(24px)}100%{opacity:1;transform:none;visibility:visible}}
@keyframes waShowStep{0%{visibility:hidden;opacity:0}99%{visibility:hidden;opacity:0}100%{visibility:visible;opacity:1}}

/* Pied de page : place pour le bouton flottant sur mobile */
@media (max-width:560px){.ft-legal{padding-bottom:84px}}

/* Accueil mobile : bouton principal visible dès le premier écran */
@media (max-width:560px){
.hero{padding-top:112px}
.h1{font-size:clamp(54px,17vw,72px)}
.hero-kw{font-size:18px;margin-top:16px}
.hero-lead{display:none}
.hero-ctas{margin-top:24px}
.eyebrow{font-size:11px}
}

/* Pages intérieures : le titre ne part plus de l'opacité 0 (mesure LCP fiable) */
@media (prefers-reduced-motion:no-preference){
.phero h1{animation:riseIn 1s .2s var(--ease) both}
.hero-img{animation-duration:1.1s;animation-delay:.2s}
.hero-img img{animation-delay:.2s}
}
@keyframes riseIn{from{transform:translateY(28px)}to{transform:none}}

/* Formulaire : erreurs en ligne et état d'envoi */
.fld .err{display:none;margin:0;color:#9B2C1A;font-size:14.5px;font-weight:500}
.fld.invalid .err{display:block}
.fld.invalid input,.fld.invalid textarea,.fld.invalid select{border-color:#B3261E;box-shadow:0 0 0 3px rgba(179,38,30,.12)}
.consent.invalid{color:#9B2C1A}
.form-status{grid-column:1 / -1;margin:0;padding:14px 18px;border-radius:12px;background:#FBE9E7;color:#7A1F12;font-weight:500}
.form-status:empty{display:none}
.form button[aria-busy="true"]{opacity:.7;cursor:progress}

/* ======================================================
   Menu mobile plein écran
   ====================================================== */
.nav-m{display:none}
@media (max-width:1120px){.nav-m{display:block}}
.brand{position:relative;z-index:3}
.nav-m summary{list-style:none;position:relative;z-index:3;display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 6px 0 18px;border-radius:999px;background:var(--mint);color:var(--deep);font-weight:700;font-size:13px;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background .35s,color .35s}
.nav-m summary::-webkit-details-marker{display:none}
.nav-m summary:hover{background:var(--paper)}
.nm-lbl{display:grid;overflow:hidden;height:1.3em;line-height:1.3em;letter-spacing:.12em}
.nm-lbl span{grid-area:1/1;transition:transform .5s var(--ease),opacity .35s,visibility .5s}
.nm-lbl .o{transform:translateY(110%);opacity:0;visibility:hidden}
.burger{position:relative;display:block;width:36px;height:36px;border-radius:50%;background:var(--deep)}
.burger i{position:absolute;left:11px;width:14px;height:2px;border-radius:2px;background:var(--mint);transition:transform .5s var(--ease),opacity .3s,top .5s var(--ease),width .5s var(--ease)}
.burger i:nth-child(1){top:12px}
.burger i:nth-child(2){top:17px}
.burger i:nth-child(3){top:22px;width:9px}
.nav-m[open]:not(.closing) .nm-lbl .c{transform:translateY(-110%);opacity:0;visibility:hidden}
.nav-m[open]:not(.closing) .nm-lbl .o{transform:none;opacity:1;visibility:visible}
.nav-m[open]:not(.closing) .burger i:nth-child(1){top:17px;transform:rotate(45deg)}
.nav-m[open]:not(.closing) .burger i:nth-child(2){opacity:0;transform:scaleX(0)}
.nav-m[open]:not(.closing) .burger i:nth-child(3){top:17px;width:14px;transform:rotate(-45deg)}

/* L'en-tête s'efface derrière le panneau (et cesse de contenir l'élément fixe) */
html:has(.nav-m[open]){overflow:hidden}
.hdr-in:has(.nav-m[open]){-webkit-backdrop-filter:none;backdrop-filter:none;background:transparent;border-color:transparent;transition:none}

.nm-panel{position:fixed;inset:0;z-index:2;background:var(--deep);color:var(--paper);overflow-y:auto;overscroll-behavior:contain;pointer-events:auto;isolation:isolate}
.nm-panel::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(ellipse 90% 60% at 100% 0%,#000 10%,transparent 70%);mask-image:radial-gradient(ellipse 90% 60% at 100% 0%,#000 10%,transparent 70%)}
.nm-inner{min-height:100%;max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:26px;padding:108px var(--pad) calc(28px + env(safe-area-inset-bottom))}
.nm-eyebrow{display:flex;align-items:center;gap:14px;margin:0;color:var(--muted-d)}
.nm-eyebrow span:first-child{color:var(--mint)}
.nm-eyebrow i{display:block;flex:1;height:1px;background:var(--line-d);transform-origin:left}
.nm-list{list-style:none;margin:0;padding:0}
.nm-list li{position:relative;overflow:hidden}
.nm-list li::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line-d);transform-origin:left}
.nm-list a{display:grid;grid-template-columns:40px minmax(0,1fr) 28px;align-items:center;column-gap:10px;padding:15px 0 14px;color:var(--paper);text-decoration:none}
.nm-n{grid-row:1/span 2;align-self:start;padding-top:.7em;color:var(--muted-d);font-size:11.5px}
.nm-t{font-stretch:64%;font-weight:800;font-size:clamp(34px,9.4vw,58px);line-height:.98;letter-spacing:-.005em;text-transform:uppercase;transition:transform .5s var(--ease),color .3s}
.nm-s{grid-column:2;margin-top:5px;font-size:14px;color:var(--muted-d);transition:color .3s}
.nm-arr{grid-column:3;grid-row:1/span 2;color:var(--mint);opacity:0;transform:translateX(-12px);transition:opacity .35s,transform .5s var(--ease)}
.nm-list a:hover .nm-t,.nm-list a:focus-visible .nm-t{transform:translateX(10px);color:var(--mint)}
.nm-list a:hover .nm-s,.nm-list a:focus-visible .nm-s{color:#DCE4DE}
.nm-list a:hover .nm-arr,.nm-list a:focus-visible .nm-arr{opacity:1;transform:none}
.nm-list a:focus-visible{outline-offset:-3px}
.nm-foot{margin-top:auto;display:flex;flex-direction:column;gap:12px;padding-top:8px}
.nm-cta{width:100%;justify-content:space-between}
.nm-quick{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nm-quick .btn{justify-content:center;padding:0 16px}
.nm-info{margin:10px 0 0;color:var(--muted-d);line-height:1.9;font-size:11px}
@media (min-width:700px){.nm-inner{padding-top:130px}.nm-list a{grid-template-columns:56px minmax(0,1fr) 32px}}
@media (max-height:640px){.nm-t{font-size:30px}.nm-list a{padding:10px 0}}

/* Animations d'ouverture / de fermeture */
@media (prefers-reduced-motion:no-preference){
.nav-m[open] .nm-panel{animation:nmOpen .75s var(--ease-io) both}
.nav-m[open] .nm-panel::before{animation:fadeIn 1.4s .35s both}
.nav-m[open] .nm-eyebrow{animation:fadeUp .6s .3s var(--ease) both}
.nav-m[open] .nm-eyebrow i{animation:drawX .9s .35s var(--ease-io) both}
.nav-m[open] .nm-list a{animation:nmRise .8s var(--ease) both}
.nav-m[open] .nm-list li::after{animation:drawX .9s var(--ease-io) both}
.nav-m[open] .nm-list li:nth-child(1) a,.nav-m[open] .nm-list li:nth-child(1)::after{animation-delay:.30s}
.nav-m[open] .nm-list li:nth-child(2) a,.nav-m[open] .nm-list li:nth-child(2)::after{animation-delay:.36s}
.nav-m[open] .nm-list li:nth-child(3) a,.nav-m[open] .nm-list li:nth-child(3)::after{animation-delay:.42s}
.nav-m[open] .nm-list li:nth-child(4) a,.nav-m[open] .nm-list li:nth-child(4)::after{animation-delay:.48s}
.nav-m[open] .nm-list li:nth-child(5) a,.nav-m[open] .nm-list li:nth-child(5)::after{animation-delay:.54s}
.nav-m[open] .nm-list li:nth-child(6) a,.nav-m[open] .nm-list li:nth-child(6)::after{animation-delay:.60s}
.nav-m[open] .nm-foot{animation:fadeUp .8s .66s var(--ease) both}
/* fermeture (classe ajoutée par main.js) */
.nav-m.closing .nm-panel{animation:nmClose .55s var(--ease-io) both}
.nav-m.closing .nm-list a,.nav-m.closing .nm-foot,.nav-m.closing .nm-eyebrow{animation:nmFade .22s both}
}
@media (prefers-reduced-motion:reduce){
.nav-m[open] .nm-panel{animation:fadeIn .2s both}
.nav-m.closing .nm-panel{animation:nmFade .15s both}
}
@keyframes nmOpen{from{clip-path:circle(0 at calc(100% - var(--pad) - 32px) 46px)}to{clip-path:circle(150% at calc(100% - var(--pad) - 32px) 46px)}}
@keyframes nmClose{from{clip-path:circle(150% at calc(100% - var(--pad) - 32px) 46px)}to{clip-path:circle(0 at calc(100% - var(--pad) - 32px) 46px)}}
@keyframes nmRise{from{transform:translateY(105%)}to{transform:none}}
@keyframes nmFade{to{opacity:0}}

/* ---------- Annonces immobilières ---------- */
.ann-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin:0 0 28px}
.ann-filters{display:flex;flex-wrap:wrap;gap:8px}
.ann-f{font:inherit;font-size:15px;font-weight:600;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;transition:background .25s,color .25s}
.ann-f span{font-family:'IBM Plex Mono',monospace;font-size:12px;opacity:.7;margin-left:4px}
.ann-f[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.ann-f:hover{background:var(--green);border-color:var(--green);color:var(--paper)}
.ann-count{margin:0;color:var(--muted);font-size:13px}
.ann-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:24px;list-style:none;margin:0;padding:0}
.ann[hidden]{display:none}
.ann-link{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:20px;background:var(--paper);overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .3s}
.ann-link:hover{transform:translateY(-4px);border-color:var(--green);box-shadow:0 18px 40px -24px rgba(11,31,20,.45)}
.ann-ph{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2)}
.ann-ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.ann-link:hover .ann-ph img{transform:scale(1.04)}
.ann-noph{display:grid;place-items:center;width:100%;height:100%;color:var(--green);background:repeating-linear-gradient(135deg,var(--paper-2) 0 12px,#E1DED6 12px 13px)}
.ann-noph.big{aspect-ratio:4/3;border-radius:20px;gap:10px;align-content:center;font-family:'IBM Plex Mono',monospace;font-size:13px}
.ann-badge,.ann-etat,.ann-nb{position:absolute;padding:7px 12px;border-radius:999px;font-size:12px;line-height:1}
.ann-badge{top:14px;left:14px;background:var(--mint);color:var(--deep)}
.ann-etat{top:14px;right:14px;background:var(--deep);color:var(--paper)}
.ann-nb{bottom:14px;right:14px;background:rgba(11,31,20,.72);color:var(--paper)}
.ann.is-off .ann-ph img{filter:grayscale(1);opacity:.75}
.ann-body{display:flex;flex-direction:column;gap:10px;padding:22px 24px 24px;flex:1}
.ann-meta{margin:0;color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.04em}
.ann-body h3{margin:0;font-stretch:72%;font-weight:800;font-size:26px;line-height:1.02;text-transform:uppercase}
.ann-specs{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;list-style:none;color:var(--muted);font-size:15px}
.ann-specs li+li::before{content:"·";margin-right:14px;color:var(--line)}
.ann-price{margin:auto 0 0;padding-top:8px;font-weight:700;font-size:22px;color:var(--green)}
.ann-price small{font-size:15px;font-weight:500;color:var(--muted)}
.ann-more{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:15px}
.ann-more .arr{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--ink);color:var(--paper);transition:transform .35s var(--ease)}
.ann-link:hover .ann-more .arr{transform:translateX(4px)}
.ann-after{margin-top:clamp(40px,5vw,64px)}
/* page d'une annonce */
.ann-h1{font-size:clamp(40px,5.6vw,88px)!important}
.ann-detail{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:start}
.ann-gal{min-width:0}
.ann-track{display:flex;gap:12px;margin:0;padding:0;list-style:none;overflow-x:auto;scroll-snap-type:x mandatory;border-radius:20px;scrollbar-width:thin}
.ann-track li{flex:0 0 100%;scroll-snap-align:start}
.ann-track img{width:100%;aspect-ratio:4/3;height:auto;object-fit:cover;border-radius:20px;display:block}
.ann-track:focus-visible{outline:3px solid var(--green);outline-offset:4px}
.ann-hint{margin:12px 0 0;color:var(--muted);font-size:12.5px}
.ann-side{position:sticky;top:110px;display:flex;flex-direction:column;gap:20px;padding:28px;border:1px solid var(--line);border-radius:20px;background:var(--paper)}
.ann-price.big{margin:0;padding:0;font-size:clamp(26px,2.6vw,34px)}
.ann-off{margin:0;padding:14px 16px;border-radius:12px;background:var(--paper-2);color:var(--ink);font-size:15px}
.ann-dl{margin:0;display:grid}
.ann-dl div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15.5px}
.ann-dl dt{color:var(--muted)}
.ann-dl dd{margin:0;font-weight:600;text-align:right}
.ann-ctas{display:flex;flex-direction:column;gap:10px}
.ann-ctas .btn{justify-content:space-between}
.ann-ctas .btn.plain{justify-content:center;padding:0 20px}
.ann-note{margin:0;color:var(--muted);font-size:14px}
.ann-desc{grid-column:1;max-width:760px}
.ann-desc h2{margin:0 0 14px;font-size:13px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ann-desc p{margin:0 0 14px;font-size:17px;line-height:1.6}
.ann-back{grid-column:1/-1;margin:8px 0 0}
.ann-back a{color:var(--green);font-weight:600;text-decoration:none}
.ann-back a:hover{text-decoration:underline}
@media (max-width:960px){
.ann-detail{grid-template-columns:1fr}
.ann-side{position:static}
.ann-desc{grid-column:auto}
}
.ann-gal{position:relative}
.ann-nav{position:absolute;left:0;right:0;top:0;aspect-ratio:4/3;display:flex;justify-content:space-between;align-items:center;padding:0 14px;pointer-events:none}
.ann-nav button{pointer-events:auto;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:0;background:rgba(243,242,238,.92);color:var(--ink);cursor:pointer;box-shadow:0 6px 18px -8px rgba(11,31,20,.5);transition:background .25s,color .25s}
.ann-nav button:hover{background:var(--ink);color:var(--paper)}
.ft-cols .socials{gap:8px}
.ft-cols .socials a{display:inline-flex;align-items:center;height:40px;padding:0 16px;border:1px solid var(--line-d);border-radius:999px;color:#DCE4DE}
.ft-cols .socials a:hover{background:var(--mint);border-color:var(--mint);color:var(--deep)}

/* ajouts version en ligne */
.hdr-in.scrolled{background:rgba(11,31,20,.9)}
