/* ============================================================
   Pompe Chaleur Angers — feuille de style propre au site
   Famille de design : Vitrine (éditorial, magazine, premium)
   Convention de nommage : préfixe anv- (Anjou Vitrine)
   Police : Sora (variable, self-hostée) · Accent : cuivre
   ============================================================ */

@font-face {
  font-family: "Sora";
  src: url("/fonts/sora-variable.woff2") format("woff2");
  font-weight: 200 800;
  font-display: swap;
  font-style: normal;
}

:root {
  --encre: #1b1512;
  --encre-2: #2c2420;
  --cuivre: #b0532a;
  --cuivre-fonce: #8f4020;
  --cuivre-clair: #c8703f;
  --creme: #f7f1e8;
  --creme-2: #efe5d6;
  --sable: #e5d9c6;
  --gris: #6b6157;
  --gris-2: #97897b;
  --blanc: #ffffff;
  --etoile: #cf9b3a;
  --ligne: #e7ddce;
  --ligne-sombre: rgba(255, 255, 255, .16);
  --page: 1180px;
  --r: 6px;
  --r-lg: 16px;
  --ease: cubic-bezier(.22, .61, .36, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  font-family: "Sora", "Segoe UI", system-ui, sans-serif;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.68;
  color: var(--encre);
  background: var(--blanc);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--cuivre-fonce); text-decoration: none; }
main { display: flex; flex-direction: column; }
[id] { scroll-margin-top: 96px; }

/* ---------- structure & typographie éditoriale ---------- */
.anv-wrap { width: 100%; max-width: var(--page); margin: 0 auto; padding: 0 26px; }
.anv-section { padding: 84px 0; }
.anv-section--tight { padding: 60px 0; }
.anv-eyebrow {
  font-size: .74rem; font-weight: 600; letter-spacing: .22em;
  text-transform: uppercase; color: var(--cuivre);
  display: inline-block; margin-bottom: 18px;
}
.anv-h2 {
  font-weight: 800; font-size: clamp(1.9rem, 4.4vw, 3.05rem);
  line-height: 1.06; letter-spacing: -.02em; max-width: 20ch;
}
.anv-lede {
  font-weight: 300; font-size: clamp(1.06rem, 2vw, 1.28rem);
  line-height: 1.6; color: var(--gris); max-width: 62ch; margin-top: 20px;
}
.anv-seo { order: 99; }

/* centrage imposé sur homepage + pages villes */
.anv-centered .anv-h2,
.anv-centered .anv-eyebrow,
.anv-centered .anv-lede,
.anv-centered .anv-head,
.anv-centered .anv-cta-line,
.anv-centered .anv-agg,
.anv-centered .anv-chips { text-align: center; }
.anv-centered .anv-h2,
.anv-centered .anv-lede { margin-left: auto; margin-right: auto; }
.anv-centered .anv-chips { justify-content: center; }

.anv-head { margin-bottom: 46px; max-width: 760px; }
.anv-centered .anv-head { margin-left: auto; margin-right: auto; }
.anv-cta-line { margin-top: 34px; }

/* ---------- boutons ---------- */
.anv-btn {
  display: inline-flex; align-items: center; gap: .55em;
  font-family: inherit; font-weight: 600; font-size: 1rem;
  padding: 15px 30px; border-radius: 999px; border: 1.5px solid transparent;
  cursor: pointer; transition: transform .2s var(--ease), background .2s, color .2s, box-shadow .2s;
  line-height: 1; text-align: center;
}
.anv-btn--accent { background: var(--cuivre); color: #fff; }
.anv-btn--accent:hover { background: var(--cuivre-fonce); transform: translateY(-2px); box-shadow: 0 14px 30px rgba(143, 64, 32, .28); }
.anv-btn--dark { background: var(--encre); color: #fff; }
.anv-btn--dark:hover { background: var(--encre-2); transform: translateY(-2px); }
.anv-btn--ghost { background: transparent; color: var(--encre); border-color: var(--encre); }
.anv-btn--ghost:hover { background: var(--encre); color: #fff; }
.anv-btn--light { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.5); }
.anv-btn--light:hover { background: #fff; color: var(--encre); }
.anv-btn--wide { width: 100%; justify-content: center; }

/* ---------- header ---------- */
.anv-top {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  transition: background .3s, box-shadow .3s, border-color .3s;
  border-bottom: 1px solid transparent;
}
.anv-top__bar {
  display: flex; align-items: center; gap: 30px;
  height: 74px; max-width: var(--page); margin: 0 auto; padding: 0 26px;
}
.anv-top.is-solid { background: rgba(255,255,255,.96); backdrop-filter: blur(10px); border-bottom-color: var(--ligne); box-shadow: 0 6px 22px rgba(27,21,18,.05); }
.anv-brand { display: inline-flex; align-items: center; gap: 11px; margin-right: auto; }
.anv-brand__mark { width: 40px; height: 40px; flex: none; }
.anv-brand__name { display: flex; flex-direction: column; line-height: 1.05; }
.anv-brand__name b { font-weight: 800; font-size: 1.06rem; letter-spacing: -.01em; }
.anv-brand__name span { font-size: .66rem; letter-spacing: .2em; text-transform: uppercase; color: var(--gris); }
.anv-top.is-over .anv-brand__name b { color: #fff; }
.anv-top.is-over .anv-brand__name span { color: rgba(255,255,255,.72); }

.anv-nav { display: flex; align-items: center; gap: 4px; }
.anv-nav__link {
  position: relative; display: inline-flex; align-items: center; gap: 5px;
  padding: 9px 15px; font-size: .82rem; font-weight: 500; letter-spacing: .08em;
  text-transform: uppercase; color: var(--encre); border-radius: 6px;
}
.anv-nav__link:hover { color: var(--cuivre); }
.anv-top.is-over .anv-nav__link { color: rgba(255,255,255,.9); }
.anv-top.is-over .anv-nav__link:hover { color: #fff; }
.anv-has-drop { position: relative; }
.anv-drop {
  position: absolute; top: calc(100% + 6px); left: 0; min-width: 260px;
  background: #fff; border: 1px solid var(--ligne); border-radius: var(--r);
  box-shadow: 0 24px 50px rgba(27,21,18,.14); padding: 8px;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: all .22s var(--ease);
}
.anv-has-drop:hover .anv-drop,
.anv-has-drop:focus-within .anv-drop { opacity: 1; visibility: visible; transform: translateY(0); }
.anv-drop a {
  display: block; padding: 10px 14px; font-size: .9rem; color: var(--encre);
  border-radius: 5px; text-transform: none; letter-spacing: 0;
}
.anv-drop a:hover { background: var(--creme); color: var(--cuivre-fonce); }

.anv-top__tel {
  display: inline-flex; align-items: center; gap: 7px; font-weight: 700;
  font-size: .96rem; color: var(--encre); white-space: nowrap;
}
.anv-top__tel:hover { color: var(--cuivre); }
.anv-top.is-over .anv-top__tel { color: #fff; }
.anv-top .anv-btn { padding: 12px 22px; font-size: .9rem; }
.anv-top.is-over .anv-btn--dark { background: #fff; color: var(--encre); }

.anv-burger { display: none; width: 44px; height: 44px; border: none; background: transparent; cursor: pointer; flex-direction: column; gap: 5px; align-items: center; justify-content: center; }
.anv-burger span { width: 24px; height: 2px; background: var(--encre); transition: .25s; }
.anv-top.is-over .anv-burger span { background: #fff; }

/* drawer mobile */
.anv-drawer { position: fixed; inset: 0; z-index: 300; background: var(--encre); color: #fff; padding: 26px; transform: translateX(100%); transition: transform .32s var(--ease); overflow-y: auto; display: flex; flex-direction: column; }
.anv-drawer.is-open { transform: translateX(0); }
.anv-drawer__top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 34px; }
.anv-drawer__close { background: none; border: none; color: #fff; font-size: 2rem; cursor: pointer; line-height: 1; }
.anv-drawer a { color: #fff; font-size: 1.15rem; padding: 13px 0; border-bottom: 1px solid var(--ligne-sombre); display: block; }
.anv-drawer__cta { margin-top: 26px; display: flex; flex-direction: column; gap: 12px; }
.anv-drawer__cta a { border: none; }

/* ---------- hero plein écran (Vitrine) ---------- */
.anv-hero { position: relative; min-height: 92vh; display: flex; align-items: flex-end; color: #fff; overflow: hidden; }
.anv-hero__media { position: absolute; inset: 0; z-index: -2; }
.anv-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.anv-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(20,15,12,.34) 0%, rgba(20,15,12,.12) 34%, rgba(20,15,12,.82) 100%); }
.anv-hero__inner { max-width: var(--page); margin: 0 auto; padding: 0 26px 76px; width: 100%; }
.anv-hero__kicker { font-size: .8rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: #fff; display: inline-flex; align-items: center; gap: 12px; margin-bottom: 22px; }
.anv-hero__kicker::before { content: ""; width: 40px; height: 1.5px; background: var(--cuivre-clair); }
.anv-hero__title { font-weight: 800; font-size: clamp(2.4rem, 6.6vw, 4.9rem); line-height: 1.02; letter-spacing: -.028em; max-width: 17ch; text-shadow: 0 2px 30px rgba(0,0,0,.28); }
.anv-hero__sub { font-weight: 300; font-size: clamp(1.08rem, 2.1vw, 1.4rem); margin-top: 24px; max-width: 54ch; color: rgba(255,255,255,.94); }
.anv-hero__actions { margin-top: 38px; display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.anv-hero__proof { margin-top: 40px; display: flex; flex-wrap: wrap; gap: 30px 42px; padding-top: 30px; border-top: 1px solid rgba(255,255,255,.22); }
.anv-hero__proof div { display: flex; flex-direction: column; }
.anv-hero__proof b { font-weight: 800; font-size: 1.85rem; letter-spacing: -.02em; }
.anv-hero__proof span { font-size: .82rem; color: rgba(255,255,255,.8); letter-spacing: .04em; }

/* ---------- bande de réassurance ---------- */
.anv-band { background: var(--encre); color: #fff; }
.anv-band__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--ligne-sombre); border-radius: var(--r-lg); overflow: hidden; }
.anv-band__cell { background: var(--encre); padding: 30px 26px; text-align: center; }
.anv-band__cell b { display: block; font-weight: 800; font-size: 1.7rem; letter-spacing: -.02em; }
.anv-band__cell b em { color: var(--cuivre-clair); font-style: normal; }
.anv-band__cell span { font-size: .82rem; color: rgba(255,255,255,.72); }

/* ---------- prestations (grille asymétrique) ---------- */
.anv-svc-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; }
.anv-svc-grid--presta { grid-template-columns: repeat(3, 1fr); }
.anv-svc { position: relative; display: flex; flex-direction: column; border: 1px solid var(--ligne); border-radius: var(--r-lg); overflow: hidden; background: #fff; transition: transform .25s var(--ease), box-shadow .25s; text-align: left; }
.anv-svc:hover { transform: translateY(-4px); box-shadow: 0 24px 48px rgba(27,21,18,.12); }
.anv-svc--feature { grid-column: span 2; }
.anv-svc__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.anv-svc--feature .anv-svc__media { aspect-ratio: 21 / 9; }
.anv-svc__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.anv-svc:hover .anv-svc__media img { transform: scale(1.05); }
.anv-svc__price { position: absolute; left: 16px; bottom: 16px; background: rgba(27,21,18,.9); color: #fff; font-weight: 600; font-size: .84rem; padding: 8px 14px; border-radius: 999px; backdrop-filter: blur(3px); }
.anv-svc__price em { color: var(--cuivre-clair); font-style: normal; }
.anv-svc__body { padding: 24px 24px 28px; display: flex; flex-direction: column; gap: 12px; flex: 1; }
.anv-svc__title { font-weight: 700; font-size: 1.28rem; letter-spacing: -.01em; }
.anv-svc__title a { color: var(--encre); }
.anv-svc__title a:hover { color: var(--cuivre-fonce); }
.anv-svc__desc { color: var(--gris); font-size: .98rem; }
.anv-svc__list { list-style: none; display: flex; flex-direction: column; gap: 8px; margin-top: auto; }
.anv-svc__list li { display: flex; gap: 10px; font-size: .9rem; align-items: flex-start; }
.anv-svc__list li::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: 2px; border-radius: 50%; background: var(--creme-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0532a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/12px no-repeat; }

/* ---------- pourquoi nous ---------- */
.anv-why { background: var(--creme); }
.anv-why__grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 40px; align-items: stretch; }
.anv-points { display: flex; flex-direction: column; gap: 4px; }
.anv-point { padding: 26px 0; border-bottom: 1px solid var(--sable); display: grid; grid-template-columns: 52px 1fr; gap: 20px; align-items: start; text-align: left; }
.anv-point:first-child { padding-top: 0; }
.anv-point__ico { width: 52px; height: 52px; border-radius: 12px; background: #fff; border: 1px solid var(--sable); display: grid; place-items: center; color: var(--cuivre); }
.anv-point__ico svg { width: 26px; height: 26px; }
.anv-point h3 { font-weight: 700; font-size: 1.14rem; margin-bottom: 5px; }
.anv-point p { color: var(--gris); font-size: .96rem; }
.anv-statbox { background: var(--encre); color: #fff; border-radius: var(--r-lg); padding: 42px 36px; display: flex; flex-direction: column; justify-content: center; gap: 26px; text-align: left; }
.anv-statbox__row { display: flex; align-items: baseline; gap: 16px; padding-bottom: 22px; border-bottom: 1px solid var(--ligne-sombre); }
.anv-statbox__row:last-of-type { border-bottom: none; padding-bottom: 0; }
.anv-statbox__row b { font-weight: 800; font-size: 2.6rem; line-height: 1; letter-spacing: -.03em; color: var(--cuivre-clair); }
.anv-statbox__row span { font-size: .92rem; color: rgba(255,255,255,.82); }
.anv-statbox .anv-btn { margin-top: 6px; }

/* ---------- réalisations ---------- */
.anv-work-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.anv-work { border-radius: var(--r-lg); overflow: hidden; background: #fff; border: 1px solid var(--ligne); text-align: left; }
.anv-work__media { aspect-ratio: 16 / 9; overflow: hidden; }
.anv-work__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.anv-work:hover .anv-work__media img { transform: scale(1.04); }
.anv-work__body { padding: 20px 22px 24px; }
.anv-work__place { font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--cuivre); font-weight: 600; }
.anv-work__title { font-weight: 700; font-size: 1.12rem; margin: 8px 0 8px; }
.anv-work__desc { color: var(--gris); font-size: .93rem; }

/* étude de cas pleine largeur (villes / prestations) */
.anv-case { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border: 1px solid var(--ligne); border-radius: var(--r-lg); overflow: hidden; }
.anv-case__media { aspect-ratio: 16 / 9; }
.anv-case__media img { width: 100%; height: 100%; object-fit: cover; }
.anv-case__body { padding: 38px 40px; text-align: left; }
.anv-case__place { font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--cuivre); font-weight: 600; }
.anv-case__body h3 { font-weight: 800; font-size: 1.55rem; letter-spacing: -.01em; margin: 8px 0 18px; }
.anv-case__tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; }
.anv-case__tags span { font-size: .78rem; font-weight: 600; padding: 6px 13px; background: var(--creme); border-radius: 999px; color: var(--encre-2); }
.anv-case__body p { color: var(--gris); font-size: .96rem; margin-bottom: 12px; }

/* ---------- avis (rail horizontal) ---------- */
.anv-reviews { background: var(--creme); }
.anv-agg { display: inline-flex; align-items: center; gap: 14px; margin-bottom: 40px; padding: 12px 22px; background: #fff; border: 1px solid var(--ligne); border-radius: 999px; }
.anv-agg b { font-weight: 800; font-size: 1.5rem; }
.anv-agg span { color: var(--gris); font-size: .9rem; }
.anv-stars { color: var(--etoile); letter-spacing: 2px; font-size: 1rem; }
.anv-review-rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(330px, 1fr); gap: 24px; overflow-x: auto; padding-bottom: 18px; scroll-snap-type: x mandatory; }
.anv-review-rail.is-expanded { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: repeat(3, 1fr); overflow: visible; }
.anv-review { background: #fff; border: 1px solid var(--ligne); border-radius: var(--r-lg); padding: 28px 26px; scroll-snap-align: start; display: flex; flex-direction: column; gap: 14px; text-align: left; }
.anv-review.is-hidden { display: none; }
.anv-review__txt { font-size: .97rem; color: var(--encre-2); line-height: 1.62; }
.anv-review__meta { margin-top: auto; display: flex; align-items: center; gap: 12px; padding-top: 12px; border-top: 1px solid var(--ligne); }
.anv-review__av { width: 42px; height: 42px; border-radius: 50%; background: var(--cuivre); color: #fff; display: grid; place-items: center; font-weight: 700; flex: none; }
.anv-review__who b { display: block; font-size: .92rem; }
.anv-review__who span { font-size: .78rem; color: var(--gris); }
.anv-review-more { margin-top: 30px; text-align: center; }

/* ---------- prix ---------- */
.anv-price { border: 1px solid var(--ligne); border-radius: var(--r-lg); overflow: hidden; }
.anv-price__row { display: grid; grid-template-columns: 2fr 1.2fr 1fr; gap: 18px; padding: 20px 26px; border-bottom: 1px solid var(--ligne); align-items: center; }
.anv-price__row:last-child { border-bottom: none; }
.anv-price__row--head { background: var(--encre); color: #fff; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; }
.anv-price__row b { font-weight: 700; }
.anv-price__row small { display: block; color: var(--gris); font-weight: 400; font-size: .84rem; margin-top: 3px; }
.anv-price__amount { font-weight: 800; font-size: 1.12rem; color: var(--cuivre-fonce); text-align: right; }
.anv-price__row--head .anv-price__amount { color: #fff; font-size: .78rem; }
.anv-price-note { margin-top: 18px; font-size: .86rem; color: var(--gris); font-style: italic; text-align: left; }

/* ---------- simulateur / outil ---------- */
.anv-tool { background: var(--encre); color: #fff; border-radius: var(--r-lg); padding: clamp(30px, 5vw, 56px); }
.anv-tool__grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 44px; align-items: center; }
.anv-tool__fields { display: grid; gap: 22px; text-align: left; }
.anv-tool__field label { display: block; font-size: .82rem; font-weight: 600; letter-spacing: .04em; margin-bottom: 10px; color: rgba(255,255,255,.86); }
.anv-tool__opts { display: flex; flex-wrap: wrap; gap: 10px; }
.anv-tool__opts input { position: absolute; opacity: 0; pointer-events: none; }
.anv-tool__opts label { display: inline-flex; margin: 0; padding: 10px 16px; border: 1.5px solid rgba(255,255,255,.3); border-radius: 999px; cursor: pointer; font-size: .9rem; font-weight: 500; transition: .2s; }
.anv-tool__opts input:checked + label { background: var(--cuivre); border-color: var(--cuivre); }
.anv-tool__field select, .anv-tool__field input[type=number] { width: 100%; padding: 13px 15px; border-radius: var(--r); border: 1.5px solid rgba(255,255,255,.25); background: rgba(255,255,255,.06); color: #fff; font-family: inherit; font-size: 1rem; }
.anv-tool__field select option { color: var(--encre); }
.anv-tool__out { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.16); border-radius: var(--r-lg); padding: 34px 30px; text-align: center; }
.anv-tool__out span { font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.7); }
.anv-tool__out b { display: block; font-weight: 800; font-size: clamp(2rem, 5vw, 2.9rem); color: var(--cuivre-clair); letter-spacing: -.02em; margin: 12px 0 6px; }
.anv-tool__out p { font-size: .84rem; color: rgba(255,255,255,.7); margin-top: 10px; }
.anv-tool__out .anv-btn { margin-top: 22px; }

/* ---------- équipe (portraits larges) ---------- */
.anv-team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.anv-member { text-align: left; }
.anv-member__portrait { aspect-ratio: 1 / 1; width: 100%; border-radius: var(--r-lg); overflow: hidden; background: var(--creme-2); margin-bottom: 20px; }
.anv-member__portrait img { width: 100%; height: 100%; object-fit: cover; }
.anv-member h3 { font-weight: 700; font-size: 1.18rem; }
.anv-member__role { color: var(--cuivre); font-weight: 600; font-size: .88rem; letter-spacing: .03em; margin: 3px 0 12px; }
.anv-member p { color: var(--gris); font-size: .94rem; }

/* ---------- process ---------- */
.anv-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px; counter-reset: anvstep; }
.anv-step { text-align: left; position: relative; padding-top: 28px; border-top: 2px solid var(--encre); }
.anv-step::before { counter-increment: anvstep; content: "0" counter(anvstep); font-weight: 800; font-size: 1.05rem; color: var(--cuivre); position: absolute; top: -14px; background: #fff; padding-right: 12px; }
.anv-step h3 { font-weight: 700; font-size: 1.12rem; margin-bottom: 8px; }
.anv-step p { color: var(--gris); font-size: .93rem; }

/* ---------- zone d'intervention ---------- */
.anv-zone__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: stretch; }
.anv-zone__text { text-align: left; }
.anv-chips { display: flex; flex-wrap: wrap; gap: 10px; margin: 26px 0 22px; }
.anv-chips a { display: inline-flex; padding: 9px 17px; background: var(--creme); border: 1px solid var(--sable); border-radius: 999px; font-size: .88rem; font-weight: 500; color: var(--encre); transition: .2s; }
.anv-chips a:hover { background: var(--cuivre); color: #fff; border-color: var(--cuivre); }
.anv-zone__catch { color: var(--gris); font-size: .93rem; }
.anv-map { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--ligne); min-height: 380px; }
.anv-map iframe { width: 100%; height: 100%; min-height: 380px; border: 0; display: block; }

/* ---------- FAQ ---------- */
.anv-faq { max-width: 840px; margin: 0 auto; }
.anv-faq__item { border-bottom: 1px solid var(--ligne); }
.anv-faq__q { width: 100%; text-align: left; background: none; border: none; cursor: pointer; font-family: inherit; font-weight: 600; font-size: 1.08rem; color: var(--encre); padding: 24px 44px 24px 0; position: relative; }
.anv-faq__q::after { content: "+"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-size: 1.6rem; font-weight: 300; color: var(--cuivre); transition: transform .25s; }
.anv-faq__item.is-open .anv-faq__q::after { transform: translateY(-50%) rotate(45deg); }
.anv-faq__a { max-height: 0; overflow: hidden; transition: max-height .3s var(--ease); }
.anv-faq__a p { padding: 0 0 24px; color: var(--gris); }

/* ---------- bande CTA ---------- */
.anv-ctaband { background: var(--cuivre); color: #fff; text-align: center; }
.anv-ctaband h2 { font-weight: 800; font-size: clamp(1.8rem, 4vw, 2.7rem); letter-spacing: -.02em; max-width: 20ch; margin: 0 auto 16px; }
.anv-ctaband p { max-width: 52ch; margin: 0 auto 30px; color: rgba(255,255,255,.9); font-weight: 300; font-size: 1.1rem; }
.anv-ctaband .anv-btn--light { border-color: #fff; }

/* ---------- contact / formulaire ---------- */
.anv-contact { background: var(--creme); }
.anv-contact__grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 46px; align-items: start; }
.anv-info { text-align: left; }
.anv-info__list { list-style: none; margin-top: 26px; display: flex; flex-direction: column; gap: 20px; }
.anv-info__list li { display: grid; grid-template-columns: 44px 1fr; gap: 15px; align-items: start; }
.anv-info__ico { width: 44px; height: 44px; border-radius: 11px; background: #fff; border: 1px solid var(--sable); display: grid; place-items: center; color: var(--cuivre); }
.anv-info__ico svg { width: 21px; height: 21px; }
.anv-info__list b { display: block; font-size: .78rem; text-transform: uppercase; letter-spacing: .1em; color: var(--gris); font-weight: 600; margin-bottom: 2px; }
.anv-info__list a, .anv-info__list p { color: var(--encre); font-weight: 600; font-size: 1.02rem; }
.anv-form { background: #fff; border: 1px solid var(--ligne); border-radius: var(--r-lg); padding: 34px; text-align: left; }
.anv-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.anv-field { display: flex; flex-direction: column; gap: 7px; }
.anv-field--wide { grid-column: 1 / -1; }
.anv-field label { font-size: .82rem; font-weight: 600; color: var(--encre-2); }
.anv-field input, .anv-field select, .anv-field textarea {
  padding: 13px 14px; border: 1.5px solid var(--ligne); border-radius: var(--r);
  font-family: inherit; font-size: 1rem; background: var(--blanc); color: var(--encre); width: 100%;
}
.anv-field textarea { resize: vertical; min-height: 96px; }
.anv-field input:focus, .anv-field select:focus, .anv-field textarea:focus { outline: none; border-color: var(--cuivre); box-shadow: 0 0 0 3px rgba(176,83,42,.14); }
.anv-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.anv-form__note { font-size: .8rem; color: var(--gris); margin-top: 14px; }

/* ---------- footer ---------- */
.anv-foot { background: var(--encre); color: rgba(255,255,255,.72); padding: 66px 0 30px; }
.anv-foot__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 40px; }
.anv-foot__brand b { color: #fff; font-weight: 800; font-size: 1.15rem; display: block; }
.anv-foot__brand .anv-brand { margin-bottom: 16px; }
.anv-foot__brand .anv-brand__name b { color: #fff; }
.anv-foot__brand .anv-brand__name span { color: rgba(255,255,255,.6); }
.anv-foot__brand p { font-size: .92rem; max-width: 34ch; }
.anv-foot__col h4 { color: #fff; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 16px; font-weight: 600; }
.anv-foot__col a { display: block; color: rgba(255,255,255,.72); font-size: .92rem; padding: 5px 0; }
.anv-foot__col a:hover { color: var(--cuivre-clair); }
.anv-foot__bot { margin-top: 46px; padding-top: 24px; border-top: 1px solid var(--ligne-sombre); display: flex; flex-wrap: wrap; gap: 12px 26px; justify-content: space-between; font-size: .82rem; color: rgba(255,255,255,.55); }
.anv-foot__bot a { color: rgba(255,255,255,.65); }

/* ---------- barre d'appel mobile ---------- */
.anv-dock { display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 180; background: #fff; border-top: 1px solid var(--ligne); padding: 9px 14px; gap: 10px; box-shadow: 0 -6px 22px rgba(27,21,18,.08); }
.anv-dock a { flex: 1; justify-content: center; }

/* ---------- exit popup ---------- */
.anv-exit { position: fixed; inset: 0; z-index: 400; background: rgba(20,15,12,.68); display: none; align-items: center; justify-content: center; padding: 18px; }
.anv-exit.is-open { display: flex; }
.anv-exit__card { background: #fff; max-width: 460px; width: 100%; border-radius: var(--r-lg); padding: 40px 34px 34px; position: relative; text-align: center; box-shadow: 0 30px 70px rgba(0,0,0,.3); }
.anv-exit__x { position: absolute; top: 14px; right: 16px; background: none; border: none; font-size: 1.7rem; color: var(--gris); cursor: pointer; line-height: 1; }
.anv-exit__eyebrow { color: var(--cuivre); font-size: .78rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.anv-exit__card h2 { font-weight: 800; font-size: 1.55rem; letter-spacing: -.01em; margin: 12px 0 10px; line-height: 1.15; }
.anv-exit__card > p { color: var(--gris); font-size: .96rem; margin-bottom: 22px; }
.anv-exit__form { display: flex; flex-direction: column; gap: 12px; text-align: left; }
.anv-exit__form input { padding: 13px 15px; border: 1.5px solid var(--ligne); border-radius: var(--r); font-family: inherit; font-size: 1rem; }
.anv-exit__form input:focus { outline: none; border-color: var(--cuivre); }
.anv-exit__phone { display: block; margin-top: 16px; font-weight: 700; color: var(--encre); }
.anv-exit__decline { background: none; border: none; color: var(--gris); font-size: .84rem; text-decoration: underline; cursor: pointer; margin-top: 14px; }

/* ---------- fil d'ariane (prestations) ---------- */
.anv-crumb { padding: 100px 0 0; font-size: .84rem; color: var(--gris); }
.anv-crumb a { color: var(--gris); }
.anv-crumb a:hover { color: var(--cuivre); }

/* ---------- hero secondaire (villes) ---------- */
.anv-subhero { padding: 148px 0 70px; background: linear-gradient(180deg, var(--creme) 0%, #fff 100%); text-align: center; }
.anv-subhero__kicker { font-size: .78rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--cuivre); }
.anv-subhero h1 { font-weight: 800; font-size: clamp(2.1rem, 5.4vw, 3.6rem); line-height: 1.05; letter-spacing: -.025em; margin: 16px auto 20px; max-width: 20ch; }
.anv-subhero p { font-weight: 300; font-size: clamp(1.05rem, 2vw, 1.24rem); color: var(--gris); max-width: 60ch; margin: 0 auto 30px; }
.anv-subhero__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.anv-subhero__badges { margin-top: 34px; display: flex; flex-wrap: wrap; gap: 12px 24px; justify-content: center; font-size: .88rem; color: var(--gris); }
.anv-subhero__badges span { display: inline-flex; align-items: center; gap: 8px; }
.anv-subhero__badges span::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--cuivre); }

/* ---------- hero prestation (sombre) ---------- */
.anv-phero { padding: 132px 0 76px; background: linear-gradient(150deg, var(--encre) 0%, var(--encre-2) 60%, #3a2c22 100%); color: #fff; }
.anv-phero__grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 46px; align-items: center; }
.anv-phero__kicker { font-size: .78rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--cuivre-clair); }
.anv-phero h1 { font-weight: 800; font-size: clamp(2.1rem, 5vw, 3.4rem); line-height: 1.05; letter-spacing: -.025em; margin: 16px 0 18px; }
.anv-phero p { color: rgba(255,255,255,.86); font-weight: 300; font-size: 1.15rem; max-width: 48ch; }
.anv-phero__actions { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 14px; }
.anv-phero__vis { border-radius: var(--r-lg); overflow: hidden; border: 1px solid rgba(255,255,255,.16); aspect-ratio: 4 / 3; }
.anv-phero__vis img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- aides ---------- */
.anv-aides-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.anv-aide { border: 1px solid var(--ligne); border-radius: var(--r-lg); padding: 26px 24px; background: #fff; text-align: left; }
.anv-aide__tag { display: inline-block; font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--cuivre-fonce); background: var(--creme-2); padding: 5px 11px; border-radius: 999px; margin-bottom: 14px; }
.anv-aide h3 { font-weight: 700; font-size: 1.1rem; margin-bottom: 8px; }
.anv-aide p { color: var(--gris); font-size: .93rem; }

/* ---------- article de blog ---------- */
.anv-article-head { padding: 132px 0 40px; background: var(--creme); text-align: left; }
.anv-article-head .anv-wrap { max-width: 860px; }
.anv-article-meta { font-size: .86rem; color: var(--gris); margin-bottom: 16px; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.anv-article-head h1 { font-weight: 800; font-size: clamp(2rem, 4.6vw, 3.1rem); line-height: 1.08; letter-spacing: -.025em; max-width: 24ch; }
.anv-article-cover { aspect-ratio: 16 / 9; border-radius: var(--r-lg); overflow: hidden; margin: 26px 0 0; }
.anv-article-cover img { width: 100%; height: 100%; object-fit: cover; }
.anv-article-body { max-width: 820px; margin: 0 auto; padding: 54px 0; }
.anv-article-body h2 { font-weight: 800; font-size: clamp(1.5rem, 3vw, 2rem); letter-spacing: -.02em; margin: 40px 0 16px; }
.anv-article-body h3 { font-weight: 700; font-size: 1.25rem; margin: 28px 0 12px; }
.anv-article-body p { margin-bottom: 18px; color: var(--encre-2); }
.anv-article-body ul, .anv-article-body ol { margin: 0 0 18px 22px; color: var(--encre-2); }
.anv-article-body li { margin-bottom: 8px; }
.anv-article-body strong { font-weight: 700; color: var(--encre); }
.anv-toc { background: var(--creme); border-radius: var(--r-lg); padding: 24px 28px; margin: 8px 0 30px; }
.anv-toc b { display: block; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: var(--gris); margin-bottom: 10px; }
.anv-toc a { display: block; padding: 4px 0; color: var(--cuivre-fonce); font-size: .95rem; }
.anv-inline-cta { background: var(--encre); color: #fff; border-radius: var(--r-lg); padding: 30px 32px; margin: 34px 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; }
.anv-inline-cta p { margin: 0; color: rgba(255,255,255,.9); font-weight: 500; max-width: 40ch; }
.anv-table-wrap { overflow-x: auto; margin: 0 0 20px; }
.anv-datatable { width: 100%; border-collapse: collapse; font-size: .94rem; }
.anv-datatable th, .anv-datatable td { text-align: left; padding: 13px 16px; border-bottom: 1px solid var(--ligne); }
.anv-datatable th { background: var(--encre); color: #fff; font-weight: 600; font-size: .82rem; letter-spacing: .04em; }
.anv-datatable tr:nth-child(even) td { background: var(--creme); }
.anv-author { display: grid; grid-template-columns: 72px 1fr; gap: 18px; align-items: center; background: var(--creme); border-radius: var(--r-lg); padding: 24px 26px; margin: 40px 0 0; }
.anv-author img { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; }
.anv-author b { display: block; font-size: 1.02rem; }
.anv-author span { color: var(--cuivre); font-weight: 600; font-size: .84rem; }
.anv-author p { margin: 6px 0 0; font-size: .9rem; color: var(--gris); }
.anv-artisan-card { border: 1px solid var(--ligne); border-radius: var(--r-lg); padding: 24px 26px; margin: 16px 0 30px; background: #fff; }
.anv-artisan-card__head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; justify-content: space-between; margin-bottom: 14px; }
.anv-artisan-card__badge { font-weight: 700; color: var(--cuivre-fonce); font-size: .92rem; white-space: nowrap; }
.anv-artisan-card dl { display: grid; grid-template-columns: auto 1fr; gap: 8px 16px; font-size: .92rem; margin-bottom: 14px; }
.anv-artisan-card dt { color: var(--gris); font-weight: 600; }
.anv-artisan-card__edge { background: var(--creme); border-left: 3px solid var(--cuivre); padding: 12px 16px; border-radius: 0 var(--r) var(--r) 0; font-size: .93rem; }

/* ---------- index conseils & réalisations ---------- */
.anv-cards3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.anv-card-post { border: 1px solid var(--ligne); border-radius: var(--r-lg); overflow: hidden; background: #fff; transition: transform .25s var(--ease), box-shadow .25s; }
.anv-card-post:hover { transform: translateY(-4px); box-shadow: 0 22px 44px rgba(27,21,18,.12); }
.anv-card-post__media { aspect-ratio: 16 / 9; overflow: hidden; }
.anv-card-post__media img { width: 100%; height: 100%; object-fit: cover; }
.anv-card-post__body { padding: 22px 24px 26px; }
.anv-card-post__body h3 { font-weight: 700; font-size: 1.15rem; margin-bottom: 8px; }
.anv-card-post__body h3 a { color: var(--encre); }
.anv-card-post__body h3 a:hover { color: var(--cuivre-fonce); }
.anv-card-post__body p { color: var(--gris); font-size: .93rem; }

/* ---------- pages légales / plan ---------- */
.anv-legal { padding: 130px 0 70px; }
.anv-legal .anv-wrap { max-width: 820px; }
.anv-legal h1 { font-weight: 800; font-size: clamp(1.9rem, 4vw, 2.8rem); letter-spacing: -.02em; margin-bottom: 26px; }
.anv-legal h2 { font-weight: 700; font-size: 1.3rem; margin: 32px 0 12px; }
.anv-legal p, .anv-legal li { color: var(--encre-2); margin-bottom: 12px; }
.anv-legal ul { margin-left: 22px; }
.anv-legal a { color: var(--cuivre-fonce); }
.anv-plan-cols { columns: 2; column-gap: 40px; }
.anv-plan-cols h2 { column-span: all; }
.anv-plan-cols ul { list-style: none; margin: 0 0 20px; break-inside: avoid; }
.anv-plan-cols li { margin-bottom: 8px; }
.anv-plan-cols a { color: var(--encre); }
.anv-plan-cols a:hover { color: var(--cuivre); }

/* ---------- merci ---------- */
.anv-merci { min-height: 76vh; display: grid; place-items: center; text-align: center; padding: 150px 20px 80px; }
.anv-merci__ico { width: 84px; height: 84px; border-radius: 50%; background: var(--creme-2); color: var(--cuivre); display: grid; place-items: center; margin: 0 auto 26px; }
.anv-merci h1 { font-weight: 800; font-size: clamp(2rem, 5vw, 3rem); letter-spacing: -.02em; margin-bottom: 14px; }
.anv-merci p { color: var(--gris); max-width: 48ch; margin: 0 auto 30px; font-size: 1.08rem; }

/* ---------- responsive ---------- */
@media (max-width: 1000px) {
  .anv-hero__title { font-size: clamp(2.2rem, 8vw, 3.4rem); }
  .anv-why__grid, .anv-tool__grid, .anv-zone__grid, .anv-contact__grid, .anv-phero__grid, .anv-case { grid-template-columns: 1fr; }
  .anv-band__grid { grid-template-columns: repeat(2, 1fr); }
  .anv-work-grid, .anv-team-grid, .anv-svc-grid--presta, .anv-aides-grid, .anv-cards3, .anv-review-rail.is-expanded { grid-template-columns: repeat(2, 1fr); }
  .anv-steps { grid-template-columns: repeat(2, 1fr); }
  .anv-case__media { aspect-ratio: 16 / 10; }
  .anv-phero__vis { max-width: 480px; }
}
@media (max-width: 820px) {
  .anv-nav, .anv-top__tel, .anv-top .anv-btn { display: none; }
  .anv-burger { display: flex; }
  .anv-dock { display: flex; }
  body { padding-bottom: 66px; }
  .anv-section { padding: 60px 0; }
  .anv-svc-grid { grid-template-columns: 1fr; }
  .anv-svc--feature { grid-column: auto; }
  .anv-svc--feature .anv-svc__media { aspect-ratio: 16 / 9; }
  .anv-foot__grid { grid-template-columns: 1fr 1fr; }
  .anv-foot__brand { grid-column: 1 / -1; }
  .anv-hero { min-height: 88vh; }
  .anv-plan-cols { columns: 1; }
}
@media (max-width: 560px) {
  .anv-band__grid, .anv-work-grid, .anv-team-grid, .anv-svc-grid--presta, .anv-aides-grid, .anv-cards3, .anv-steps, .anv-form__grid, .anv-review-rail.is-expanded { grid-template-columns: 1fr; }
  .anv-review-rail { grid-auto-columns: 86vw; }
  .anv-hero__proof { gap: 20px 30px; }
  .anv-case__body, .anv-form { padding: 26px 22px; }
}
