:root{
  --orange:#F2602C; --noir:#111; --texte:#1d1d1d; --gris:#E8E6E6; --gris-clair:#F4F3F3; --blanc:#fff;
  --titre:'Space Grotesk',system-ui,sans-serif; --corps:'Figtree',system-ui,sans-serif; --script:'Damion',cursive;
  --wrap:1180px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;border-top:8px solid var(--noir);font-family:var(--corps);font-weight:400;color:var(--texte);background:var(--blanc);line-height:1.6;font-size:1rem}
img,svg{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3{font-family:var(--titre);font-weight:400;line-height:1.15;margin:0}
p{margin:0 0 .8em}
ul{list-style:none;margin:0;padding:0}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-9999px;top:8px;background:var(--noir);color:#fff;padding:.5em 1em;z-index:10}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.bande :focus-visible{outline-color:#fff}

/* En-tête */
.entete__in{display:flex;align-items:center;justify-content:space-between;padding-top:18px;padding-bottom:18px}
.logo{display:block;width:clamp(130px,16vw,190px)}
.logo img,.pied__logo img{width:100%;height:auto}
.entete__cta{font-family:var(--titre);text-decoration:none;border:1.5px solid var(--noir);padding:.45em 1.2em;transition:background .2s,color .2s}
.entete__cta:hover{background:var(--noir);color:#fff}

/* Hero */
.hero .wrap{max-width:1040px}
.hero{position:relative;overflow:hidden;padding:clamp(24px,5vw,56px) 0 clamp(40px,6vw,70px)}
.hero::before{content:"";position:absolute;left:-20%;right:30%;bottom:-55%;height:110%;border-radius:50%;background:radial-gradient(ellipse at 50% 20%,#ececec 0%,#f6f6f6 45%,rgba(255,255,255,0) 70%);z-index:-1}
.hero__in{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,5vw,72px);align-items:center}
.hero h1{font-size:clamp(2.2rem,4vw,3.125rem);line-height:1.1;max-width:11ch}
.hero__intro{margin-top:1.3em;font-size:clamp(1.05rem,1.6vw,1.25rem);line-height:1.4;max-width:24em}
.hero__intro strong{font-weight:700}
.atouts{display:flex;flex-wrap:wrap;gap:22px 34px;margin-top:2.6em}
.atouts li{display:flex;align-items:center;gap:10px;font-size:.88rem;line-height:1.25;max-width:9.5em}
.atouts svg{width:30px;height:30px;flex:none}
.hero__note{margin-top:2.4em;font-size:.875rem}
.hero__photo{justify-self:end;width:min(100%,460px)}
.hero__photo img{width:100%;aspect-ratio:5/7;object-fit:cover}

/* Bandes orange */
.bande{background:var(--orange);color:#fff}
.accroche__in{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;padding-top:clamp(56px,8vw,110px);padding-bottom:clamp(56px,8vw,110px)}
.accroche h2{font-size:clamp(1.6rem,3vw,2.375rem);line-height:1.1;display:flex;flex-direction:column;gap:1em;max-width:14em}
.accroche figure{margin:0}
.accroche blockquote{margin:0;font-family:var(--script);font-size:clamp(1.4rem,2.2vw,1.75rem);line-height:1.6}
.accroche figcaption{margin-top:1.4em;font-size:1.0625rem}

/* Titres de section */
.titre{font-size:clamp(1.7rem,3vw,2.375rem);margin-bottom:.9em}

/* Réalisations */
.realisations{padding:clamp(56px,7vw,90px) 0 clamp(32px,4vw,50px)}
.realisations .titre{padding-left:clamp(0px,6vw,80px)}
.cartes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 30px}
.carte{display:grid;grid-template-columns:1fr 1fr;background:var(--gris);min-height:260px}
.carte__img{display:block;overflow:hidden}
.carte__img img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.carte:hover .carte__img img{transform:scale(1.04)}
.carte__txt{display:flex;flex-direction:column;padding:26px 22px 26px 26px}
.carte__client{font-size:1rem;line-height:1.5;margin-bottom:.6em}
.carte h3{font-weight:700;font-size:1.25rem;line-height:1.4}
.btn{margin-top:auto;align-self:flex-start;background:var(--noir);color:#fff;text-decoration:none;font-size:.875rem;font-weight:300;min-width:9em;text-align:center;padding:.65em 1.4em;border:1.5px solid var(--noir);transition:background .2s,color .2s}
.btn:hover{background:transparent;color:var(--noir)}

/* Services */
.services{padding:clamp(32px,4vw,50px) 0 clamp(64px,8vw,110px)}
.services .wrap{max-width:1040px}
.services__intro{max-width:36em}
.services__intro a{color:var(--texte)}
.services__liste{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:34px;margin-top:2.4em}
.services__liste img{width:100%;aspect-ratio:1065/1400;object-fit:cover;border:3px solid var(--noir);border-radius:4px}
.services__liste h3{font-weight:700;font-size:1.375rem;margin:1.2em 0 .6em;line-height:1.4}
.services__txt{font-size:1rem;line-height:1.6}

/* Témoignages */
.avis__in{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding-top:clamp(56px,7vw,90px);padding-bottom:clamp(44px,6vw,70px)}
.avis__piste{max-width:44em;margin:0 auto;text-align:center}
.avis__item{margin:0}
.avis__item figcaption{font-size:1rem;font-weight:800;margin-bottom:2em}
.avis__item blockquote{margin:0;font-family:var(--titre);font-weight:700;font-size:clamp(1.05rem,1.8vw,1.25rem);line-height:1.3}
.avis__nav{background:none;border:0;padding:10px;cursor:pointer;color:#fff;opacity:.85}
.avis__nav:hover{opacity:1}
.avis__nav svg{width:16px;fill:currentColor}
.avis__next svg{transform:scaleX(-1)}
.avis__points{grid-column:1/-1;display:flex;justify-content:center;gap:10px;margin-top:6px}
.avis__points button{width:9px;height:9px;border-radius:50%;border:1.5px solid #fff;background:transparent;padding:0;cursor:pointer}
.avis__points button[aria-current="true"]{background:#fff}

/* Références */
.references{padding:clamp(56px,7vw,90px) 0}
.references .wrap{max-width:1040px}
.references__intro{font-size:1rem}
.logos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 40px;align-items:center;justify-items:center;margin-top:2.2em;max-width:780px}
.logos img{width:170px;max-height:130px;object-fit:contain}
.logos a{display:block;transition:opacity .2s}
.logos a:hover{opacity:.7}

/* Dolce vita */
.dolce__in{display:grid;grid-template-columns:280px 1fr;gap:clamp(28px,4vw,56px);align-items:center;padding-top:8px;padding-bottom:8px;max-width:1040px}
.dolce__photo img{width:100%;aspect-ratio:3/4;object-fit:cover}
.dolce h2{font-family:var(--script);font-size:clamp(3rem,6vw,5rem);line-height:1.3}
.dolce__sous{font-family:var(--titre);font-size:clamp(1.4rem,2.4vw,1.875rem);letter-spacing:.01em;margin:0 0 1.4em}
.dolce__txt p:last-child{max-width:34em;font-size:1rem}

/* Pied de page */
.pied{padding:clamp(56px,7vw,90px) 0 0}
.pied__in{max-width:1040px}
.pied__logo{width:170px;margin-bottom:22px}
.pied__contact{padding-left:clamp(0px,4vw,40px);font-size:1rem}
.pied__contact h2{font-family:var(--corps);font-weight:700;font-size:1.25rem;margin-bottom:.4em}
.pied__contact a{text-decoration:none}
.pied__contact a:hover{text-decoration:underline}
.pied__contact .lien-fort{font-weight:700;font-size:1.25rem;text-decoration:underline}
.pied__bas{max-width:1040px;margin-top:48px;padding-top:18px;padding-bottom:22px;border-top:1px solid #ddd;font-size:.8rem;color:#555}
.pied__bas a{color:inherit}

/* Page texte */
.texte-page{max-width:760px;padding-top:24px;padding-bottom:80px}
.texte-page h1{font-size:2.2rem;margin:.6em 0 1em}
.texte-page h2{font-size:1.3rem;margin:1.6em 0 .5em}

/* Responsive */
@media (max-width:1000px){
  .services__liste{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cartes{grid-template-columns:1fr}
  .carte{max-width:640px}
}
@media (max-width:760px){
  .hero__in,.accroche__in,.dolce__in{grid-template-columns:1fr}
  .hero__photo{justify-self:center;order:-1;width:min(100%,380px)}
  .hero::before{right:-20%;bottom:-70%}
  .atouts{gap:18px 24px}
  .logos{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
  .logos img{width:110px}
  .dolce__photo{max-width:260px}
  .dolce__in{padding-top:48px;padding-bottom:48px}
  .avis__in{grid-template-columns:1fr;gap:16px}
  .avis__nav{display:none}
  .realisations .titre{padding-left:0}
}
@media (max-width:480px){
  .carte{grid-template-columns:42% 1fr;min-height:180px}
  .carte__txt{padding:18px 16px}
  .services__liste{gap:26px 16px}
  .services__txt{font-size:.94rem}
  .logos{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Effets d'apparition (activés par head.js + main.js) */
html.anim .hero__texte > *,html.anim .hero__photo,html.anim .accroche__in > *,html.anim .titre,html.anim .carte,html.anim .services__intro,html.anim .services__liste > li,html.anim .avis__piste,html.anim .references__intro,html.anim .logos > li,html.anim .dolce__photo,html.anim .dolce__txt,html.anim .pied__in > *{opacity:0}
.reveal{opacity:0;transform:translateY(28px);transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1),filter 1.1s ease}
.hero__texte > .reveal{transform:translateY(14px);filter:blur(8px)}
.reveal--photo{transform:scale(1.03);filter:blur(12px);transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.7,.2,1),filter 1.2s ease}
html.anim .reveal.vu{opacity:1;transform:none;filter:none}

@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
