/**
 * Correctif 6B - Shop Product Reviews / Universal
 * 06/09/2026
 *
 * Corrige l'alignement vertical des cartes produit après 6A.
 * Le problème restant venait de deux hauteurs encore variables :
 * - le titre pouvait occuper 2, 3 lignes ou davantage ;
 * - la ligne d'étoiles était plus haute que l'espace minimal réservé.
 *
 * Principe : hauteur réelle et identique pour la zone titre + hauteur réelle
 * et identique pour la zone avis, qu'un avis soit présent ou non.
 */

/* --- Zone titre : 3 lignes identiques sur ordinateur --- */
#js-product-list .product-miniature .info-container .product-title,
.products .product-miniature .info-container .product-title {
  box-sizing: border-box;
  height: 3.6em !important;
  min-height: 3.6em !important;
  max-height: 3.6em !important;
  line-height: 1.2 !important;
  margin-bottom: .1rem !important;
  overflow: hidden !important;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

#js-product-list .product-miniature .info-container .product-title > a,
.products .product-miniature .info-container .product-title > a {
  width: 100%;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

/* --- Zone avis : toujours exactement la même hauteur --- */
#js-product-list .product-miniature .spr-product-list-slot,
.products .product-miniature .spr-product-list-slot {
  box-sizing: border-box;
  height: 34px !important;
  min-height: 34px !important;
  max-height: 34px !important;
  flex: 0 0 34px;
  width: 100%;
  margin: 0 0 .15rem !important;
  padding: 0 !important;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

#js-product-list .product-miniature .spr-product-list-slot #spr_list,
.products .product-miniature .spr-product-list-slot #spr_list {
  box-sizing: border-box;
  width: 100%;
  height: 34px !important;
  min-height: 34px !important;
  max-height: 34px !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

#js-product-list .product-miniature .spr-product-list-slot #spr_list .row,
.products .product-miniature .spr-product-list-slot #spr_list .row {
  width: 100%;
  height: 34px !important;
  min-height: 34px !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

#js-product-list .product-miniature .spr-product-list-slot #spr_list .rating-star-display,
.products .product-miniature .spr-product-list-slot #spr_list .rating-star-display {
  box-sizing: border-box;
  width: auto;
  height: 34px !important;
  min-height: 34px !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
}

#js-product-list .product-miniature .spr-product-list-slot #spr_list .rating-star-display > label,
.products .product-miniature .spr-product-list-slot #spr_list .rating-star-display > label {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Smartphone : davantage de place au nom (4 lignes), mais toutes les cartes
 * conservent exactement la même hauteur de titre et d'avis. */
@media (max-width: 767.98px) {
  #js-product-list .product-miniature .info-container .product-title,
  .products .product-miniature .info-container .product-title {
    height: 4.8em !important;
    min-height: 4.8em !important;
    max-height: 4.8em !important;
  }

  #js-product-list .product-miniature .info-container .product-title > a,
  .products .product-miniature .info-container .product-title > a {
    -webkit-line-clamp: 4;
  }

  #js-product-list .product-miniature .spr-product-list-slot,
  .products .product-miniature .spr-product-list-slot,
  #js-product-list .product-miniature .spr-product-list-slot #spr_list,
  .products .product-miniature .spr-product-list-slot #spr_list,
  #js-product-list .product-miniature .spr-product-list-slot #spr_list .row,
  .products .product-miniature .spr-product-list-slot #spr_list .row,
  #js-product-list .product-miniature .spr-product-list-slot #spr_list .rating-star-display,
  .products .product-miniature .spr-product-list-slot #spr_list .rating-star-display {
    height: 32px !important;
    min-height: 32px !important;
    max-height: 32px !important;
  }

  #js-product-list .product-miniature .spr-product-list-slot,
  .products .product-miniature .spr-product-list-slot {
    flex-basis: 32px;
  }
}

/* -------------------------------------------------------------------------
 * Correctif 6I - 08/09/2026
 * Un seul moteur visuel pour toutes les moyennes : 5 emplacements fixes.
 * Une demi-note n'utilise plus les 10 labels/inputs du moteur historique SPR.
 * ------------------------------------------------------------------------- */
#js-product-list .product-miniature .spr-product-rating--unified,
.products .product-miniature .spr-product-rating--unified {
  flex-direction: column;
  gap: 0;
}

#js-product-list .product-miniature .spr-unified-stars,
.products .product-miniature .spr-unified-stars {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  height: 24px;
  line-height: 1;
  white-space: nowrap;
}

#js-product-list .product-miniature .spr-unified-star,
.products .product-miniature .spr-unified-star {
  position: relative;
  display: inline-block;
  flex: 0 0 18px;
  width: 18px;
  height: 22px;
  overflow: hidden;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 21px;
  line-height: 22px;
  text-align: left;
  vertical-align: middle;
}

/* Étoile vide : fond gris constant. */
#js-product-list .product-miniature .spr-unified-star::before,
.products .product-miniature .spr-unified-star::before {
  content: "★";
  position: absolute;
  inset: 0;
  color: #cfd3d6;
  overflow: hidden;
}

/* Couche dorée superposée : 100 %, 50 % ou 0 %. */
#js-product-list .product-miniature .spr-unified-star::after,
.products .product-miniature .spr-unified-star::after {
  content: "★";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0;
  color: #ffc400;
  overflow: hidden;
  white-space: nowrap;
}

#js-product-list .product-miniature .spr-unified-star--full::after,
.products .product-miniature .spr-unified-star--full::after {
  width: 100%;
}

#js-product-list .product-miniature .spr-unified-star--half::after,
.products .product-miniature .spr-unified-star--half::after {
  width: 50%;
}

#js-product-list .product-miniature .spr-unified-star--empty::after,
.products .product-miniature .spr-unified-star--empty::after {
  width: 0;
}

#js-product-list .product-miniature .spr-unified-average,
.products .product-miniature .spr-unified-average {
  display: block;
  margin-top: -2px;
  line-height: 1.1;
  text-align: center;
}

@media (max-width: 767.98px) {
  #js-product-list .product-miniature .spr-unified-stars,
  .products .product-miniature .spr-unified-stars {
    gap: 2px;
    height: 22px;
  }

  #js-product-list .product-miniature .spr-unified-star,
  .products .product-miniature .spr-unified-star {
    flex-basis: 17px;
    width: 17px;
    height: 20px;
    font-size: 20px;
    line-height: 20px;
  }
}
