*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--pap);color:var(--enc);font-size:17px;line-height:1.55;
 font-family:'Inter','Helvetica Neue',Arial,sans-serif;overflow-x:hidden;
 -webkit-font-smoothing:antialiased}
a{color:inherit}
img,svg{max-width:100%;height:auto}
h1,h2,h3{margin:0;font-family:'Archivo',Impact,'Haettenschweiler',sans-serif;font-weight:800;
 text-transform:uppercase;letter-spacing:-.028em;line-height:.9}
h1{font-size:clamp(3.2rem,11.5vw,10rem)}
h2{font-size:clamp(2rem,6vw,4.6rem)}
h3{font-size:1.02rem;letter-spacing:.01em;text-transform:none;line-height:1.25}
p{margin:0 0 1rem}

/* ---------- la grille se voit : la page est tenue par des filets */
.g{max-width:1400px;margin-inline:auto;border-inline:1px solid var(--fil)}
.bande{border-bottom:1px solid var(--fil)}
.pad{padding:clamp(1.4rem,3.2vw,2.6rem)}
.num{font-family:'Archivo',sans-serif;font-weight:800;font-size:.78rem;letter-spacing:.18em;
 display:block;margin-bottom:1.1rem}
.num i{font-style:normal;color:var(--acc)}

/* ---------- en-tête : un bandeau plat, aucune transparence */
header{position:sticky;top:0;z-index:70;background:var(--pap);border-bottom:1px solid var(--fil)}
header .in{display:flex;align-items:stretch}
header .mq{flex:1;display:flex;align-items:center;padding:0 clamp(1rem,2.4vw,2rem);
 font-family:'Archivo',sans-serif;font-weight:800;text-transform:uppercase;font-size:1.05rem;
 letter-spacing:-.01em;text-decoration:none;border-right:1px solid var(--fil)}
header nav{display:flex}
header nav a{display:flex;align-items:center;padding:1.15rem clamp(.8rem,1.6vw,1.4rem);
 text-decoration:none;font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;
 font-weight:700;border-right:1px solid var(--fil)}
header nav a:hover{background:var(--enc);color:var(--pap)}
header .app{display:flex;align-items:center;padding:0 clamp(1rem,2vw,1.6rem);background:var(--acc);
 color:#fff;text-decoration:none;font-weight:800;white-space:nowrap;font-size:.98rem}
@media(max-width:900px){header nav{display:none}}

/* ---------- ouverture : le titre occupe l'écran, rien d'autre */
.ouv{padding:clamp(2rem,5vw,4.4rem) clamp(1.4rem,3.2vw,2.6rem) clamp(1.6rem,3vw,2.4rem)}
.ouv h1 span{display:block;overflow:hidden}
.ouv h1 span i{display:block;font-style:normal;transform:translateY(105%);
 animation:monte .9s cubic-bezier(.16,.84,.3,1) forwards}
.ouv h1 span:nth-child(2) i{animation-delay:.09s}
.ouv h1 span:nth-child(3) i{animation-delay:.18s}
.ouv h1 .acc{color:var(--acc)}
@keyframes monte{to{transform:none}}
.sous{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(1.2rem,3vw,3rem);
 margin-top:clamp(1.6rem,3vw,2.6rem);align-items:end}
@media(max-width:820px){.sous{grid-template-columns:1fr}}
.sous p{font-size:clamp(1.02rem,1.5vw,1.22rem);max-width:58ch;margin:0}
.actions{display:flex;flex-wrap:wrap;gap:0}
.bt{display:inline-flex;align-items:center;gap:.6rem;padding:1rem 1.7rem;text-decoration:none;
 font-weight:800;font-size:.95rem;text-transform:uppercase;letter-spacing:.06em;
 background:var(--enc);color:var(--pap);border:1px solid var(--enc)}
.bt:hover{background:var(--acc);border-color:var(--acc);color:#fff}
.bt.b2{background:transparent;color:var(--enc);border-left:0}
.bt.b2:hover{background:var(--enc);color:var(--pap)}

/* ---------- bandeau typographique */
.def{border-block:1px solid var(--fil);overflow:hidden;padding:.7rem 0;background:var(--enc);
 color:var(--pap)}
.def ul{display:flex;gap:2.6rem;margin:0;padding:0;list-style:none;width:max-content;
 animation:file 34s linear infinite;font-family:'Archivo',sans-serif;font-weight:800;
 text-transform:uppercase;font-size:1.15rem;letter-spacing:-.01em}
.def li::after{content:" ／";color:var(--acc)}
@keyframes file{to{transform:translateX(-50%)}}

/* ---------- rubriques : titre collé à gauche, contenu qui défile à droite */
.rub{display:grid;grid-template-columns:minmax(230px,26%) 1fr}
@media(max-width:900px){.rub{grid-template-columns:1fr}}
.rub .tit{border-right:1px solid var(--fil);padding:clamp(1.4rem,3vw,2.4rem)}
@media(min-width:901px){.rub .tit{position:sticky;top:57px;align-self:start;height:max-content}}
.rub .cnt{min-width:0}

/* ---------- lignes de prestations : inversion au survol, aucune carte */
.lig{display:grid;grid-template-columns:4.2rem 1fr;border-bottom:1px solid var(--fil);
 transition:background .18s,color .18s}
.lig:hover{background:var(--enc);color:var(--pap)}
.lig:hover .ic{color:var(--acc)}
.lig:hover .det{color:var(--pap);opacity:.72}
.lig .ix{padding:1.3rem 0 1.3rem 1.2rem;font-family:'Archivo',sans-serif;font-weight:800;
 font-size:.82rem;color:var(--acc)}
.lig .co{padding:1.3rem 1.4rem 1.5rem 0}
.lig h3{font-family:'Archivo',sans-serif;text-transform:uppercase;font-size:clamp(1.1rem,2.1vw,1.7rem);
 letter-spacing:-.02em;margin-bottom:.35rem}
.lig .det{color:var(--gris);font-size:.96rem;max-width:70ch}
.lig ul{margin:.7rem 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.35rem .9rem;
 font-size:.86rem;color:var(--gris)}
.lig li::before{content:"— "}
.lig .ic{display:block;width:30px;height:30px;color:var(--enc);margin-bottom:.7rem}
.lig .ic svg{display:block;width:100%;height:100%}
.pad svg{display:block;width:100%;height:auto;max-height:420px}

/* ---------- étapes en colonnes séparées par des filets */
.et{display:grid;grid-template-columns:repeat(3,1fr)}
@media(max-width:820px){.et{grid-template-columns:1fr}}
.et > div{padding:clamp(1.3rem,2.6vw,2rem);border-right:1px solid var(--fil)}
.et > div:last-child{border-right:0}
.et b{font-family:'Archivo',sans-serif;font-size:2.6rem;color:var(--acc);display:block;
 line-height:1;margin-bottom:.7rem}
.et h3{font-family:'Archivo',sans-serif;text-transform:uppercase;font-size:1.12rem;margin-bottom:.4rem}
.et p{color:var(--gris);font-size:.95rem;margin:0}

/* ---------- secteur : un tableau, pas des pastilles */
table{width:100%;border-collapse:collapse;font-size:.98rem}
th,td{text-align:left;padding:.85rem 1.2rem;border-bottom:1px solid var(--fil)}
th{font-family:'Archivo',sans-serif;text-transform:uppercase;font-size:.74rem;letter-spacing:.14em;
 color:var(--gris);font-weight:800}
td a{text-decoration:none;font-weight:700}
tr:hover td{background:var(--enc);color:var(--pap)}
tr:hover td a{color:var(--pap)}
td.km{font-variant-numeric:tabular-nums;color:var(--gris);width:7rem}
tr:hover td.km{color:var(--pap);opacity:.7}

/* ---------- questions */
details{border-bottom:1px solid var(--fil)}
summary{cursor:pointer;list-style:none;padding:1.15rem 1.3rem;font-weight:700;display:flex;
 justify-content:space-between;gap:1rem}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-family:'Archivo',sans-serif;color:var(--acc);font-size:1.3rem}
details[open] summary::after{content:"–"}
details p{padding:0 1.3rem 1.3rem;color:var(--gris);margin:0;max-width:78ch}

/* ---------- demande : deux colonnes, champs carrés, filets */
.dem{display:grid;grid-template-columns:1fr 1fr}
@media(max-width:820px){.dem{grid-template-columns:1fr}}
.dem .gauche{padding:clamp(1.4rem,3vw,2.6rem);border-right:1px solid var(--fil)}
.dem form{display:grid}
.dem label{display:grid;border-bottom:1px solid var(--fil);padding:.85rem 1.2rem;
 font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--gris)}
.dem input,.dem textarea{font:inherit;font-size:1rem;border:0;background:transparent;
 padding:.35rem 0 0;color:var(--enc);width:100%}
.dem input:focus,.dem textarea:focus{outline:0}
.dem label:focus-within{background:#fff}
.dem textarea{min-height:96px;resize:vertical}
.dem .duo{display:grid;grid-template-columns:1fr 1fr}
.dem .duo label:first-child{border-right:1px solid var(--fil)}
.dem button{font:inherit;cursor:pointer;padding:1.15rem;background:var(--acc);color:#fff;border:0;
 font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.dem button:hover{background:var(--enc)}
.miel{position:absolute;left:-9999px}
.merci{display:none;padding:1.2rem;background:var(--acc);color:#fff;font-weight:800}

/* ---------- pied */
footer{border-top:1px solid var(--fil);font-size:.88rem;color:var(--gris)}
footer .cols{display:grid;grid-template-columns:1.3fr 1fr 1fr}
@media(max-width:760px){footer .cols{grid-template-columns:1fr}}
footer .cols > div{padding:clamp(1.2rem,2.4vw,2rem);border-right:1px solid var(--fil)}
footer .cols > div:last-child{border-right:0}
footer b{color:var(--enc);display:block;font-family:'Archivo',sans-serif;text-transform:uppercase;
 font-size:.76rem;letter-spacing:.14em;margin-bottom:.7rem}
footer a{text-decoration:none;display:block;padding:.16rem 0}
footer a:hover{color:var(--acc)}
.bas{padding:1rem clamp(1.2rem,2.4vw,2rem);border-top:1px solid var(--fil);font-size:.8rem}

/* ---------- effets : décalage au défilement, révélation par masque */
.dec{will-change:transform}
html.js .rev{opacity:.06;transform:translateY(16px);
 transition:opacity .7s cubic-bezier(.16,.84,.3,1),transform .7s cubic-bezier(.16,.84,.3,1)}
html.js .rev.vu{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
 html.js .rev{opacity:1;transform:none;transition:none}
 .ouv h1 span i{transform:none;animation:none}
 .def ul{animation:none}
 .dec{transform:none!important}}

/* Galerie de chantiers — une scène, une photo à la fois, fondu lent et léger mouvement
   (site.js). Les photos sont celles de l'artisan, jamais générées. En dessous, la bande de
   vignettes ; au clic sur la scène, la visionneuse plein écran. */
.galerie .scene-g{position:relative;margin-top:2.8rem;aspect-ratio:16/10;overflow:hidden;
 background:rgba(127,127,127,.12);cursor:zoom-in}
.galerie .vue{position:absolute;inset:0;margin:0;opacity:0;transform:scale(1.06);z-index:0;
 transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 2s cubic-bezier(.2,.7,.2,1)}
.galerie .vue.est{opacity:1;transform:none;z-index:1}
.galerie .vue img{display:block;width:100%;height:100%;object-fit:cover;transform-origin:52% 48%}
.galerie .vue.est img{animation:galerie-derive 9s cubic-bezier(.2,.5,.3,1) forwards}
@keyframes galerie-derive{from{transform:scale(1)}to{transform:scale(1.045)}}
.galerie .vue figcaption{position:absolute;left:0;right:0;bottom:0;padding:5rem clamp(1.2rem,3vw,2.6rem) clamp(1.2rem,2.6vw,2rem);
 color:#fff;background:linear-gradient(to top,rgba(0,0,0,.66),rgba(0,0,0,0));display:flex;align-items:baseline;gap:1.2rem;
 opacity:0;transform:translateY(16px);transition:opacity .8s .35s,transform .9s .35s cubic-bezier(.2,.7,.2,1)}
.galerie .vue.est figcaption{opacity:1;transform:none}
.galerie .vue figcaption i{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:clamp(2rem,4vw,3.2rem);line-height:1;opacity:.85}
.galerie .vue figcaption span{font-size:clamp(.92rem,1.4vw,1.15rem);letter-spacing:.06em;text-transform:uppercase}
.galerie .cmd{position:absolute;top:0;right:0;z-index:2;display:flex;align-items:center;gap:.2rem;
 padding:.9rem 1rem;color:#fff}
.galerie .cmd button,.galerie .vig{margin:0;padding:0;box-sizing:border-box;min-width:0;min-height:0;border-radius:0;box-shadow:none}
.galerie .cmd button{background:rgba(0,0,0,.28);border-radius:50%;backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.35);color:#fff;
 width:2.6rem;height:2.6rem;border-radius:50%;cursor:pointer;font-size:1.1rem;line-height:1;font-family:inherit;
 transition:background .3s,border-color .3s}
.galerie .cmd button:hover{background:rgba(0,0,0,.55);border-color:#fff}
.galerie .cmd .compte{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.25rem;letter-spacing:.06em;margin:0 .9rem;
 text-shadow:0 1px 6px rgba(0,0,0,.5)}
.galerie .cmd .compte b{font-weight:400;font-size:1.6rem}
.galerie .fil{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.22);z-index:2}
.galerie .fil i{display:block;height:100%;width:0;background:#fff;opacity:.9}
.galerie .fil.va i{transition:width var(--tempo,6s) linear;width:100%}
.galerie .bande{display:grid;grid-template-columns:repeat(var(--n,12),1fr);gap:.45rem;margin-top:.55rem}
.galerie .vig{padding:0;border:0;background:none;cursor:pointer;aspect-ratio:4/3;overflow:hidden;position:relative;
 opacity:.5;transition:opacity .5s;filter:saturate(.85)}
.galerie .vig img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.galerie .vig::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:currentColor;
 transform:scaleX(0);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.galerie .vig:hover{opacity:.85;background:none;border-color:transparent}
.galerie .vig.est{opacity:1;filter:none}
.galerie .vig.est::after{transform:none}
.galerie .vig.est img{transform:scale(1.06)}
@media(max-width:760px){
 .galerie .scene-g{aspect-ratio:4/3;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
 .galerie .vue figcaption{padding:3.4rem 1rem 1rem;gap:.8rem}
 .galerie .cmd{padding:.6rem .7rem}.galerie .cmd .compte{margin:0 .5rem}
 .galerie .bande{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:.4rem;padding-bottom:.3rem;
  margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-left:1rem;padding-right:1rem;scrollbar-width:none}
 .galerie .bande::-webkit-scrollbar{display:none}
 .galerie .vig{flex:0 0 22vw;scroll-snap-align:center}}
@media(prefers-reduced-motion:reduce){
 .galerie .vue,.galerie .vue figcaption,.galerie .fil i,.galerie .vig img{transition:none}
 .galerie .vue.est img{animation:none}}
/* Visionneuse */
.vision{border:0;padding:0;background:transparent;max-width:none;max-height:none;width:100vw;height:100vh;
 inset:0;margin:0}
.vision::backdrop{background:rgba(12,12,12,.94)}
.vision .scene{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
 flex-direction:column;gap:1rem;padding:3.5rem 4.5rem 2.5rem;box-sizing:border-box}
.vision img{max-width:100%;max-height:calc(100vh - 8rem);object-fit:contain;
 box-shadow:0 30px 80px rgba(0,0,0,.6);animation:vision-in .5s cubic-bezier(.2,.7,.2,1)}
@keyframes vision-in{from{opacity:0;transform:scale(.97)}}
.vision p{margin:0;color:#fff;font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85;text-align:center}
.vision button{position:fixed;top:50%;transform:translateY(-50%);background:none;border:0;color:#fff;
 font-size:2.4rem;line-height:1;cursor:pointer;padding:1rem;opacity:.7;font-family:inherit}
.vision button:hover{opacity:1}
.vision .prec{left:.6rem}.vision .suiv{right:.6rem}
.vision .ferme{top:.6rem;right:.9rem;transform:none;font-size:1.8rem}
@media(max-width:760px){.vision .scene{padding:3.2rem .8rem 2rem}.vision img{max-height:calc(100vh - 7rem)}
 .vision button{padding:.6rem;font-size:2rem}.vision .prec{left:0}.vision .suiv{right:0}}

/* ---- gabarit v2 (20/09/2026) : preuve, tarifs, avis — variables avec repli d'une composition à l'autre */
.preuve{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:1.6rem;font-size:.95rem}
.preuve>*{display:inline-flex;align-items:center;gap:.45rem;color:inherit;text-decoration:none}
.preuve b{font-weight:700}.preuve .etoiles{letter-spacing:.06em;color:var(--acc,var(--accent,#C9A86A))}
.preuve a,.preuve a *{text-decoration:none}.preuve a.note:hover b{text-decoration:underline}
.tarifs .grille{width:100%;border-collapse:collapse;margin-top:1.8rem;font-size:1rem}
.tarifs .grille th{text-align:left;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
 opacity:.7;padding:.6rem 0;border-bottom:1px solid var(--fil,var(--ligne,rgba(127,127,127,.35)))}
.tarifs .grille td{padding:.85rem 0;border-bottom:1px solid var(--fil,var(--ligne,rgba(127,127,127,.25)));vertical-align:top}
.tarifs .grille td:last-child{text-align:right;white-space:nowrap;font-weight:700}
.tarifs .note-t{margin-top:1rem;font-size:.88rem;opacity:.75;max-width:64ch}
.avis-g .chiffre{font-size:1.25rem;margin:1.4rem 0 1.2rem}.avis-g .etoiles{letter-spacing:.08em;color:var(--acc,var(--accent,#C9A86A))}
.avis-g .actions{display:flex;flex-wrap:wrap;gap:.8rem 2.2rem;margin:0}
@media(max-width:600px){.tarifs .grille td:last-child{white-space:normal}}
