/* ==========================================================================
   EMJ Peinture et Décoration : feuille unique (tokens, base, composants)
   Maquette Nicolam Studio. Palette, typographie et réglages : Invariants du prompt.
   ========================================================================== */

/* ---------- Polices hébergées sur le site : Fjalla One, Neucha, Source Sans 3, latin ---------- */
@font-face{ font-family:"Fjalla One"; font-style:normal; font-weight:400; font-display:swap; src:url("assets/fonts/fjalla-one-latin-400-normal.woff2") format("woff2"); }
@font-face{ font-family:"Neucha"; font-style:normal; font-weight:400; font-display:swap; src:url("assets/fonts/neucha-latin-400-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:400; font-display:swap; src:url("assets/fonts/source-sans-3-latin-400-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:600; font-display:swap; src:url("assets/fonts/source-sans-3-latin-600-normal.woff2") format("woff2"); }
@font-face{ font-family:"Source Sans 3"; font-style:normal; font-weight:700; font-display:swap; src:url("assets/fonts/source-sans-3-latin-700-normal.woff2") format("woff2"); }

/* ---------- Tokens ---------- */
:root{
  --fond:#FAF7F2;
  --principale:#0B6FB0; --principale-claire:#E4F1FA; --acc-photo:#5FB6E7;
  --accent:#9A5A22; --accent-vif:#EDBE8C; --accent-vif-texte:#5E3410; --accent-clair:#F4E7D7;
  --texte:#1F1F1F; --texte-2:#5B5752;
  --or:#F2B01E;
  --surface:#FFFFFF;
  --erreur:#B42318;
  --carmin:#A3243B;
  --ambre:#9A6512; --ambre-texte:#8A5A0F;
  --filet:rgba(31,31,31,.14);
  --annonce-top:#1D7FC0;
  --hover-ghost:#E4F1FA;
  --principale-hover:#095E96;
  --accent-hover:#854D1D;

  --grad:linear-gradient(135deg,#1F1F1F,#0B6FB0);                /* avatars, bordure de la carte de confiance */
  --grad-clair:linear-gradient(135deg,#F4E7D7 0%,#FFFFFF 100%);  /* rond et bouton rempli : teinte claire vers blanc */

  --f-titre:"Fjalla One","Arial Narrow",sans-serif;
  --f-texte:"Source Sans 3",system-ui,sans-serif;
  --f-accent:"Neucha","Fjalla One",sans-serif;
  --h1:clamp(2.4rem,1.6rem + 3.2vw,4rem);
  --h1-page:clamp(2rem,1.5rem + 2.2vw,3.25rem);
  --h2:clamp(1.9rem,1.4rem + 1.8vw,2.75rem);
  --h3:clamp(1.3rem,1.15rem + .6vw,1.6rem);
  --h4:1.125rem;
  --corps:1.0625rem;
  --chapo:clamp(1.125rem,1.06rem + .3vw,1.25rem);
  --caption:.875rem;
  --surtitre:.875rem;

  --r-btn:10px; --r-card:16px; --r-pill:999px;
  --container:1200px; --container-header:1320px; --pad:24px; --gap:24px;
  --ann-h:40px; --hdr-h:80px; --stack-h:calc(var(--ann-h) + var(--hdr-h));
  --logo-h:64px;
  --sh-card:0 2px 6px rgba(10,45,75,.06),0 10px 26px rgba(10,45,75,.11);
  --sh-soft:0 1px 2px rgba(10,45,75,.05),0 4px 12px rgba(10,45,75,.07);
  --ease:ease-in-out; --dur:.4s; --dur-in:.9s; --dur-open:.5s; --fill-dur:.6s; --dur-zoom:1.2s;
  --tk-lead:96px; --tk-fade:24px;
}
@media (max-width:767px){ :root{ --pad:16px; --gap:16px; --tk-fade:16px; --tk-lead:64px; --ann-h:36px; --hdr-h:68px; --logo-h:52px; } }

/* ---------- Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; -webkit-tap-highlight-color:transparent; scroll-padding-top:calc(var(--hdr-h) + 24px); }
body{ margin:0; background:var(--fond); color:var(--texte); overflow-x:clip; font-family:var(--f-texte);
  font-size:var(--corps); line-height:1.6; -webkit-font-smoothing:antialiased; }
img{ max-width:100%; height:auto; display:block; }
svg{ display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; letter-spacing:inherit; color:inherit; background:transparent; border:0; padding:0; margin:0; cursor:pointer; }
h1,h2,h3,h4,p,ul,ol,figure,blockquote{ margin:0; }
ul,ol{ padding:0; }
[hidden]{ display:none !important; }
::selection{ background:var(--principale); color:var(--fond); }
:focus-visible{ outline:2px solid var(--principale); outline-offset:3px; }
.nw{ white-space:nowrap; }
.visually-hidden{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

h1,h2,h3,h4{ font-family:var(--f-titre); color:var(--texte); font-weight:400; letter-spacing:0; text-wrap:wrap; font-synthesis:none; }
h1{ font-size:var(--h1); line-height:1.12; }
h2{ font-size:var(--h2); line-height:1.2; }
h3{ font-size:var(--h3); line-height:1.2; }
h4{ font-size:var(--h4); line-height:1.2; }
.acc{ font-family:var(--f-accent); font-size:1.12em; line-height:1; font-weight:400; color:var(--principale); }
.eyebrow{ display:inline-block; font-family:var(--f-texte); font-weight:700; font-size:var(--surtitre); line-height:1.4;
  letter-spacing:.12em; text-transform:uppercase; color:var(--principale); }
.lead{ font-size:var(--chapo); line-height:1.55; color:var(--texte-2); }

/* ---------- Layout ---------- */
.container{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:var(--pad); }
.section{ position:relative; isolation:isolate; padding:96px 0; }
.section > .container,.section > .defile{ position:relative; z-index:1; }
.section.is-tight{ padding-top:48px; }
.section::before,.qband::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
@media (max-width:767px){ .section{ padding-block:64px; } .section.is-tight{ padding-top:32px; } }
.bg-ab{ background:linear-gradient(180deg,#FAF7F2,#F4E7D7); }
.bg-ba{ background:linear-gradient(180deg,#F4E7D7,#FAF7F2); }
.bg-aba{ background:linear-gradient(180deg,#FAF7F2,#F4E7D7 50%,#FAF7F2); }
.bg-bab{ background:linear-gradient(180deg,#F4E7D7,#FAF7F2 50%,#F4E7D7); }

/* en-tête de section : le chapô prend la largeur de son titre, plancher ~70 caractères */
.shead{ display:flex; flex-direction:column; align-items:flex-start; gap:16px; margin-bottom:48px; width:fit-content; max-width:100%; min-width:min(100%,40rem); }
.shead .lead{ align-self:stretch; contain:inline-size; min-width:min(100%,40rem); }
.shead.center{ align-items:center; text-align:center; margin-inline:auto; }
.shead.center h2{ text-wrap:balance; }
@media (max-width:767px){ .shead{ margin-bottom:32px; width:auto; } }

/* ---------- Icônes (Lucide, trait 1,5, tracés d'origine) ---------- */
.ic{ width:20px; height:20px; flex:0 0 auto; }
.kic{ width:24px; height:24px; flex:0 0 auto; }

/* ---------- Boutons : coins doux 10px, icône à droite dans la couleur du libellé ---------- */
.btn{ position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:48px; padding:12px 22px;
  border-radius:var(--r-btn); border:1.5px solid transparent; white-space:nowrap; font-family:var(--f-texte);
  font-weight:700; font-size:1.0625rem; line-height:1.2; cursor:pointer; text-align:center;
  transition:transform var(--dur) var(--ease),background-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),
    color var(--dur) var(--ease),border-color var(--dur) var(--ease); }
.btn .ic{ width:20px; height:20px; }
.btn--ghost{ color:var(--principale); border-color:var(--principale); background-color:transparent; }
.btn--ghost:hover{ background-color:var(--hover-ghost); transform:translateY(-2px); box-shadow:var(--sh-soft); }
.btn--ghost:active{ transform:translateY(0) scale(.985); background-color:rgba(11,111,176,.18); }
.btn--on-photo{ color:#FFFFFF; border-color:rgba(255,255,255,.85); }
.btn--on-photo:hover{ background-color:rgba(250,247,242,.18); }
.btn--on-photo:active{ background-color:rgba(250,247,242,.26); }
.btn--on-photo:focus-visible{ outline-color:var(--fond); }
.btn-row{ display:flex; flex-wrap:wrap; gap:16px; }
.btn-row--center{ justify-content:center; }
.btn-row.is-stacked{ flex-direction:column; align-items:stretch; width:100%; }
.btn-row.is-stacked .btn{ width:100%; }

/* ---- Arrow Fill Button : tous les boutons pleins ---- */
.btn-fill{
  --btn-h:48px; --dot:28px;
  --dm:calc((var(--btn-h) - 3px - var(--dot)) / 2);
  --fxr:24px;
  --fill-ease:var(--ease);
  --f-bg:var(--grad-clair); --f-fg:var(--accent);
  --d-fg:var(--accent);
  --i-bg:var(--accent); --i-fg:var(--fond);
  height:var(--btn-h); min-height:var(--btn-h);
  padding:0 calc(var(--dm) + var(--dot) + 12px) 0 24px;
  gap:0; justify-content:center; color:var(--fond);
  background:var(--accent); border:1.5px solid rgba(255,255,255,.85);
  background-clip:padding-box; background-origin:padding-box; background-repeat:no-repeat;
  box-shadow:var(--sh-card); overflow:visible; -webkit-tap-highlight-color:transparent; }
.btn-fill:hover,.btn-fill:active{ transform:none; box-shadow:var(--sh-card); }
.btn-fill.is-wide{ padding-left:12px; }
.btn-fill__txt{ position:relative; z-index:1; display:inline-flex; align-items:center; }
.btn-fill__layer{ position:absolute; inset:-1.5px; z-index:2; display:flex; align-items:center; justify-content:inherit;
  padding:inherit; border:1.5px solid transparent; border-radius:inherit;
  background:var(--f-bg); color:var(--f-fg); background-origin:border-box; background-repeat:no-repeat;
  -webkit-clip-path:circle(calc(var(--dot) / 2) at right var(--fxr) top 50%);
  clip-path:circle(calc(var(--dot) / 2) at right var(--fxr) top 50%);
  transition:clip-path var(--fill-dur) var(--fill-ease),-webkit-clip-path var(--fill-dur) var(--fill-ease);
  pointer-events:none; }
.btn-fill__dot{ position:absolute; right:var(--dm); top:50%; width:var(--dot); height:var(--dot); margin-top:calc(var(--dot) / -2);
  border-radius:50%; display:grid; place-items:center; color:var(--d-fg); transition:color var(--fill-dur) var(--fill-ease); }
.btn-fill__dot > *{ grid-area:1 / 1; }
.btn-fill__inv{ position:absolute; inset:0; border-radius:50%; background:var(--i-bg); opacity:0; transition:opacity var(--fill-dur) var(--fill-ease); }
.btn-fill .btn-fill__ic{ position:relative; width:calc(var(--dot) * .57); height:calc(var(--dot) * .57); transition:transform var(--fill-dur) var(--fill-ease); }
.btn-fill__spin{ display:none; position:relative; width:calc(var(--dot) * .5); height:calc(var(--dot) * .5); border-radius:50%;
  border:2px solid currentColor; border-top-color:transparent; animation:btn-spin .8s linear infinite; }
@keyframes btn-spin{ to{ transform:rotate(360deg); } }
.btn-fill.is-filled .btn-fill__layer,.btn-fill:focus-visible .btn-fill__layer{
  -webkit-clip-path:circle(var(--fr, 600px) at right var(--fxr) top 50%);
  clip-path:circle(var(--fr, 600px) at right var(--fxr) top 50%); }
.btn-fill.is-filled .btn-fill__inv,.btn-fill:focus-visible .btn-fill__inv{ opacity:1; }
.btn-fill.is-filled .btn-fill__dot,.btn-fill:focus-visible .btn-fill__dot{ color:var(--i-fg); }
.btn-fill--pivot.is-filled .btn-fill__ic,.btn-fill--pivot:focus-visible .btn-fill__ic{ transform:rotate(45deg); }
@media (hover:hover){
  .btn-fill:not(:disabled):hover .btn-fill__layer{
    -webkit-clip-path:circle(var(--fr, 600px) at right var(--fxr) top 50%);
    clip-path:circle(var(--fr, 600px) at right var(--fxr) top 50%); }
  .btn-fill:not(:disabled):hover .btn-fill__inv{ opacity:1; }
  .btn-fill:not(:disabled):hover .btn-fill__dot{ color:var(--i-fg); }
  .btn-fill--pivot:not(:disabled):hover .btn-fill__ic{ transform:rotate(45deg); }
}
.btn-fill:focus-visible{ outline:2px solid var(--principale); outline-offset:3px; }
.hero .btn-fill:focus-visible{ outline-color:var(--fond); }
.btn-fill.is-busy,.btn-fill[aria-busy="true"]{ cursor:progress; pointer-events:none; }
.btn-fill.is-busy .btn-fill__ic{ display:none; }
.btn-fill.is-busy .btn-fill__spin{ display:block; }
.btn-fill:disabled:not(.is-busy){ opacity:.5; cursor:not-allowed; }
.btn-fill--sm{ --btn-h:44px; --dot:26px; --fxr:22px; padding-left:20px; font-size:1rem; }
@media (max-width:359px){ .btn-fill{ padding-left:18px; font-size:1rem; } .btn-fill.is-wide{ padding-left:12px; } }

/* ---------- Badges ---------- */
.badges{ display:flex; flex-wrap:wrap; gap:12px; }
.badge{ display:inline-flex; align-items:center; gap:8px; padding:6px 12px; border-radius:var(--r-btn); background:var(--principale-claire);
  color:var(--principale); font-weight:700; font-size:.875rem; line-height:1.3; white-space:nowrap; }
.badge .ic{ width:16px; height:16px; color:var(--principale); }
.g-g{ width:16px; height:16px; flex:0 0 auto; }
.g-word{ width:auto; }

/* ---------- Étoiles ---------- */
.stars{ display:inline-flex; gap:2px; color:var(--or); }
.star{ width:16px; height:16px; flex:0 0 auto; fill:currentColor; }

/* ---------- Barre d'annonce ---------- */
.annonce{ position:relative; z-index:51; height:var(--ann-h); display:flex; align-items:center; overflow:hidden;
  background:linear-gradient(180deg,var(--annonce-top) 0%,var(--principale) 100%); color:var(--fond); }
.annonce__in{ width:100%; max-width:var(--container-header); margin-inline:auto; padding-inline:var(--pad); overflow:hidden; }
.annonce .tk{ justify-content:center; }
.annonce__set{ list-style:none; margin:0; padding:0; display:flex; align-items:center; gap:16px; flex:0 0 auto; }
.annonce li{ display:inline-flex; align-items:center; gap:8px; font-size:.9375rem; font-weight:700; line-height:1; white-space:nowrap; }
.annonce li .ic{ width:18px; height:18px; color:var(--fond); }
.annonce li.sep{ opacity:.75; }
.annonce .tk > .annonce__set[aria-hidden]{ display:none; }
@media (max-width:929px){   /* bascule mesurée sur la ligne réelle : 867px + marges 2 × 24 + barre de défilement 15 = 930px ; en dessous, ticker, vide de lecture devant CHAQUE copie */
  .annonce__in{ padding-inline:0;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 var(--tk-fade),#000 calc(100% - var(--tk-fade)),transparent);
    mask-image:linear-gradient(90deg,transparent,#000 var(--tk-fade),#000 calc(100% - var(--tk-fade)),transparent); }
  .annonce .tk{ justify-content:flex-start; width:max-content; }
  .annonce .tk > .annonce__set[aria-hidden]{ display:flex; }
  .annonce__set{ padding-left:var(--tk-lead); }
  .annonce li.sep:first-child{ display:none; }
}
@media (max-width:767px){ .annonce li{ font-size:.875rem; } .annonce li .ic{ width:16px; height:16px; } }

/* ---------- Tickers ---------- */
.tk{ display:flex; }
.tk.run{ animation:tk var(--tk-dur,30s) linear infinite; will-change:transform; }
.tk.paused{ animation-play-state:paused !important; }
@keyframes tk{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes tk-in{ from{ transform:translateX(var(--lead,96px)); } to{ transform:translateX(0); } }

/* ---------- Logo détouré du client ---------- */
.logo{ display:block; height:var(--logo-h); width:auto; }

/* ---------- Header : verre de la crème densifié, un seul état ---------- */
.hdr{ position:sticky; top:0; z-index:50; }
.hdr__bar{ position:relative; height:var(--hdr-h);
  background:linear-gradient(180deg,rgba(250,247,242,.94),rgba(250,247,242,.76));
  -webkit-backdrop-filter:blur(14px) saturate(1.2); backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:var(--sh-soft); }
.hdr__bar::after{ content:""; position:absolute; inset:0; background:var(--fond); opacity:0; pointer-events:none; transition:opacity var(--dur-open) var(--ease); }
.hdr.is-open .hdr__bar::after{ opacity:1; }
.hdr__bar > .container{ max-width:var(--container-header); height:100%; display:flex; align-items:center; gap:24px; flex-wrap:nowrap; position:relative; z-index:1; }
.hdr__logo{ flex:0 0 auto; display:flex; align-items:center; min-height:44px; border-radius:var(--r-btn); transition:opacity var(--dur) var(--ease); }
.hdr__logo:hover{ opacity:.85; }
.nav{ display:flex; align-items:center; gap:8px; margin-inline:auto; flex-wrap:nowrap; }
.nav__link{ display:inline-flex; align-items:center; gap:6px; flex:0 0 auto; white-space:nowrap; min-height:44px;
  padding:10px 16px; border-radius:var(--r-btn); font-weight:700; font-size:1.0625rem; color:var(--texte);
  transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease); }
.nav__link:hover{ background:var(--hover-ghost); color:var(--principale); }
.nav__link[aria-current="page"],.nav__toggle[data-current]{ color:var(--accent); }
.nav__link[aria-current="page"]{ box-shadow:inset 0 -2px 0 var(--accent); border-radius:var(--r-btn) var(--r-btn) 0 0; }
.nav__link .ic{ width:16px; height:16px; color:var(--principale); transition:transform var(--dur) var(--ease); }
.nav__has{ position:relative; }
.nav__toggle[aria-expanded="true"] .ic{ transform:rotate(180deg); }
.submenu{ position:absolute; top:calc(50% + var(--hdr-h) / 2 + 8px); left:50%; min-width:440px; padding:8px; display:flex; flex-direction:column; gap:2px;
  background:var(--surface); border-radius:var(--r-card); box-shadow:var(--sh-card);
  opacity:0; visibility:hidden; transform:translate(-50%,6px);
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease),visibility var(--dur) var(--ease); }
.submenu::before{ content:""; position:absolute; left:0; right:0; top:-40px; height:40px; }
.nav__has:hover .submenu,.submenu.is-open{ opacity:1; visibility:visible; transform:translate(-50%,0); }
.submenu a{ display:flex; align-items:center; gap:12px; padding:8px 16px 8px 8px; border-radius:var(--r-btn); color:var(--texte);
  transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease); }
.submenu a:hover,.submenu a[aria-current]{ background:var(--principale-claire); }
.submenu a:hover .submenu__t,.submenu a[aria-current] .submenu__t{ color:var(--principale); }
.submenu__txt{ display:block; min-width:0; }
.submenu__t{ display:block; font-weight:700; font-size:1.0625rem; line-height:1.3; white-space:nowrap; transition:color var(--dur) var(--ease); }
.submenu__d{ display:block; font-size:var(--caption); line-height:1.4; color:var(--texte-2); white-space:nowrap; }
.kchip{ flex:0 0 auto; width:40px; height:40px; border-radius:var(--r-btn); background:var(--grad); display:inline-flex; align-items:center; justify-content:center; }
.kchip .kic{ width:22px; height:22px; color:var(--fond); }
.hdr__cta{ flex:0 0 auto; }
.burger{ display:none; flex:0 0 auto; margin-left:auto; width:44px; height:44px; border-radius:var(--r-btn);
  border:1.5px solid rgba(31,31,31,.22); align-items:center; justify-content:center; color:var(--principale);
  transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease); }
.burger:hover{ background:var(--hover-ghost); border-color:var(--principale); }
.burger .ic{ width:24px; height:24px; }
.burger .ic-x,.hdr.is-open .burger .ic-menu{ display:none; }
.hdr.is-open .burger .ic-x{ display:block; }
.hdr__panel{ display:none; }
@media (max-width:880px){   /* bascule burger mesurée : logo 56 + nav 463 + CTA 203 + gouttières 2 × 24 + 24px d'air de part et d'autre de la nav + marges 2 × 24 + barre de défilement 15 = 881px */
  .nav,.hdr__cta{ display:none; }
  .burger{ display:inline-flex; }
  .hdr__panel{ display:grid; grid-template-rows:0fr; position:absolute; top:100%; left:0; right:0; z-index:2; background:var(--fond);
    box-shadow:0 12px 24px rgba(31,31,31,.12); visibility:hidden;
    transition:grid-template-rows var(--dur-open) var(--ease),visibility 0s linear var(--dur-open); }
  .hdr.is-open .hdr__panel{ grid-template-rows:1fr; visibility:visible; transition:grid-template-rows var(--dur-open) var(--ease),visibility 0s; }
  .hdr__scroll{ min-height:0; max-height:calc(100svh - var(--stack-h)); overflow:hidden; }
  .hdr.is-open .hdr__scroll{ overflow-y:auto; }
  .hdr__panel .container{ display:flex; flex-direction:column; gap:4px; padding-block:16px 32px; }
  .hdr__panel a:not(.btn),.macc__btn{ display:flex; align-items:center; min-height:48px; padding:12px 8px; border-radius:var(--r-btn);
    font-weight:700; font-size:1.0625rem; color:var(--texte); text-align:left;
    transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease); }
  .hdr__panel a:not(.btn):hover,.macc__btn:hover{ background:var(--principale-claire); color:var(--principale); }
  .hdr__panel a[aria-current]:not(.btn),.macc__btn[data-current]{ color:var(--accent); }
  .macc__btn{ width:100%; justify-content:space-between; }
  .macc__btn .ic{ width:20px; height:20px; color:var(--principale); transition:transform var(--dur-open) var(--ease); }
  .macc.is-open .macc__btn .ic{ transform:rotate(180deg); }
  .macc__panel{ display:grid; grid-template-rows:0fr; visibility:hidden;
    transition:grid-template-rows var(--dur-open) var(--ease),visibility 0s linear var(--dur-open); }
  .macc.is-open .macc__panel{ grid-template-rows:1fr; visibility:visible; transition:grid-template-rows var(--dur-open) var(--ease),visibility 0s; }
  .macc__in{ overflow:hidden; min-height:0; display:flex; flex-direction:column; }
  .hdr__panel .macc__in a:not(.btn){ display:flex; align-items:center; gap:12px; height:48px; min-height:48px; padding:0 8px; line-height:1.2; }
  .hdr__panel .kchip{ width:36px; height:36px; }
  .hdr__panel .kchip .kic{ width:20px; height:20px; }
  .hdr__panel .btn{ margin-top:16px; align-self:stretch; }
}

/* ---------- Hero d'accueil sur photo ---------- */
.hero{ position:relative; isolation:isolate; min-height:calc(100svh - var(--stack-h)); display:flex; align-items:center; justify-content:center;
  padding-block:96px; color:var(--fond); overflow:hidden; }
.hero__media,.hero__veil{ position:absolute; inset:0; }
.hero__media{ z-index:-2; }
.hero__media img{ width:100%; height:100%; object-fit:cover; object-position:center; }
@media (max-aspect-ratio:1/1){ .hero__media img{ object-position:30% center; } }
.hero__veil{ z-index:-1; background:radial-gradient(ellipse at center,rgba(20,20,20,.68) 0%,rgba(20,20,20,.62) 40%,rgba(20,20,20,.46) 100%); }
.hero__in{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:24px; }
.hero h1 .acc{ color:var(--acc-photo); }
.hero h1{ color:#FFFFFF; text-shadow:0 2px 16px rgba(31,31,31,.55); max-width:1120px; }
.hero__tag{ max-width:1120px; font-size:clamp(1.25rem,1.1rem + .7vw,1.625rem); line-height:1.4; color:var(--fond); text-shadow:0 1px 10px rgba(31,31,31,.6); }
.hero__cta{ margin-top:8px; }
.gpill{ display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border-radius:var(--r-pill); line-height:1;
  background:rgba(31,31,31,.42); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.gpill .g-g{ width:18px; height:18px; }
.gpill__n{ color:var(--or); font-weight:700; font-size:1rem; font-variant-numeric:tabular-nums lining-nums; }
.scroll-ind{ position:absolute; z-index:2; left:50%; bottom:32px; width:1px; margin-left:-.5px; height:var(--ind-h,48px); color:var(--fond); cursor:pointer; transition:opacity .6s var(--ease); }
.scroll-ind::before{ content:""; position:absolute; inset:-8px -72px -8px -16px; }
.scroll-ind__line{ position:absolute; inset:0; background:rgba(250,247,242,.6); overflow:hidden; }
.scroll-ind__w{ position:absolute; left:13px; top:50%; transform:translateY(-50%); font-weight:700; font-size:var(--surtitre); line-height:1;
  letter-spacing:.12em; text-transform:uppercase; color:rgba(250,247,242,.6); white-space:nowrap; transition:color var(--dur) var(--ease); }
.scroll-ind:hover .scroll-ind__w{ color:var(--fond); }
.scroll-ind:focus-visible{ outline-color:var(--fond); }
@media (max-width:767px){ .hero{ padding-block:64px; } }

/* ---------- Hero de page ---------- */
.phero{ position:relative; isolation:isolate; overflow:hidden; display:flex; align-items:center; justify-content:center; min-height:min(56svh,480px); padding-block:96px;
  background:radial-gradient(ellipse at center,#FAF7F2 0%,#FAF7F2 30%,#F4E7D7 100%); }
.phero__logo{ position:absolute; left:50%; top:50%; z-index:-1; width:clamp(240px,34vw,420px); height:auto; transform:translate(-50%,-50%); opacity:.09; mix-blend-mode:multiply; }
.phero__in{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:16px; }
.phero h1{ font-size:var(--h1-page); max-width:1040px; }
.phero__tag{ font-size:var(--chapo); color:var(--texte-2); }
@media (max-width:767px){ .phero{ padding-block:64px; } }

/* ---------- Placeholder image ---------- */
.ph{ position:absolute; inset:0; overflow:hidden; background:radial-gradient(circle at center,#FAF7F2 0%,#F4E7D7 72%); }
.ph::before{ content:""; position:absolute; inset:0; background:url("assets/emj-logo-detoure.png") center / min(42%,220px) auto no-repeat; opacity:.3; mix-blend-mode:multiply; }
.ph__cap{ position:absolute; left:12px; bottom:12px; max-width:calc(100% - 24px); padding:6px 12px; border-radius:var(--r-btn);
  background:rgba(250,247,242,.92); color:var(--texte-2); font-size:var(--caption); line-height:1.3; }
.ph--right .ph__cap{ left:auto; right:12px; text-align:right; }
.ph--45{ position:relative; inset:auto; padding-top:125%; border-radius:var(--r-card); box-shadow:var(--sh-card); }

/* ---------- Photos ---------- */
.frame{ position:relative; display:block; border-radius:var(--r-card); overflow:hidden; box-shadow:var(--sh-card); background:var(--principale-claire); }
.frame--34::before{ content:""; display:block; padding-top:133.3333%; }
.frame > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform var(--dur-zoom) var(--ease); }

/* ---------- Notes de maquette ---------- */
.note{ display:flex; align-items:flex-start; gap:12px; margin-top:48px; padding:16px 24px; border-radius:var(--r-card);
  border:1px solid rgba(163,36,59,.35); background:rgba(163,36,59,.06); color:var(--texte); font-size:1rem; line-height:1.5; }
.note .ic{ width:22px; height:22px; color:var(--carmin); margin-top:1px; }
.note__l{ font-weight:700; color:var(--carmin); margin-right:4px; }
.note--sug{ border-color:rgba(154,101,18,.35); background:rgba(154,101,18,.08); }
.note--sug .ic{ color:var(--ambre); }
.note--sug .note__l{ color:var(--ambre-texte); }
.note--clair{ border-color:rgba(250,247,242,.42); background:rgba(250,247,242,.1); color:var(--fond); }
.note--clair .ic,.note--clair .note__l{ color:var(--fond); }
.note--tight{ margin-top:24px; }
.gnote .note{ margin-top:0; max-width:880px; margin-inline:auto; }
@media (max-width:767px){ .note{ padding:16px; margin-top:32px; } .note--tight{ margin-top:16px; } }

/* ---------- Cartes ---------- */
.card{ background:var(--surface); border-radius:var(--r-card); box-shadow:var(--sh-card); }

/* ---------- Bande de qualités ---------- */
.qband{ position:relative; isolation:isolate; padding:64px 0; background:linear-gradient(90deg,#FAF7F2,#F4E7D7); }
.qband > *{ position:relative; z-index:1; }
.qband__t{ display:block; text-align:center; margin:0 auto 32px; padding-inline:var(--pad); color:var(--principale); }
.qband__t .g-word{ display:inline-block; height:1.353em; width:auto; vertical-align:-.353em; }
.qband__tk{ overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 var(--tk-fade),#000 calc(100% - var(--tk-fade)),transparent);
  mask-image:linear-gradient(90deg,transparent,#000 var(--tk-fade),#000 calc(100% - var(--tk-fade)),transparent); }
.tk--q{ width:max-content; transform:translateX(var(--lead,96px)); }
.tk--q.run,.tk--q.is-done{ transform:none; }
.qt__set{ list-style:none; margin:0; padding:0; display:flex; align-items:center; flex:0 0 auto; }
.qt__it{ display:inline-flex; flex-direction:column; align-items:center; gap:6px; white-space:nowrap; }
.qt__q{ font-family:var(--f-titre); font-weight:400; font-size:clamp(1.375rem,1.2rem + .7vw,1.75rem); line-height:1.3; color:var(--texte); }
.qt__who{ font-size:var(--caption); line-height:1; color:var(--principale); }
.qt__sep{ display:inline-flex; align-items:center; margin:0 32px; color:var(--principale); }
.qt__sep .ic{ width:16px; height:16px; }
@media (max-width:767px){ .qband{ padding:48px 0; } .qband__t{ margin-bottom:24px; } .qt__sep{ margin:0 24px; } }

/* ---------- Prestations : alternance image/texte, photos portrait 3/4 ---------- */
.alt{ display:flex; flex-direction:column; gap:96px; }
.alt__b{ display:grid; grid-template-columns:minmax(0,45fr) minmax(0,55fr); grid-template-areas:"txt img"; column-gap:64px; align-items:center; }
.alt__b--l{ grid-template-columns:minmax(0,55fr) minmax(0,45fr); grid-template-areas:"img txt"; }
.alt__img{ grid-area:img; }
.alt__txt{ grid-area:txt; display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.alt__txt p{ color:var(--texte-2); }
.alt__cta{ margin-top:8px; }
.items{ list-style:none; align-self:stretch; }
.items li{ position:relative; display:flex; align-items:center; gap:12px; min-height:44px; padding-block:9px; font-weight:700; line-height:1.3; color:var(--texte); }
.items li + li::before{ content:""; position:absolute; top:0; right:0; left:34px; height:1px; background:var(--filet); }
.items .ic{ width:22px; height:22px; color:var(--principale); }
.pre__foot{ display:flex; align-items:center; gap:24px; margin-top:64px; }
@media (max-width:1023px){ .alt{ gap:64px; } .alt__b,.alt__b--l{ column-gap:32px; } .pre__foot{ flex-direction:column-reverse; align-items:flex-start; gap:16px; } .pre__foot .btn-row{ align-self:stretch; } }
@media (max-width:699px){
  .alt{ gap:48px; }
  .alt__b,.alt__b--l{ grid-template-columns:minmax(0,1fr); grid-template-areas:"img" "txt"; row-gap:24px; }
  .pre__foot{ margin-top:48px; }
  .alt__cta{ align-self:stretch; }
  .alt__cta .btn{ width:100%; }
}

/* ---------- Réalisations : défilé de tuiles ---------- */
.defile{ --padL:max(var(--pad),calc((100vw - var(--container)) / 2 + var(--pad)));
  --tile:min(340px,calc((100vw - var(--padL) - 3 * var(--gap)) / 3.5)); }
.defile__track{ display:flex; gap:var(--gap); overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; scroll-padding-left:var(--padL);
  padding:8px 0 40px var(--padL); scrollbar-width:none; -ms-overflow-style:none; cursor:grab; -webkit-overflow-scrolling:touch; }
.defile__track::-webkit-scrollbar{ display:none; }
.defile__track::after{ content:""; flex:0 0 0; }
.defile__track.is-drag{ cursor:grabbing; scroll-snap-type:none; }
.defile__track.is-drag .tile{ pointer-events:none; }
.defile__track:focus-visible{ outline-offset:-4px; }
.tile{ flex:0 0 var(--tile); width:var(--tile); scroll-snap-align:start; display:flex; flex-direction:column; gap:16px; border-radius:var(--r-card); }
.tile__t{ font-weight:700; font-size:1.0625rem; line-height:1.35; color:var(--texte); transition:color var(--dur) var(--ease); }
.tile__img img{ user-select:none; -webkit-user-drag:none; }
@media (hover:hover){
  .tile:hover .frame > img,.alt__b:hover .frame > img,.tile--ba:hover .bac__s img{ transform:scale(1.04); }
  .tile:hover .tile__t{ color:var(--principale); }
}
.tile--ba .tile__t{ align-self:flex-start; }
.tile--ba a.tile__t:hover{ color:var(--principale); }
.bac{ position:relative; container-type:inline-size; border-radius:var(--r-card); overflow:hidden; box-shadow:var(--sh-card); background:var(--principale-claire); }
.bac__track{ display:flex; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; cursor:grab; }
.bac__track::-webkit-scrollbar{ display:none; }
.bac__track.is-drag{ cursor:grabbing; }
.bac__track:focus-visible{ outline-offset:-4px; }
.bac__s{ position:relative; flex:0 0 100%; margin:0; padding-top:133.3333%; scroll-snap-align:start; scroll-snap-stop:always; }
.bac__s{ overflow:hidden; }
.bac__s img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; user-select:none; -webkit-user-drag:none; transition:transform var(--dur-zoom) var(--ease); }
.bac__tag{ position:absolute; left:clamp(8px,3.3cqw,12px); top:clamp(8px,3.3cqw,12px); padding:4px 10px; border-radius:var(--r-btn); background:rgba(31,31,31,.72); color:var(--fond); font-weight:700; font-size:clamp(10px,3.5cqw,13px); line-height:1.3; }
.bac__c{ position:absolute; top:50%; width:44px; height:44px; margin-top:-22px; display:grid; place-items:center; color:var(--fond); filter:drop-shadow(0 1px 3px rgba(0,0,0,.6)); transition:opacity var(--dur) var(--ease); }
.bac__c--p{ left:0; } .bac__c--n{ right:0; }
.bac__c .ic{ width:clamp(18px,6.5cqw,28px); height:clamp(18px,6.5cqw,28px); }
.bac__c:hover:not(:disabled){ opacity:.72; }
.bac__c:disabled{ opacity:.35; cursor:default; }
.bac__c:focus-visible{ outline-color:var(--fond); outline-offset:-4px; }
.defile__foot{ display:flex; flex-direction:column; align-items:center; gap:24px; }
.chevs{ display:flex; justify-content:center; gap:20px; margin-top:-8px; }
.chev{ position:relative; width:24px; height:24px; border-radius:50%; background:var(--principale); color:var(--fond);
  display:inline-flex; align-items:center; justify-content:center;
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease),background-color var(--dur) var(--ease); }
.chev::before{ content:""; position:absolute; inset:-10px; }
.chev .ic{ width:12px; height:12px; }
.chev:hover:not(:disabled){ transform:scale(1.12); background:var(--principale-hover); }
.chev:disabled{ opacity:.35; cursor:default; }
@media (max-width:1023px){ .defile{ --tile:calc((100vw - var(--pad) - 2 * var(--gap)) / 2.5); } }
@media (max-width:767px){
  .defile{ --tile:calc((100vw - var(--pad) - var(--gap)) / 1.5); }
  .tile{ gap:12px; }
}

/* ---------- Phrase d'avis du panneau L'entreprise ---------- */
.quote{ display:flex; flex-direction:column; gap:8px; align-self:stretch; margin-top:8px; }
.quote blockquote p{ font-family:var(--f-titre); font-weight:400; font-size:1.3125rem; line-height:1.4; color:var(--texte); }
.quote figcaption{ display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:var(--caption); line-height:1; color:var(--texte-2); }
.quote figcaption .g-g{ width:16px; height:16px; }
.stars--sm .star{ width:16px; height:16px; }

/* ---------- Déroulé du chantier : en-tête à gauche, frise verticale à droite ---------- */
.split{ display:grid; grid-template-columns:minmax(0,2fr) minmax(0,3fr); grid-template-areas:"head frise" "cta frise"; grid-template-rows:auto 1fr; column-gap:64px; }
.split__head{ grid-area:head; width:auto; min-width:0; margin-bottom:32px; }
.split__head .lead{ contain:none; min-width:0; }
.frise{ grid-area:frise; position:relative; }
.split__cta{ grid-area:cta; }
.frise__rail{ position:absolute; left:11px; top:0; bottom:0; width:2px; }
.frise__fill{ position:absolute; inset:0; background:linear-gradient(180deg,#1F1F1F,#0B6FB0); }
.frise__list{ list-style:none; display:flex; flex-direction:column; gap:48px; position:relative; }
.frise__step{ display:grid; grid-template-columns:24px auto minmax(0,1fr); column-gap:16px; align-items:start; }
.frise__dot{ display:flex; align-items:center; justify-content:center; width:24px; height:calc(var(--h3) * 1.2); }
.frise__ic{ width:20px; height:20px; }
.frise__n{ font-family:var(--f-texte); font-weight:700; font-size:var(--h3); line-height:1.2; color:var(--principale); font-variant-numeric:tabular-nums lining-nums; }
.frise__c p{ margin-top:8px; color:var(--texte-2); }
@media (max-width:1023px){
  .split{ display:block; }
  .split__head{ margin-bottom:48px; }
  .split__cta{ margin-top:48px; }
}
@media (max-width:767px){
  .split__head{ margin-bottom:32px; }
  .frise__step{ column-gap:12px; }
  .frise__ic{ width:16px; height:16px; }
  .frise__list{ gap:32px; }
  .split__cta{ margin-top:32px; }
}

/* ---------- L'entreprise : section de contraste, présentation, chiffres et zone en trois temps ---------- */
.section--contrast{ background:var(--principale); color:var(--fond); }
.section--contrast::before{ opacity:.03; }
.section--contrast :focus-visible{ outline-color:var(--fond); }
.ent{ display:grid; grid-template-columns:44% 14% 42%; align-items:center; }
.ent__img{ grid-column:1 / 3; grid-row:1; min-width:0; }
.ent__panel{ grid-column:2 / 4; grid-row:1; position:relative; z-index:2; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:16px; padding:48px;
  background:var(--fond); color:var(--texte); border-radius:var(--r-card); box-shadow:var(--sh-card); }
.ent__panel :focus-visible{ outline-color:var(--principale); }
.ent__panel p{ color:var(--texte-2); }
.ent__panel .quote p{ color:var(--texte); }
.ent__slots{ display:flex; gap:12px; align-self:stretch; }
.ent__slots .islot{ flex:0 1 120px; min-width:0; aspect-ratio:2 / 1; }
.ent__panel .btn-row{ margin-top:8px; }
.stats{ position:relative; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:48px; border-radius:var(--r-card); background:var(--fond); box-shadow:var(--sh-card); }
.stat{ position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:8px; padding:32px 16px; }
.stat + .stat::before{ content:""; position:absolute; left:0; top:24px; bottom:24px; width:1px; background:var(--filet); }
.stat__n{ display:inline-flex; align-items:center; gap:6px; font-family:var(--f-texte); font-weight:700; font-size:clamp(2.5rem,2rem + 2vw,3.5rem); line-height:1; color:var(--principale); font-variant-numeric:tabular-nums lining-nums; }
.stat__n .star{ width:.55em; height:.55em; color:var(--or); }
.stat__l{ color:var(--texte-2); white-space:nowrap; line-height:1.3; }
.zone{ display:grid; grid-template-columns:minmax(0,45fr) minmax(0,55fr); grid-template-areas:"head map" "list map"; column-gap:64px; row-gap:16px; margin-top:64px; }
.zone__head{ grid-area:head; align-self:end; display:flex; flex-direction:column; gap:12px; }
.zone__head h3{ color:var(--fond); }
.zone__head p{ color:var(--fond); }
.zone__map{ grid-area:map; align-self:center; padding:8px; background:var(--fond); border-radius:var(--r-card); box-shadow:var(--sh-card); }
.zone__list{ grid-area:list; align-self:start; list-style:none; }
.zone__list li{ position:relative; display:flex; align-items:center; gap:12px; min-height:48px; padding-block:6px; font-weight:600; line-height:1.3; color:var(--fond); }
.zone__list li + li::before{ content:""; position:absolute; top:0; right:0; left:32px; height:1px; background:rgba(228,241,250,.3); }
.zone__list .ic{ width:20px; height:20px; color:var(--principale-claire); }
.zmap{ position:relative; border-radius:var(--r-btn); overflow:hidden; background:var(--principale-claire); container-type:inline-size; }
.zmap::before{ content:""; display:block; padding-top:82.4%; }
.zmap svg{ position:absolute; inset:0; width:100%; height:100%; }
.zmap .sea{ fill:var(--principale-claire); }
.zmap .hatch{ stroke:rgba(11,111,176,.2); stroke-width:1.6; }
.zmap .land{ fill:var(--fond); }
.zmap .zdisc{ fill:var(--accent-clair); }
.zmap .dep-l{ fill:none; stroke:rgba(31,31,31,.2); stroke-width:1; vector-effect:non-scaling-stroke; }
.zmap .coast{ fill:none; stroke:rgba(11,111,176,.4); stroke-width:1; vector-effect:non-scaling-stroke; }
.zmap .ring{ fill:none; stroke:var(--principale); stroke-width:1.5; stroke-dasharray:6 5; vector-effect:non-scaling-stroke; }
.mpt{ position:absolute; left:var(--x); top:var(--y); width:0; height:0; z-index:1; font-size:clamp(10px,2.3cqw,14px); }
.mpt--main{ z-index:2; --pin:clamp(6px,2.2cqw,11px); }
.mpt i{ position:absolute; left:-.3077em; top:-.3077em; width:.6154em; height:.6154em; border-radius:50%; background:var(--texte); box-shadow:0 0 0 .2308em rgba(250,247,242,.95); }
.mpt .pin{ position:absolute; width:calc(var(--pin) * 3.2); height:calc(var(--pin) * 3.2); left:calc(var(--pin) * -1.6); top:calc(var(--pin) * -2.975); overflow:visible; filter:drop-shadow(0 3px 5px rgba(10,45,75,.3)); }
.mpt .pin path{ fill:var(--principale); stroke:var(--fond); stroke-width:1.5; paint-order:stroke; }
.mpt .pin circle{ fill:var(--fond); stroke:none; }
.lbl{ position:absolute; white-space:nowrap; line-height:1; border-radius:var(--r-pill); padding:.3846em .6923em; font-size:1em; font-weight:600; color:var(--texte); background:rgba(250,247,242,.96); box-shadow:var(--sh-soft); }
.mpt--main .lbl{ font-size:1.0769em; font-weight:700; color:var(--principale); padding:.4286em .7143em; }
.mpt--main .lbl--siege{ left:0; top:.6em; transform:translateX(-50%); }
.lbl[data-d="right"]{ left:.9231em; top:0; transform:translateY(-50%); }
.lbl[data-d="left"]{ right:.9231em; top:0; transform:translateY(-50%); }
@media (max-width:1023px){
  .zone{ display:block; }
  .zone__map{ margin-top:32px; }
  .zone__list{ margin-top:24px; }
}
@media (max-width:899px){
  .ent{ display:block; }
  .ent__img .ph--45{ padding-top:0; height:clamp(420px,62vw,560px); }
  .ent__img .ph__cap{ top:12px; bottom:auto; }
  .ent__panel{ margin:-96px 32px 0; padding:32px; }
}
@media (max-width:767px){
  .ent__panel{ margin:-48px 16px 0; padding:32px 24px; }
  .stats{ margin-top:32px; }
  .stat{ padding:24px 12px; }
  .zone{ margin-top:48px; }
  .zmap::before{ padding-top:100%; }
  .mpt{ left:var(--xm); top:var(--ym); font-size:clamp(10px,3.6cqw,13px); }
  .mpt--main{ --pin:clamp(6px,2.6cqw,11px); }
}
@media (max-width:519px){   /* bascule mesurée : le plus long label tient sur une ligne en 3 colonnes au-dessus */
  .stats{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stat:last-child{ grid-column:1 / -1; }
  .stat:last-child::before{ left:16px; right:16px; top:0; bottom:auto; width:auto; height:1px; }
}

/* ---------- Avis ---------- */
.shead--note{ margin-bottom:16px; }
.rnote{ display:flex; flex-direction:column; align-items:center; gap:8px; margin-bottom:48px; }
.rnote__a{ display:inline-flex; align-items:center; gap:12px; }
.rnote__n{ font-weight:700; font-size:2.75rem; line-height:1; color:var(--or); font-variant-numeric:tabular-nums lining-nums; }
.stars--lg .star{ width:24px; height:24px; }
.rnote__b{ display:inline-flex; align-items:center; gap:8px; font-weight:700; color:var(--texte); }
.rnote__b .g-word{ height:22px; }
.wall{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:24px; row-gap:24px; grid-auto-flow:dense; align-items:start; }
html.js .wall{ grid-auto-rows:1px; row-gap:0; }
.w-danielle,.w-charlenne{ grid-column:1; }
.w-mathilde,.w-sabrina,.w-bernard{ grid-column:2; }
.w-jeanmichel,.w-laurence{ grid-column:3; }
.rv{ background:var(--surface); border-radius:var(--r-card); box-shadow:var(--sh-card); padding:24px; color:var(--texte); }
.rv__head{ position:relative; display:flex; align-items:flex-start; gap:12px; padding-right:32px; margin-bottom:12px; }
.rv__av{ width:44px; height:44px; flex:0 0 auto; border-radius:50%; background:var(--grad); color:var(--fond); display:grid; place-items:center; font-weight:700; font-size:1.125rem; line-height:1; }
.rv__who{ display:flex; flex-direction:column; align-items:flex-start; gap:2px; min-width:0; }
.rv__name{ font-weight:700; line-height:1.3; }
.rv .star{ width:14px; height:14px; }
.rv__g{ position:absolute; right:0; top:0; width:22px; height:22px; }
.rv__q{ white-space:pre-wrap; overflow-wrap:anywhere; }
.wall__cta{ margin-top:32px; }
.rv--bare{ padding:0; background:none; box-shadow:none; border-radius:0; }
@media (max-width:1023px){
  .wall{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .w-danielle,.w-mathilde,.w-jeanmichel{ grid-column:1; }
  .w-bernard,.w-sabrina,.w-laurence,.w-charlenne{ grid-column:2; }
  .w-danielle{ order:-2; } .w-jeanmichel,.w-bernard{ order:-1; }   /* Jean-Michel avant Mathilde : les jointures des deux colonnes ne tombent plus au même niveau (mesuré à 768 et 834) */
}
@media (max-width:767px){
  .wall{ grid-template-columns:minmax(0,1fr); }
  .rv__g{ width:30px; height:30px; }
  .rv__head{ padding-right:40px; }
  .w-danielle,.w-mathilde,.w-sabrina,.w-bernard,.w-jeanmichel,.w-laurence,.w-charlenne{ grid-column:1; }
  .w-danielle,.w-jeanmichel,.w-bernard{ order:0; }
}

/* ---------- FAQ ---------- */
.faq{ max-width:760px; margin-inline:auto; }
.faq__item{ position:relative; }
.faq__item + .faq__item::before{ content:""; position:absolute; top:0; left:0; right:0; height:1px; background:var(--filet); }
.faq__h{ font-size:var(--h4); line-height:1.35; }
.faq__q{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; width:100%; min-height:44px; padding:20px 0; text-align:left; font-family:var(--f-titre); font-weight:400; font-size:var(--h4); line-height:1.35; letter-spacing:0; color:var(--texte); transition:color var(--dur) var(--ease); }
.faq__q:hover{ color:var(--principale); }
.faq__q .ic{ width:22px; height:22px; color:var(--principale); margin-top:1px; transition:transform var(--dur) var(--ease); }
.faq__item.is-open .faq__q .ic{ transform:rotate(180deg); }
.faq__p{ display:grid; grid-template-rows:0fr; visibility:hidden; transition:grid-template-rows var(--dur) var(--ease),visibility 0s linear var(--dur); }
.faq__item.is-open .faq__p{ grid-template-rows:1fr; visibility:visible; transition:grid-template-rows var(--dur) var(--ease),visibility 0s; }
.faq__in{ overflow:hidden; min-height:0; }
.faq__in p{ padding-bottom:20px; color:var(--texte-2); }

/* ---------- Formulaire de devis + carte de confiance ---------- */
.cgrid{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); grid-template-areas:"form conf" "form coord" "form hrs"; grid-template-rows:auto auto 1fr; column-gap:32px; row-gap:24px; align-items:start; }
.tcard{ grid-area:conf; min-width:0; }
.cgrid__form{ grid-area:form; min-width:0; }
.icard--coord{ grid-area:coord; }
.icard--hrs{ grid-area:hrs; }
.fcard{ padding:48px; }
.form-body{ display:flex; flex-direction:column; gap:24px; }
.field{ display:flex; flex-direction:column; gap:8px; }
.field label{ font-weight:700; font-size:1rem; line-height:1.4; color:var(--texte); }
.field .opt{ font-weight:400; color:var(--texte-2); margin-left:6px; }
.hint{ font-size:var(--caption); line-height:1.5; color:var(--texte-2); }
.field input,.field select,.field textarea{ width:100%; min-height:48px; padding:12px 16px; font:inherit; font-size:1rem; line-height:1.5;
  color:var(--texte); background:var(--surface); border:1px solid rgba(31,31,31,.24); border-radius:var(--r-btn); margin:0;
  transition:border-color var(--dur) var(--ease),background-color var(--dur) var(--ease); }
.field textarea{ resize:vertical; min-height:150px; display:block; }
.field ::placeholder{ color:#6F6A64; opacity:1; }
.field input:hover,.field select:hover,.field textarea:hover{ border-color:rgba(31,31,31,.48); }
.field input:focus,.field select:focus,.field textarea:focus{ outline:2px solid var(--principale); outline-offset:3px; border-color:var(--principale); }
.field select{ appearance:none; -webkit-appearance:none; padding-right:44px; cursor:pointer; }
.field select:invalid{ color:#6F6A64; }
.sel{ position:relative; }
.sel__ic{ position:absolute; right:14px; top:50%; width:20px; height:20px; margin-top:-10px; color:var(--principale); pointer-events:none; }
.sel__ph{ display:none; position:absolute; left:17px; right:44px; top:50%; transform:translateY(-50%); pointer-events:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#6F6A64; font-size:1rem; line-height:1.5; }
.sel:has(select:invalid) .sel__ph{ display:block; }
.sel:has(select:invalid) select{ color:transparent; }
.field select option{ color:var(--texte); }
.err{ display:none; font-size:var(--caption); font-weight:700; line-height:1.4; color:var(--erreur); }
.field.is-err .err{ display:block; }
.field.is-err input,.field.is-err select,.field.is-err textarea{ border-color:var(--erreur); }
.file{ position:relative; }
.file__input{ position:absolute; inset:0; z-index:1; width:100%; height:100%; opacity:0; cursor:pointer; }
.field .file__input{ min-height:0; padding:0; }
.file__zone{ display:flex; align-items:center; justify-content:center; min-height:48px; border-radius:var(--r-btn); border:1.5px dashed rgba(31,31,31,.3); background:var(--surface); color:var(--principale);
  transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease); }
.file__zone .ic{ width:24px; height:24px; }
.file__input:hover + .file__zone{ background:var(--principale-claire); border-color:var(--principale); color:var(--principale); }
.file__input:focus-visible + .file__zone{ outline:2px solid var(--principale); outline-offset:3px; }
.field.is-err .file__zone{ border-color:var(--erreur); }
.file.has-file .file__input,.file.has-file .file__zone{ display:none; }
.file__chosen{ display:flex; align-items:center; gap:12px; min-height:48px; padding:2px 2px 2px 16px; border-radius:var(--r-btn); border:1px solid rgba(31,31,31,.24); background:var(--surface); }
.file__chosen > .ic{ color:var(--principale); }
.file__name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file__clear{ flex:0 0 auto; width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; border-radius:var(--r-btn); color:var(--principale); transition:background-color var(--dur) var(--ease); }
.file__clear:hover{ background:var(--principale-claire); }
.form-send{ margin-top:32px; display:flex; flex-direction:column; align-items:flex-start; gap:16px; }
.form-ko{ font-weight:700; color:var(--erreur); }
.form-foot{ margin-top:16px; font-size:var(--caption); line-height:1.5; color:var(--texte-2); }
.form-foot a{ color:var(--principale); text-decoration:underline; text-underline-offset:2px; cursor:pointer; transition:color var(--dur) var(--ease); }
.form-foot a:hover{ color:var(--texte); }
.form-ok{ padding:24px; border-radius:var(--r-btn); background:var(--principale-claire); color:var(--texte); font-weight:700; }
.form-ok:focus{ outline:none; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.tcard{ padding:32px; border:1.5px solid transparent; background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--grad) border-box; }
.tc__top{ display:flex; align-items:center; justify-content:space-between; gap:12px 16px; flex-wrap:wrap; }
.tc__note{ display:flex; flex-direction:column; gap:6px; }
.tc__n{ display:inline-flex; align-items:center; gap:6px; font-weight:700; font-size:2.5rem; line-height:1; color:var(--or); font-variant-numeric:tabular-nums lining-nums; }
.tc__n .star{ width:.55em; height:.55em; }
.tc__c{ display:inline-flex; align-items:center; gap:8px; font-weight:700; font-size:.9375rem; line-height:1; color:var(--texte); }
.tc__c .g-word{ height:18px; }
.tc__sep{ height:1px; background:rgba(31,31,31,.12); margin:24px 0; }
.tc__slots{ display:flex; gap:12px; }
.islot{ display:block; border:1.5px dashed rgba(31,31,31,.22); border-radius:var(--r-btn); background:rgba(31,31,31,.02); }
.tc__slots .islot{ flex:0 1 120px; min-width:0; aspect-ratio:2 / 1; }
/* Contact : carrousel de la carte, un avis entier à la fois, bord à bord de la carte, hauteur fixe sur le plus long, chaque avis centré */
.ccar{ overflow:hidden; margin-inline:calc(-1 * var(--tc-x,32px)); }
.ccar__track{ display:flex; align-items:center; transform:translate3d(calc(var(--i,0) * -100%),0,0); }
.ccar__track.is-sliding{ transition:transform var(--dur-in) var(--ease); }
.ccar .rv{ flex:0 0 100%; min-width:0; padding-inline:var(--tc-x,32px); }
.ccar__nav{ display:flex; justify-content:center; gap:32px; margin-top:16px; }
.cchev{ position:relative; width:14px; height:14px; display:inline-flex; align-items:center; justify-content:center; color:var(--texte); transition:color var(--dur) var(--ease),transform var(--dur) var(--ease); }
.cchev::before{ content:""; position:absolute; inset:-15px; }
.cchev .ic{ width:14px; height:14px; }
.cchev:hover{ color:var(--principale); transform:scale(1.2); }
.icard{ padding:32px; }
.icard h3{ margin-bottom:16px; }
.icard__h{ display:flex; align-items:center; gap:12px; }
.icard__h .ic{ width:24px; height:24px; color:var(--principale); }
.icard__rows{ display:flex; flex-direction:column; gap:12px; }
.icard .row{ display:flex; align-items:flex-start; gap:12px; min-width:0; }
.icard .row .ic{ color:var(--principale); margin-top:3px; }
.icard .row a{ cursor:pointer; display:inline-block; padding-block:10px; margin-block:-10px; overflow-wrap:anywhere; transition:color var(--dur) var(--ease); }
.icard .row a:hover{ color:var(--principale); text-decoration:underline; text-underline-offset:3px; }
.icard__cta{ margin-top:24px; }
.hrow{ position:relative; display:flex; justify-content:space-between; align-items:baseline; gap:16px; }
.hrow + .hrow{ padding-top:12px; }
.hrow + .hrow::before{ content:""; position:absolute; top:0; left:0; right:0; height:1px; background:var(--filet); }
.hrow > span:first-child{ white-space:nowrap; font-weight:700; }
.hrow .d{ text-align:right; color:var(--texte-2); white-space:nowrap; }
@media (max-width:1023px){ .cgrid{ grid-template-columns:minmax(0,1fr); grid-template-areas:"conf" "form" "coord" "hrs"; grid-template-rows:none; } }
@media (max-width:767px){
  .card,.fcard,.icard,.tcard{ padding:32px 24px; }
  .tcard{ --tc-x:24px; }
  .form-send{ align-items:stretch; }
  .form-send .btn{ width:100%; }
  .tc__n{ font-size:2.25rem; }
  .icard__cta .btn{ width:100%; }
}

/* ---------- Footer : bleu uni, Maps bord à bord, identité en trois colonnes ---------- */
.foot{ background:var(--principale); color:var(--fond); font-size:1rem; }
.foot__map{ position:relative; height:360px; background:var(--principale-claire); }
.foot__map iframe{ position:absolute; inset:0; display:block; width:100%; height:100%; border:0; }
.foot__id{ padding-top:48px; }
.foot__grid > *{ min-width:0; }
.foot__logolink{ display:inline-flex; margin-bottom:16px; padding:8px; background:var(--fond); border-radius:var(--r-btn); transition:opacity var(--dur) var(--ease); }
.foot__logolink:hover{ opacity:.85; }
.foot__name{ font-size:1.625rem; line-height:1.2; color:var(--fond); }
.foot__name .acc{ color:var(--principale-claire); }
.foot__pos{ display:block; font-family:var(--f-texte); font-size:1.0625rem; font-weight:700; letter-spacing:0; line-height:1.35; color:var(--principale-claire); margin-top:4px; }
.foot__tag{ color:var(--principale-claire); margin-top:12px; }
@media (min-width:911px){ .foot__tag span{ display:block; } }
.trust--foot{ display:flex; justify-content:flex-start; gap:12px; margin-top:24px; align-self:stretch; }
.trust--foot .islot{ flex:0 1 96px; min-width:0; aspect-ratio:2 / 1; background:rgba(250,247,242,.06); border-color:rgba(250,247,242,.34); }
.foot__h{ font-family:var(--f-texte); font-weight:700; font-size:var(--surtitre); line-height:1.4; letter-spacing:.12em; text-transform:uppercase; color:var(--principale-claire); margin-bottom:12px; }
.foot__h--legal{ margin-top:32px; }
.foot__links{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.foot__links a,.foot__info a{ cursor:pointer; display:inline-block; padding-block:10px; margin-block:-10px; color:var(--fond);
  text-decoration:underline; text-decoration-color:transparent; text-underline-offset:4px;
  transition:text-decoration-color var(--dur) var(--ease),transform var(--dur) var(--ease),color var(--dur) var(--ease); }
.foot__links a:hover,.foot__info a:hover{ color:var(--accent-vif); text-decoration-color:currentColor; transform:translateX(3px); }
.foot__parent{ color:var(--fond); }
.foot__sub{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; padding-left:16px; }
.foot__info{ display:flex; flex-direction:column; gap:12px; }
.foot__info .row{ display:flex; align-items:flex-start; gap:10px; }
.foot__info .row--flex > span{ flex:1 1 0; contain:inline-size; }
.foot__info .ic{ width:20px; height:20px; margin-top:3px; color:var(--principale-claire); }
.foot__sep{ height:1px; background:rgba(250,247,242,.24); margin-top:32px; }
.foot__sep--m{ display:none; }
.foot__bar{ display:flex; justify-content:space-between; gap:16px; padding-block:32px; font-size:var(--caption); color:var(--principale-claire); }
.foot :focus-visible{ outline-color:var(--fond); }
@media (max-width:1023px){ .foot__id{ padding-top:44px; } }
@media (max-width:767px){ .foot__map{ height:280px; } .foot__id{ padding-top:32px; } }
@media (max-width:910px){   /* bascule footer mesurée : 298 + 217 + 205 + 2 × 64 d'air sur les lettres + marges 2 × 24 + barre de défilement 15 = 911px */
  .foot__grid{ display:grid; grid-template-columns:minmax(0,1fr); gap:0; }
  .foot__ident{ display:flex; flex-direction:column; align-items:flex-start; }
  .foot__col + .foot__col{ margin-top:32px; }
  .foot__sep--m{ display:block; margin-block:32px 0; }
  .foot__sep--m + .foot__col{ padding-top:32px; }
  .foot__bar{ flex-direction:column; align-items:flex-start; gap:8px; padding-bottom:calc(32px + env(safe-area-inset-bottom)); }
}
@media (min-width:911px) and (max-width:1023px){ .foot__bar{ padding-bottom:calc(80px + env(safe-area-inset-bottom)); } }
@media (min-width:911px){
  .foot__grid{ display:grid; grid-template-columns:repeat(3,max-content); justify-content:space-between; column-gap:64px; }
  .foot__col{ padding-top:calc(var(--logo-h) + 32px); }
}

/* ---------- Bouton d'appel flottant : sous 1024px seulement ---------- */
.fcall{ display:none; }
@media (max-width:1023px){
  .fcall{ position:fixed; right:16px; bottom:calc(16px + env(safe-area-inset-bottom)); z-index:60; width:48px; height:48px;
    border-radius:50%; background:var(--accent); color:var(--fond); display:flex; align-items:center; justify-content:center;
    box-shadow:var(--sh-card);
    transition:opacity var(--dur) var(--ease),visibility var(--dur) var(--ease),transform var(--dur) var(--ease),background-color var(--dur) var(--ease); }
  .fcall .ic{ width:20px; height:20px; }
  .fcall:hover{ background:var(--accent-hover); transform:translateY(-2px); }
  .fcall:active{ transform:scale(.94); }
  .hdr.is-open ~ .fcall{ opacity:0; visibility:hidden; pointer-events:none; }
  .fcall.is-off{ opacity:0; visibility:hidden; pointer-events:none; }
  .fcall::before{ content:""; position:absolute; inset:0; z-index:-1; border-radius:50%; background:var(--accent); animation:fb-halo 2.4s var(--ease) infinite; pointer-events:none; }
}
@keyframes fb-halo{ 0%{ transform:scale(1); opacity:.35; } 80%{ transform:scale(1.4); opacity:0; } 100%{ transform:scale(1.4); opacity:0; } }

/* ==========================================================================
   Effets : Phase finale (activés par build.py, un à la fois)
   ========================================================================== */
html[data-glow="1"] .scroll-ind__line::after{ content:""; position:absolute; left:0; top:0; width:100%; height:40%;
  background:linear-gradient(180deg,rgba(250,247,242,0),var(--fond),rgba(250,247,242,0)); animation:ind-glow 2.4s linear infinite; }
@keyframes ind-glow{ from{ transform:translateY(-100%); } to{ transform:translateY(250%); } }
.scroll-ind.is-gone{ opacity:0; visibility:hidden; pointer-events:none; }
html.js-ready [data-reveal]{ opacity:0; transform:translateY(30px); }
html.fx-on [data-reveal]{ transition:opacity var(--dur-in) var(--ease),transform var(--dur-in) var(--ease); }
html.js-ready [data-reveal].is-in{ opacity:1; transform:none; }
html.frise-on .frise__fill{ will-change:clip-path; }
html.frise-on .frise__step{ opacity:0; transform:translateY(28px); transition:opacity .6s var(--ease),transform .6s var(--ease); }
html.frise-on .frise__step.is-in{ opacity:1; transform:none; }
html.frise-on .frise__dot{ transition:opacity var(--dur) var(--ease); }
html.frise-on .frise__step:not(.is-lit) .frise__dot{ opacity:.25; }

/* ---------- Mouvement réduit ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  html[data-glow="1"] .scroll-ind__line::after{ animation:none !important; transform:translateY(75%); }
  *,*::before,*::after{ transition-duration:.001ms !important; transition-delay:0s !important; animation-duration:.001ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; }
  .tk.run{ animation:none !important; }
  .tk--q{ transform:none !important; }
  .qband__tk{ overflow-x:auto; }
  html.js-ready [data-reveal],html.frise-on .frise__step{ opacity:1 !important; transform:none !important; }
  .annonce__in{ overflow-x:auto; -webkit-mask-image:none; mask-image:none; }
  .annonce .tk > .annonce__set[aria-hidden]{ display:none !important; }
  .fcall::before{ animation:none !important; opacity:0; }
  .frame > img,.bac__s img{ transform:none !important; }
}
