/* Fiche d'une annonce. Mobile d'abord ; barre de réservation fixe en bas sur mobile, carte de réservation collante sur ordinateur. */
.fiche { padding: 14px 0 90px; }
@media (max-width: 999px) { .fiche:has(.fiche-resa-barre-devis) { padding-bottom: 150px; } }
.fiche-indispo { margin-bottom: 16px; padding: 14px 16px; background: #FFF4C2; color: #5C4300; border-radius: var(--rayon-s); line-height: 1.5; }
.fiche-ref { font-size: 14px; color: var(--texte-3); }
.fiche-etoiles { color: #E8B400; letter-spacing: 1px; }
.fiche-h1 { margin-top: 6px; font-size: 25px; line-height: 1.18; font-weight: 900; letter-spacing: -.015em; color: var(--texte); }
.fiche-lieu { margin-top: 8px; color: var(--texte-2); line-height: 1.5; .ico { width: 18px; height: 18px; vertical-align: -3px; } }
.fiche-note { display: inline-flex; margin-left: 10px; vertical-align: middle; align-items: center; gap: 4px; color: var(--texte); text-decoration: none; .ico { fill: #E8B400; stroke: #E8B400; width: 16px; height: 16px; } &:hover { text-decoration: underline; } }
.fiche-teaser { margin-top: 10px; font-size: 17px; line-height: 1.55; color: var(--texte-2); }

/* Galerie : mobile = défilement horizontal, ordinateur = mosaïque */
.galerie { position: relative; margin: 16px calc(var(--marge) * -1) 0; }
.galerie-liste { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; gap: 2px; }
.galerie-liste::-webkit-scrollbar { display: none; }
.galerie-item { flex: 0 0 100%; scroll-snap-align: start; }
.galerie-photo { display: block; width: 100%; padding: 0; border: 0; background: var(--fond-clair); cursor: zoom-in; }
.galerie-photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.galerie-compteur { position: absolute; right: 12px; bottom: 12px; padding: 3px 10px; border-radius: 999px; background: rgba(8, 36, 66, .75); color: var(--blanc); font-size: 13px; font-weight: 400; }
.galerie-tout { position: absolute; left: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 12px; border: 0; border-radius: 999px; background: var(--blanc); color: var(--texte); font: inherit; font-size: 13px; font-weight: 700; box-shadow: var(--ombre); cursor: pointer; .ico { width: 17px; height: 17px; } }
.galerie-favori { position: absolute; top: 12px; right: 12px; }
.fiche-sans-photo { display: block; width: 100%; height: auto; margin-top: 16px; border-radius: var(--rayon); }


.fiche-grille { display: grid; gap: 8px; margin-top: 10px; }
.fiche-bloc { padding: 26px 0; border-bottom: 1px solid var(--bord); scroll-margin-top: 70px; }
.fiche-bloc:last-child { border-bottom: 0; }
.fiche-h2 { font-size: 21px; line-height: 1.25; font-weight: 900; letter-spacing: -.01em; color: var(--texte); margin-bottom: 14px; }
.fiche-h3 { margin: 22px 0 8px; font-size: 17px; font-weight: 700; }
.fiche-mention { margin-top: 12px; font-size: 13px; line-height: 1.5; color: var(--texte-3); a { color: var(--bleu-fonce); } }

/* Textes */
.fiche-texte { margin-top: 0; h3 { margin-top: 24px; } }
.fiche-note-info { margin-top: 18px; padding: 14px 16px; background: #FFF8D6; border-radius: var(--rayon-s); line-height: 1.5; p { margin-top: 6px; } }
.fiche-details { margin-top: 18px; border: 1px solid var(--bord); border-radius: var(--rayon); background: var(--blanc); }
.fiche-details summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; padding: 8px 16px; font-weight: 700; cursor: pointer; list-style: none; &::-webkit-details-marker { display: none; } &::after { content: ""; width: 20px; height: 20px; flex: none; transition: transform .2s; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231E6CB0' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; } }
.fiche-details[open] summary::after { transform: rotate(180deg); }
.fiche-details > :not(summary) { margin: 0 16px 16px; }

/* Pièces, équipements */
.fiche-pieces { display: grid; gap: 14px; }
.fiche-piece { padding: 14px 16px; background: var(--fond-clair); border-radius: var(--rayon-s); h3 { font-size: 16px; font-weight: 700; margin-bottom: 6px; } li { color: var(--texte-2); line-height: 1.5; } li + li { margin-top: 3px; } }
.fiche-equip { margin-top: 18px; }
.fiche-equip:first-of-type { margin-top: 0; }
.fiche-equip h3 { margin-bottom: 10px; font-size: 16px; font-weight: 700; }
.fiche-equip ul { display: grid; gap: 8px 16px; }
.fiche-equip li { display: flex; align-items: flex-start; gap: 8px; line-height: 1.4; color: var(--texte); .ico { flex: none; width: 18px; height: 18px; margin-top: 1px; color: #1B8A4B; } small { color: var(--texte-3); } }
.fiche-equip .fiche-distances { grid-template-columns: 1fr; }
.fiche-distances li { justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--bord); }
@media (min-width: 700px) { .fiche-equip .fiche-distances { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; } }

/* Carte et lieux proches */
.fiche-carte { height: 300px; border-radius: var(--rayon); overflow: hidden; background: var(--bleu-pale); }

/* Frais, horaires */
.fiche-frais { margin-top: 18px; h3 { margin-bottom: 8px; font-size: 16px; font-weight: 700; } }
.fiche-frais:first-of-type { margin-top: 0; }
.fiche-frais li { display: flex; align-items: baseline; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--bord); line-height: 1.4; }
.fiche-frais-lib { flex: 1; small { display: block; font-size: 13px; color: var(--texte-3); } }
.fiche-frais-montant { flex: none; white-space: nowrap; }
.fiche-pastille { flex: none; align-self: flex-start; margin-top: 2px; padding: 1px 9px; border-radius: 999px; font-size: 12px; font-weight: 700; background: var(--bleu-pale); color: var(--bleu-nuit); }
.fiche-pastille-inclus { background: #DDF3E5; color: #14633A; }
.fiche-pastille-obligatoire { background: #FFE9C7; color: #7A4A00; }
.fiche-horaires { display: grid; gap: 10px; li { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--fond-clair); border-radius: var(--rayon-s); .ico { color: var(--bleu-fonce); } span { flex: 1; } } }

/* Avis */
.fiche-avis-synthese { display: flex; align-items: center; gap: 12px; color: var(--texte-2); }
.fiche-avis-note { font-size: 36px; font-weight: 900; color: var(--texte); }
.fiche-criteres { display: grid; gap: 8px; margin-top: 14px; li { display: grid; grid-template-columns: 1fr 90px 32px; align-items: center; gap: 10px; font-size: 14px; } b { text-align: right; } }
.fiche-barre { height: 6px; border-radius: 999px; background: var(--bord); position: relative; overflow: hidden; &::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--note); background: #E8B400; border-radius: inherit; } }
.fiche-avis-liste { display: grid; gap: 14px; margin-top: 18px; }
.fiche-avis { padding: 16px; background: var(--fond-clair); border: 1px solid var(--bord); border-radius: var(--rayon); }
.fiche-avis-tete { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 15px; time { color: var(--texte-3); font-size: 13px; } .etoiles { margin-left: auto; } }
.fiche-avis-titre { margin-top: 8px; font-weight: 700; }
.fiche-avis-texte { margin-top: 8px; line-height: 1.6; color: var(--texte-2); }
.fiche-avis-reponse { margin-top: 12px; padding: 12px 14px; background: var(--blanc); border-radius: var(--rayon-s); font-size: 15px; }

/* Conditions */
.fiche-modes { margin-bottom: 12px; line-height: 1.5; color: var(--texte-2); }
.fiche-agence { max-width: 70ch; }

/* Réservation */
.fiche-reservation { order: -1; }
.fiche-resa-carte { padding: 18px; background: var(--blanc); border: 1px solid var(--bord); border-radius: var(--rayon-l); box-shadow: var(--ombre-carte); }
.fiche-prix { font-size: 16px; color: var(--texte-2); b { font-size: 28px; font-weight: 900; color: var(--texte); } span { font-size: 14px; } }
.fiche-sejour { display: grid; gap: 6px; margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--bord); list-style: none; font-size: 15px; line-height: 1.4; color: var(--texte-2);
  li { display: flex; align-items: flex-start; gap: 10px; }
  .ico { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--bleu-fonce); }
  b { color: var(--texte); }
}
.fiche-verif { display: flex; align-items: flex-start; gap: 8px; margin: 10px 0 14px; font-size: 13px; line-height: 1.4; color: #1B7F46; .ico { flex: none; width: 16px; height: 16px; margin-top: 1px; } }
.fiche-prix-info { margin-top: 4px; font-size: 13px; line-height: 1.45; color: var(--texte-3); }
.fiche-cta { margin-top: 16px; width: 100%; justify-content: center; }
.fiche-garanties { display: grid; gap: 10px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--bord); font-size: 14px; line-height: 1.4; color: var(--texte-2); li { display: flex; gap: 10px; .ico { flex: none; width: 18px; height: 18px; color: #1B8A4B; } } a { color: var(--bleu-fonce); font-weight: 700; } }
.fiche-reservation { display: none; }
.fiche-resa-barre {
  position: fixed; inset: auto 0 0 0; z-index: 30; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px var(--marge) calc(10px + env(safe-area-inset-bottom));
  background: var(--blanc); border-top: 1px solid var(--bord); box-shadow: 0 -4px 16px rgba(8, 36, 66, .1);
  p { font-size: 14px; color: var(--texte-2); b { font-size: 20px; font-weight: 900; color: var(--texte); } }
  .bouton-voir { margin: 0; }
}

/* Photos en grand */
.photos-dialog { width: 100%; max-width: 100%; height: 100%; max-height: 100%; margin: 0; padding: 0; border: 0; background: #0B1B2B; color: var(--blanc); }
.photos-dialog::backdrop { background: rgba(8, 20, 33, .8); }
.photos-entete { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; padding: 10px var(--marge); background: #0B1B2B; }
.photos-fermer { display: inline-flex; align-items: center; justify-content: center; width: var(--tactile); height: var(--tactile); border: 0; border-radius: 999px; background: rgba(255, 255, 255, .12); color: var(--blanc); cursor: pointer; }
.photos-liste { display: grid; gap: 4px; max-width: 1000px; margin: 0 auto; padding-bottom: 24px; img { display: block; width: 100%; height: auto; min-height: 200px; background: #16293C; } }

@media (min-width: 700px) {
  .fiche-h1 { font-size: 32px; }
  .galerie { margin: 20px 0 0; }
  .galerie-liste { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, 270px); gap: 8px; overflow: hidden; border-radius: var(--rayon-l); scroll-snap-type: none; }
  .galerie-item { flex: none; }
  .galerie-item:first-child { grid-column: 1 / span 2; grid-row: 1 / span 2; }
  .galerie-item:nth-child(n+6) { display: none; }
  .galerie-photo { height: 100%; }
  .galerie-photo img { height: 100%; aspect-ratio: auto; }
  .galerie-compteur { display: none; }
  .galerie-tout { left: auto; right: 16px; bottom: 16px; font-size: 16px; display: inline-flex; align-items: center; gap: 8px; min-height: var(--tactile); padding: 0 16px; border: 0; border-radius: 999px; background: var(--blanc); color: var(--texte); font: inherit; font-weight: 700; box-shadow: var(--ombre-carte); cursor: pointer; }
  .galerie-favori { top: 16px; right: 16px; }
  .fiche-equip ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fiche-pieces { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fiche-h2 { font-size: 24px; }
}
/* Tablette : la grande photo et deux petites */
@media (min-width: 700px) and (max-width: 999px) {
  .galerie-liste { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .galerie-item:nth-child(n+4) { display: none; }
}
@media (min-width: 1000px) {
  .fiche { padding-bottom: 40px; }
  .fiche-grille { grid-template-columns: minmax(0, 1fr) 360px; gap: 48px; align-items: start; }
  .fiche-reservation { display: block; order: 0; position: sticky; top: 24px; padding-top: 20px; }
  .fiche-resa-barre { display: none; }
  .fiche-equip ul { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .photos-liste { grid-template-columns: 1fr 1fr; max-width: 1400px; padding: 0 16px 24px; }
}

/* Avis : 3 sur la page, tous dans une fenêtre */
.fiche-avis-tous { margin-top: 18px; text-align: center; }
.fiche-bouton-secondaire { min-height: var(--tactile); padding: 0 24px; border: 1px solid var(--bleu-fonce); border-radius: 999px; background: var(--blanc); color: var(--bleu-fonce); font: inherit; font-weight: 700; cursor: pointer; &:hover { background: var(--bleu-pale); } }

/* ---------- Mise en page resserrée (récapitulatif en colonnes, petits plus en bloc vert, rubriques cliquables, panneaux latéraux) ---------- */
.fiche-grille { margin-top: 4px; }
.fiche-bloc { padding: 20px 0; }
.fiche-recap-bloc { padding: 18px 0 8px; }
.fiche-recap { display: grid; grid-template-columns: repeat(2, max-content); gap: 12px 28px; margin: 0 calc(var(--marge) * -1); padding: 2px var(--marge) 8px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; &::-webkit-scrollbar { display: none; } }   /* mobile : 2 colonnes, tableau défilant de gauche à droite */
.fiche-recap li .ico { position: relative; top: -2px; }
.fiche-recap li { display: flex; flex: none; white-space: nowrap; align-items: center; gap: 7px; font-size: 15px; line-height: 1.35; color: var(--texte); .ico { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--bleu-fonce); } }

.fiche-plus-bloc { margin: 14px 0 6px; padding: 18px; border: 2px dashed #8FCBA6; border-radius: var(--rayon-l); background: #F2FAF5; }
.fiche-plus-titre { margin-bottom: 10px; font-size: 18px; font-weight: 900; color: var(--texte); }
.fiche-plus { display: grid; gap: 8px; margin: 0; }
.fiche-plus li { display: flex; align-items: flex-start; gap: 10px; line-height: 1.45; color: var(--texte-2); .ico { flex: none; width: 20px; height: 20px; margin-top: 1px; color: #1D6B3E; } }

.fiche-rubriques { display: grid; gap: 8px; margin: 18px 0 6px; }
.fiche-rubrique {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 56px; padding: 10px 16px; border: 1px solid var(--bord); border-radius: var(--rayon);
  background: var(--blanc); color: var(--texte); font: inherit; font-weight: 700; text-align: left; cursor: pointer;
  .ico { flex: none; width: 20px; height: 20px; color: var(--bleu-fonce); }
  &:hover { border-color: var(--bleu); background: var(--fond-clair); }
}

/* Panneau latéral (équipements, carte, frais, horaires, modalités, avis) : plein écran sur mobile, volet à droite sur ordinateur */
.volet { width: 100%; max-width: 100%; height: 100%; max-height: 100%; margin: 0; padding: 0; border: 0; background: var(--blanc); color: var(--texte); }
.volet::backdrop { background: rgba(8, 20, 33, .55); }
.volet[open] { display: flex; flex-direction: column; }
.volet-entete { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px var(--marge); background: var(--bleu); color: var(--blanc); font-size: 17px; line-height: 1.3; }
.volet-fermer { flex: none; display: inline-flex; align-items: center; justify-content: center; width: var(--tactile); height: var(--tactile); border: 0; border-radius: 999px; background: rgba(255, 255, 255, .18); color: var(--blanc); cursor: pointer; }
.volet-corps { flex: 1; overflow-y: auto; padding: 18px var(--marge) 32px; }
.volet-titre { margin-bottom: 10px; font-size: 17px; font-weight: 700; }
.volet .fiche-equip ul { grid-template-columns: 1fr; }
.volet .fiche-pieces { grid-template-columns: 1fr; }
.volet .fiche-equip:first-child { margin-top: 0; }

/* Lieux proches : pleine largeur, 3 colonnes puis 2 puis 1 */
.fiche-poi-section { margin-top: 10px; }
.fiche-poi-grille { display: grid; grid-template-columns: 1fr; gap: 14px; margin-top: 16px; }
.fiche-poi-rub { padding: 16px; background: var(--blanc); border: 1px solid var(--bord); border-radius: var(--rayon); h3 { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 16px; font-weight: 700; .ico { width: 20px; height: 20px; color: var(--bleu-fonce); } } li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--bord); line-height: 1.35; small { display: block; font-size: 13px; color: var(--texte-3); } b { flex: none; font-size: 14px; white-space: nowrap; } } li:last-child { border-bottom: 0; } }

@media (min-width: 600px) {
  .fiche-recap { grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; margin: 0; padding: 0; }
  .fiche-poi-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 700px) {
  .volet { width: min(560px, 100%); margin: 0 0 0 auto; }
  .volet-entete { padding: 12px 20px; }
  .volet-corps { padding: 22px 20px 40px; }
  .volet .fiche-equip ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1000px) {
  .fiche-poi-grille { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
}

/* ---------- Retouches après relecture : récapitulatif plus lisible, description pleine largeur, partage, traduction ---------- */
.fiche-recap li { font-size: 16px; line-height: 1.35; gap: 7px; }
.fiche-recap li .ico { width: 22px; height: 22px; }
.fiche-texte p, .fiche-texte ul { max-width: none; }
#description { padding-bottom: 6px; border-bottom: 0; }
.galerie-partage { position: absolute; top: 12px; right: 64px; color: var(--bleu-fonce); }
.fiche-traduire { display: block; margin-top: 10px; padding: 0; border: 0; background: none; color: var(--bleu-fonce); font: inherit; font-weight: 700; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; &:disabled { opacity: .6; cursor: wait; } }

.partage { width: min(440px, calc(100% - 24px)); margin: auto; padding: 0; border: 0; border-radius: var(--rayon-l); background: var(--blanc); color: var(--texte); box-shadow: var(--ombre); }
.partage::backdrop { background: rgba(8, 20, 33, .55); }
.partage-entete { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px 10px 20px; background: var(--bleu); color: var(--blanc); border-radius: var(--rayon-l) var(--rayon-l) 0 0; font-size: 17px; }
.partage-liste { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 18px 16px 20px; }
.partage-bouton { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 52px; padding: 8px 14px; border: 1px solid var(--bord); border-radius: var(--rayon-s); background: var(--blanc); color: var(--texte); font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; &:hover { background: var(--fond-clair); border-color: var(--bleu); } .ico { color: var(--bleu-fonce); } }
.partage-whatsapp .ico { color: #1FA855; }
.partage-messenger .ico { color: #0084FF; }
.partage-facebook .ico { color: #1877F2; }
@media (min-width: 700px) { .galerie-partage { top: 16px; right: 72px; } }

/* ---------- Retouches (3e relecture) ---------- */
.fiche-lieu { margin-top: 12px; }
.fiche-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; }
.fiche-meta .fiche-note { margin-left: 0; }
.fiche-recap-bloc { padding: 24px 0 14px; }
.fiche-plus-bloc { margin: 22px 0 14px; }
#description { padding-top: 28px; }
.partage-natif { grid-column: 1 / -1; }
.partage-bouton-natif { justify-content: center; min-height: 58px; border: 0; background: var(--bleu-fonce); color: var(--blanc); font-size: 17px; .ico { color: var(--blanc); } &:hover { background: var(--bleu-nuit); border: 0; } }
@media (min-width: 700px) { .volet { width: min(720px, 100%); } }
.partage-bouton { gap: 10px; padding: 8px 12px; font-size: 15px; }
.partage-bouton span { min-width: 0; white-space: nowrap; }
.partage-bouton-natif { font-size: 17px; }

/* ---------- 5e relecture : note sous le titre, référence dans le récapitulatif, Pinterest ---------- */
.fiche-avis-ligne { margin-top: 10px; }
.fiche-avis-ligne .fiche-note { margin-left: 0; gap: 6px; padding: 4px 12px 4px 10px; border: 1px solid var(--bord); border-radius: 999px; background: var(--fond-clair); font-size: 15px; &:hover { border-color: var(--bleu); text-decoration: none; } span { color: var(--texte-2); &::before { content: "· "; } } }
.fiche-teaser { margin-top: 12px; }
.partage-pinterest .ico { color: #E60023; }

/* ---------- 6e relecture : pastilles avis + référence en tête, référence dans la carte de réservation ---------- */
.fiche-avis-ligne { display: flex; flex-wrap: wrap; gap: 8px; }
.fiche-note-ref { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px 4px 10px; border: 1px solid var(--bord); border-radius: 999px; background: var(--fond-clair); font-size: 15px; color: var(--texte-2); .ico { width: 18px; height: 18px; color: var(--bleu-fonce); } }
.fiche-garantie-ref { color: var(--texte-3); font-size: 13px; }

/* ---------- Impression de la fiche (bouton « Imprimer la fiche ») ---------- */
@media print {
  .entete, .atouts-pied, .pied, .fiche-resa-barre, .galerie-tout, .galerie-compteur, .favori, .fiche-rubriques, .fiche-bouton-secondaire, .fiche-avis-tous, .fiche-traduire,
  .fiche-cta, .fiche-garanties, #similaires, .ariane, .partage, .photos-dialog, #avis-dialog, .fiche-carte, .volet-fermer, #volet-description, #volet-cheques, #volet-modalites, #volet-carte, #faq, .fiche-poi-section, .fiche-avis-liste { display: none !important; }   /* version imprimée : l'essentiel pour décider à plusieurs */
  .fiche { padding: 0; }
  .galerie { margin: 12px 0 0; }
  .galerie-liste { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto; gap: 6px; overflow: visible; border-radius: 0; }
  .galerie-item { display: block !important; }
  .galerie-item:first-child { grid-column: 1 / -1; grid-row: auto; }
  .galerie-item:nth-child(n+5) { display: none !important; }
  .galerie-photo img { height: auto; aspect-ratio: 4 / 3; }
  .fiche-grille { display: block; }
  .fiche-reservation { display: block !important; position: static; margin: 12px 0; break-inside: avoid; }
  .fiche-resa-carte { box-shadow: none; }
  .fiche-bloc, .fiche-plus-bloc, .fiche-poi-rub, .fiche-avis { break-inside: avoid; }
  /* Les volets fermés (équipements, frais, horaires) sont imprimés à la suite */
  dialog.volet:not([open]) { display: block !important; position: static; width: auto; height: auto; margin: 18px 0 0; break-inside: avoid; }
  .volet-entete { background: none; color: #000; padding: 0; border-bottom: 1px solid #999; font-weight: 700; }
  .volet-corps { overflow: visible; padding: 8px 0 0; }
  .fiche-poi-grille { grid-template-columns: repeat(2, 1fr); }
  a { color: inherit; text-decoration: none; }
}
.fiche-note.fiche-note-ref .ico { fill: none; stroke: currentColor; color: var(--bleu-fonce); }

/* ---------- 7e relecture : pastilles sous la localisation, rubriques sur fond gris et plus espacées ---------- */
.fiche-avis-ligne { margin-top: 14px; }
.fiche-lieu { margin-top: 12px; }
.fiche-rubriques { gap: 12px; margin: 22px 0 10px; }
.fiche-rubrique { min-height: 60px; border: 0; background: #F0F3F6; &:hover { background: #E4EAF0; border: 0; } }

/* Rubriques : même teinte que les pastilles de tête */
.fiche-rubrique { background: var(--fond-clair); border: 1px solid var(--bord); &:hover { background: var(--bleu-pale); border-color: var(--bleu); } }

/* ---------- 8e relecture : barre de recherche, rubriques grises, air sous les titres ---------- */
.fiche-recherche { display: flow-root; background: var(--bleu); padding: 0 0 22px; }   /* moteur complet de l'accueil, ouvert par la loupe de l'en-tête */
.fiche-recherche[hidden] { display: none; }
.fiche-recherche .recherche { margin-top: 4px; }
.fiche-rubrique { background: #F0F3F6; border: 0; &:hover { background: #E4EAF0; border: 0; } }
.fiche-mention-droite { text-align: right; }
#similaires .titre-section { margin-bottom: 22px; }
.fiche-avis-ligne { margin-top: 12px; margin-bottom: 4px; }
.fiche-teaser { margin-top: 10px; }

/* ---------- Choisir mes dates : voyageurs, calendrier des arrivées, séjours avec prix ---------- */
.fiche-lien-dates { display: block; width: 100%; margin-top: 10px; padding: 8px 0; border: 0; background: none; color: var(--bleu-fonce); font: inherit; font-weight: 700; text-align: center; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.fiche-indisponible { padding: 12px 14px; background: #FFF4C2; color: #5C4300; border-radius: var(--rayon-s); line-height: 1.45; font-size: 15px; }
.fiche-cta { cursor: pointer; border: 0; }
.fiche-resa-barre [data-verif-zone] { display: contents; }
.fiche-resa-barre button.bouton-voir { border: 0; cursor: pointer; }

.volet-dates .volet-corps { padding-top: 6px; }
.dates-voyageurs { margin-bottom: 4px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.dates-voyageurs .compteur { flex-direction: column; align-items: center; justify-content: flex-start; gap: 8px; padding: 12px 0 4px; text-align: center; & + & { border-top: 0; } }
.dates-voyageurs .compteur-txt span { font-size: 12px; }
.dates-voyageurs .compteur-ctrl { gap: 2px; button { width: 30px; height: 30px; .ico { width: 15px; height: 15px; } } output { min-width: 22px; text-align: center; font-weight: 700; } }
.dates-voyageurs .dates-capacite { grid-column: 1 / -1; text-align: center; }
.dates-capacite { margin: 6px 0 4px; font-size: 13px; color: var(--texte-3); }
.dates-titre { margin-top: 18px; font-size: 17px; font-weight: 900; }
.dates-aide { margin: 4px 0 6px; font-size: 13px; line-height: 1.45; color: var(--texte-3); }
.dates-chargement, .dates-aucun { padding: 20px 0; color: var(--texte-2); line-height: 1.5; }
.dates-calendrier .cal-mois { margin-top: 14px; }
.dates-calendrier .cal-jours-semaine-mois { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 4px; font-size: 12px; font-weight: 700; color: var(--texte-3); text-align: center; }
.dates-calendrier .cal-jour { height: 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; }
.dates-calendrier .cal-jour span { width: 34px; height: 30px; }
.dates-calendrier .cal-jour.dispo { cursor: pointer; font-weight: 700; span { background: #DDF3E4; color: #1B6B3E; } &:hover span { box-shadow: inset 0 0 0 2px #1B6B3E; } }
.dates-calendrier .cal-jour.choisi span { background: var(--bleu); color: var(--blanc); box-shadow: none; }
.dates-sejours { position: sticky; z-index: 5; bottom: -32px; margin: 18px calc(var(--marge) * -1) -32px; padding: 14px var(--marge) 32px; max-height: 46%; overflow-y: auto; background: var(--blanc); border-top: 1px solid var(--bord); box-shadow: 0 -8px 20px rgba(8, 36, 66, .12); }
.dates-sejours:empty { display: none; }
.dates-sejours-titre { margin-bottom: 10px; font-size: 17px; font-weight: 900; }
.dates-sejours-liste { display: grid; gap: 10px; }
.dates-sejour { display: grid; grid-template-columns: 1fr auto 24px; align-items: center; gap: 12px; padding: 14px 16px; background: var(--blanc); border: 2px solid var(--bord); border-radius: var(--rayon); color: var(--texte); text-decoration: none; &:hover { border-color: var(--bleu); background: var(--fond-clair); } }
.dates-sejour b { display: block; font-size: 17px; }
.dates-sejour small { display: block; font-size: 13px; color: var(--texte-3); }
.dates-sejour-prix { text-align: right; s { color: var(--texte-3); font-size: 14px; } b { color: var(--texte); font-size: 19px; display: inline; } small { display: block; } }
.dates-sejour-fleche .ico { color: var(--rouge); }
.dates-sejour.verification { opacity: .6; cursor: progress; }
.dates-sejour.indisponible { opacity: .55; pointer-events: none; }
.dates-sejour .dates-sejour-alerte { margin-top: 4px; color: var(--rouge-fonce); font-weight: 700; }
@media (min-width: 700px) {
  .dates-sejours { margin-left: -20px; margin-right: -20px; padding-left: 20px; padding-right: 20px; bottom: -40px; margin-bottom: -40px; padding-bottom: 40px; }
  .volet-dates .dates-calendrier { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
  .volet-dates .dates-calendrier .dates-chargement { grid-column: 1 / -1; }
}

/* Icônes des pastilles N° et avis remontées d'un pixel et demi */
.fiche-avis-ligne .fiche-note .ico { position: relative; top: -1.5px; }

/* Barre fixe mobile avec dates : bloc séjour (prix, dates, voyageurs + Modifier), puis bouton Réserver pleine largeur, peu haut.
   Mobile et tablette seulement : sur ordinateur (1000 px et plus) la barre reste masquée (cette règle, plus bas que le masquage, l'annulait). */
@media (max-width: 999px) { .fiche-resa-barre-devis { display: block; } }
.fiche-resa-barre-devis { padding-top: 8px; padding-bottom: calc(8px + env(safe-area-inset-bottom)); }
.fiche-resa-barre-devis [data-verif-zone] { display: block; }
.barre-sejour { display: grid; gap: 1px; padding-bottom: 8px; line-height: 1.35; font-size: 14px; color: var(--texte-2); b { color: var(--texte); } p { margin: 0; } }
.barre-prix b { font-size: 20px; font-weight: 900; }
.barre-dates { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.barre-modifier { padding: 4px 0 4px 12px; border: 0; background: none; color: var(--bleu-fonce); font: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.fiche-resa-barre-devis .barre-reserver, .fiche-resa-barre-devis .bouton-voir { width: 100%; min-height: 42px; font-size: 16px; }
.fiche-resa-barre-devis .fiche-indisponible { margin-bottom: 8px; }
.fiche-grille > * { min-width: 0; }
.fiche-resa-barre .barre-dates b { font-size: inherit; font-weight: 700; }

.photos-liste picture { display: block; }

.fiche-infos-pied { border-top: 1px solid var(--bord); font-size: 13px; color: var(--texte-3); }
.fiche-infos-annonce { display: flex; gap: 0; padding: 14px 0; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; &::-webkit-scrollbar { display: none; } li { flex: none; white-space: nowrap; } li + li::before { content: "·"; margin: 0 10px; } }
/* Loupe de l'en-tête : bouton rond sur fond translucide, centré */
.entete-loupe { width: 40px; min-width: 40px; height: 40px; margin-right: 6px; padding: 0; background: rgba(255, 255, 255, .2); border-radius: 50%; .ico { width: 22px; height: 22px; } &:hover { background: rgba(255, 255, 255, .3); } }
@media (min-width: 960px) { .entete-loupe { width: auto; padding: 0 16px 0 12px; border-radius: 999px; margin-right: 8px; font-weight: 700; } }

/* Avis longs : 5 lignes puis « Lire la suite » (le texte complet reste dans le HTML ; le repli est posé par fiche.js seulement si le texte déborde) */
.fiche-avis-texte.replie { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; overflow: hidden; }
.fiche-avis-suite { margin-top: 6px; padding: 4px 0; border: 0; background: none; color: var(--bleu-fonce); font: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
