/* ═══════════════════════════════════════════════════════════════════
   CALEDOHUB TYPO FIX v1 — Police uniforme + barre baromètre +
   bouton mauve hidden + centrage hero
   Loaded after caledohub-stabilize.css. Priorité maximale.
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1. POLICE UNIFORME — Outfit + Inter, kill cursive ────────────── */
html, body,
body p, body li, body label,
body span:not([class*="icon"]):not([class*="emoji"]),
body div:not([class*="icon"]):not([class*="emoji"]),
body button:not([class*="emoji"]),
body a:not([class*="emoji"]):not([class*="icon"]),
body input, body textarea, body select,
body [class*="hero"] p, body [class*="hero"] .lede, body [class*="hero"] .subtitle {
  font-family: "Outfit", "Inter", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
  font-style: normal !important;
}

body h1, body h1 *,
body h2, body h2 *,
body h3, body h3 *,
body h4, body h4 *,
body h5, body h5 *,
body h6, body h6 *,
body .title, body .title *,
body .titre, body .titre *,
body [class*="hero"] h1, body [class*="hero"] h1 *,
body [class*="hero"] h2, body [class*="hero"] h2 *,
body [class*="hero"] h3, body [class*="hero"] h3 *,
body [class*="hero-title"], body [class*="hero-title"] *,
body [class*="titre-hero"], body [class*="titre-hero"] *,
body .section-title, body .section-title *,
body .display, body [class*="display"] {
  font-family: "Outfit", "Plus Jakarta Sans", "Inter", -apple-system, sans-serif !important;
  font-style: normal !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.15 !important;
}

/* Em/strong/span/i/b à l'intérieur des titres héritent — pas de cursive */
body h1 em, body h1 strong, body h1 span, body h1 i, body h1 b,
body h2 em, body h2 strong, body h2 span, body h2 i, body h2 b,
body h3 em, body h3 strong, body h3 span, body h3 i, body h3 b,
body [class*="hero"] h1 em, body [class*="hero"] h1 strong, body [class*="hero"] h1 span,
body [class*="hero"] h1 i, body [class*="hero"] h1 b,
body [class*="hero"] h2 em, body [class*="hero"] h2 strong, body [class*="hero"] h2 span {
  font-family: inherit !important;
  font-style: normal !important;
  font-weight: inherit !important;
}

/* Force shadowing des @font-face de cursive vers Outfit */
@font-face { font-family: "Caveat";         src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Caveat Brush";   src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Pacifico";       src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Dancing Script"; src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Sacramento";     src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Satisfy";        src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Lobster";        src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Great Vibes";    src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Indie Flower";   src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Kalam";          src: local("Outfit"), local("Inter"); font-weight: 100 900; }
@font-face { font-family: "Righteous";      src: local("Outfit"), local("Inter"); font-weight: 100 900; }

/* Anti-aliasing premium */
body, body * {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* ─── 2. BAROMÈTRE — bars visibles (fix cascade height %) ──────────── */
.cd-bars {
  display: flex !important;
  gap: 6px !important;
  height: 200px !important;
  align-items: stretch !important;  /* stretch enfants à 100% hauteur */
  padding: 0 8px !important;
  margin-bottom: 8px !important;
}
.cd-bar {
  flex: 1 !important;
  height: 100% !important;          /* OBLIGATOIRE pour que .cd-bar-fill height:% marche */
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-end !important;  /* bars poussées vers le bas */
  gap: 6px !important;
  position: relative !important;
  min-width: 0 !important;
}
.cd-bar-fill {
  width: 70% !important;
  background: linear-gradient(0deg, #10b981 0%, #34d399 100%) !important;
  border-radius: 4px 4px 0 0 !important;
  min-height: 8px !important;        /* visible même si height:0% */
  opacity: 1 !important;
  visibility: visible !important;
  display: block !important;
  transition: height 0.3s ease !important;
  box-shadow: 0 -1px 4px rgba(16, 185, 129, 0.25) !important;
}
.cd-bar span {
  font-size: 0.65rem !important;
  color: #94a3b8 !important;
  text-transform: uppercase !important;
  font-weight: 600 !important;
  letter-spacing: 0.3px !important;
  margin-top: 4px !important;
  flex-shrink: 0 !important;
}

/* ─── 3. CENTRAGE HERO — texte propre et lisible ──────────────────── */
body section.hero,
body .hero,
body header.hero,
body [class*="hero"]:not(#cds-header):not(.ch-top-bar) {
  text-align: center !important;
}

body section.hero h1,
body section.hero h2,
body section.hero p,
body .hero h1, body .hero h2, body .hero p,
body [class*="hero"] h1,
body [class*="hero"] h2,
body [class*="hero"] p:not([class*="lede-left"]):not([style*="text-align"]) {
  text-align: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: 900px !important;
}

body section.hero h1,
body .hero h1,
body [class*="hero"] h1 {
  font-size: clamp(1.75rem, 4vw, 2.75rem) !important;
  margin-bottom: 0.5em !important;
}
body section.hero p,
body .hero p,
body [class*="hero"] p {
  font-size: clamp(0.95rem, 1.5vw, 1.1rem) !important;
  line-height: 1.55 !important;
  margin-bottom: 1em !important;
  color: #cbd5e1 !important;
}

/* ─── 4. BOUTON MAUVE TOP-LEFT — kill ─────────────────────────────── */
/* Tout élément fixed top:0 left:0 avec bg violet/purple = parasite */
body > [style*="position: fixed"][style*="top: 0"][style*="background: #6a1b9a"],
body > [style*="position: fixed"][style*="top: 0"][style*="background: #8b5cf6"],
body > [style*="position: fixed"][style*="top: 0"][style*="background: #a78bfa"],
body > [style*="position:fixed"][style*="top:0"][style*="background:#6a"],
body > [style*="position:fixed"][style*="top:0"][style*="background:#8b"],
body > [style*="position:fixed"][style*="top:0"][style*="background:#a7"],
/* Loader / progress bar top-left — UNCONDITIONAL kill (le JS premium-ui crée
   #cds-progress avec gradient brand rose/violet et oublie parfois de l'effacer
   après navigation. Le forcer à être permanent display:none ne casse rien :
   c'est purement décoratif.) */
#cds-progress,
.cds-progress,
#cds-progress-bar,
body > #chbpHubLoader,
body > #chbpLoader,
body > .ch-loading-bar,
body > .top-loading-bar,
/* Catch-all : tout div fixed top-left avec bg purple */
body > div[class*="purple"][style*="fixed"],
body > div[class*="violet"][style*="fixed"],
body > div[class*="debug"][style*="fixed"],
body > div[class*="dev-"][style*="fixed"],
body > div[class*="beta-"][style*="fixed"] {
  display: none !important;
}

/* Hide any small purple fixed bar that appears top-left (top < 50px, left < 200px, small) */
[class*="ribbon"][style*="top:0"][style*="left:0"],
[class*="badge"][style*="position:fixed"][style*="top:0"][style*="left:0"] {
  display: none !important;
}

/* ─── 5. Cards / sections — alignement propre ─────────────────────── */
body section,
body main > section {
  text-align: left;
}
body section h2.section-title,
body section h3.section-title,
body .section-title {
  text-align: center !important;
  margin: 0 auto 1.5rem !important;
  max-width: 100% !important;
}
body .section-sub,
body section > p.section-sub {
  text-align: center !important;
  margin: 0 auto 1.5rem !important;
  max-width: 720px !important;
  color: #64748b !important;
}

/* ─── 6. KPIs stats — chiffres + labels centrés ───────────────────── */
.hero-stat,
.hero-stats,
[class*="hero-stat"] {
  text-align: center !important;
}
.hero-stat strong,
.hero-stat .stat-val,
.hero-stat .value,
.hero-stat .num,
[class*="stat-val"] {
  font-family: "Outfit", "Plus Jakarta Sans", sans-serif !important;
  font-weight: 800 !important;
  letter-spacing: -0.025em !important;
  font-variant-numeric: tabular-nums !important;
}

/* ─── 7. ALIGNEMENT modaux résultats véhicule ──────────────────────── */

/* Modal "DÉTAILS TECHNIQUES" (.vp-grid) — élargir colonne label + autoriser wrap */
.vp-grid {
  grid-template-columns: minmax(180px, max-content) 1fr !important;
  gap: 8px 18px !important;
}
.vp-grid .vp-l {
  white-space: normal !important;
  word-break: break-word !important;
  padding-right: 8px !important;
}
.vp-grid .vp-v {
  word-break: break-word !important;
  overflow-wrap: break-word !important;
}
@media (max-width: 520px) {
  .vp-grid {
    grid-template-columns: minmax(120px, max-content) 1fr !important;
    gap: 6px 12px !important;
  }
}

/* Résultat plaque "cache local" (.cdd-extra-row) — uniformiser layout */
.cdd-extra-row {
  display: grid !important;
  grid-template-columns: 200px 1fr !important;
  gap: 8px 16px !important;
  padding: 6px 0 !important;
  font-size: 14px !important;
  line-height: 1.45 !important;
  align-items: baseline !important;
}
.cdd-extra-row > :first-child,
.cdd-extra-row .cdd-l,
.cdd-extra-row .label {
  white-space: normal !important;
  word-break: break-word !important;
  padding-right: 8px !important;
}
.cdd-extra-row > :last-child,
.cdd-extra-row .cdd-v,
.cdd-extra-row .value {
  word-break: break-word !important;
  overflow-wrap: break-word !important;
}
@media (max-width: 640px) {
  .cdd-extra-row {
    grid-template-columns: 140px 1fr !important;
    gap: 6px 12px !important;
  }
}

/* VIN decoder grid (.cdd-vin-grid + cells) */
.cdd-vin-grid {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 6px !important;
}
@media (min-width: 720px) {
  .cdd-vin-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
.cdd-vin-cell {
  display: grid !important;
  grid-template-columns: minmax(150px, max-content) 1fr !important;
  gap: 4px 12px !important;
  align-items: baseline !important;
}
.cdd-vin-cell .cdd-vin-l {
  white-space: normal !important;
  word-break: break-word !important;
  padding-right: 8px !important;
}
.cdd-vin-cell .cdd-vin-v {
  word-break: break-word !important;
}

/* ─── 8. BANDE FUEL/PRIX-ÉNERGIE — fix overlap + tout sur 1 ligne + espaces réduits ─── */
.ch-fuel-info {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  margin: 0 auto 8px !important;          /* 32px → 8px : bande/titre serré */
  padding: 6px 16px !important;            /* 10px → 6px : bande plus fine */
  max-width: 100% !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 14px !important;
  overflow-x: auto !important;
  white-space: nowrap !important;
  z-index: 5 !important;
  font-size: 0.82rem !important;
  scrollbar-width: thin !important;
}
.ch-fuel-info > * {
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}
@media (max-width: 768px) {
  .ch-fuel-info {
    font-size: 0.72rem !important;
    gap: 8px !important;
    padding: 4px 12px !important;
    margin-bottom: 6px !important;
  }
}

/* Espaces hero compacts (réduits suite demande user) */
body section.hero,
body .hero,
body header.hero,
body section.hero#main-content {
  padding-top: 8px !important;             /* 32px → 8px : serre vers la top-bar */
}
body section.hero h1:first-of-type,
body .hero h1:first-of-type,
body [class*="hero"] h1:first-of-type {
  margin-top: 4px !important;              /* 24px → 4px : serre vers la bande */
}

/* Bande fuel-info ↔ titre serré */
.ch-fuel-info + h1,
.ch-fuel-info + h2,
.ch-fuel-info ~ h1,
.ch-fuel-info ~ h2 {
  margin-top: 4px !important;              /* 32px → 4px */
}

/* ─── 9. NUKE total des FAB flottants restants ────────────────────── */
/* Garde uniquement : #ch-admin-shortcut */
.fab-bubble, [class*="fab-bubble"],
#bubbleVol, #bubbleGame, #bubbleBot,
.vol-fab, #volFab,
.game-fab, #gameFab,
#cdd-grp-fab,
.chai-fab,
.ch-dark-toggle,
.cds-theme-toggle,
.cdamb-fab, #cdamb-fab,
.cd-kdo-fab, #cd-kdo-fab,
.cd-mobility-fab, #cd-mobility-fab,
.ch-sos, #ch-sos,
#ch-back-to-top,
#backTop, .back-top,
.ch-notif-bell,
#cd-radar-badge,
#cd-amb-banner,
.cd-amb-banner,
#cdamb-fab,
[id*="cdd-grp"],
[class*="cdd-grp"],
button[title*="Jeux" i],
button[aria-label*="Jeux" i],
button[title*="Cadeaux" i],
button[title*="vol" i][class*="fab"],
button[title*="Recherche IA" i],
button[aria-label*="Recherche IA" i],
[class*="ai-search-btn"],
[id*="ai-search-btn"] {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  width: 0 !important;
  height: 0 !important;
  position: absolute !important;
  left: -99999px !important;
}

/* On garde explicitement #ch-admin-shortcut */
#ch-admin-shortcut {
  display: inline-block !important;
  visibility: visible !important;
  pointer-events: auto !important;
  width: auto !important;
  height: auto !important;
  position: fixed !important;
  left: auto !important;
}

/* ─── 10. FORCE visibilité .card-bg + .card-overlay (cards univers) ── */
.univers-card,
.univers-grid .univers-card {
  position: relative !important;
  overflow: hidden !important;
  min-height: 180px !important;
  background-color: #1a2744 !important;
}
.univers-card .card-bg,
.card-bg {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: absolute !important;
  inset: 0 !important;
  top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important;
  width: 100% !important;
  height: 100% !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  z-index: 1 !important;
}
.univers-card .card-overlay,
.card-overlay {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(0deg, rgba(15,23,42,.88) 0%, rgba(15,23,42,.50) 50%, rgba(15,23,42,.20) 100%) !important;
  z-index: 2 !important;
}
.univers-card .card-content,
.card-content {
  position: relative !important;
  z-index: 3 !important;
  color: #ffffff !important;
}
.univers-card h3,
.univers-card .card-content h3 {
  color: #ffffff !important;
}

/* ─── 11. NUKE "Recherche IA" buttons (par classe ou textContent via stabilize.js) ── */
/* Selectors de fallback CSS — la majorité des hide est faite via JS textContent matching */
button.ai-search-btn,
a.ai-search-btn,
[data-action="recherche-ia"],
[data-feature="ai-search"],
[class*="search-ai-btn"],
[class*="ai-recherche"],
button[onclick*="aiSearch"],
button[onclick*="rechercheIA"],
button[onclick*="recherche-ia"] {
  display: none !important;
}

/* Catch-all : buttons avec gradient violet→rose (style typique du bouton Recherche IA) */
button[style*="linear-gradient"][style*="#a78bfa"],
button[style*="linear-gradient"][style*="#8b5cf6"],
button[style*="linear-gradient"][style*="rgb(167, 139, 250)"],
button[style*="linear-gradient"][style*="rgb(139, 92, 246)"] {
  display: none !important;
}

/* ─── 12. POLICE UNIFORME pour tous les dashboards ────────────────── */
/* Force Outfit (la police du sidebar admin) sur TOUS les dashboards (admin, espace-pro, dashboard, etc.) */
body:has(.sb, .sidebar, .admin-sidebar, [class*="dashboard"]),
.sb, .sb *,
.sidebar, .sidebar *,
.admin-sidebar, .admin-sidebar *,
[class*="dashboard-"] *,
.sb-item, .sb-sec, .sb-logo, .sb-persona,
.dashboard-card, .dashboard-card *,
.admin-card, .admin-card *,
.dash-section, .dash-section *,
.dash-tab, .dash-tab *,
body.dashboard, body.dashboard *,
body.admin, body.admin *,
.tc, .tc *,                              /* tab content admin */
.kpi-card, .kpi-card * {
  font-family: "Outfit", "Inter", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
}

/* Headings dashboards : Outfit bold */
.sb h1, .sb h2, .sb h3,
.dashboard-card h1, .dashboard-card h2, .dashboard-card h3,
.tc h1, .tc h2, .tc h3,
.admin-card h1, .admin-card h2, .admin-card h3 {
  font-family: "Outfit", "Plus Jakarta Sans", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
}

/* Sidebar items : taille uniforme */
.sb-item {
  font-family: "Outfit", sans-serif !important;
  font-size: 0.74rem !important;
  font-weight: 500 !important;
}
.sb-sec {
  font-family: "Outfit", sans-serif !important;
  font-size: 0.5rem !important;
  text-transform: uppercase !important;
  letter-spacing: 1.5px !important;
  font-weight: 700 !important;
}

/* ─── 13. NAV SUB-MENU — FORCE 12 items/ligne = 2 lignes pile pour 24 items ─ */
nav.navbar,
body nav.navbar,
body[data-cds-site="caledodrive"] nav.navbar {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: stretch !important;
  gap: 3px !important;
  padding: 6px 8px !important;
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

/* Chaque item prend EXACTEMENT 1/12 de la largeur (avec gap déduit) */
nav.navbar a,
nav.navbar > a,
body nav.navbar a {
  flex: 1 1 calc(100% / 12 - 4px) !important;   /* ← 12 par ligne forcé */
  max-width: calc(100% / 12 - 4px) !important;
  min-width: 0 !important;
  padding: 3px 4px !important;
  font-size: 0.62rem !important;
  font-weight: 600 !important;
  border-radius: 14px !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2px !important;
  letter-spacing: -0.01em !important;
  min-height: 20px !important;
  text-align: center !important;
  box-sizing: border-box !important;
}

/* Tablet : passer à 8 items/ligne (3 lignes acceptées) */
@media (max-width: 900px) {
  nav.navbar a {
    flex: 1 1 calc(100% / 8 - 4px) !important;
    max-width: calc(100% / 8 - 4px) !important;
    font-size: 0.6rem !important;
  }
}

/* Mobile : 6 items/ligne */
@media (max-width: 600px) {
  nav.navbar a {
    flex: 1 1 calc(100% / 6 - 4px) !important;
    max-width: calc(100% / 6 - 4px) !important;
    font-size: 0.58rem !important;
    padding: 2px 3px !important;
    min-height: 18px !important;
  }
}

/* Very small : 4 items/ligne */
@media (max-width: 400px) {
  nav.navbar a {
    flex: 1 1 calc(100% / 4 - 4px) !important;
    max-width: calc(100% / 4 - 4px) !important;
  }
}

/* ─── 14. SECTION "Trouvez un pro auto près de chez vous" — espaces serrés ─ */
section.section[style*="padding:30px 20px"] {
  padding: 16px 20px !important;
}
section .section-title[style*="font-size:1.1rem"] {
  font-size: 1.05rem !important;
  margin-bottom: 12px !important;
}
section [style*="grid-template-columns:repeat(auto-fit,minmax(200px"],
section [style*="grid-template-columns:repeat(auto-fit,minmax(150px"] {
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important;
  gap: 2px 8px !important;
}
section a[href*="-noumea.html"],
section a[href*="-dumbea.html"],
section a[href*="-paita.html"],
section a[href*="-montdore.html"],
section a[href*="-kone.html"],
section a[href*="-bourail.html"],
section a[href*="-koumac.html"],
section a[href*="-la-foa.html"],
section a[href*="mecanique-"],
section a[href*="concessionnaire-"],
section a[href*="pieces-"],
section a[href*="pneus-"],
section a[href*="carrosserie-"],
section a[href*="lavage-"],
section a[href*="depannage-"],
section a[href*="ct-"],
section a[href*="autoecole-"],
section a[href*="location-"] {
  padding: 2px 0 !important;
  font-size: 0.78rem !important;
  line-height: 1.3 !important;
}

/* ─── 15. Placeholders "ex:" en gris pâle italique pour valeurs exemple ─ */
/* Catch-all : tout placeholder commençant par "ex: " */
input::placeholder {
  color: #cbd5e1;
  font-style: italic;
  opacity: 1;
}

/* Inputs concernés : Comparateur, Cote, Crédit, TCO, Conso */
#compAKm, #compBKm, #compAPrix, #compBPrix,
#coteKm, #cotePrixCatalogue, #coteOptionsUsine, #coteAccessoires,
#creditPrix, #creditApport, #creditDuree, #creditTaux,
#tcoAchat, #tcoApport, #tcoKm, #tcoConso, #tcoAssurance, #tcoEntretien,
#tcoDuree, #tcoTaux, #tcoCarburantPrix,
#compKm, #compConso, #compKwh,
#listPrix, #listKm {
  color: #0f172a !important;
  font-weight: 600 !important;
}

#compAKm::placeholder, #compBKm::placeholder, #compAPrix::placeholder, #compBPrix::placeholder,
#coteKm::placeholder, #cotePrixCatalogue::placeholder, #coteOptionsUsine::placeholder, #coteAccessoires::placeholder,
#creditPrix::placeholder, #creditApport::placeholder, #creditDuree::placeholder, #creditTaux::placeholder,
#tcoAchat::placeholder, #tcoApport::placeholder, #tcoKm::placeholder, #tcoConso::placeholder,
#tcoAssurance::placeholder, #tcoEntretien::placeholder, #tcoDuree::placeholder, #tcoTaux::placeholder,
#compKm::placeholder, #compConso::placeholder, #compKwh::placeholder,
#listPrix::placeholder, #listKm::placeholder {
  color: #cbd5e1 !important;
  font-style: italic !important;
  font-weight: 400 !important;
  opacity: 1 !important;
}

/* ─── 16. Panneau baromètre pro — auto-resize complet ─────────────── */
/* Container principal : pas de max-height qui tronque */
#chbpInline, #chbpStand, #chbpPro,
[id^="chbp"], [class^="chbp"],
[id^="cd-barometre"], [class^="cd-barom"] {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
  min-height: 0 !important;
}

/* Sub-containers (KPIs, tables, charts) */
.chbp-kpis, .chbp-table, .chbp-section, .chbp-content,
[class*="chbp-stat"], [class*="chbp-row"], [class*="chbp-tab"],
.cd-table, .cd-list, .cd-section,
[id*="chbpStand"], [id*="chbpInline"] {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}

/* Top 10 marques / commune tables : assure que toutes les rows sont visibles */
[class*="top-marques"], [class*="topMarques"],
[class*="top-communes"], [class*="topCommunes"],
[class*="repartition"],
[id*="topMarques"], [id*="topCommunes"] {
  max-height: none !important;
  overflow: visible !important;
}

/* Modal / overlay baromètre pro — étendre largeur si besoin */
.chbp-modal, [class*="chbp-overlay"], [class*="chbp-wrapper"] {
  max-width: 95vw !important;
  max-height: 90vh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Inner content : pas de fixed height */
.chbp-modal > div, .chbp-modal > section,
.chbp-modal .chbp-body {
  height: auto !important;
  max-height: none !important;
}

/* ─── 17. Suivi CT — masquer date input (auto-rempli côté JS) ────── */
/* L'input #ctDate est inutile à l'écran car wrapSaveCTDate auto-remplit
   avec today + 2 ans avant l'enregistrement. On le garde en DOM (display:none
   ne le retire pas du formulaire) pour que la logique JS continue de fonctionner. */
#ctDate,
input#ctDate,
label[for="ctDate"],
.ctDate-row,
.ct-date-row,
[data-field="ctDate"],
[data-input="ctDate"] {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: none !important;
}

/* Si le label utilise un texte précis "Date du prochain CT" et un wrapper générique */
label:has(> input#ctDate),
div:has(> input#ctDate),
.form-row:has(input#ctDate),
.form-group:has(input#ctDate),
.field:has(input#ctDate) {
  display: none !important;
}

/* ─── 18. Belt-and-suspenders : neutraliser le progress bar du premium-ui ─ */
/* Le bouton/bar rose top-left = #cds-progress, créé en JS avec style inline
   width 0→95%, gradient brand. Si la navigation ne se termine pas proprement,
   le bar reste visible. On le force OFF avec une règle ultra-spécifique qui
   bat même les styles inline (display:none vs inline style). */
html body #cds-progress,
html body .cds-progress,
html body [id="cds-progress"] {
  display: none !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  position: absolute !important;
  left: -99999px !important;
}

/* ─── 19. FOOTER ULTRA-COMPACT — kill tous les gros espaces, partout ─── */
/* Le hub a 3+ sources de footer (firebase-init.js .ch-uf-*, footer-unified.js
   .cdh-uf-*, footer hardcodé .footer-col). Au lieu de poursuivre chaque source,
   on force la compacité avec !important sur tous les sélecteurs connus.       */

html body footer,
html body .ch-unified-footer,
html body .cdh-uf,
html body .cdh-fallback-footer,
html body footer[role="contentinfo"] {
  padding: 16px 14px 10px !important;
  margin-top: 24px !important;
}

/* Grids */
html body .ch-unified-footer .ch-uf-grid,
html body .cdh-uf .cdh-uf-grid,
html body footer .footer-grid {
  gap: 18px !important;
  margin-bottom: 10px !important;
}

/* Titres colonnes */
html body .ch-unified-footer .ch-uf-col h4,
html body .cdh-uf .cdh-uf-col h4,
html body footer .footer-col h4,
html body footer h4 {
  margin: 0 0 6px !important;
  font-size: 11px !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
}

/* Listes */
html body .ch-unified-footer .ch-uf-col ul,
html body .cdh-uf .cdh-uf-col ul,
html body footer .footer-col ul,
html body footer ul {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

/* ITEMS — la VRAIE raison des gros gaps : on flatten margin/padding/line-height */
html body .ch-unified-footer .ch-uf-col li,
html body .cdh-uf .cdh-uf-col li,
html body footer .footer-col li,
html body footer li {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.35 !important;
  font-size: 12px !important;
}

/* Liens dans les colonnes */
html body .ch-unified-footer .ch-uf-col a,
html body .cdh-uf .cdh-uf-col a,
html body footer .footer-col a,
html body footer ul a,
html body footer li a {
  display: block !important;
  padding: 1px 0 !important;
  margin: 0 !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
}

/* Paragraphes colonne brand */
html body .ch-unified-footer .ch-uf-col p,
html body .cdh-uf .cdh-uf-col p,
html body footer .footer-brand p,
html body footer p {
  margin: 0 0 4px !important;
  font-size: 12px !important;
  line-height: 1.4 !important;
}

/* Brand logo / titre principal du footer */
html body .ch-unified-footer .ch-uf-brand,
html body .cdh-uf .cdh-uf-brand,
html body footer .footer-brand h3 {
  font-size: 15px !important;
  margin: 0 0 6px !important;
}

/* Lignes de contact (adresse) */
html body .ch-unified-footer .ch-uf-contact-line,
html body .cdh-uf .cdh-uf-contact-line {
  margin: 0 !important;
  line-height: 1.4 !important;
  font-size: 12px !important;
}

/* Bandeau du bas */
html body .ch-unified-footer .ch-uf-bottom,
html body .cdh-uf .cdh-uf-bottom,
html body footer .footer-bottom {
  padding: 8px 0 0 !important;
  margin-top: 8px !important;
  font-size: 11px !important;
  gap: 6px !important;
}

/* Tableau dégât : kill toute marge globale dans le footer */
html body footer * {
  margin-top: 0 !important;
}
html body footer > *,
html body footer ul,
html body footer ul li,
html body footer .footer-col,
html body footer .ch-uf-col,
html body footer .cdh-uf-col {
  margin-top: 0 !important;
}

/* ─── 20. KILL .ch-top-bar (firebase-init.js) — barre dupliquée ─────── */
/* Le hub a 2 sources de top-bar :
   - caledohub-firebase-init.js : .ch-top-bar (13 sites, ordre obsolète, position:fixed
     z-index:99999, OVERLAY l'autre)
   - caledohub-design-system.js : #cds-header .cds-sites-bar (14 sites, canonical)
   On vire la première, la seconde devient visible. */
html body .ch-top-bar,
html body .ch-tb-inner,
html body .ch-tb-brand,
html body .ch-tb-badge,
html body .ch-tb-nav,
html body .ch-tb-actions,
html body .ch-tb-link {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  position: absolute !important;
  left: -99999px !important;
  z-index: -1 !important;
}

/* Le firebase-init.js ajoute padding-top:44px au body quand la bar est active.
   Comme on tue la bar, on tue aussi le push pour pas avoir un trou en haut. */
html.ch-bar-active body,
html body {
  /* On ne touche pas globalement au padding-top du body (peut casser d'autres
     overlays), mais on annule SPÉCIFIQUEMENT la règle de firebase-init.js */
}
html.ch-bar-active body {
  padding-top: 0 !important;
}

/* ─── 21. FORCE header-unified.js visible (.cdh-uh-injected) ───────── */
/* Sur certains sites (caledodrive), un <style> inline ou un autre CSS
   masquait/écrasait l'header-unified. On force sa visibilité avec
   priorité maximale. C'est LA barre canonique du hub : logo + sites +
   actions (Admin / Devenir Partenaire / Espace Pro / Accueil). */
html body header.cdh-uh,
html body header.cdh-uh-injected,
html body .cdh-uh.cdh-uh-injected {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: sticky !important;
  top: 0 !important;
  left: 0 !important;
  right: auto !important;
  bottom: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 40px !important;
  z-index: 9999 !important;
  background: #1a2744 !important;
  padding: 0 !important;
  margin: 0 !important;
  transform: none !important;
}
html body .cdh-uh-inner {
  display: flex !important;
  visibility: visible !important;
  width: 100% !important;
}
html body .cdh-uh-sites,
html body .cdh-uh-actions,
html body .cdh-uh-logo {
  display: flex !important;
  visibility: visible !important;
}

/* ─── 22. Kill boutons top-right header-unified (Admin / Partenaire /
            Espace Pro / Accueil) — demandé partenaire pour épurer la barre ─ */
html body .cdh-uh-actions .cdh-uh-btn-admin,
html body .cdh-uh-actions .cdh-uh-btn-partner,
html body .cdh-uh-actions .cdh-uh-btn-outline,
html body .cdh-uh-actions .cdh-uh-btn,
html body header.cdh-uh-injected .cdh-uh-actions a.cdh-uh-btn-admin,
html body header.cdh-uh-injected .cdh-uh-actions a.cdh-uh-btn-partner,
html body header.cdh-uh-injected .cdh-uh-actions a.cdh-uh-btn-outline,
html body header.cdh-uh-injected .cdh-uh-actions a.cdh-uh-btn {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
}
/* Le container .cdh-uh-actions devient vide → on le cache aussi pour pas
   garder un espace vide à droite du menu sites. */
html body header.cdh-uh-injected .cdh-uh-actions {
  display: none !important;
}

/* ─── 23. Fuel-info bar (.ch-fuel-info) — version DISCRETE plus petite ─ */
/* Demandé partenaire : Essence/Gazole/Électricité/Mars 2026 trop visible.
   On réduit font, padding, opacity pour info utilitaire en filigrane. */
html body .ch-fuel-info {
  font-size: 0.68rem !important;
  padding: 3px 12px !important;
  margin: 0 auto 4px !important;
  gap: 10px !important;
  opacity: 0.7 !important;
  background: rgba(0, 0, 0, 0.08) !important;
  border-radius: 6px !important;
  max-width: 720px !important;
}
html body .ch-fuel-info:hover {
  opacity: 1 !important;
}
html body .ch-fuel-info > * {
  font-size: 0.68rem !important;
}
html body .ch-fuel-info strong,
html body .ch-fuel-info b {
  font-weight: 600 !important;
}
@media (max-width: 768px) {
  html body .ch-fuel-info {
    font-size: 0.6rem !important;
    padding: 2px 8px !important;
    gap: 6px !important;
  }
  html body .ch-fuel-info > * { font-size: 0.6rem !important; }
}

/* ─── 24. Ticker scrollant (.ticker) — supprimé (demandé partenaire) ─ */
/* Bandeau social-proof scrollant ("DAP Nouméa : pièces livrées 48h",
   "BCI : crédit auto 3.9%", "Tropical Car Wash -20%", etc.). Trop bruyant
   pour la home épurée. On le retire complètement. */
html body .ticker,
html body .ticker-inner,
html body div.ticker {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ─── Marker ───────────────────────────────────────────────────────── */
/* CDS-TYPO-FIX-V2.4 */
