/* ==========================================================================
   Garcia Entreprise — feuille de styles principale
   Implementation des maquettes Claude Design (design-source/*.dc.html)
   Palette : #1F3F7A bleu nuit · #315CAA bleu · #FBD510 jaune · #1B2433 encre
   ========================================================================== */

:root {
  --blue-dark: #1F3F7A;
  --blue: #315CAA;
  --blue-deep: #0f2550;
  --blue-mid: #2a4d8c;
  --blue-pale: #EAF1FB;
  --blue-text: #c9d4ea;
  --blue-text-soft: #dfe6f3;
  --yellow: #FBD510;
  --ink: #1B2433;
  --muted: #4a5363;
  --line: #dde1e8;
  --line-soft: #eef0f3;
  --bg-soft: #F5F6F8;
  --ph: #e2e5ea;
  --field: #b9c0cc;
  --wrap: 1200px;
  --gut: 24px;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: #fff;
  font: 17px/1.6 "Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a { color: var(--blue); text-decoration: none; }
a:hover { color: var(--blue-dark); }

img { max-width: 100%; }

h1, h2, h3 { text-wrap: balance; }

:focus-visible { outline: 3px solid var(--yellow); outline-offset: 2px; }

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--yellow); color: var(--ink); font-weight: 700; padding: 12px 18px;
}
.skip-link:focus { left: 12px; top: 12px; }

/* ---------- utilitaires --------------------------------------------------- */

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gut); }

.spacer { flex: 1; }

.cover { width: 100%; height: 100%; object-fit: cover; display: block; }

.zoom { overflow: hidden; }
.zoom > img { transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.zoom:hover > img { transform: scale(1.07); }

.ph-box { background: var(--ph); }

/* Puce triangulaire jaune a ombre bleue — motif signature du design */
.tri {
  flex: none; display: block; width: 0; height: 0;
  border-left: var(--s, 16px) solid transparent;
  border-bottom: var(--s, 16px) solid var(--yellow);
  filter: drop-shadow(2px 2px 0 var(--blue));
}
.tri--10 { --s: 10px; }
.tri--11 { --s: 11px; }
.tri--12 { --s: 12px; }
.tri--18 { --s: 18px; }
.tri--34 { --s: 34px; }
.tri--34-deep { --s: 34px; filter: drop-shadow(4px 4px 0 var(--blue-deep)); }

.eyebrow { font-weight: 700; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
.eyebrow--blue { color: var(--blue); }
.eyebrow--yellow { color: var(--yellow); }
.eyebrow--navy { color: var(--blue-dark); }

.h2 { font-weight: 700; font-size: clamp(26px, 3vw, 36px); line-height: 1.12; letter-spacing: -.01em; margin: 6px 0 20px; }
.h2--blue { color: var(--blue); }
.h2--tight { margin: 6px 0 0; }

.lead { font-size: 19px; }

.crumbs { font-size: 14px; color: var(--muted); display: flex; gap: 8px; flex-wrap: wrap; }
.crumbs--light { color: var(--blue-text); }
.crumbs--ink { color: var(--ink); }

/* ---------- boutons ------------------------------------------------------- */

.btn {
  display: inline-block; padding: 13px 22px; border: none; border-radius: 3px;
  font: 700 17px "Source Sans 3", sans-serif; white-space: nowrap; cursor: pointer;
  text-align: center;
}
.btn--yellow { background: var(--yellow); color: var(--ink); box-shadow: 4px 4px 0 var(--blue); }
.btn--yellow:hover { color: var(--ink); }
.btn--yellow-deep { background: var(--yellow); color: var(--ink); box-shadow: 4px 4px 0 var(--blue-deep); }
.btn--yellow-deep:hover { color: var(--ink); }
.btn--yellow-navy { background: var(--yellow); color: var(--ink); box-shadow: 4px 4px 0 var(--blue-dark); }
.btn--yellow-navy:hover { color: var(--ink); }
.btn--blue { background: var(--blue); color: #fff; box-shadow: 4px 4px 0 var(--blue-dark); }
.btn--blue:hover { color: #fff; }
.btn--navy { background: var(--blue-dark); color: #fff; box-shadow: 4px 4px 0 var(--ink); }
.btn--navy:hover { color: #fff; }
.btn--outline { background: none; border: 2px solid var(--blue); color: var(--blue); padding: 11px 20px; }
.btn--outline-white { background: none; border: 2px solid #fff; color: #fff; padding: 11px 20px; }
.btn--outline-white:hover { color: #fff; }
.btn--outline-ink { background: none; border: 2px solid var(--ink); color: var(--ink); padding: 11px 20px; }
.btn--outline-ink:hover { color: var(--ink); }
.btn--sm { padding: 8px 14px; font-size: 15px; }

.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }

.tel-inline { font-weight: 700; font-size: 19px; color: var(--ink); white-space: nowrap; }
.tel-inline--white { color: #fff; }
.tel-inline--white:hover { color: #fff; }

/* ---------- en-tete ------------------------------------------------------- */

.site-header {
  position: sticky; top: 0; z-index: 20;
  background: #fff; border-bottom: 1px solid var(--line);
}
.header-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 10px var(--gut);
  display: flex; align-items: center; gap: 22px;
  font-weight: 600; font-size: 15px;
}
.logo { display: block; }
.logo img { height: 58px; display: block; }

.nav { display: flex; gap: 22px; align-items: center; }
.nav a { color: var(--ink); white-space: nowrap; }
.nav a:hover { color: var(--blue); }
.nav a.is-active { color: var(--blue); box-shadow: inset 0 -3px 0 var(--yellow); }

.mega-toggle {
  background: none; border: none; padding: 0; cursor: pointer;
  font: 600 15px "Source Sans 3", sans-serif; color: var(--ink);
  white-space: nowrap; display: flex; gap: 6px; align-items: center;
}
.mega-toggle:hover { color: var(--blue); }
.caret { font-size: 11px; transition: transform .2s; }
.mega-toggle[aria-expanded="true"] .caret { transform: rotate(180deg); }

.btn-quote {
  background: var(--yellow); color: var(--ink); padding: 9px 16px;
  font-weight: 700; border-radius: 3px; box-shadow: 3px 3px 0 var(--blue); white-space: nowrap;
}
.btn-quote:hover { color: var(--ink); }

.burger {
  background: none; border: 2px solid var(--blue); color: var(--blue);
  font: 700 14px "Source Sans 3", sans-serif; padding: 6px 12px;
  border-radius: 3px; cursor: pointer;
}

/* mega-menu services */
.mega {
  position: absolute; left: 0; right: 0; top: 100%;
  background: #fff; border-top: 1px solid var(--line);
  box-shadow: 0 18px 40px rgba(27, 36, 51, .16);
}
.mega[hidden] { display: none; }
.mega-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 26px var(--gut) 28px;
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)) 240px; gap: 16px;
}
.mega-card {
  display: flex; flex-direction: column; gap: 8px;
  color: var(--ink); padding: 8px; border-radius: 4px;
}
.mega-card:hover { background: var(--bg-soft); color: var(--ink); }
.mega-card .thumb { height: 110px; overflow: hidden; background: var(--ph); }
.mega-card .name { display: flex; gap: 8px; align-items: center; font-size: 17px; font-weight: 700; }
.mega-card .desc { font-size: 14px; font-weight: 400; color: var(--muted); line-height: 1.35; }
.mega-quote {
  background: var(--blue-dark); color: #fff; padding: 18px;
  display: flex; flex-direction: column; gap: 10px; justify-content: space-between;
}
.mega-quote .head { font-weight: 700; font-size: 18px; line-height: 1.25; margin-top: 6px; }
.mega-quote .tel { color: var(--yellow); font-weight: 900; font-size: 21px; white-space: nowrap; }
.mega-quote a:hover { color: var(--yellow); }
.mega-quote .btn { background: var(--yellow); color: var(--ink); box-shadow: none; }
.mega-quote .btn:hover { color: var(--ink); }

/* navigation mobile */
.mobile-nav { display: flex; flex-direction: column; border-top: 1px solid var(--line); font-weight: 600; }
.mobile-nav[hidden] { display: none; }
.mobile-nav a { padding: 14px var(--gut); color: var(--ink); border-bottom: 1px solid var(--line-soft); }
.mobile-nav a:last-child { border-bottom: none; }
.mobile-nav a.is-active { color: var(--blue); }

/* barre d'action mobile fixe */
.mobile-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  display: grid; grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--line); font-weight: 700; font-size: 16px;
}
.mobile-bar a { text-align: center; padding: 16px; }
.mobile-bar .call { background: #fff; color: var(--blue); }
.mobile-bar .quote { background: var(--yellow); color: var(--ink); }
.mobile-bar-spacer { height: 58px; }

@media (min-width: 1040px) {
  .burger, .mobile-nav, .mobile-bar, .mobile-bar-spacer { display: none !important; }
}
@media (max-width: 1039.98px) {
  .nav, .header-inner .btn-quote, .mega { display: none !important; }
  .logo img { height: 48px; }
}

/* ---------- bandeau CTA --------------------------------------------------- */

.cta-band { background: var(--yellow); }
.cta-band--blue { background: var(--blue); color: #fff; }
.cta-band--white { background: #fff; border-bottom: 1px solid var(--line); }
.cta-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 48px var(--gut);
  display: flex; flex-wrap: wrap; align-items: center; gap: 20px 28px;
}
.cta-text { flex: 1; min-width: 280px; }
.cta-text h2 {
  font-weight: 900; font-size: clamp(24px, 3vw, 32px); line-height: 1.1;
  letter-spacing: -.01em; margin: 0; color: var(--ink);
}
.cta-band--blue .cta-text h2 { color: #fff; font-size: clamp(24px, 3vw, 34px); }
.cta-band--white .cta-inner { padding: 56px var(--gut); }
.cta-band--white .cta-text h2 {
  font-weight: 700; font-size: clamp(26px, 3vw, 36px); line-height: 1.12; color: var(--blue-dark);
}
.cta-text p { margin: 6px 0 0; }

/* ---------- autres services ---------------------------------------------- */

.other-services { border-top: 1px solid var(--line); }
.other-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 36px var(--gut);
  display: flex; flex-wrap: wrap; gap: 12px 14px; align-items: center;
}
.other-inner > .label { font-weight: 700; margin-right: 6px; }
.chip {
  border: 1px solid var(--line); border-radius: 3px; padding: 8px 14px;
  color: var(--ink); font-weight: 600; display: flex; gap: 8px; align-items: center;
}
.chip:hover { border-color: var(--blue); color: var(--ink); }

/* ---------- pied de page ------------------------------------------------- */

.site-footer { background: var(--blue-dark); color: #fff; font-size: 15px; }
.footer-inner { max-width: var(--wrap); margin: 0 auto; padding: 48px var(--gut) 22px; }
.footer-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 32px; }
.footer-logo { background: #fff; display: inline-block; padding: 8px 12px; border-radius: 4px; }
.footer-logo img { height: 70px; display: block; }
.site-footer p { margin: 14px 0 0; }
.site-footer a { color: #fff; }
.site-footer a:hover { color: var(--yellow); }
.site-footer .tel { color: var(--yellow); font-weight: 700; }
.footer-col-body { margin-top: 10px; }
.footer-links { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; }
.footer-bottom {
  display: flex; flex-wrap: wrap; gap: 8px 18px;
  border-top: 1px solid rgba(255, 255, 255, .22);
  margin-top: 32px; padding-top: 16px; font-size: 14px;
}
.powered { display: flex; align-items: center; gap: 10px; color: #fff; white-space: nowrap; }
.powered > span { background: #fff; border-radius: 4px; padding: 2px 8px; display: block; }
.powered img { height: 30px; display: block; }

/* ==========================================================================
   Accueil
   ========================================================================== */

.hero-home {
  background: var(--blue-dark); color: #fff;
  clip-path: polygon(0 0, 100% 0, 100% 84%, 0 100%);
}
.hero-home-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 56px var(--gut) 120px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  gap: 40px; align-items: center;
}
.hero-home h1 {
  font-weight: 900; font-size: clamp(34px, 5vw, 54px); line-height: 1.04;
  letter-spacing: -.01em; margin: 10px 0 14px;
}
.hero-home p { font-size: 19px; margin: 0; }
.hero-home .btn-row { margin-top: 26px; }
.hero-collage {
  display: grid; grid-template-columns: 1.1fr 1fr; grid-template-rows: 170px 170px; gap: 10px;
}
.hero-collage > div { overflow: hidden; background: var(--blue-mid); }
.hero-collage > div:first-child { grid-row: span 2; }

.service-picker { max-width: var(--wrap); margin: -80px auto 0; padding: 0 var(--gut); position: relative; z-index: 2; }
.service-picker-card {
  background: #fff; border-radius: 4px; box-shadow: 0 8px 30px rgba(27, 36, 51, .14); padding: 22px var(--gut);
}
.service-picker h2 { margin: 0 0 14px; }
.service-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.service-tile {
  border: 1px solid var(--line); border-radius: 4px; padding: 14px;
  display: flex; flex-direction: column; gap: 6px; color: var(--ink);
}
.service-tile:hover { border-color: var(--blue); background: var(--bg-soft); color: var(--ink); }
.service-tile b { font-size: 17px; }
.service-tile .more { color: var(--blue); font-weight: 600; font-size: 14px; }

.split {
  max-width: var(--wrap); margin: 0 auto; padding: 72px var(--gut);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr));
  gap: 56px; align-items: center;
}
.framed-tl { position: relative; margin: 14px 0 0 14px; }
.framed-tl .shot { height: 380px; overflow: hidden; background: var(--ph); }
.framed-tl .corner {
  position: absolute; left: -14px; top: -14px; width: 0; height: 0;
  border-right: 100px solid transparent; border-top: 100px solid var(--yellow);
  filter: drop-shadow(-6px -6px 0 var(--blue));
}
.reasons { display: flex; flex-direction: column; gap: 20px; }
.reasons li { display: flex; gap: 14px; align-items: flex-start; }
.reasons .tri { margin-top: 6px; }
.reasons ul, .reasons-list { list-style: none; margin: 0; padding: 0; }

.section-soft { background: var(--bg-soft); }
.section-head {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; margin-bottom: 22px;
}
.section-head > div { flex: 1; min-width: 260px; }
.section-head h2 { margin: 6px 0 0; }

.projects-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 16px; }
.project-card { color: var(--ink); display: block; }
.project-card:hover { color: var(--ink); }
/* .shot et .meta sont des <span> : sans display:block ils restent inline,
   la hauteur est ignoree et la legende chevauche la rangee suivante. */
.project-card .shot { display: block; height: 210px; overflow: hidden; background: #dadee5; }
.project-card .meta { display: block; margin-top: 8px; }
.project-card .city { color: var(--muted); }

.steps-band { background: var(--blue-dark); color: #fff; }
.steps {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px;
}
.steps li { border-top: 3px solid var(--yellow); padding-top: 14px; }
.steps .n { font-weight: 900; font-size: 38px; line-height: 1; color: var(--yellow); }
.steps b { display: block; margin-top: 8px; font-size: 18px; }
.steps span { font-size: 15px; }

.map-frame-yellow { position: relative; margin: 0 14px 14px 0; }
.map-frame-yellow .back { position: absolute; inset: 14px -14px -14px 14px; background: var(--yellow); }
.map-frame-yellow .box {
  position: relative; height: 340px; border: 3px solid var(--blue); overflow: hidden; background: var(--ph);
}
.map-frame-yellow iframe, .map-box iframe { width: 100%; height: 100%; border: 0; display: block; }

.towns { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px 16px; }
.towns li { display: flex; gap: 10px; align-items: center; }
.towns li.more { color: var(--muted); }

.faq-wrap {
  max-width: var(--wrap); margin: 0 auto; padding: 64px var(--gut);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 40px;
}
.faq-side .card {
  border: 1px dashed var(--field); background: #fff; padding: 14px; font-size: 15px; margin-bottom: 10px;
}
.faq-list { grid-column: span 2; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.faq-item { background: #fff; border: 1px solid var(--line); border-radius: 4px; }
.faq-q {
  width: 100%; display: flex; gap: 12px; align-items: center; text-align: left;
  background: none; border: none; padding: 16px 18px;
  font: 700 17px "Source Sans 3", sans-serif; color: var(--ink); cursor: pointer;
}
.faq-q span:first-child { flex: 1; }
.faq-sign { color: var(--blue); font-size: 22px; line-height: 1; }
.faq-a { margin: 0; padding: 0 18px 16px; }
.faq-a[hidden] { display: none; }

/* ==========================================================================
   L'entreprise
   ========================================================================== */

.ent-hero { background: var(--blue-dark); color: #fff; overflow: hidden; }
.ent-hero-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 56px var(--gut) 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  gap: 24px 48px; align-items: end;
}
.ent-hero-text { padding-bottom: 56px; }
.ent-hero h1 {
  font-weight: 900; font-size: clamp(34px, 4.8vw, 56px); line-height: 1.02;
  letter-spacing: -.02em; margin: 10px 0 16px;
}
.ent-hero p { font-size: 19px; margin: 0; }
.ent-year {
  font-weight: 900; font-size: clamp(120px, 19vw, 240px); line-height: .78;
  letter-spacing: -.05em; color: var(--yellow); text-align: right;
  text-shadow: 8px 8px 0 var(--blue);
}

.portrait-frame { position: relative; margin: 0 0 14px 14px; }
.portrait-frame .back { position: absolute; inset: 14px 14px -14px -14px; background: var(--yellow); }
.portrait-slot {
  position: relative; height: 440px;
  background: repeating-linear-gradient(135deg, var(--line-soft) 0 8px, var(--ph) 8px 16px);
  display: flex; align-items: center; justify-content: center; text-align: center;
  font: 12px/1.5 ui-monospace, Menlo, Consolas, monospace; color: var(--muted); padding: 12px;
}

.pledges { background: var(--yellow); }
.pledge-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; }
.pledge { background: #fff; padding: 22px; box-shadow: 5px 5px 0 var(--blue); }
.pledge h3 { margin: 0 0 6px; font-size: 20px; color: var(--blue-dark); }
.pledge p { margin: 0; }
.pledges .h2 { color: var(--ink); }

.map-box { border: 3px solid var(--blue); }
.map-box .box { position: relative; height: 340px; overflow: hidden; background: var(--ph); }

/* ==========================================================================
   Pages service — communes
   ========================================================================== */

.svc-head { max-width: var(--wrap); margin: 0 auto; padding: 44px var(--gut) 0; }
.svc-head-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
  gap: 24px 56px; align-items: end; margin-top: 22px;
}
.svc-head h1 {
  font-weight: 900; font-size: clamp(36px, 5.4vw, 64px); line-height: 1;
  letter-spacing: -.02em; color: var(--blue-dark); margin: 10px 0 0;
}
.svc-head p { font-size: 19px; margin: 0 0 20px; }

.numbered { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); border-top: 2px solid var(--blue-dark); }
.numbered > div { padding: 24px 24px 0 0; }
.numbered .n {
  font-weight: 900; font-size: 44px; line-height: 1; color: var(--yellow);
  -webkit-text-stroke: 1.5px var(--blue);
}
.numbered h3 { font-size: 21px; margin: 12px 0 6px; color: var(--blue-dark); }
.numbered p { margin: 0; }

.bubbles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.bubbles li {
  background: #fff; border-radius: 4px; padding: 18px;
  display: flex; flex-direction: column; gap: 10px;
}
.bubbles .n {
  width: 34px; height: 34px; border-radius: 50%; background: var(--blue); color: #fff;
  font-weight: 900; display: flex; align-items: center; justify-content: center;
}
.bubbles b { font-size: 17px; line-height: 1.3; }

.duo {
  max-width: var(--wrap); margin: 0 auto; padding: 64px var(--gut);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 16px;
}
.duo > div { height: 320px; overflow: hidden; background: var(--ph); }

.hero-shot-wrap { max-width: var(--wrap); margin: 0 auto; padding: 40px var(--gut) 0; }
.hero-shot { position: relative; height: clamp(260px, 42vw, 480px); }
.hero-shot .shot { position: absolute; inset: 0; overflow: hidden; background: var(--ph); }
.hero-shot .corner {
  position: absolute; left: -12px; bottom: -12px; width: 0; height: 0;
  border-right: 140px solid transparent; border-bottom: 140px solid var(--yellow);
  filter: drop-shadow(-6px 6px 0 var(--blue));
}

/* Renovation */
.reno-hero { background: var(--yellow); }
.reno-hero-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 44px var(--gut) 64px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
  gap: 40px; align-items: center;
}
.reno-hero h1 {
  font-weight: 900; font-size: clamp(34px, 5vw, 58px); line-height: 1.02;
  letter-spacing: -.02em; color: var(--ink); margin: 10px 0 14px;
}
.reno-hero p { font-size: 19px; margin: 0 0 22px; }
.reno-hero .crumbs a { color: var(--blue-dark); }

.compare {
  position: relative; height: 400px; overflow: hidden;
  background: var(--blue-dark); border: 4px solid var(--ink); user-select: none;
}
.compare img { width: 100%; height: 100%; object-fit: cover; display: block; }
.compare .before { position: absolute; inset: 0; }
.compare .before img { filter: grayscale(1) contrast(.85) brightness(.8); }
.compare .handle { position: absolute; top: 0; bottom: 0; width: 3px; background: var(--yellow); transform: translateX(-50%); }
.compare .handle span {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 40px; height: 40px; border-radius: 50%; background: var(--yellow);
  border: 3px solid var(--ink); display: flex; align-items: center; justify-content: center;
  font-weight: 900; font-size: 14px;
}
.compare .tag { position: absolute; top: 12px; font-weight: 700; font-size: 13px; padding: 3px 10px; }
.compare .tag-before { left: 12px; background: var(--ink); color: #fff; }
.compare .tag-after { right: 12px; background: var(--yellow); color: var(--ink); }
.compare input[type="range"] {
  position: absolute; inset: 0; width: 100%; height: 100%;
  opacity: 0; cursor: ew-resize; margin: 0;
}
.compare-caption { font-size: 14px; margin: 8px 0 0; }

.rule-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.rule-list li {
  display: flex; gap: 14px; align-items: center; padding: 16px 0;
  border-bottom: 1px solid var(--line); font-weight: 600; font-size: 18px;
}

.pull-quote { background: var(--blue-dark); color: #fff; }
.pull-quote-inner {
  max-width: 900px; margin: 0 auto; padding: 80px var(--gut);
  display: flex; flex-direction: column; align-items: center; gap: 32px; text-align: center;
}
.pull-quote p { font-weight: 700; font-size: clamp(22px, 2.6vw, 30px); line-height: 1.4; margin: 0; }
.pull-quote .bar { display: block; width: 56px; height: 3px; background: var(--yellow); }

.mosaic { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); grid-auto-rows: 180px; gap: 14px; }
.mosaic > div { overflow: hidden; background: var(--ph); }
.mosaic > div.tall { grid-row: span 2; }

/* Charpente */
.dark-block { background: var(--blue-dark); color: #fff; }
.charp-hero {
  max-width: var(--wrap); margin: 0 auto; padding: 44px var(--gut) 72px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  gap: 48px; align-items: center;
}
.charp-hero h1 {
  font-weight: 900; font-size: clamp(36px, 5.4vw, 62px); line-height: 1;
  letter-spacing: -.02em; margin: 10px 0 16px;
}
.charp-hero p { font-size: 19px; margin: 0 0 24px; }
.charp-shot { position: relative; margin: 0 16px 16px 0; }
.charp-shot .back { position: absolute; inset: 16px -16px -16px 16px; border: 4px solid var(--yellow); }
.charp-shot .box { position: relative; height: 520px; overflow: hidden; background: var(--blue-mid); }

.rows-dark > .row {
  display: grid; grid-template-columns: 90px minmax(0, 1fr) minmax(0, 1.3fr);
  gap: 8px 24px; align-items: baseline; padding: 22px 0;
  border-top: 1px solid rgba(255, 255, 255, .2);
}
.rows-dark .n { font-weight: 900; font-size: 40px; line-height: 1; color: var(--yellow); }
.rows-dark b { font-size: 22px; }
.rows-dark .desc { font-size: 17px; color: var(--blue-text-soft); }
.strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 4px; padding-bottom: 4px; }
.strip > div { height: 300px; overflow: hidden; }

/* Toiture */
.roof-hero { position: relative; height: clamp(360px, 48vw, 560px); background: var(--blue-mid); overflow: hidden; }
.roof-card-wrap { max-width: var(--wrap); margin: -150px auto 0; padding: 0 var(--gut); position: relative; }
.roof-card {
  background: #fff; max-width: 720px; padding: 32px 34px;
  border-top: 6px solid var(--blue); box-shadow: 0 10px 34px rgba(27, 36, 51, .16);
}
.roof-card h1 {
  font-weight: 900; font-size: clamp(32px, 4.4vw, 52px); line-height: 1.02;
  letter-spacing: -.02em; color: var(--blue-dark); margin: 8px 0 14px;
}
.roof-card p { font-size: 18px; margin: 0 0 22px; }

.top-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 18px; }
.top-cards > div { border: 1px solid var(--line); border-top: 5px solid var(--yellow); padding: 22px; }
.top-cards h3 { margin: 0 0 6px; font-size: 21px; color: var(--blue-dark); }
.top-cards p { margin: 0; }

.signs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.signs li { background: #fff; padding: 14px 16px; display: flex; gap: 12px; align-items: center; font-weight: 600; }

.duo-uneven {
  max-width: var(--wrap); margin: 0 auto; padding: 64px var(--gut);
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px;
}
.duo-uneven > div { height: 340px; overflow: hidden; background: var(--ph); min-width: 0; }
@media (max-width: 720px) { .duo-uneven { grid-template-columns: 1fr; } }

/* Piscine */
.pool-hero { background: var(--blue-pale); overflow: hidden; }
.pool-hero-inner {
  max-width: var(--wrap); margin: 0 auto; padding: 44px var(--gut) 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
  gap: 40px; align-items: stretch;
}
.pool-hero-text { padding-bottom: 64px; display: flex; flex-direction: column; justify-content: center; }
.pool-kicker { margin-top: 26px; display: flex; gap: 10px; align-items: center; }
.pool-kicker .bar { width: 36px; height: 3px; background: var(--yellow); }
.pool-hero h1 {
  font-weight: 900; font-size: clamp(38px, 5.6vw, 68px); line-height: .98;
  letter-spacing: -.025em; color: var(--blue-dark); margin: 12px 0 18px;
}
.pool-hero p { font-size: 19px; margin: 0 0 26px; max-width: 480px; }
.pool-shots { position: relative; min-height: 460px; margin-right: calc(-1 * max(24px, (100vw - 1200px) / 2 + 24px)); }
.pool-shots .big {
  position: absolute; inset: 0; overflow: hidden; background: #cfdcef;
  clip-path: polygon(18% 0, 100% 0, 100% 100%, 0 100%);
}
.pool-shots .inset {
  position: absolute; left: 0; bottom: 36px; width: min(46%, 240px); height: 170px;
  overflow: hidden; background: #cfdcef; border: 6px solid #fff; box-shadow: 8px 8px 0 var(--yellow);
}
@media (max-width: 1039.98px) {
  .pool-shots { margin-right: 0; min-height: 340px; }
  .pool-shots .big { clip-path: none; }
}

.why-pool {
  max-width: var(--wrap); margin: 0 auto; padding: 72px var(--gut) 64px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  gap: 40px; align-items: start;
}
.why-rows { grid-column: span 2; min-width: 0; display: flex; flex-direction: column; }
.why-rows .row {
  display: grid; grid-template-columns: 40px 180px minmax(0, 1fr); gap: 8px 20px;
  align-items: baseline; padding: 18px 0; border-bottom: 1px solid var(--line);
}
.why-rows b { font-size: 21px; color: var(--blue-dark); }
@media (max-width: 620px) {
  .why-rows .row { grid-template-columns: 40px minmax(0, 1fr); }
  .why-rows .row > span:last-child { grid-column: 2; }
}

.timeline { list-style: none; margin: 10px 0 0; padding: 0; position: relative; }
.timeline .spine { position: absolute; left: 19px; top: 10px; bottom: 10px; width: 2px; background: var(--blue); }
.timeline li { position: relative; display: flex; gap: 22px; padding: 14px 0; }
.timeline .n {
  flex: none; position: relative; z-index: 1; width: 40px; height: 40px; border-radius: 50%;
  background: #fff; border: 2px solid var(--blue); color: var(--blue);
  font-weight: 900; display: flex; align-items: center; justify-content: center;
}
.timeline b { font-size: 19px; color: var(--blue-dark); }

/* ==========================================================================
   Realisations
   ========================================================================== */

.real-head { max-width: var(--wrap); margin: 0 auto; padding: 48px var(--gut) 28px; }
.real-head-top {
  display: flex; flex-wrap: wrap; gap: 16px 40px; align-items: flex-end;
  border-bottom: 2px solid var(--ink); padding-bottom: 22px;
}
.real-head-top > div { flex: 1; min-width: 280px; }
.real-head h1 {
  font-weight: 900; font-size: clamp(40px, 6vw, 76px); line-height: .95;
  letter-spacing: -.03em; color: var(--blue-dark); margin: 10px 0 0;
}
.real-head p { max-width: 420px; margin: 0; }
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
/* Meme langage que les autres boutons du site : angles a 3px et palette bleu
   /jaune, plutot que les pastilles noires arrondies de la maquette. */
.filter {
  font: 700 15px "Source Sans 3", sans-serif; padding: 8px 16px; border-radius: 3px;
  cursor: pointer; border: 2px solid var(--blue); background: #fff; color: var(--blue);
}
.filter:hover { background: var(--bg-soft); }
.filter[aria-pressed="true"] {
  background: var(--blue); color: #fff; border-color: var(--blue);
  box-shadow: 3px 3px 0 var(--yellow);
}

.real-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  grid-auto-rows: 240px; grid-auto-flow: dense; gap: 14px;
}
.real-item { position: relative; display: block; overflow: hidden; background: var(--ph); }
.real-item.big { grid-column: span 2; grid-row: span 2; }
.real-item[hidden] { display: none; }
.real-item .label {
  position: absolute; left: 0; bottom: 0; background: #fff; padding: 8px 14px;
  border-top: 4px solid var(--yellow); color: var(--ink);
}
.real-item .label span { font-size: 14px; color: var(--muted); }
@media (max-width: 1039.98px) { .real-item.big { grid-column: span 1; grid-row: span 1; } }

/* ==========================================================================
   Contact
   ========================================================================== */

.contact-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); }
.contact-aside {
  background: var(--blue-dark); color: #fff;
  padding: 56px max(24px, calc((100vw - 1200px) / 2 + 24px));
  display: flex; flex-direction: column; gap: 28px;
}
.contact-aside h1 {
  font-weight: 900; font-size: clamp(34px, 4.6vw, 54px); line-height: 1.02;
  letter-spacing: -.02em; margin: 10px 0 12px;
}
.contact-aside > div > p { font-size: 18px; margin: 0; }
.tel-block {
  display: block; background: var(--yellow); color: var(--ink);
  padding: 18px 22px; box-shadow: 5px 5px 0 var(--blue-deep);
}
.tel-block:hover { color: var(--ink); }
.tel-block .k { font-weight: 700; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; }
.tel-block .v { font-weight: 900; font-size: clamp(28px, 3.4vw, 38px); letter-spacing: -.01em; }
.contact-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; font-size: 16px; }
.contact-facts .val { margin-top: 6px; }
.contact-map { border: 3px solid var(--yellow); }
.contact-map .box { position: relative; height: 240px; overflow: hidden; background: var(--ph); }
.contact-map iframe { width: 100%; height: 100%; border: 0; display: block; }

.contact-form-col {
  background: #fff;
  padding: 56px max(24px, calc((100vw - 1200px) / 2 + 24px)) 56px 40px;
}
@media (max-width: 1039.98px) { .contact-form-col { padding: 48px var(--gut); } }

.quote-form { display: flex; flex-direction: column; gap: 18px; max-width: 560px; }
.type-label { font-weight: 700; margin-bottom: 8px; }
.type-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.type-pills input { position: absolute; opacity: 0; pointer-events: none; }
.type-pill {
  display: inline-block;
  font: 600 15px "Source Sans 3", sans-serif; padding: 8px 14px; border-radius: 3px;
  cursor: pointer; border: 2px solid var(--field); background: #fff; color: var(--ink);
}
.type-pills input:checked + .type-pill { border-color: var(--blue); background: var(--blue); color: #fff; }
.type-pills input:focus-visible + .type-pill { outline: 3px solid var(--yellow); outline-offset: 2px; }
.field-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.field { display: flex; flex-direction: column; gap: 5px; font-weight: 600; font-size: 15px; }
.field input, .field textarea {
  font: 16px "Source Sans 3", sans-serif; padding: 11px 12px;
  border: 1px solid var(--field); border-radius: 3px; color: var(--ink);
}
.field textarea { resize: vertical; }
.field input:focus, .field textarea:focus { border-color: var(--blue); }
.consent { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; color: var(--muted); }
.consent input { margin-top: 4px; }
.quote-form .btn { align-self: flex-start; padding: 14px 26px; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.form-sent { max-width: 520px; display: flex; flex-direction: column; gap: 14px; padding-top: 40px; }
.form-sent h2 { font-weight: 900; font-size: 34px; line-height: 1.1; color: var(--blue-dark); margin: 0; }
.form-sent p { margin: 0; }
.form-error {
  background: #fff4f4; border: 1px solid #e0b4b4; border-left: 4px solid #c0392b;
  padding: 12px 14px; margin: 0; font-size: 15px;
}

/* ==========================================================================
   Pages legales
   ========================================================================== */

.legal-head { background: var(--bg-soft); border-bottom: 1px solid var(--line); }
.legal-head-inner { max-width: var(--wrap); margin: 0 auto; padding: 44px var(--gut) 36px; }
.legal-head h1 {
  font-weight: 900; font-size: clamp(34px, 4.6vw, 52px); line-height: 1.02;
  letter-spacing: -.02em; color: var(--blue-dark); margin: 16px 0 8px;
}
.legal-head .updated { margin: 0; color: var(--muted); }

.legal-body {
  max-width: var(--wrap); margin: 0 auto; padding: 40px var(--gut) 72px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: 48px; align-items: start;
}
.legal-toc { position: sticky; top: 90px; }
/* :not(.btn) — sinon cette regle (0,1,1) ecrase le padding et la couleur de
   .btn--sm (0,1,0) et le bouton se retrouve sans padding horizontal. */
.legal-toc a:not(.btn) {
  display: flex; gap: 10px; padding: 7px 0; color: var(--ink);
  font-weight: 600; font-size: 15px; border-bottom: 1px solid var(--line-soft);
}
.legal-toc a:not(.btn):hover { color: var(--blue); }
.legal-toc a .n { color: var(--blue); font-weight: 900; width: 22px; }
.legal-toc .btn { margin-top: 22px; }
.legal-article { grid-column: span 2; min-width: 0; max-width: 760px; }
.legal-article section { scroll-margin-top: 90px; padding: 28px 0; border-top: 1px solid var(--line); }
.legal-article h2 {
  display: flex; gap: 14px; align-items: baseline;
  font-weight: 700; font-size: 24px; line-height: 1.2; color: var(--blue-dark); margin: 0 0 12px;
}
.legal-article h2 .n { font-weight: 900; color: var(--blue); font-size: 28px; }
.legal-article p { margin: 0 0 12px; }
.legal-article dl { margin: 0; display: grid; grid-template-columns: minmax(140px, 220px) minmax(0, 1fr); gap: 8px 20px; }
.legal-article dt { font-weight: 700; }
.legal-article dd { margin: 0; }
.legal-article ul { margin: 0 0 12px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; }
.legal-article ul li { display: flex; gap: 12px; align-items: baseline; }
.tbd { color: var(--muted); font-style: italic; }
@media (max-width: 620px) {
  .legal-article dl { grid-template-columns: 1fr; gap: 2px 0; }
  .legal-article dd { margin-bottom: 10px; }
}

/* ---------- espacements de section ---------------------------------------- */

.pad-64 { padding: 64px var(--gut); }
.pad-72 { padding: 72px var(--gut); }
.pad-80-64 { padding: 80px var(--gut) 64px; }
.pad-24-72 { padding: 24px var(--gut) 72px; }
.inner { max-width: var(--wrap); margin: 0 auto; }
