/* ==========================================================================
   SYSTÈME ÉNERGIE — Charte graphique
   Bleu profond / bleu ciel / orange — Rénover · Isoler · Économiser
   ========================================================================== */

:root {
  --blue-950:#0a2547;
  --blue-900:#0f3364;
  --blue-800:#164683;
  --blue-700:#1a4f9c;
  --blue-600:#2062b8;
  --sky:#2fa5dc;
  --sky-soft:#e8f5fb;
  --orange:#e56a34;
  --orange-deep:#c9531f;
  --orange-soft:#fdeee6;
  --ink:#1c2430;
  --muted:#5b6b7d;
  --muted-soft:#8b98a7;
  --line:#e3eaf1;
  --line-strong:#d0dbe6;
  --bg:#f6f9fc;
  --white:#ffffff;
  --shadow-lg:0 40px 110px -30px rgba(10,37,71,.25);
  --shadow-md:0 18px 44px -20px rgba(10,37,71,.18);
  --shadow-sm:0 6px 18px -8px rgba(10,37,71,.12);
  --r-xl:28px;
  --r-lg:20px;
  --r-md:14px;
  --r-sm:10px;
  --header-h:78px;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; scroll-padding-top:calc(var(--header-h) + 18px); }
body {
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img { max-width:100%; height:auto; }
a { color:var(--blue-700); text-decoration:none; }
a:hover { color:var(--blue-600); }

h1,h2,h3,h4 { font-family:'Sora', 'Manrope', sans-serif; color:var(--blue-950); line-height:1.18; margin:0 0 14px; letter-spacing:-.02em; }
h1 { font-size:clamp(34px, 5vw, 54px); font-weight:700; }
h2 { font-size:clamp(26px, 3.4vw, 38px); font-weight:700; }
h3 { font-size:clamp(19px, 2.2vw, 24px); font-weight:600; }
p { margin:0 0 16px; }
.lead { font-size:18px; color:var(--muted); }
strong { color:var(--blue-900); }

.sr-only {
  position:absolute !important; width:1px !important; height:1px !important;
  padding:0 !important; margin:-1px !important; overflow:hidden !important;
  clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
}

.container { max-width:1180px; margin:0 auto; padding:0 22px; }
.section { padding:84px 0; }
.section.alt { background:var(--bg); }
.center { text-align:center; }

/* ------------------------------------------------ Eyebrow / badges */
.eyebrow {
  display:inline-flex; align-items:center; gap:9px;
  font-size:12px; font-weight:800; letter-spacing:2.2px; text-transform:uppercase;
  color:var(--orange); margin-bottom:14px;
}
.eyebrow::before { content:""; width:22px; height:2px; background:var(--orange); border-radius:2px; }

.badge {
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 15px; border-radius:999px;
  background:var(--sky-soft); color:var(--blue-800);
  font-size:12.5px; font-weight:700; letter-spacing:.2px;
  border:1px solid rgba(47,165,220,.25);
}
.badge.orange { background:var(--orange-soft); color:var(--orange-deep); border-color:rgba(229,106,52,.25); }

/* ------------------------------------------------ Header */
.site-header {
  position:sticky; top:0; z-index:60;
  height:var(--header-h);
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(14px) saturate(1.1);
  -webkit-backdrop-filter:blur(14px) saturate(1.1);
  border-bottom:1px solid var(--line);
}
.header-in {
  max-width:1500px; margin:0 auto; padding:0 22px;
  height:100%; display:flex; align-items:center; gap:18px;
}
.logo-link { display:flex; align-items:center; flex:0 0 auto; }
.logo-link img { height:44px; width:auto; display:block; }

.main-nav { display:flex; align-items:center; gap:4px; margin-left:auto; }
.main-nav a {
  padding:10px 10px; border-radius:10px;
  color:var(--blue-950); font-size:14px; font-weight:600;
  transition:background .18s ease, color .18s ease;
  white-space:nowrap;
}
.main-nav a:hover { background:var(--sky-soft); color:var(--blue-700); }
.main-nav a[aria-current="page"] { color:var(--blue-700); background:var(--sky-soft); }

/* Sous-menus déroulants (carte centrée façon premium) */
.nav-item { position:relative; display:flex; align-items:center; }
.nav-item > a.nav-parent { display:inline-flex; align-items:center; }
.nav-item > a.nav-parent .sub-arrow {
  display:inline-block; width:7px; height:7px; margin-left:7px; margin-bottom:2px;
  border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform:rotate(45deg); opacity:.55; transition:transform .2s ease, opacity .2s ease;
}
.nav-item:hover > a.nav-parent .sub-arrow,
.nav-item:focus-within > a.nav-parent .sub-arrow {
  transform:rotate(225deg) translate(-1px,-1px); opacity:.9;
}
.nav-dropdown {
  position:absolute; top:100%; left:50%;
  transform:translate(-50%, 8px);
  min-width:264px; padding:10px; margin:0; z-index:80;
  background:#fff; border:1px solid var(--line); border-radius:16px;
  box-shadow:0 24px 60px -18px rgba(10,37,71,.28);
  opacity:0; visibility:hidden;
  transition:opacity .18s ease, transform .18s ease, visibility .18s;
  display:flex; flex-direction:column; gap:1px;
}
/* pont invisible pour ne pas perdre le survol entre le lien et la carte */
.nav-dropdown::before {
  content:""; position:absolute; top:-10px; left:0; right:0; height:12px;
}
.nav-item:hover > .nav-dropdown,
.nav-item:focus-within > .nav-dropdown {
  opacity:1; visibility:visible; transform:translate(-50%, 4px);
}
.nav-dropdown a {
  display:block; padding:11px 16px; border-radius:11px;
  font-size:14px; font-weight:600; color:var(--blue-950); white-space:nowrap;
  transition:background .15s ease, color .15s ease;
}
.nav-dropdown a:hover { background:var(--sky-soft); color:var(--blue-700); }
.nav-dropdown a.dropdown-hub {
  color:var(--muted); font-weight:600;
  border-bottom:1px solid var(--line); border-radius:11px 11px 0 0;
  margin-bottom:5px; padding-bottom:13px;
}
.nav-dropdown a.dropdown-hub:hover { color:var(--blue-700); }

.header-cta {
  display:inline-flex; align-items:center; gap:9px;
  margin-left:4px; padding:11px 14px; border-radius:12px;
  background:linear-gradient(135deg, var(--orange), #ef8352);
  color:#fff !important; font-size:14px; font-weight:800; letter-spacing:.2px;
  box-shadow:0 12px 26px -12px rgba(229,106,52,.7);
  transition:transform .18s ease, box-shadow .18s ease;
  white-space:nowrap;
}
.header-cta:hover { transform:translateY(-1px); color:#fff; box-shadow:0 16px 30px -12px rgba(229,106,52,.8); }

.nav-toggle { display:none; margin-left:auto; background:none; border:1px solid var(--line-strong); border-radius:10px; padding:9px 12px; cursor:pointer; font-size:20px; line-height:1; color:var(--blue-900); }

/* ------------------------------------------------ Hero */
.hero {
  position:relative; overflow:hidden; color:#fff;
  background:
    radial-gradient(720px 380px at 88% -10%, rgba(47,165,220,.35), transparent 60%),
    radial-gradient(560px 300px at -8% 108%, rgba(229,106,52,.25), transparent 55%),
    linear-gradient(150deg, var(--blue-950) 0%, var(--blue-900) 45%, var(--blue-800) 78%, var(--blue-700) 100%);
}
.hero::before {
  content:""; position:absolute; inset:0;
  background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.06) 1px, transparent 0);
  background-size:24px 24px; opacity:.55; pointer-events:none;
}
.hero-in { position:relative; z-index:1; padding:92px 22px 86px; }
.hero h1 { color:#fff; max-width:21ch; }
.hero h1 em { font-style:normal; color:#ffb38c; }
.hero .lead { color:rgba(255,255,255,.82); max-width:58ch; }
.hero-badges { display:flex; flex-wrap:wrap; gap:10px; margin:26px 0 34px; }
.hero-badge {
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 16px; border-radius:999px;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18);
  color:#fff; font-size:13px; font-weight:600;
}
.hero-badge::before { content:""; width:6px; height:6px; border-radius:50%; background:var(--sky); }

/* ------------------------------------------------ Bandeaux visuels des pages principales */
.visual-hero {
  position:relative; overflow:hidden; margin:0; line-height:0; background:#e9f5ff;
}
.visual-hero-image { display:block; width:100%; height:auto; }
.visual-hero--isolation {
  --quote-left:6.08%; --quote-width:17.86%; --phone-left:25.51%; --phone-width:16.85%;
  --button-top:78.45%; --button-height:14.09%; --quote-left-h:.18232; --quote-width-h:.53591;
  --phone-left-h:.76519; --phone-width-h:.50552; --button-top-h:.78453; --button-height-h:.14088;
  --phone-icon-left:15.4%;
}
.visual-hero--chauffage {
  --quote-left:7%; --quote-width:14.92%; --phone-left:23.02%; --phone-width:14.36%;
  --button-top:76.52%; --button-height:10.5%; --quote-left-h:.20994; --quote-width-h:.46271;
  --phone-left-h:.69061; --phone-width-h:.43094; --button-top-h:.76519; --button-height-h:.10497;
  --phone-icon-left:16%;
}
.visual-hero--solaire {
  --quote-left:5.57%; --quote-width:15.19%; --phone-left:22.15%; --phone-width:15.33%;
  --button-top:78.31%; --button-height:11.6%; --quote-left-h:.16713; --quote-width-h:.4558;
  --phone-left-h:.66436; --phone-width-h:.45994; --button-top-h:.78315; --button-height-h:.11602;
  --phone-icon-left:13.5%;
}
.visual-hero--menuiserie {
  --quote-left:5.29%; --quote-width:16.9%; --phone-left:23.3%; --phone-width:15.7%;
  --button-top:79.42%; --button-height:11.74%; --quote-left-h:.15884; --quote-width-h:.50691;
  --phone-left-h:.6989; --phone-width-h:.47099; --button-top-h:.7942; --button-height-h:.1174;
  --phone-icon-left:15.3%;
}
.visual-hero--ventilation {
  --quote-left:6.08%; --quote-width:14.92%; --phone-left:22.33%; --phone-width:15.33%;
  --button-top:80.11%; --button-height:12.29%; --quote-left-h:.18232; --quote-width-h:.44751;
  --phone-left-h:.66989; --phone-width-h:.45994; --button-top-h:.8011; --button-height-h:.12293;
  --phone-icon-left:13.5%;
}
.visual-hero--interieur {
  --quote-left:6.58%; --quote-width:15.7%; --phone-left:23.9%; --phone-width:14.96%;
  --button-top:79.56%; --button-height:12.02%; --quote-left-h:.19751; --quote-width-h:.47099;
  --phone-left-h:.71685; --phone-width-h:.4489; --button-top-h:.79558; --button-height-h:.12017;
  --phone-icon-left:14.7%;
}
.visual-hero--aides {
  --quote-left:4.33%; --quote-width:16.8%; --phone-left:22.01%; --phone-width:14.13%;
  --button-top:82.46%; --button-height:11.33%; --quote-left-h:.12983; --quote-width-h:.50414;
  --phone-left-h:0.66022; --phone-width-h:0.42403; --button-top-h:.82459; --button-height-h:.11326;
  --phone-icon-left:16.0%;
}
.visual-hero-seo {
  position:absolute !important; width:1px !important; height:1px !important;
  padding:0 !important; margin:-1px !important; overflow:hidden !important;
  clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
}
.visual-hero-link {
  position:absolute; z-index:2; top:var(--button-top); height:var(--button-height); border-radius:18px;
  line-height:normal; color:transparent; overflow:hidden;
  transition:transform .18s ease, border-color .2s ease, box-shadow .2s ease;
}
.visual-hero-link--quote { left:var(--quote-left); width:var(--quote-width); }
.visual-hero-link--phone { left:var(--phone-left); width:var(--phone-width); }
.visual-hero-link--quote::before {
  content:""; position:absolute; z-index:1; top:0; left:-60%; width:38%; height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);
  transform:skewX(-18deg); animation:devisShine 3.2s ease-in-out infinite; pointer-events:none;
}
.visual-hero-link--quote::after {
  content:""; position:absolute; inset:1px; border-radius:16px; pointer-events:none;
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  animation:devisGlow 2.4s ease-in-out infinite;
}
.visual-hero-link:hover { transform:translateY(clamp(-2px,-.11vw,-1px)); }
.visual-hero-phone-icon {
  position:absolute; z-index:2; left:var(--phone-icon-left); top:50%; width:9%; aspect-ratio:1;
  display:block; transform:translateY(-50%); pointer-events:none;
}
.visual-hero-phone-icon::before {
  content:""; position:absolute; inset:-18%; border-radius:50%;
  border:max(1px,.1vw) solid var(--sky); animation:phonePulse 1.8s ease-out infinite;
}
.visual-hero-link:focus-visible { outline:4px solid #fff; outline-offset:-5px; }
@keyframes devisGlow { 0%,100%{box-shadow:0 12px 26px -10px rgba(255,122,0,.65)} 50%{box-shadow:0 18px 38px -8px rgba(255,122,0,.95)} }
@keyframes devisShine { 0%{left:-60%} 55%,100%{left:130%} }
@keyframes phonePulse { 0%{transform:scale(.85);opacity:.55} 100%{transform:scale(1.7);opacity:0} }
@media (prefers-reduced-motion: reduce) {
  .visual-hero-link--quote::before, .visual-hero-link--quote::after,
  .visual-hero-phone-icon::before { animation:none; }
}

.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:16px 30px; border-radius:14px; border:none; cursor:pointer;
  font-family:'Manrope',sans-serif; font-size:15px; font-weight:800; letter-spacing:.3px;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.btn-primary {
  position:relative; isolation:isolate; overflow:hidden;
  background:
    linear-gradient(100deg,transparent 34%,rgba(255,255,255,.55) 48%,transparent 62%) 160% 0 / 260% 100% no-repeat,
    linear-gradient(135deg, var(--orange), #ef8352);
  color:#fff !important;
  box-shadow:0 18px 40px -14px rgba(229,106,52,.75);
  animation:ctaActionGlow 2.4s ease-in-out infinite, ctaActionShine 3.2s ease-in-out infinite;
}
.btn-primary:hover { transform:translateY(-2px); box-shadow:0 24px 48px -14px rgba(229,106,52,.85); }
.btn-ghost {
  background:rgba(255,255,255,.08); color:#fff !important;
  border:1px solid rgba(255,255,255,.3);
}
.btn-ghost:hover { background:rgba(255,255,255,.16); transform:translateY(-2px); }
.btn-blue { background:linear-gradient(135deg, var(--blue-700), var(--blue-600)); color:#fff !important; box-shadow:0 18px 40px -14px rgba(26,79,156,.6); }
.btn-blue:hover { transform:translateY(-2px); }
.btn-row { display:flex; flex-wrap:wrap; gap:14px; }

/* Animations communes des appels à l'action, contenues dans chaque bouton. */
.header-cta[href^="tel:"] {
  position:relative; isolation:isolate; overflow:hidden;
  background:
    linear-gradient(100deg,transparent 34%,rgba(255,255,255,.5) 48%,transparent 62%) 160% 0 / 260% 100% no-repeat,
    linear-gradient(135deg, var(--orange), #ef8352);
  animation:ctaActionGlow 2.4s ease-in-out infinite, ctaActionShine 3.2s ease-in-out infinite;
}
.btn-ghost[href^="tel:"] {
  position:relative; isolation:isolate; overflow:hidden;
}
.cta-phone-icon {
  position:relative; z-index:1; flex:0 0 1.35em; width:1.35em; height:1.35em;
  display:inline-flex; align-items:center; justify-content:center;
  line-height:1; transform-origin:center 62%;
  animation:ctaPhoneRing 2.2s ease-in-out infinite;
}
.cta-phone-icon::before {
  content:""; position:absolute; inset:-.18em; border:1px solid currentColor;
  border-radius:50%; pointer-events:none;
  animation:ctaPhonePulse 1.8s ease-out infinite;
}
.cta-phone-number { position:relative; z-index:1; white-space:nowrap; }

@keyframes ctaActionGlow {
  0%,100% { box-shadow:0 12px 26px -10px rgba(229,106,52,.62); }
  50% { box-shadow:0 18px 38px -8px rgba(229,106,52,.9); }
}
@keyframes ctaActionShine {
  0% { background-position:160% 0, 0 0; }
  55%,100% { background-position:-60% 0, 0 0; }
}
@keyframes ctaPhoneRing {
  0%,62%,100% { transform:rotate(0); }
  66% { transform:rotate(-13deg); }
  72% { transform:rotate(11deg); }
  78% { transform:rotate(-9deg); }
  84% { transform:rotate(6deg); }
  90% { transform:rotate(-3deg); }
}
@keyframes ctaPhonePulse {
  0% { transform:scale(.82); opacity:.58; }
  100% { transform:scale(1.55); opacity:0; }
}
@media (prefers-reduced-motion: reduce) {
  .btn-primary, .header-cta[href^="tel:"], .cta-phone-icon, .cta-phone-icon::before { animation:none; }
}

/* ------------------------------------------------ Breadcrumb */
.breadcrumb { padding:16px 0 0; font-size:13px; color:var(--muted-soft); }
.breadcrumb ol { list-style:none; display:flex; flex-wrap:wrap; gap:6px; margin:0; padding:0; }
.breadcrumb li + li::before { content:"›"; margin-right:6px; color:var(--muted-soft); }
.breadcrumb a { color:var(--muted); }

/* ------------------------------------------------ Cards */
.grid { display:grid; gap:22px; }
.grid-2 { grid-template-columns:repeat(2, minmax(0,1fr)); }
.grid-3 { grid-template-columns:repeat(3, minmax(0,1fr)); }
.grid-4 { grid-template-columns:repeat(4, minmax(0,1fr)); }

.card {
  background:#fff; border:1px solid var(--line);
  border-radius:var(--r-lg); padding:30px 28px;
  box-shadow:var(--shadow-sm);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  display:flex; flex-direction:column;
}
.card:hover { transform:translateY(-4px); box-shadow:var(--shadow-md); border-color:var(--sky); }
.card .icon {
  width:54px; height:54px; border-radius:15px; flex:0 0 auto;
  display:grid; place-items:center; font-size:25px; margin-bottom:18px;
  background:linear-gradient(150deg, var(--sky-soft), #d8eef9);
  border:1px solid rgba(47,165,220,.25);
}
.card h3 a { color:var(--blue-950); }
.card h3 a:hover { color:var(--blue-700); }
.card p { color:var(--muted); font-size:14.5px; margin-bottom:14px; }
.card .card-link { margin-top:auto; font-size:14px; font-weight:800; color:var(--orange); }
.card .card-link:hover { color:var(--orange-deep); }

.card ul.checks { list-style:none; margin:0 0 16px; padding:0; display:grid; gap:9px; }
.card ul.checks li { padding-left:26px; position:relative; font-size:14.5px; color:var(--muted); }
.card ul.checks li::before { content:"✓"; position:absolute; left:0; top:0; color:var(--sky); font-weight:800; }
.card ul.checks li a { color:var(--muted); text-decoration:none; transition:color .16s ease; }
.card ul.checks li a:hover { color:var(--blue-700); text-decoration:underline; }

.service-visual-grid { align-items:start; }
.service-visual-card {
  margin:0; overflow:hidden; border:1px solid rgba(47,165,220,.3);
  border-radius:var(--r-lg); background:var(--blue-900);
  box-shadow:0 18px 42px -22px rgba(10,37,71,.42);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.service-visual-card:hover {
  transform:translateY(-4px); border-color:var(--sky);
  box-shadow:0 26px 54px -22px rgba(10,37,71,.52);
}
.service-visual-card a {
  display:block; aspect-ratio:4 / 3; overflow:hidden; border-radius:inherit;
}
.service-visual-card a:focus-visible {
  outline:4px solid var(--orange); outline-offset:-4px;
}
.service-visual-card img {
  display:block; width:100%; height:100%; object-fit:cover;
  transition:transform .35s cubic-bezier(.2,.7,.2,1), filter .35s ease;
}
.service-visual-card:hover img { transform:scale(1.012); filter:saturate(1.03); }

/* ------------------------------------------------ Produit (sections détaillées) */
.produit {
  display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:44px; align-items:start;
  padding:44px 0; border-top:1px solid var(--line);
}
.produit:first-of-type { border-top:none; }
.produit-aside {
  background:var(--bg); border:1px solid var(--line);
  border-radius:var(--r-lg); padding:26px;
  position:sticky; top:calc(var(--header-h) + 20px);
}
.produit-aside h4 { font-size:14px; text-transform:uppercase; letter-spacing:1.4px; color:var(--blue-800); margin-bottom:14px; }
.produit-aside ul { list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.produit-aside li { padding-left:26px; position:relative; font-size:14.5px; color:var(--muted); }
.produit-aside li::before { content:"✓"; position:absolute; left:0; color:var(--orange); font-weight:800; }

/* ------------------------------------------------ Steps */
.steps { counter-reset:step; }
.step { position:relative; padding-left:64px; margin-bottom:26px; }
.step::before {
  counter-increment:step; content:counter(step, decimal-leading-zero);
  position:absolute; left:0; top:0;
  width:46px; height:46px; border-radius:13px;
  display:grid; place-items:center;
  font-family:'Sora',sans-serif; font-weight:700; font-size:16px;
  color:var(--blue-700); background:var(--sky-soft); border:1px solid rgba(47,165,220,.3);
}
.step h3 { margin-bottom:6px; }
.step p { color:var(--muted); font-size:15px; }

/* ------------------------------------------------ FAQ */
.faq details {
  background:#fff; border:1px solid var(--line); border-radius:var(--r-md);
  margin-bottom:12px; overflow:hidden;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.faq details[open] { border-color:var(--sky); box-shadow:var(--shadow-sm); }
.faq summary {
  cursor:pointer; list-style:none; padding:20px 54px 20px 22px;
  font-weight:700; color:var(--blue-950); font-size:15.5px; position:relative;
}
.faq summary::-webkit-details-marker { display:none; }
.faq summary::after {
  content:"+"; position:absolute; right:20px; top:50%; transform:translateY(-50%);
  width:28px; height:28px; border-radius:9px; display:grid; place-items:center;
  background:var(--sky-soft); color:var(--blue-700); font-weight:800; font-size:17px;
  transition:transform .2s ease;
}
.faq details[open] summary::after { content:"–"; }
.faq .faq-body { padding:0 22px 20px; color:var(--muted); font-size:15px; }

/* ------------------------------------------------ Zone d'intervention */
.zone-chips { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.zone-chip {
  padding:10px 16px; border-radius:999px; font-size:13.5px; font-weight:700;
  background:#fff; color:var(--blue-800); border:1px solid var(--line-strong);
}
.zone-chip strong { color:var(--orange); font-weight:800; }

/* ------------------------------------------------ Bandeau CTA */
.cta-band {
  position:relative; overflow:hidden; color:#fff;
  background:
    radial-gradient(560px 280px at 100% 0%, rgba(47,165,220,.3), transparent 60%),
    linear-gradient(135deg, var(--blue-950), var(--blue-800));
  border-radius:var(--r-xl); padding:52px 54px;
  display:flex; align-items:center; gap:34px; flex-wrap:wrap;
  box-shadow:var(--shadow-lg);
}
.cta-band h2 { color:#fff; margin-bottom:8px; }
.cta-band p { color:rgba(255,255,255,.8); margin:0; max-width:52ch; }
.cta-band .btn-row { margin-left:auto; }

/* ------------------------------------------------ Trust bar */
.trust { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.trust-item { text-align:center; padding:26px 16px; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); }
.trust-item .big { font-family:'Sora',sans-serif; font-size:30px; font-weight:700; color:var(--blue-700); display:block; }
.trust-item .sub { font-size:13.5px; color:var(--muted); font-weight:600; }

/* ------------------------------------------------ Formulaires */
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.field-full { grid-column:1 / -1; }
label { display:block; margin-bottom:8px; font-size:13px; font-weight:700; color:var(--blue-900); }
input, textarea, select {
  width:100%; border:1px solid var(--line-strong); background:#fff;
  border-radius:12px; padding:14px 15px; color:var(--ink);
  font:500 15px/1.45 'Manrope',sans-serif; outline:none;
  transition:border-color .18s ease, box-shadow .18s ease;
}
input:focus, textarea:focus, select:focus { border-color:var(--sky); box-shadow:0 0 0 4px rgba(47,165,220,.15); }
textarea { min-height:130px; resize:vertical; }
.status { display:none; padding:13px 16px; border-radius:11px; font-size:14px; font-weight:700; margin-top:12px; }
.status.ok { display:block; color:#0d4f26; background:#e9f9ee; border:1px solid #bfe9cc; }
.status.err { display:block; color:#7a1a12; background:#fff1ef; border:1px solid #f6cec6; }

/* ------------------------------------------------ Rénovation intérieure */
.interior-intro-grid {
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);
  gap:52px; align-items:center;
}
.interior-visual-placeholder {
  position:relative; overflow:hidden; min-height:320px; aspect-ratio:16/9; margin:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px;
  padding:42px; text-align:center; border:1px solid var(--line); border-radius:var(--r-xl);
  background:
    radial-gradient(circle at 82% 12%, rgba(47,165,220,.28), transparent 34%),
    radial-gradient(circle at 12% 88%, rgba(229,106,52,.22), transparent 35%),
    linear-gradient(145deg,#fff 0%,#edf5fc 54%,#fdf0e9 100%);
  box-shadow:var(--shadow-lg);
}
.interior-visual-placeholder::after {
  content:""; position:absolute; inset:16px; border:1px solid rgba(26,79,156,.12);
  border-radius:calc(var(--r-xl) - 8px); pointer-events:none;
}
.interior-visual-placeholder img {
  position:relative; z-index:1; width:92px; height:92px; object-fit:contain;
  padding:18px; background:#fff; border-radius:24px;
  box-shadow:0 20px 42px -22px rgba(10,37,71,.45);
}
.interior-visual-placeholder figcaption { position:relative; z-index:1; max-width:32ch; color:var(--muted); line-height:1.55; }
.interior-visual-placeholder figcaption strong { display:block; margin-bottom:4px; font-family:'Sora',sans-serif; font-size:19px; }
.interior-visual-placeholder figcaption span { display:block; font-size:13.5px; }
.interior-visual-placeholder.interior-visual-photo {
  min-height:0; padding:0; background:#fff;
}
.interior-visual-placeholder.interior-visual-photo::after { display:none; }
.interior-visual-placeholder.interior-visual-photo img {
  display:block; width:100%; height:100%; max-width:none; padding:0;
  object-fit:contain; border-radius:0; background:transparent; box-shadow:none;
}
.interior-steps { counter-reset:interior-step; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.interior-step {
  counter-increment:interior-step; position:relative; min-height:150px; padding:26px 24px 24px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm); transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.interior-step:hover { transform:translateY(-5px); border-color:rgba(47,165,220,.48); box-shadow:var(--shadow-md); }
.interior-step::before {
  content:counter(interior-step, decimal-leading-zero); display:inline-flex; align-items:center; justify-content:center;
  width:42px; height:42px; margin-bottom:18px; border-radius:13px;
  background:var(--orange-soft); color:var(--orange-deep); font-family:'Sora',sans-serif; font-weight:700; font-size:13px;
}
.interior-step h3 { margin:0; font-size:17px; }
.interior-checks-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.interior-note {
  padding:22px 24px; background:linear-gradient(135deg,var(--sky-soft),#fff);
  border:1px solid rgba(47,165,220,.25); border-radius:var(--r-md); color:var(--muted);
}
.interior-note strong { display:block; margin-bottom:5px; }

/* ------------------------------------------------ Footer */
.site-footer { background:var(--blue-950); color:rgba(255,255,255,.75); margin-top:90px; }
.footer-in { max-width:1180px; margin:0 auto; padding:60px 22px 30px; }
.footer-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr 1.2fr; gap:36px; padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,.12); }
.footer-grid h4 { color:#fff; font-size:14px; letter-spacing:1.3px; text-transform:uppercase; margin-bottom:16px; }
.footer-grid ul { list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.footer-grid a { color:rgba(255,255,255,.75); font-size:14.5px; }
.footer-grid a:hover { color:#fff; }
.footer-brand img { height:40px; width:auto; background:#fff; padding:7px 12px; border-radius:11px; }
.footer-brand p { font-size:14px; margin-top:16px; line-height:1.7; }
.footer-social { margin-top:28px; }
.footer-social-title {
  margin:0 0 12px; color:#fff; font-family:'Sora',sans-serif;
  font-size:12px; font-weight:700; letter-spacing:1.3px; text-transform:uppercase;
}
.footer-social-links { display:flex; flex-wrap:wrap; gap:12px; }
.footer-social-link {
  width:46px; height:46px; padding:0 !important; border-radius:13px;
  display:grid; place-items:center; color:#fff !important;
  border:1px solid rgba(255,255,255,.26); background:rgba(255,255,255,.08);
  transition:transform .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.footer-social-link svg { width:23px; height:23px; display:block; fill:currentColor; }
.footer-social-link.instagram svg rect,
.footer-social-link.instagram svg circle:not(.instagram-dot) { fill:none; stroke:currentColor; stroke-width:2; }
.footer-social-link.instagram .instagram-dot { fill:currentColor; }
.footer-social-link.facebook:hover,
.footer-social-link.facebook:focus-visible { background:#1877f2; border-color:#1877f2; }
.footer-social-link.instagram:hover,
.footer-social-link.instagram:focus-visible {
  background:linear-gradient(135deg,#833ab4,#e1306c 58%,#f77737); border-color:#e1306c;
}
.footer-social-link.linkedin:hover,
.footer-social-link.linkedin:focus-visible { background:#0a66c2; border-color:#0a66c2; }
.footer-social-link:hover,
.footer-social-link:focus-visible { transform:translateY(-3px); box-shadow:0 12px 24px -12px rgba(0,0,0,.65); }
.footer-social-link:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.footer-social--standalone {
  margin:0 0 24px; padding:20px 0 24px; border-bottom:1px solid rgba(255,255,255,.12);
  display:flex; align-items:center; gap:18px;
}
.footer-social--standalone .footer-social-title { margin:0; }
.footer-interior-links { display:flex; flex-wrap:wrap; gap:10px 22px; padding-bottom:24px; border-bottom:1px solid rgba(255,255,255,.12); }
.footer-interior-links a { color:rgba(255,255,255,.75); font-size:14px; }
.footer-interior-links a:hover { color:#fff; }
.footer-bottom { display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between; padding-top:24px; font-size:13px; color:rgba(255,255,255,.55); }
.footer-bottom a { color:rgba(255,255,255,.65); }

/* ------------------------------------------------ Articles (blog) */
.article-card {
  background:#fff; border:1px solid var(--line); border-radius:22px;
  overflow:hidden; display:flex; flex-direction:column;
  box-shadow:0 18px 40px -28px rgba(10,37,71,.45);
  transition:transform .25s ease, box-shadow .25s ease;
}
.article-card:hover { transform:translateY(-4px); box-shadow:0 26px 52px -26px rgba(10,37,71,.55); }

.article-card .article-cover {
  position:relative; width:100%; aspect-ratio:16/9; overflow:hidden;
  background:linear-gradient(150deg, var(--blue-900), var(--blue-700));
}
.article-card .article-cover img {
  width:100%; height:100%; object-fit:cover; display:block;
}
.article-card .article-cover.emoji-fallback {
  display:flex; align-items:center; justify-content:center; font-size:52px;
  background:linear-gradient(150deg, var(--sky-soft), #d8eef9);
}

.article-card .article-body { padding:22px 24px 24px; display:flex; flex-direction:column; flex:1; }
.article-meta {
  display:flex; flex-wrap:wrap; gap:12px; align-items:center;
  font-size:13px; color:var(--muted-soft); margin-bottom:14px;
}
.article-meta time { display:inline-flex; align-items:center; gap:6px; }
.article-meta time::before {
  content:""; width:14px; height:14px; flex:none;
  background:var(--muted-soft);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3.5' y='5' width='17' height='16' rx='2.5'/%3E%3Cpath d='M3.5 9.5h17M8 3v3.5M16 3v3.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3.5' y='5' width='17' height='16' rx='2.5'/%3E%3Cpath d='M3.5 9.5h17M8 3v3.5M16 3v3.5'/%3E%3C/svg%3E") center/contain no-repeat;
}
.article-tag {
  padding:5px 14px; border-radius:999px; font-size:12px; font-weight:700;
  background:#fff6f0; color:var(--orange-deep); border:1.5px solid var(--orange);
  letter-spacing:.2px;
}
.article-card h3 { font-size:20px; margin-bottom:12px; line-height:1.32; font-family:'Sora',sans-serif; }
.article-card h3 a { color:var(--blue-950); }
.article-card h3 a:hover { color:var(--blue-700); }
.article-card p { color:var(--muted); font-size:14.5px; flex:1; line-height:1.65; margin-bottom:20px; }
.article-card .card-link {
  align-self:flex-start; display:inline-flex; align-items:center; gap:9px;
  padding:12px 24px; border-radius:12px; font-size:14.5px; font-weight:700;
  color:#fff !important; text-decoration:none;
  background:linear-gradient(135deg, var(--blue-800), var(--blue-600));
  border:1.5px solid var(--orange);
  box-shadow:0 10px 24px -12px rgba(10,37,71,.5);
  transition:filter .2s ease, transform .2s ease;
}
.article-card .card-link:hover { filter:brightness(1.12); transform:translateY(-1px); }

@media (max-width:640px) {
  .article-card .card-link { align-self:stretch; justify-content:center; }
}

/* Page article */
.post-body { max-width:760px; margin:0 auto; }
.post-body h2 { margin-top:44px; }
.post-body h3 { margin-top:30px; }
.post-body img { border-radius:var(--r-md); }
.post-body blockquote {
  margin:26px 0; padding:20px 24px; border-left:4px solid var(--orange);
  background:var(--orange-soft); border-radius:0 var(--r-md) var(--r-md) 0;
  color:var(--blue-900); font-weight:600;
}
.post-body ul, .post-body ol { padding-left:24px; color:var(--ink); }
.post-body li { margin-bottom:8px; }
.post-highlight {
  margin:30px 0; padding:24px 26px; border-radius:var(--r-md);
  background:var(--sky-soft); border:1px solid rgba(47,165,220,.3);
}
.post-highlight strong { color:var(--blue-800); }

.post-hero-image {
  width:100%; aspect-ratio:16/9; object-fit:cover; border-radius:var(--r-lg);
  margin-bottom:8px; box-shadow:0 20px 44px -24px rgba(10,37,71,.35);
}

.post-checklist {
  margin:26px 0; padding:22px 26px; background:#fff; border:1px solid var(--line);
  border-radius:var(--r-md); list-style:none; display:grid; gap:11px;
}
.post-checklist li { position:relative; padding-left:28px; font-size:14.5px; color:var(--ink); line-height:1.6; margin-bottom:0; }
.post-checklist li::before { content:"✓"; position:absolute; left:0; top:0; color:var(--blue-700); font-weight:800; }

.post-faq { margin:20px 0 34px; display:grid; gap:14px; }
.post-faq-item {
  background:#fff; border:1px solid var(--line); border-radius:var(--r-md);
  padding:18px 22px; transition:border-color .2s ease, box-shadow .2s ease;
}
.post-faq-item:hover { border-color:var(--sky); box-shadow:var(--shadow-sm); }
.post-faq-item h3 { margin:0 0 8px; font-size:16px; color:var(--blue-900); }
.post-faq-item p { margin:0; color:var(--muted); font-size:14.5px; line-height:1.65; }

/* ------------------------------------------------ Reveal animations */
.reveal { opacity:0; transform:translateY(22px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
.reveal.visible { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity:1; transform:none; transition:none; }
  html { scroll-behavior:auto; }
}

/* ------------------------------------------------ Responsive */
@media (max-width: 1240px) {
  .main-nav {
    position:fixed; top:var(--header-h); left:0; right:0; bottom:auto;
    max-height:calc(100vh - var(--header-h));
    max-height:calc(100dvh - var(--header-h));
    overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
    background:#fff; border-bottom:1px solid var(--line);
    flex-direction:column; align-items:stretch; gap:2px;
    padding:14px 18px 24px; margin:0;
    box-shadow:var(--shadow-md);
    display:none;
  }
  .main-nav.open { display:flex; }
  .main-nav a { padding:13px 14px; font-size:16px; }
  .header-cta { margin:10px 0 0; justify-content:center; }
  .nav-toggle { display:block; }
  .nav-item { flex-direction:column; align-items:stretch; }
  .nav-item > a.nav-parent .sub-arrow { display:none; }
  .nav-dropdown {
    position:static; transform:none; min-width:0; z-index:auto;
    display:flex !important; opacity:1 !important; visibility:visible !important;
    box-shadow:none; border:none; border-left:2px solid var(--line);
    border-radius:0; padding:2px 0 6px 14px; margin:0 0 4px;
  }
  .nav-dropdown::before { display:none; }
  .nav-dropdown a { padding:9px 14px; font-size:14.5px; white-space:normal; }
  .nav-dropdown a.dropdown-hub { border-bottom:none; margin-bottom:0; padding-bottom:9px; }
}
@media (max-width: 1020px) {
  .grid-3, .grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .produit { grid-template-columns:1fr; gap:26px; }
  .produit-aside { position:static; }
  .trust { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .interior-intro-grid { grid-template-columns:1fr; gap:34px; }
  .interior-steps { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .section { padding:60px 0; }
  .hero-in { padding:64px 22px 60px; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns:1fr; }
  .form-grid { grid-template-columns:1fr; }
  .cta-band { padding:36px 26px; }
  .cta-band .btn-row { margin-left:0; }
  .trust { grid-template-columns:1fr 1fr; gap:12px; }
  .footer-grid { grid-template-columns:1fr; }
  .logo-link img { height:38px; }
  .interior-visual-placeholder { min-height:240px; padding:30px 22px; }
  .interior-steps { grid-template-columns:1fr; }
  .interior-checks-2 { grid-template-columns:1fr; }
  .visual-hero { --visual-hero-h:max(210px,min(60vw,300px)); height:var(--visual-hero-h); min-height:210px; }
  .visual-hero-image { width:auto; max-width:none; height:100%; object-fit:contain; object-position:left center; }
  .visual-hero-link { top:calc(var(--visual-hero-h) * var(--button-top-h)); height:calc(var(--visual-hero-h) * var(--button-height-h)); }
  .visual-hero-link--quote { left:calc(var(--visual-hero-h) * var(--quote-left-h)); width:calc(var(--visual-hero-h) * var(--quote-width-h)); }
  .visual-hero-link--phone { left:calc(var(--visual-hero-h) * var(--phone-left-h)); width:calc(var(--visual-hero-h) * var(--phone-width-h)); }
}

/* ------------------------------------------------ Témoignages clients */
.reviews-hero {
  position:relative; overflow:hidden;
  background:
    radial-gradient(circle at 86% 22%, rgba(47,165,220,.32), transparent 25%),
    radial-gradient(circle at 18% 90%, rgba(242,123,73,.18), transparent 32%),
    linear-gradient(135deg, var(--blue-950), var(--blue-800) 58%, #126fa7);
  color:#fff;
}
.reviews-hero::after {
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.24;
  background-image:radial-gradient(rgba(255,255,255,.65) .7px, transparent .7px);
  background-size:18px 18px;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 68%);
  mask-image:linear-gradient(90deg, transparent, #000 68%);
}
.reviews-hero-in {
  position:relative; z-index:1; max-width:1180px; margin:0 auto; padding:78px 24px 82px;
  display:grid; grid-template-columns:minmax(0,1fr) auto; gap:54px; align-items:center;
}
.reviews-hero-copy { max-width:760px; }
.reviews-hero .breadcrumb { margin-bottom:24px; }
.reviews-hero .breadcrumb a, .reviews-hero .breadcrumb li { color:rgba(255,255,255,.75); }
.reviews-hero h1 { color:#fff; max-width:14ch; margin-bottom:22px; }
.reviews-hero .lead { color:rgba(255,255,255,.82); max-width:64ch; margin:0; }
.reviews-google-badge {
  width:230px; max-width:100%; aspect-ratio:1264 / 1244; border-radius:5.5%; overflow:hidden;
  background:#176cb2; box-shadow:0 28px 70px -30px rgba(0,0,0,.58);
}
.reviews-google-image { display:block; width:100%; height:100%; object-fit:cover; }
.reviews-intro { max-width:780px; margin:0 auto 46px; text-align:center; }
.reviews-intro .eyebrow { justify-content:center; }
.reviews-intro p { color:var(--muted); }
.reviews-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }
.review-card {
  position:relative; min-height:245px; padding:28px; border:1px solid var(--line); border-radius:22px;
  display:flex; flex-direction:column; background:#fff;
  box-shadow:0 20px 44px -32px rgba(10,37,71,.52);
  transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.review-card:hover { transform:translateY(-4px); border-color:rgba(47,165,220,.5); box-shadow:0 28px 54px -30px rgba(10,37,71,.58); }
.review-card-head { display:flex; gap:14px; align-items:center; margin-bottom:20px; }
.review-avatar {
  width:48px; height:48px; flex:none; border-radius:50%; display:grid; place-items:center;
  color:#fff; font:700 20px/1 'Sora',sans-serif; background:linear-gradient(145deg,var(--blue-800),var(--sky));
}
.review-card:nth-child(3n+2) .review-avatar { background:linear-gradient(145deg,#ef6a3e,var(--orange)); }
.review-card:nth-child(3n+3) .review-avatar { background:linear-gradient(145deg,#5530b8,#8b68e8); }
.review-author { min-width:0; }
.review-author strong { display:block; color:var(--blue-950); font:700 17px/1.3 'Sora',sans-serif; }
.review-source { display:flex; align-items:center; gap:6px; color:var(--muted-soft); font-size:13px; margin-top:4px; }
.review-source .google-letter { color:#4285f4; font:bold 15px/1 Arial,sans-serif; }
.review-rating { margin-left:auto; color:#f7a928; letter-spacing:2px; white-space:nowrap; font-size:17px; }
.review-card blockquote { margin:0; color:var(--ink); font-size:17px; line-height:1.72; font-weight:600; }
.review-card blockquote::before { content:"“"; color:var(--orange); font:700 34px/0 'Sora',sans-serif; margin-right:4px; vertical-align:-8px; }
.reviews-proof {
  margin-top:52px; padding:32px; border-radius:24px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px;
  background:var(--sky-soft); border:1px solid rgba(47,165,220,.25);
}
.reviews-proof-item { padding:4px 12px; text-align:center; }
.reviews-proof-item strong { display:block; margin-bottom:7px; color:var(--blue-950); font:700 17px/1.35 'Sora',sans-serif; }
.reviews-proof-item span { color:var(--muted); font-size:14px; line-height:1.55; }
.reviews-google-cta { text-align:center; }
.reviews-google-cta p { max-width:680px; margin:0 auto 24px; color:var(--muted); }
.reviews-google-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:14px; }
@media (max-width:900px) {
  .reviews-hero-in { grid-template-columns:1fr; gap:32px; }
  .reviews-google-badge { width:min(230px,100%); margin:0 auto; }
  .reviews-proof { grid-template-columns:1fr; gap:18px; }
}
@media (max-width:640px) {
  .reviews-hero-in { padding:58px 22px 62px; }
  .reviews-hero h1 { max-width:none; }
  .reviews-grid { grid-template-columns:1fr; }
  .review-card { min-height:0; padding:24px 22px; }
  .review-rating { position:absolute; right:22px; top:74px; }
  .review-card blockquote { padding-top:8px; font-size:16px; }
  .reviews-proof { padding:26px 18px; }
  .reviews-google-actions .btn { width:100%; justify-content:center; }
}
