/* ════════════════════════════════════════════════════════════
   HEADER & FOOTER UNIFIÉS — Tapis Boeuf (validé 09/06/2026)
   Header B (menus déroulants) + Footer ivoire 5 colonnes.
   Partagé par toutes les pages statiques. Le header reste
   compatible avec l'état transparent (hero sombre) → solide
   (bg-ivoire/95 + text-brun) géré par le JS de chaque page.
   ════════════════════════════════════════════════════════════ */

:root {
  --tbu-ivoire: #FAF6F0;
  --tbu-ivoire-200: #EFE5D6;
  --tbu-brun: #2C2321;
  --tbu-brun-500: #6B5D57;
  --tbu-or: #C9A96E;
  --tbu-bordeaux: #6B1D2A;
  --tbu-bordeaux-fonce: #4A141D;
}

/* ─── NAV : items de premier niveau ───
   8 entrées : le menu complet n'apparaît qu'à partir de 1100 px ;
   en dessous, burger + menu plein écran. */
.tbu-nav { display: none; }
@media (min-width: 1100px) {
  .tbu-nav { display: flex; align-items: center; gap: 2px; font-size: 13px; }
}
.tbu-item { position: relative; }
.tbu-item > a {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 10px 11px; cursor: pointer;
  position: relative; white-space: nowrap;
  transition: color .25s;
}
/* Neutralise les a{color:…} des pages à styles propres (y compris scopés Astro) :
   le header hérite TOUJOURS de sa couleur (ivoire sur hero sombre, brun ensuite) */
#nav .tbu-item > a, #nav > div > a { color: inherit !important; }
#nav .tbu-item:hover > a, #nav .tbu-item:focus-within > a { color: var(--tbu-or) !important; }
.tbu-chev { font-size: 9px; color: var(--tbu-or); transform: translateY(1px); }

/* Bille dorée au-dessus de l'item : réservée à la page courante (.tbu-current) */
.tbu-item > a::before {
  content: ""; position: absolute;
  top: 0; left: 50%;
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--tbu-or);
  transform: translateX(-50%) scale(0);
  transition: transform .28s cubic-bezier(.2,.8,.2,1);
}
/* Ligne dorée qui se déploie sous l'item au survol (filet signature du site) */
.tbu-item > a::after {
  content: ""; position: absolute;
  left: 11px; bottom: 3px;
  width: 0; height: 1.5px;
  background: var(--tbu-or);
  transition: width .45s cubic-bezier(.2,.8,.2,1);
}
.tbu-item:hover > a::after, .tbu-item:focus-within > a::after {
  width: calc(100% - 22px);
}
.tbu-item:hover > a, .tbu-item:focus-within > a {
  color: var(--tbu-or);
}

/* ─── Panneaux déroulants (toujours ivoire, quel que soit l'état du nav) ─── */
.tbu-panel {
  position: absolute; top: 100%; left: 0; min-width: 270px;
  background: var(--tbu-ivoire); border: 1px solid rgba(201,169,110,.4);
  box-shadow: 0 18px 40px rgba(44,35,33,.14);
  padding: 18px 0 10px;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: all .25s ease;
  z-index: 60;
  color: var(--tbu-brun);
}
.tbu-item:hover .tbu-panel, .tbu-item:focus-within .tbu-panel {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.tbu-panel .tbu-group-title {
  padding: 0 22px 6px; font-size: .6rem; letter-spacing: .2em;
  text-transform: uppercase; color: var(--tbu-or); font-weight: 600;
  font-family: 'Inter', sans-serif;
}
.tbu-panel a {
  display: block; padding: 8px 22px; color: var(--tbu-brun) !important;
  border-left: 2px solid transparent; font-size: 13.5px;
  transition: all .2s ease;
}
.tbu-panel a:hover {
  color: var(--tbu-bordeaux) !important; border-left-color: var(--tbu-or);
  background: rgba(201,169,110,.22);
}
/* Lien page mère (toujours en premier dans le panneau) */
.tbu-panel a.tbu-mere {
  color: var(--tbu-bordeaux) !important; font-size: 14px; font-weight: 500;
}
.tbu-sep { height: 1px; background: rgba(201,169,110,.25); margin: 10px 22px; }

/* ─── Indicateur « vous êtes ici » (page courante) ───
   Posé par tb-unified.js : .tbu-current sur le lien du sous-menu
   correspondant à la page ouverte + sur son entrée de premier niveau. */
.tbu-panel a.tbu-current {
  border-left-color: var(--tbu-or);
  background: rgba(201,169,110,.18);
  color: var(--tbu-bordeaux) !important;
  font-weight: 500;
}
.tbu-panel a.tbu-current::after {
  content: "•"; margin-left: 8px; color: var(--tbu-or);
}
/* L'entrée de premier niveau garde sa bille dorée allumée en permanence */
#nav .tbu-item > a.tbu-current { color: var(--tbu-or) !important; }
.tbu-item > a.tbu-current::before {
  transform: translateX(-50%) scale(1);
}

/* ─── Bouton Devis gratuit ─── */
.tbu-devis {
  display: none;
}
@media (min-width: 1100px) {
  .tbu-devis {
    display: inline-flex; align-items: center; gap: 10px;
    color: inherit;
    padding: 10px 18px; border: 1px solid currentColor;
    font-family: 'Inter', sans-serif;
    font-size: 0.68rem; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 500;
    white-space: nowrap;
    transition: all .35s ease;
  }
  #nav .tbu-devis { color: inherit !important; }
  #nav .tbu-devis:hover {
    background: var(--tbu-or); border-color: var(--tbu-or); color: var(--tbu-bordeaux) !important;
  }
}

/* ─── État solide auto (pages sans script de scroll propre) ───
   tb-unified.js ajoute .tbu-solid après le hero sur les headers
   marqués .tbu-autosolid. */
.tbu-solid {
  background: rgba(250,246,240,.95) !important;
  backdrop-filter: blur(4px);
  border-bottom: 1px solid var(--tbu-ivoire-200);
  color: var(--tbu-brun) !important;
  box-shadow: 0 2px 12px rgba(44,35,33,.06);
}

/* ─── Burger mobile ─── */
.tbu-burger {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px;
  background: none; border: none; color: currentColor; cursor: pointer;
}
@media (min-width: 1100px) { #tbu-burger { display: none; } }

/* ─── Menu mobile plein écran (bordeaux) ─── */
.tbu-mobile {
  position: fixed; inset: 0; z-index: 80;
  background: var(--tbu-bordeaux); color: var(--tbu-ivoire);
  display: none; flex-direction: column;
}
.tbu-mobile.is-open { display: flex; }
.tbu-mobile-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 24px; border-bottom: 1px solid rgba(201,169,110,.3);
}
.tbu-mobile-body { flex: 1; overflow-y: auto; padding: 24px; }
.tbu-mobile-body ul { list-style: none; margin: 0; padding: 0; }
.tbu-mobile-body li a {
  display: flex; align-items: center; min-height: 56px;
  font-family: 'Cormorant Garamond', serif; font-size: 1.5rem;
  color: var(--tbu-ivoire) !important;
  border-bottom: 1px solid rgba(201,169,110,.2);
  transition: color .2s;
}
.tbu-mobile-body li a:hover { color: var(--tbu-or) !important; }
.tbu-mobile-body li a small {
  font-family: 'Inter', sans-serif; font-size: .58rem;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--tbu-or); margin-left: 12px;
}
.tbu-mobile-devis {
  margin-top: 28px; display: inline-flex; align-items: center; gap: 10px;
  padding: 12px 24px; border: 1px solid var(--tbu-or); color: var(--tbu-or) !important;
  font-family: 'Inter', sans-serif;
  font-size: .7rem; letter-spacing: .18em; text-transform: uppercase;
  transition: all .3s;
}
.tbu-mobile-devis:hover { background: var(--tbu-or); color: var(--tbu-bordeaux) !important; }
.tbu-mobile-tels { margin-top: 28px; padding-top: 20px; border-top: 1px solid rgba(201,169,110,.25); }
.tbu-mobile-tels a {
  display: flex; align-items: baseline; gap: 14px; min-height: 52px; color: var(--tbu-ivoire) !important;
}
.tbu-mobile-tels .lbl {
  font-family: 'Inter', sans-serif; font-size: .72rem; font-weight: 600;
  letter-spacing: .15em; text-transform: uppercase; color: #E3CD9F; width: 78px;
}
.tbu-mobile-tels .num { font-family: 'Cormorant Garamond', serif; font-size: 1.3rem; }

/* ════════════════════════════════════════════════════════════
   FOOTER UNIFIÉ — ivoire, 5 colonnes
   ════════════════════════════════════════════════════════════ */
.tbu-footer {
  background: var(--tbu-ivoire);
  border-top: 1px solid var(--tbu-ivoire-200);
  color: var(--tbu-brun-500);
  padding: 56px 24px 28px;
  font-family: 'Inter', sans-serif;
  font-size: 13.5px;
}
@media (min-width: 768px) { .tbu-footer { padding-left: 40px; padding-right: 40px; } }
.tbu-footer .tbu-inner { max-width: 1400px; margin: 0 auto; }
.tbu-footer .tbu-cols {
  display: grid; gap: 36px;
  grid-template-columns: 1fr;
  padding-bottom: 36px;
  border-bottom: 1px solid rgba(201,169,110,.25);
}
@media (min-width: 560px) { .tbu-footer .tbu-cols { grid-template-columns: 1fr 1fr; } }
@media (min-width: 980px) { .tbu-footer .tbu-cols { grid-template-columns: 1.3fr 1fr 1fr 1fr 1fr; } }
.tbu-footer .tbu-brand {
  font-family: 'Cormorant Garamond', serif; font-size: 26px; color: var(--tbu-bordeaux);
  letter-spacing: -0.015em;
}
.tbu-footer .tbu-tagline {
  font-size: .6rem; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 500; margin-top: 6px;
}
.tbu-footer address { font-style: normal; margin-top: 14px; line-height: 1.7; }
.tbu-footer .tbu-col-title {
  font-size: .62rem; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 600; margin-bottom: 14px; color: var(--tbu-bordeaux); opacity: .75;
}
.tbu-footer ul { list-style: none; margin: 0; padding: 0; }
.tbu-footer li { margin-bottom: 9px; }
footer.tbu-footer a { color: inherit !important; text-decoration: none; transition: color .25s; }
footer.tbu-footer a:hover { color: var(--tbu-bordeaux) !important; }
footer.tbu-footer a.tbu-tel { color: var(--tbu-bordeaux) !important; font-weight: 500; }
footer.tbu-footer a.tbu-hub-link { color: var(--tbu-bordeaux) !important; }
.tbu-footer .tbu-bottom {
  display: flex; flex-wrap: wrap; gap: 16px;
  justify-content: space-between; align-items: center;
  padding-top: 22px;
  font-size: .66rem; letter-spacing: .14em; text-transform: uppercase;
}
.tbu-footer .tbu-legal { display: flex; flex-wrap: wrap; gap: 22px; }

/* ════════════════════════════════════════════════════════════
   BANDEAU COOKIES — Carte bordeaux flottante (validée 10/06/2026)
   Injectée par js/tb-unified.js à la première visite.
   Choix mémorisé dans localStorage('tb-cookies') : tout | minimum | refus
   ════════════════════════════════════════════════════════════ */
.tbk-carte {
  position: fixed; left: 24px; bottom: 24px; z-index: 90;
  width: min(400px, calc(100vw - 48px));
  background: var(--tbu-bordeaux-fonce); color: rgba(250,246,240,.85);
  border-top: 2px solid var(--tbu-or);
  box-shadow: 0 24px 60px rgba(44,35,33,.35);
  padding: 26px 28px;
  font-family: 'Inter', system-ui, sans-serif; font-size: 15px; line-height: 1.6;
  transform: translateY(40px); opacity: 0; visibility: hidden;
  transition: all .55s cubic-bezier(.2,.8,.2,1);
}
.tbk-carte.tbk-visible { transform: translateY(0); opacity: 1; visibility: visible; }
.tbk-eyebrow {
  margin: 0; color: var(--tbu-or);
  text-transform: uppercase; letter-spacing: .2em; font-size: .68rem; font-weight: 500;
}
.tbk-titre {
  margin: 8px 0 0; font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.45rem; font-weight: 500; color: var(--tbu-ivoire); letter-spacing: -0.015em;
}
.tbk-filet { display: block; width: 48px; height: 1px; background: var(--tbu-or); margin-top: 12px; }
.tbk-texte { margin: 12px 0 0; font-size: 13.5px; }
.tbk-texte a { color: var(--tbu-or) !important; text-decoration: underline; text-underline-offset: 3px; }
.tbk-actions { margin-top: 20px; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.tbk-btn {
  font-family: 'Inter', sans-serif; cursor: pointer;
  padding: 12px 22px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 500;
  transition: all .3s; min-height: 44px;
}
.tbk-btn-tout { background: var(--tbu-or); color: var(--tbu-bordeaux); border: 1px solid var(--tbu-or); }
.tbk-btn-tout:hover { background: var(--tbu-ivoire); border-color: var(--tbu-ivoire); }
.tbk-btn-minimum { color: rgba(250,246,240,.85); border: 1px solid rgba(250,246,240,.4); background: none; }
.tbk-btn-minimum:hover { border-color: var(--tbu-or); color: var(--tbu-or); }
.tbk-sans {
  font-family: 'Inter', sans-serif; cursor: pointer; display: block;
  background: none; border: none; padding: 6px 2px 0; margin-top: 10px;
  font-size: 11.5px; color: rgba(250,246,240,.55);
  text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(201,169,110,.6);
  transition: color .25s;
}
.tbk-sans:hover { color: var(--tbu-or); }
@media (prefers-reduced-motion: reduce) {
  .tbk-carte { transition: opacity .2s; transform: none; }
}

/* ─── Menu escamotable : disparaît en descendant, réapparaît en remontant ─── */
header#nav { transition: transform .35s cubic-bezier(.22,.61,.36,1), background .5s, color .5s, border-color .5s; will-change: transform; }
header#nav.nav-hidden { transform: translateY(-100%); }


/* ─── Héros des pages éditoriales : compact sur bureau, plein écran sur MOBILE ─── */
.tbu-hero-page { padding-top: clamp(150px, 18vh, 210px); padding-bottom: clamp(56px, 8vh, 90px); }
@media (max-width: 767px) {
  .tbu-hero-page {
    min-height: max(100svh, 620px);
    display: flex; flex-direction: column; justify-content: center;
    padding-top: 104px; padding-bottom: 40px;
  }
}

/* ─── Héros restauration : sur MOBILE, mêmes dimensions que le héros nettoyage ─── */
@media (max-width: 767px) {
  .hero-resto-mobile { min-height: 92svh; padding-top: 7rem !important; padding-bottom: 3rem !important; }
}

/* ─── Page restauration · MOBILE : légende décalée + ruban de pigments défilant ─── */
.pigments-marquee { display: none; }
@media (max-width: 767px) {
  .ba-legende { padding-left: 12px; padding-right: 12px; }
  .pigments-grilles { display: none !important; }
  .pigments-marquee { display: block; overflow: hidden; margin-top: 28px;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
  .pigments-piste { display: flex; gap: 22px; width: max-content; padding: 2px 0;
    animation: pigments-defile 30s linear infinite; }
  .pigments-marquee:active .pigments-piste { animation-play-state: paused; }
  .pigment-item { flex: 0 0 92px; text-align: center; }
  .pigment-item > div:first-child { aspect-ratio: 1/1; }
  @keyframes pigments-defile { to { transform: translateX(-50%); } }
  @media (prefers-reduced-motion: reduce) {
    .pigments-piste { animation: none; }
    .pigments-marquee { overflow-x: auto; }
  }
}

/* ─── Section « Restauration des couleurs » : photo en fond sur BUREAU, écrin sur MOBILE ─── */
.couleurs-photo-mobile { display: none; }
@media (min-width: 768px) {
  .couleurs-sombre {
    background: url('/img/restauration-couleurs-fond.jpg') center 30% / cover no-repeat #221511;
  }
  .couleurs-sombre::before {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(26,16,13,.93), rgba(43,24,19,.88) 45%, rgba(26,16,13,.94));
  }
  .couleurs-sombre > * { position: relative; z-index: 1; }
  .couleurs-sombre h2, .couleurs-sombre .text-brun, .couleurs-sombre blockquote { color: #F5EFE6 !important; }
  .couleurs-sombre .text-brun-500, .couleurs-sombre .text-brun-600 { color: rgba(245,239,230,.7) !important; }
  .couleurs-sombre blockquote em { color: #D8B97E !important; }
  .couleurs-sombre .text-bordeaux, .couleurs-sombre .text-bordeaux * { color: #D8B97E !important; }
  .couleurs-sombre h3, .couleurs-sombre h4 { color: #F5EFE6 !important; }
  .couleurs-sombre h3 .text-bordeaux, .couleurs-sombre h3 em { color: #D8B97E !important; }
}
@media (max-width: 767px) {
  .couleurs-sombre { background: #F4EDE3; }
  .couleurs-photo-mobile {
    display: block; margin: 36px auto 8px; max-width: 420px;
    border: 1px solid rgba(201,169,110,.4); padding: 10px; background: #fff;
    box-shadow: 0 2px 22px rgba(44,35,33,.09);
  }
  .couleurs-photo-mobile img { width: 100%; height: auto; display: block; }
  .couleurs-photo-mobile figcaption {
    font-family: 'Inter', sans-serif; font-size: .58rem; letter-spacing: .16em;
    text-transform: uppercase; color: #8A7A6F; text-align: center; padding: 10px 4px 2px;
  }
}
.couleurs-sombre .border-sable-300\/60 { border-color: rgba(201,169,110,.45) !important; }
.couleurs-sombre a[href="/restauration-couleurs-tapis"] {
  border-color: #C9A96E !important; color: #F5EFE6 !important;
}

.couleurs-sombre a[href="/restauration-couleurs-tapis"]:hover {
  background: #C9A96E !important; color: #2C2321 !important;
}

/* ─── bouton couleurs mobile : toujours lisible sur fond ivoire ─── */
@media (max-width: 767px) {
  .couleurs-sombre a[href="/restauration-couleurs-tapis"] {
    background: #6B1D2A !important; border-color: #6B1D2A !important; color: #FAF6F0 !important;
  }
  .couleurs-sombre h3, .couleurs-sombre h4 { color: #2C2321 !important; }
  .couleurs-sombre h3 em, .couleurs-sombre .text-bordeaux { color: #6B1D2A !important; }
}

/* ─── accordéon footer mobile : compact, liens conservés dans le HTML (SEO intact) ─── */
@media (max-width: 767px) {
  .tbu-footer .tbu-cols { gap: 0; padding-bottom: 18px; }
  .tbu-footer .tbu-cols > div:first-child { padding-bottom: 18px; border-bottom: 1px solid rgba(201,169,110,.3); }
  .tbu-footer .tbu-cols > div:not(:first-child) { border-bottom: 1px solid rgba(201,169,110,.25); }
  .tbu-footer .tbu-col-title {
    display: flex; align-items: center; justify-content: space-between;
    margin: 0; padding: 15px 2px; cursor: pointer; user-select: none;
  }
  .tbu-footer .tbu-col-title::after {
    content: "+"; font-family: 'Cormorant Garamond', serif; font-size: 22px;
    color: var(--tbu-or); line-height: 1; transition: transform .35s ease;
  }
  .tbu-footer .tbu-cols > div.tbu-open .tbu-col-title::after { transform: rotate(45deg); }
  .tbu-footer .tbu-cols > div:not(:first-child) ul {
    max-height: 0; overflow: hidden; transition: max-height .45s cubic-bezier(.2,.8,.2,1);
  }
  .tbu-footer .tbu-cols > div.tbu-open ul { max-height: 600px; padding-bottom: 14px; }
}

/* ─── justification des paragraphes : ordinateur uniquement (sur mobile, colonnes étroites
       → « rivières » d'espaces ; on garde l'alignement à gauche sous 768px) ─── */
@media (min-width: 768px) {
  p { text-align: justify; }
  p.caption, .caption, .tbu-footer p, .tbk-carte p, nav p, figcaption,
  .tbu-mobile p, .som p, .leg, .num,
  .text-center p, p[class*="text-center"] { text-align: inherit; }
  .text-center p { text-align: center; }
  .tbu-footer p, .tbk-carte p, figcaption, .leg { text-align: left; }
  figcaption { text-align: center; }
}

/* ─── planchers de lisibilité mobile (clientèle 45-75 ans) ─── */
@media (max-width: 767px) {
  /* micro-libellés : ne jamais descendre sous ~10px */
  .text-\[0\.5rem\], .text-\[0\.52rem\], .text-\[0\.55rem\], .text-\[0\.58rem\] { font-size: 0.62rem; }
  .text-\[0\.6rem\], .text-\[0\.62rem\] { font-size: 0.66rem; }
}

/* ═══ RATTRAPAGE CLASSES TAILWIND NON COMPILÉES (audit 2026-06) — ne pas supprimer ═══ */
.text-\[clamp\(1\.9rem\,4vw\,3rem\)\]{font-size:clamp(1.9rem,4vw,3rem)}
.text-\[clamp\(1\.15rem\,2\.6vw\,1\.8rem\)\]{font-size:clamp(1.15rem,2.6vw,1.8rem)}
.text-\[clamp\(1\.75rem\,3\.6vw\,2\.85rem\)\]{font-size:clamp(1.75rem,3.6vw,2.85rem)}
.text-\[clamp\(1\.15rem\,2\.2vw\,1\.5rem\)\]{font-size:clamp(1.15rem,2.2vw,1.5rem)}
.text-\[clamp\(1\.1rem\,2\.4vw\,1\.6rem\)\]{font-size:clamp(1.1rem,2.4vw,1.6rem)}
.text-\[clamp\(1\.9rem\,3\.8vw\,2\.8rem\)\]{font-size:clamp(1.9rem,3.8vw,2.8rem)}
.text-\[clamp\(2\.9rem\,6\.2vw\,4\.8rem\)\]{font-size:clamp(2.9rem,6.2vw,4.8rem)}
.text-\[clamp\(1\.7rem\,3\.4vw\,2\.5rem\)\]{font-size:clamp(1.7rem,3.4vw,2.5rem)}
.text-\[clamp\(3\.1rem\,6\.6vw\,4\.6rem\)\]{font-size:clamp(3.1rem,6.6vw,4.6rem)}
.text-\[clamp\(2rem\,4\.5vw\,3\.2rem\)\]{font-size:clamp(2rem,4.5vw,3.2rem)}
.text-\[clamp\(1\.6rem\,3vw\,2\.3rem\)\]{font-size:clamp(1.6rem,3vw,2.3rem)}
.text-\[clamp\(1\.75rem\,3\.5vw\,2\.6rem\)\]{font-size:clamp(1.75rem,3.5vw,2.6rem)}
.text-\[clamp\(1\.85rem\,4vw\,3rem\)\]{font-size:clamp(1.85rem,4vw,3rem)}
.text-\[clamp\(1\.6rem\,3\.5vw\,2\.6rem\)\]{font-size:clamp(1.6rem,3.5vw,2.6rem)}
.text-\[clamp\(3rem\,8vw\,7rem\)\]{font-size:clamp(3rem,8vw,7rem)}
.text-\[clamp\(1\.4rem\,3vw\,2\.2rem\)\]{font-size:clamp(1.4rem,3vw,2.2rem)}
.text-\[clamp\(1\.6rem\,3\.5vw\,2\.5rem\)\]{font-size:clamp(1.6rem,3.5vw,2.5rem)}
.text-\[clamp\(1\.5rem\,2\.6vw\,2rem\)\]{font-size:clamp(1.5rem,2.6vw,2rem)}
.text-\[clamp\(1\.6rem\,2\.6vw\,2\.4rem\)\]{font-size:clamp(1.6rem,2.6vw,2.4rem)}
.text-\[clamp\(1\.85rem\,3\.6vw\,2\.75rem\)\]{font-size:clamp(1.85rem,3.6vw,2.75rem)}
.text-\[clamp\(2\.4rem\,5\.5vw\,4\.5rem\)\]{font-size:clamp(2.4rem,5.5vw,4.5rem)}
.text-\[0\.55rem\]{font-size:0.55rem}
.text-\[16\.5px\]{font-size:16.5px}
.text-\[1\.15rem\]{font-size:1.15rem}
.text-\[1\.6rem\]{font-size:1.6rem}
.leading-\[1\.04\]{line-height:1.04}
.leading-\[1\.06\]{line-height:1.06}
.leading-\[1\.12\]{line-height:1.12}
.leading-\[1\.95\]{line-height:1.95}
.max-w-\[1180px\]{max-width:1180px}
.max-w-\[1430px\]{max-width:1430px}
.max-w-\[760px\]{max-width:760px}
.max-w-\[75vw\]{max-width:75vw}
.max-w-\[860px\]{max-width:860px}
.max-w-\[800px\]{max-width:800px}
.max-w-\[1500px\]{max-width:1500px}
.max-w-\[920px\]{max-width:920px}
.min-h-\[78svh\]{min-height:78svh}
.aspect-\[21\/8\]{aspect-ratio:21/8}
@media (min-width:768px){.md\:text-\[1\.15rem\]{font-size:1.15rem}.md\:text-\[18px\]{font-size:18px}.md\:min-h-\[72vh\]{min-height:72vh}.md\:grid-cols-\[3\.5rem_1fr\]{grid-template-columns:3.5rem 1fr}}
@media (min-width:1024px){.lg\:grid-cols-\[1\.3fr_1fr\]{grid-template-columns:1.3fr 1fr}}
.text-brun-400{color:#8A7A72}
/* ═══ FIN RATTRAPAGE ═══ */

/* ═══ BARRE D'APPEL MOBILE GLOBALE (modèle nettoyage/restauration) ═══ */
#tbuCallbar{position:fixed;bottom:0;left:0;right:0;z-index:50;background:#6B1D2A;color:#FAF6F0;transform:translateY(100%);transition:transform .4s cubic-bezier(.2,.8,.2,1);box-shadow:0 -8px 24px rgba(0,0,0,.12)}
#tbuCallbar.is-visible{transform:translateY(0)}
#tbuCallbar .tbu-cb-grille{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;padding:10px 12px}
#tbuCallbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10px 4px;font-family:'Inter',system-ui,sans-serif;text-transform:uppercase;letter-spacing:.12em;font-size:.62rem;line-height:1.3;text-decoration:none;min-height:44px}
#tbuCallbar .tbu-cb-tel{border:1px solid #C9A96E;color:#C9A96E}
#tbuCallbar .tbu-cb-tel .lbl{color:rgba(201,169,110,.75);font-size:.54rem}
#tbuCallbar .tbu-cb-devis{background:#C9A96E;color:#2C2321;font-weight:600}
@media (min-width:768px){#tbuCallbar{display:none}}
@media (prefers-reduced-motion:reduce){#tbuCallbar{transition:none}}

/* ═══ BASCULE AVANT/APRÈS AU TOUCHER (pages marquées data-tbu-ba) ═══ */
.tbu-tap-hint{display:none}
@media (hover:none){
  .tbu-tap-hint{display:inline-block;position:absolute;left:50%;bottom:10px;transform:translateX(-50%);z-index:6;pointer-events:none;background:rgba(44,35,33,.78);color:#E3CD9F;font-family:'Inter',system-ui,sans-serif;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;padding:5px 12px;white-space:nowrap;transition:opacity .3s}
  .ba-card.tbu-flip .tbu-tap-hint{opacity:0}
}

/* ═══ BOUTON ↑ SOMMAIRE FLOTTANT (mobile) ═══ */
#tbuHautSommaire{display:none}
@media (max-width:767px){
  #tbuHautSommaire{
    display:block;position:fixed;right:12px;bottom:74px;z-index:49;
    background:rgba(250,246,240,.95);color:#6B1D2A;border:1px solid #C9A96E;
    font-family:'Inter',system-ui,sans-serif;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
    padding:9px 14px;box-shadow:0 6px 18px rgba(44,35,33,.18);
    opacity:0;pointer-events:none;transform:translateY(8px);transition:all .3s;
  }
  #tbuHautSommaire.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}
}

/* ═══ POP-UP DE REMERCIEMENT (envoi de devis) ═══ */
.tbu-popup-fond{position:fixed;inset:0;z-index:100;background:rgba(44,35,33,.55);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;transition:opacity .35s}
.tbu-popup-fond.is-visible{opacity:1}
.tbu-popup{background:#FAF6F0;color:#2C2321;max-width:430px;width:100%;padding:42px 34px 34px;text-align:center;border:1px solid rgba(201,169,110,.5);box-shadow:0 30px 80px rgba(0,0,0,.35);transform:translateY(10px);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.tbu-popup-fond.is-visible .tbu-popup{transform:translateY(0)}
.tbu-popup-filet{display:block;width:64px;height:2px;background:#C9A96E;margin:0 auto 18px}
.tbu-popup-titre{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:2rem;color:#6B1D2A;line-height:1.1}
.tbu-popup-texte{margin-top:14px;font-size:15px;line-height:1.7;color:#6B5D57}
.tbu-popup-fermer{margin-top:26px;padding:12px 32px;background:#6B1D2A;color:#FAF6F0;border:none;cursor:pointer;font-family:'Inter',system-ui,sans-serif;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;transition:background .3s}
.tbu-popup-fermer:hover{background:#C9A96E;color:#2C2321}

/* ═══ PROTECTION DES IMAGES ═══ */
img { -webkit-touch-callout: none; -webkit-user-drag: none; user-select: none; -webkit-user-select: none; }
.tbu-toast-photo {
  position: fixed; bottom: 84px; left: 50%; transform: translate(-50%, 8px);
  z-index: 110; max-width: 92vw;
  background: rgba(44,35,33,.94); color: #E3CD9F;
  font-family: 'Inter', system-ui, sans-serif; font-size: .68rem; letter-spacing: .08em;
  padding: 11px 18px; text-align: center;
  border: 1px solid rgba(201,169,110,.5); box-shadow: 0 10px 30px rgba(0,0,0,.3);
  opacity: 0; transition: opacity .35s, transform .35s; pointer-events: none;
}
.tbu-toast-photo.is-visible { opacity: 1; transform: translate(-50%, 0); }

/* ═══ SECTION AVIS RÉUTILISABLE (carrousel « ils nous font confiance ») ═══ */
.tbu-avis { background:#FAF6F0; padding:3.2rem 1.5rem 3.6rem; }
.tbu-avis-int { max-width:1200px; margin:0 auto; }
.tbu-avis-tete { text-align:center; max-width:640px; margin:0 auto; }
.tbu-avis-orne { display:flex; align-items:center; justify-content:center; gap:12px; }
.tbu-avis-orne i { display:block; width:46px; height:1px; background:linear-gradient(90deg, rgba(201,169,110,0), rgba(201,169,110,.8)); }
.tbu-avis-orne i:last-child { transform:scaleX(-1); }
.tbu-avis-orne s { width:5px; height:5px; background:#C9A96E; transform:rotate(45deg); text-decoration:none; }
.tbu-avis { overflow-x:clip; } .tbu-avis h2 { font-family:'Cormorant Garamond',serif; font-weight:500; font-size:clamp(1.35rem,5vw,2.1rem); line-height:1.14; margin-top:14px; color:#2C2321; text-wrap:balance; }
.tbu-avis h2 em { color:#6B1D2A; font-style:italic; }
.tbu-avis .tbu-avis-note { display:inline-flex; align-items:center; gap:8px; margin-top:12px; font-family:'Inter',system-ui,sans-serif; font-size:.82rem; color:#6B5D57; }
.tbu-avis .tbu-avis-note b { color:#2C2321; font-weight:600; }
.tbu-avis .tbu-avis-note .et { color:#FBBC05; letter-spacing:.1em; font-size:1rem; }
.tbu-avis-piste { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding:6px 1.5rem 14px; margin:24px -1.5rem 0; scrollbar-width:none; }
.tbu-avis-piste::-webkit-scrollbar { display:none; }
.tbu-avis-carte { flex:0 0 80vw; max-width:360px; scroll-snap-align:center; background:#fff; border:1px solid rgba(201,169,110,.5); padding:18px 18px 20px; box-shadow:0 1px 2px rgba(44,35,33,.05); }
@media (min-width:768px) { .tbu-avis-carte { flex-basis:330px; } }
.tbu-avis-carte .haut { display:flex; align-items:center; gap:11px; }
.tbu-avis-carte .pa { width:40px; height:40px; border-radius:50%; color:#FAF6F0; display:flex; align-items:center; justify-content:center; font-family:'Inter',sans-serif; font-weight:600; font-size:1rem; flex-shrink:0; }
.tbu-avis-carte .nom { flex:1; min-width:0; font-family:'Inter',sans-serif; font-weight:600; font-size:14px; color:#2C2321; }
.tbu-avis-carte .nom small { display:block; font-weight:400; font-size:11.5px; color:#8A7A72; margin-top:1px; }
.tbu-avis-carte .gg { flex-shrink:0; opacity:.9; }
.tbu-avis-carte .et { color:#FBBC05; font-size:.95rem; letter-spacing:.1em; display:block; margin-top:9px; }
.tbu-avis-carte p { font-size:13.5px; line-height:1.65; color:#4A3F3A; margin-top:7px;
  display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.tbu-avis-jauge { height:2px; background:rgba(201,169,110,.22); margin:12px auto 0; max-width:260px; position:relative; overflow:hidden; }
.tbu-avis-jauge > span { position:absolute; inset:0; background:#C9A96E; transform-origin:left; transform:scaleX(.18); }
.tbu-avis-cta { text-align:center; margin-top:26px; }
.tbu-avis-cta a { display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:50px; padding:0 26px;
  background:#6B1D2A; color:#FAF6F0; font-family:'Inter',sans-serif; font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; font-weight:600; transition:background .3s; }
.tbu-avis-cta a:hover { background:#C9A96E; color:#2C2321; }
@media (max-width:767px){ .tbu-avis h2{ max-width:18ch; margin-left:auto; margin-right:auto; } }

/* ── variante compacte (accueil, sous le chapô) ── */
.tbu-avis--compact { padding:2.2rem 1.5rem 2.6rem; }
.tbu-avis--compact h2 { font-size:clamp(1.25rem,4vw,1.7rem); }
@media (max-width:767px){ .tbu-avis--compact h2{ max-width:18ch; } }
.tbu-avis--compact .tbu-avis-piste { margin-top:18px; }
.tbu-avis--compact .tbu-avis-carte { padding:15px 16px 16px; }
@media (min-width:768px){ .tbu-avis--compact .tbu-avis-carte{ flex-basis:300px; } }
.tbu-avis--compact .tbu-avis-cta { margin-top:18px; }
.tbu-avis--compact .tbu-avis-cta a { background:none; color:#6B1D2A; min-height:40px; padding:0 2px 4px;
  border-bottom:1px solid rgba(201,169,110,.7); letter-spacing:.16em; }
.tbu-avis--compact .tbu-avis-cta a:hover { background:none; color:#C9A96E; }
