/**
 * La Fosca Bay — Avis clients (E8). Cartes, étoiles, note moyenne, carrousel.
 */

/* Étoiles */
.lfb-stars { display: inline-flex; gap: 1px; line-height: 1; white-space: nowrap; }
.lfb-star { font-size: 16px; color: #e6c34a; }
.lfb-star-empty { color: #dcd4c4; }
.lfb-star-half {
  position: relative; color: #dcd4c4;
  background: linear-gradient(90deg, #e6c34a 50%, #dcd4c4 50%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

/* Note moyenne (agrégat) */
.lfb-avis-agg {
  display: flex; align-items: center; gap: 12px;
  justify-content: center;
  margin-bottom: var(--space-4);
}
.lfb-avis-agg-note {
  font-family: var(--font-title, "Playfair Display", serif);
  font-size: 38px; font-weight: 700; color: var(--c-primary); line-height: 1;
}
.lfb-avis-agg .lfb-star { font-size: 20px; }
.lfb-avis-agg-count { font-size: 14px; color: var(--c-pine); }

/* Carte d'avis */
.lfb-avis-card {
  margin: 0;
  background: #fff;
  border: 1px solid var(--c-sand);
  border-radius: var(--radius-lg, 16px);
  box-shadow: var(--shadow-soft);
  padding: var(--space-4);
  display: flex; flex-direction: column; gap: 10px;
}
.lfb-avis-text {
  margin: 0; border: none; padding: 0;
  font-size: 15.5px; line-height: 1.6; color: var(--c-ink); font-style: italic;
  quotes: "«" "»";
}
.lfb-avis-text::before { content: open-quote; color: var(--c-azur); margin-right: 2px; }
.lfb-avis-text::after  { content: close-quote; color: var(--c-azur); margin-left: 2px; }
.lfb-avis-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-top: auto; }
.lfb-avis-author { font-weight: 700; color: var(--c-primary); }
.lfb-avis-pays { font-size: 13px; color: var(--c-pine); }
.lfb-avis-pays::before { content: "· "; }
.lfb-avis-date { font-size: 12.5px; color: #9aa7ad; margin-left: auto; }

/* Grille (page /avis, fiche) */
.lfb-avis-grid .lfb-avis-track {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--space-3);
}

/* Carrousel (accueil) : scroll-snap horizontal, sans JS */
.lfb-avis-carousel .lfb-avis-track {
  display: flex;
  gap: var(--space-3);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding: 4px 4px var(--space-3);
  scrollbar-width: thin;
}
.lfb-avis-carousel .lfb-avis-card {
  scroll-snap-align: start;
  flex: 0 0 clamp(260px, 80%, 340px);
}

/* Section avis sur la fiche */
.single-logement .lfb-avis-sec { margin-top: var(--space-5); }

/* ----------------------------------------------------------------------
 * Conv.14 — Avis via Listing Grid JetEngine (#215)
 * Accueil = carrousel Swiper, cartes PLUS PETITES et compactes.
 * -------------------------------------------------------------------- */

/* Cartes compactes (accueil + fiche) quand rendues par le listing grid */
.lfb-home-avis .lfb-avis-card,
.lfb-logement-avis .lfb-avis-card {
  padding: 18px 18px 16px;
  gap: 8px;
  border-radius: 14px;
}
.lfb-home-avis .lfb-avis-text,
.lfb-logement-avis .lfb-avis-text {
  font-size: 14px;
  line-height: 1.55;
  /* limiter la hauteur pour des cartes homogènes et compactes */
  display: -webkit-box;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.lfb-home-avis .lfb-stars,
.lfb-logement-avis .lfb-stars { font-size: 0; }
.lfb-home-avis .lfb-star,
.lfb-logement-avis .lfb-star { font-size: 14px; }
.lfb-home-avis .lfb-avis-author,
.lfb-logement-avis .lfb-avis-author { font-size: 14px; }
.lfb-home-avis .lfb-avis-pays,
.lfb-logement-avis .lfb-avis-pays { font-size: 12px; }
.lfb-home-avis .lfb-avis-date,
.lfb-logement-avis .lfb-avis-date { font-size: 11.5px; }

/* Le widget Listing Grid rend la note via le callback étoiles : .lfb-avis-stars-field */
.lfb-avis-stars-field .lfb-stars { font-size: 0; }
.lfb-avis-stars-field .lfb-star { font-size: 14px; }

/* Slider horizontal de l'accueil — scroll-snap CSS (pas de JS, swipe natif,
 * fiable sur Safari mobile). On surcharge la grille JetEngine en rangée
 * défilable horizontalement ; chaque carte = ~1/3 de la largeur (plus petites). */
.lfb-home-avis-scroller .jet-listing-grid__items {
  display: flex !important;
  grid-template-columns: none !important;
  flex-wrap: nowrap;
  gap: var(--space-3);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scroll-padding-left: 4px;
  padding: 4px 4px 16px;
  scrollbar-width: thin;
  scrollbar-color: var(--c-sand) transparent;
}
.lfb-home-avis-scroller .jet-listing-grid__items::-webkit-scrollbar { height: 7px; }
.lfb-home-avis-scroller .jet-listing-grid__items::-webkit-scrollbar-thumb {
  background: var(--c-sand); border-radius: 10px;
}
.lfb-home-avis-scroller .jet-listing-grid__item {
  flex: 0 0 clamp(248px, 31%, 320px);
  scroll-snap-align: start;
  height: auto;
}
@media (max-width: 1024px) {
  .lfb-home-avis-scroller .jet-listing-grid__item { flex-basis: clamp(240px, 46%, 300px); }
}
@media (max-width: 640px) {
  .lfb-home-avis-scroller .jet-listing-grid__item { flex-basis: 82%; }
}

/* Fiche logement : les avis utilisent EXACTEMENT le même slider horizontal
 * que l'accueil (classes lfb-home-avis + lfb-home-avis-scroller sur le widget). */

/* Les cartes rendues par le Listing Grid (dynamic field `texte`) : pas de
 * guillemets décoratifs ::before/::after (mal placés sur cartes étroites) ;
 * le texte est déjà en italique et se lit comme un témoignage. */
.lfb-home-avis .lfb-avis-text::before,
.lfb-home-avis .lfb-avis-text::after,
.lfb-logement-avis .lfb-avis-text::before,
.lfb-logement-avis .lfb-avis-text::after { content: none; }
