/*
 * Uniformisation des vignettes du site public.
 *
 * Les cartes (communiqués, avis, vidéos, ils en parlent, formations) partagent
 * le conteneur .box-image, qui ne contraignait aucune dimension : chaque image
 * s'affichait à sa taille naturelle, d'où des cartes de hauteurs différentes et
 * des visuels aux proportions incohérentes.
 *
 * Règles de prudence, apprises d'une première version trop large :
 *  - la portée est limitée aux vignettes de cartes (.card .box-image) ;
 *    les visuels décoratifs de l'en-tête et les logos ne sont pas touchés ;
 *  - la marge basse reste portée par l'image, car les badges .box-image span
 *    sont positionnés par rapport au conteneur : la déplacer les décalerait ;
 *  - aucun !important sur la hauteur, pour ne pas contrarier les carrousels
 *    Owl qui mesurent leurs éléments à l'initialisation.
 */

.card .box-image {
  position: relative;
  overflow: hidden;
  border-radius: 10px;
  background-color: #f2f4f6;
}

.card .box-image img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  object-position: center;
  border-radius: 10px;
  margin-bottom: 20px;   /* conservée : les badges se positionnent dessus */
}

/*
 * Repli pour les navigateurs sans aspect-ratio (Safari < 15) : hauteur fixe
 * équivalente au 16/9 des colonnes de cartes.
 */
@supports not (aspect-ratio: 16 / 9) {
  .card .box-image img {
    height: 220px;
  }
}

/*
 * Logos de partenaires et certifications : jamais rognés, seulement alignés
 * sur une hauteur commune.
 */
.section-partenaires img,
.partenaire-logo img {
  max-height: 90px;
  width: auto;
  object-fit: contain;
}

/*
 * ------------------------------------------------------------------
 * Harmonisation des cartes de l'accueil
 * ------------------------------------------------------------------
 *
 * Les vignettes ayant désormais toutes la même forme, ce sont les blocs de
 * texte qui font varier la hauteur des cartes d'une même rangée : titres sur
 * une ou deux lignes, descriptions de longueurs inégales.
 *
 * On égalise la zone de texte plutôt que d'imposer une hauteur au conteneur :
 * les carrousels Owl mesurent leurs éléments à l'initialisation et ne
 * supportent pas qu'on leur impose un flux flex après coup.
 */

.card .custom-testimonial-style-1 {
  min-height: 96px;
  display: block;
  padding-top: 4px;
}

/* Titre de carte : deux lignes au maximum, la suite est tronquée proprement. */
.card .custom-testimonial-style-1 > p {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 2.6em;
  margin-bottom: 8px;
}

.card .custom-testimonial-style-1 > a {
  font-weight: 600;
  white-space: nowrap;
}

/* Carte : bordure et ombre discrètes, cohérentes d'une section à l'autre. */
.card.custom-border-radius-1 {
  border: 1px solid #eaedf1;
  border-radius: 12px;
  background: #fff;
  transition: box-shadow .18s ease, transform .18s ease;
}

.card.custom-border-radius-1:hover {
  box-shadow: 0 8px 22px rgba(16, 24, 40, .09);
  transform: translateY(-2px);
}

.card.custom-border-radius-1 .card-body {
  padding: 14px;
}
