/* ==========================================================
   CATALOGUE VENDEURS — habillage premium éditorial
   Additif : ne modifie aucune règle de style.css, cible ses
   propres classes cv-*. Réutilise les tokens de :root.
   ========================================================== */

.cv-entete{ text-align:center; max-width:640px; margin:34px auto 0; }
.cv-entete .titre-page,
.cv-entete .sous-titre{ text-align:center; margin-left:auto; margin-right:auto; }
.cv-pastille{
  display:inline-flex; align-items:center; gap:7px;
  background:#fff; border:1px solid var(--bord); color:var(--navy);
  font-size:12.5px; font-weight:700; letter-spacing:.02em;
  padding:7px 14px; border-radius:99px; margin-bottom:14px;
}
.cv-pastille i{ color:var(--or); }

/* --- Filtres : barre pilule, sobre --- */
.cv-filtres{
  max-width:820px; margin:26px auto 42px; background:#fff;
  border:1px solid var(--bord); border-radius:16px;
  padding:16px 18px; display:grid; grid-template-columns:1fr 1fr auto;
  gap:14px; align-items:end; box-shadow:0 8px 24px rgba(15,39,66,.05);
}
.cv-champ label{ display:block; font-size:12px; font-weight:700; color:var(--grey); margin-bottom:6px; text-transform:uppercase; letter-spacing:.03em; }
.cv-champ select, .cv-champ input{
  width:100%; padding:11px 13px; border:1px solid var(--bord); border-radius:10px; font-size:14.5px; background:#fbfcfe;
}
.cv-champ select:focus, .cv-champ input:focus{ outline:none; border-color:var(--or); background:#fff; }
.cv-champ-btn{ display:flex; }
.cv-champ-btn .btn{ width:100%; white-space:nowrap; }

.cv-vide{ text-align:center; color:var(--grey); padding:40px 0; }

/* --- Grille de cartes --- */
.cv-grille{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));
  gap:26px; margin:10px 0 50px;
}

.cv-carte{
  display:block; background:#fff; border:1px solid var(--bord); border-radius:18px;
  overflow:hidden; text-decoration:none; color:inherit;
  transition:transform .28s cubic-bezier(.2,.7,.2,1), box-shadow .28s;
  box-shadow:0 1px 2px rgba(15,39,66,.04);
}
.cv-carte:hover{
  transform:translateY(-5px);
  box-shadow:0 22px 40px rgba(15,39,66,.12);
  text-decoration:none;
}

/* Bandeau visuel : vraie photo véhicule si dispo, sinon dégradé + monogramme */
.cv-vitrine{
  position:relative; height:172px; background-size:cover; background-position:center;
  background-color:var(--navy);
  background-image:linear-gradient(135deg, var(--navy) 0%, var(--navy2) 100%);
}
.cv-vitrine-vide{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:34px; color:rgba(255,255,255,.18);
}
.cv-carte:has(.cv-vitrine[style*="background-image"]) .cv-vitrine{ background-color:transparent; }
.cv-vitrine-voile{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,20,35,.15) 0%, rgba(10,20,35,.05) 45%, rgba(10,20,35,.55) 100%);
}
.cv-carte:hover .cv-vitrine{
  background-size:auto; /* évite un zoom moche sur les dégradés */
}
.cv-vitrine[style*="background-image"]{ transition:transform .5s ease; }
.cv-carte:hover .cv-vitrine[style*="background-image"]{ transform:scale(1.045); }

.cv-badge-verifie{
  position:absolute; top:12px; left:12px; z-index:2;
  display:inline-flex; align-items:center; gap:5px;
  background:rgba(255,255,255,.94); color:var(--navy);
  font-size:11.5px; font-weight:800; padding:5px 10px; border-radius:99px;
  box-shadow:0 3px 10px rgba(0,0,0,.15);
}
.cv-badge-verifie i{ color:#1E9E5A; }

.cv-type{
  position:absolute; top:12px; right:12px; z-index:2;
  background:rgba(10,20,35,.55); backdrop-filter:blur(4px);
  color:#fff; font-size:11px; font-weight:700; letter-spacing:.02em;
  padding:5px 10px; border-radius:99px;
}

.cv-logo{
  position:absolute; z-index:2; left:16px; bottom:-24px;
  width:56px; height:56px; border-radius:14px; background:#fff center/cover no-repeat;
  border:3px solid #fff; box-shadow:0 6px 16px rgba(15,39,66,.18);
  display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:20px; color:var(--navy);
}

.cv-corps{ padding:36px 18px 20px; }

.cv-titre-ligne{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.cv-corps h3{ margin:0; font-size:17.5px; color:var(--navy); line-height:1.25; }
.cv-note{
  flex:none; display:inline-flex; align-items:center; gap:4px;
  font-size:13px; font-weight:700; color:var(--navy);
  background:#FFF6E2; padding:3px 8px; border-radius:8px;
}
.cv-note i{ color:var(--or); font-size:11px; }

.cv-meta{ display:flex; align-items:center; gap:7px; color:var(--grey); font-size:13px; margin:6px 0 10px; }
.cv-meta i{ color:var(--or); }
.cv-point{ opacity:.6; }

.cv-desc{ color:var(--grey); font-size:13.5px; line-height:1.5; margin:0 0 14px; min-height:40px; }

.cv-score{ display:flex; align-items:center; gap:8px; margin-bottom:16px; }
.cv-score-barre{ flex:1; height:5px; border-radius:99px; background:var(--bg); overflow:hidden; }
.cv-score-barre span{ display:block; height:100%; border-radius:99px; background:linear-gradient(90deg,var(--or-fonce),var(--or)); }
.cv-score-val{ font-size:11.5px; font-weight:700; color:var(--grey); }

.cv-voir{
  display:inline-flex; align-items:center; gap:6px;
  font-size:13.5px; font-weight:700; color:var(--blue);
  padding-top:10px; border-top:1px solid var(--bord); width:100%;
  transition:gap .2s;
}
.cv-carte:hover .cv-voir{ gap:10px; color:var(--or-fonce); }

@media(max-width:560px){
  .cv-filtres{ grid-template-columns:1fr; }
  .cv-grille{ grid-template-columns:1fr; }
}
