/* ============================================================================
   HUB delahayemotors.fr — le site du GROUPE.
   Volontairement neutre : aucun code constructeur, aucune photo de marque. Sa
   couverture est typographique, sa couleur est le bleu du logo Delahaye Motors
   (#2b3a8c, relevé au pixel sur static/logo-delahaye.png).
   ========================================================================= */
body.hub{ --accent:#2b3a8c; --accent-clair:#3d51b8; --titre-famille:'Inter',system-ui,sans-serif;
  --titre-poids:700; --titre-transform:none; --titre-espacement:-.02em; }

/* ---------- barre ---------- */
.hb-tete{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.97);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--ligne)}
.hb-in{max-width:1400px;margin:0 auto;padding:0 22px;display:flex;align-items:center;
  gap:32px;min-height:78px}
.hb-logo img{height:46px;width:auto}
.hb-liens{display:flex;gap:28px;flex:1}
.hb-liens a{font-size:15px;color:var(--encre);padding:4px 0;border-bottom:2px solid transparent}
.hb-liens a:hover,.hb-liens a.on{border-bottom-color:var(--accent)}
.hb-tel{font-weight:700;font-size:15px;color:var(--accent)}
.hb-burger{display:none;background:none;border:0;font-size:24px;cursor:pointer;margin-left:auto}

/* ---------- couverture typographique ---------- */
.hb-couv{background:linear-gradient(150deg,#12172e 0%,#1e2a5e 55%,#2b3a8c 100%);
  color:#fff;padding:96px 0 88px}
.hb-couv.courte{padding:64px 0 56px}
.hb-ey{font-size:12px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  color:#aab6e8;margin-bottom:18px}
.hb-couv h1{font-size:clamp(30px,5.2vw,62px);line-height:1.06;font-weight:700;
  letter-spacing:-.02em;margin-bottom:22px}
.hb-chapo{font-size:clamp(16px,1.9vw,19px);line-height:1.7;color:#d3daf5;max-width:64ch}
.hb-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
.btn-ligne.clair{border-color:rgba(255,255,255,.6);color:#fff}
.btn-ligne.clair:hover{background:#fff;color:#12172e}

/* ---------- les marques ---------- */
.hb-marques{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.hb-marque{display:flex;align-items:center;gap:20px;padding:22px;border:1px solid var(--ligne);
  background:#fff;transition:border-color .18s,box-shadow .18s;border-left:4px solid var(--m,var(--accent))}
.hb-marque:hover{border-color:var(--m,var(--accent));box-shadow:0 10px 30px rgba(0,0,0,.08)}
.hb-marque img{width:74px;height:auto;flex:none;object-fit:contain;max-height:52px}
.hb-nom{width:74px;flex:none;font-weight:800;font-size:17px;letter-spacing:-.01em}
.hb-marque-txt{display:flex;flex-direction:column;gap:3px}
.hb-marque-txt strong{font-size:16.5px}
.hb-marque-txt em{font-style:normal;color:var(--gris);font-size:14px}
.hb-marque-lieux{font-size:12px;color:var(--gris-clair);letter-spacing:.02em}
.hb-marque.externe{border-left-color:var(--ligne2)}

.hb-sous{text-align:center;color:var(--encre2);max-width:70ch;margin:0 auto 30px}
.hb-plus{text-align:center;margin-top:28px}
.hb-conc-marques{font-size:13px;color:var(--gris);margin-top:8px}

/* ---------- filtres de la page occasions ---------- */
.hb-filtres{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}
.hb-filtres .vo-f{padding:10px 16px;font-size:13px}
.hb-filtres .vo-f span{opacity:.6;margin-left:6px}

/* ---------- pied ---------- */
.hb-pied{background:#12172e;color:#c9cfe6;padding:54px 0 26px;margin-top:0}
.hb-pied-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px}
.hb-pied-logo{height:40px;width:auto;margin-bottom:14px;filter:brightness(0) invert(1)}
.hb-pied p{font-size:14px;color:#93a0cc;margin:0}
.hb-pied h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#fff;margin-bottom:12px}
.hb-pied a{display:block;color:#93a0cc;font-size:14px;padding:4px 0}
.hb-pied a:hover{color:#fff}
.hb-pied-bas{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
  border-top:1px solid #232a4d;margin-top:34px;padding-top:18px;font-size:12.5px;color:#7c88b3}

/* ---------- tiroir ---------- */
.hb-tiroir{position:fixed;inset:0;background:#fff;z-index:95;overflow-y:auto;
  padding:90px 26px 40px;display:flex;flex-direction:column}
.hb-tiroir a{color:var(--encre);font-size:18px;padding:15px 0;border-bottom:1px solid var(--ligne)}

@media (max-width:900px){
  .hb-liens,.hb-tel{display:none}
  .hb-burger{display:block}
  .hb-pied-cols{grid-template-columns:1fr 1fr}
  .hb-marques{grid-template-columns:1fr}
}


/* ---------- cartes concession : TROIS adresses, avec les logos des marques ----------
   Le socle met .conc en deux colonnes (pensé pour deux concessions Ducati) ; ici il y a
   trois lieux, et une ligne de deux plus une orpheline se lit mal. On passe à trois de
   front dès qu'il y a la place, et on garde la pile sur téléphone.
   ⚠️ Les logos sont de LARGEURS très inégales (un écusson Ducati contre le mot MOTO GUZZI
   écrit en long) : c'est `logos_concessions.py` qui les met à la même hauteur optique en
   amont, image par image. Ne pas tenter de rattraper ça en CSS avec une largeur fixe,
   on écraserait les uns et on gonflerait les autres. */
@media(min-width:1040px){#concessions .conc{grid-template-columns:repeat(3,1fr)}}
.hb-logos{list-style:none;margin:14px 0 18px;padding:0;
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px}
/* ⚠️ AUCUNE HAUTEUR IMPOSÉE ICI. Chaque logo porte ses attributs width/height, calculés
   par `logos_concessions.py` marque par marque. Forcer `height` dans cette règle écrase
   l'équilibrage optique et fait paraître les écussons minuscules à côté des mots écrits
   en long — erreur faite puis corrigée le 14/09/2026. La boîte de 30 px aligne les
   milieux, quelle que soit la hauteur réelle du logo. */
.hb-logos li{display:flex;align-items:center;min-height:30px}
.hb-logos img{max-width:118px;height:auto;object-fit:contain}
@media(max-width:520px){.hb-logos{gap:12px 14px}
  .hb-logos li{min-height:26px}
  .hb-logos img{max-width:96px;transform:scale(.88);transform-origin:left center}}

/* ---------- bandeau : texte + mosaïque de marques (24/09/2026) ---------- */
.hb-grille{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:56px;align-items:center}
.hb-mosaique{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:200px;gap:14px;padding:18px 0 46px}
.hb-tuile{position:relative;display:block;overflow:hidden;border-radius:6px;
  box-shadow:0 20px 44px rgba(4,8,30,.45);background:#1e2a5e}
.hb-tuile:nth-child(even){transform:translateY(32px)}
.hb-tuile>img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.hb-tuile:hover>img{transform:scale(1.05)}
.hb-tuile::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,0) 55%,rgba(0,0,0,.45) 100%)}
.hb-tuile-logo{position:absolute;left:12px;bottom:12px;z-index:1;background:#fff;border-radius:4px;
  padding:6px 9px;display:flex;align-items:center;box-shadow:0 4px 12px rgba(0,0,0,.25)}
.hb-tuile-logo img{height:20px;width:auto;max-width:92px;object-fit:contain;display:block}
@media (max-width:900px){
  .hb-grille{grid-template-columns:1fr;gap:34px}
  .hb-mosaique{grid-auto-rows:118px;gap:10px;padding:0}
  .hb-tuile:nth-child(even){transform:none}
  .hb-tuile-logo{left:8px;bottom:8px;padding:4px 6px}
  .hb-tuile-logo img{height:15px}
}
/* écusson Ducati et pastille KTM : logos hauts, illisibles à la hauteur des logotypes */
.hb-tuile-logo.l-ducati img{height:36px}
.hb-tuile-logo.l-ktm img{height:30px}
@media (max-width:900px){.hb-tuile-logo.l-ducati img{height:26px}.hb-tuile-logo.l-ktm img{height:22px}}
