/* ==========================================================================
   Latitude Blanche — Voyages v2 : tableau des départs, cartes destinations, moteur de recherche.
   Polices : Lato (titres), Work Sans (textes), Fraunces italique (repères) — fournies par le thème.
   ========================================================================== */

.lb-departs, .lb-destinations, .lb-recherche, .lb-prochain-depart { font-family: 'Work Sans', system-ui, sans-serif; color: #20303b; box-sizing: border-box; }
.lb-departs *, .lb-destinations *, .lb-recherche * { box-sizing: border-box; }

/* ---------- Tableau des départs ---------- */
.lb-departs-filtres { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
#top .lb-puce { margin: 0; padding: 10px 18px; border-radius: 999px; border: 1px solid #cfd8da; background: #ffffff; color: #112534; font-family: inherit; font-size: 13px; line-height: 1.2; cursor: pointer; transition: background .2s ease, color .2s ease, border-color .2s ease; }
#top .lb-puce:hover { border-color: #112534; }
#top .lb-puce.is-active { background: #112534; border-color: #112534; color: #ffffff; }

.lb-departs-liste { border-top: 1px solid #e3e8e9; }
.lb-depart-ligne { display: grid; grid-template-columns: 150px 130px minmax(0, 1fr) 180px 200px; gap: 12px 28px; align-items: center; padding: 22px 18px; border-bottom: 1px solid #e3e8e9; color: #20303b !important; text-decoration: none !important; transition: background .2s ease; }
.lb-depart-ligne { position: relative; }
.lb-depart-ligne::before { content: ""; position: absolute; top: 16px; bottom: 16px; left: 0; width: 2px; background: #5f9098; transform: scaleY(0); transition: transform .35s cubic-bezier(.2, .8, .2, 1); }
.lb-depart-ligne:hover { background: #f3f6f6; }
.lb-depart-ligne:hover::before { transform: scaleY(1); }
.lb-depart-fleche svg { transition: transform .3s ease; }
.lb-depart-ligne:hover .lb-depart-fleche svg { transform: translateX(2px); }
.lb-depart-ligne[hidden] { display: none; }
.lb-depart-date { display: flex; flex-direction: column; }
.lb-depart-jours { font-family: 'Lato', sans-serif; font-weight: 300; font-size: 28px; line-height: 1; color: #112534; white-space: nowrap; }
.lb-depart-mois { margin-top: 6px; font-size: 10px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: #5f9098; }
.lb-depart-saison { font-size: 12.5px; line-height: 1.5; color: #65757b; }
.lb-depart-voyage { display: flex; flex-direction: column; min-width: 0; }
.lb-depart-dest { margin-bottom: 5px; font-size: 10px; font-weight: 600; letter-spacing: 1.8px; text-transform: uppercase; color: #5f9098; }
.lb-depart-nom { font-family: 'Lato', sans-serif; font-size: 19px; line-height: 1.3; color: #112534; }
.lb-depart-places-texte { display: block; margin-bottom: 7px; font-size: 12px; font-weight: 600; color: #5f9098; }
.lb-jauge { display: block; height: 4px; overflow: hidden; border-radius: 2px; background: #e6ecec; }
.lb-jauge > span { display: block; height: 100%; background: #5f9098; }
.lb-depart-ligne.is-alerte .lb-depart-places-texte { color: #b4462e; }
.lb-depart-ligne.is-alerte .lb-jauge > span { background: #b4462e; }
.lb-depart-ligne.is-complet .lb-depart-places-texte { color: #7d8a90; }
.lb-depart-ligne.is-complet .lb-jauge > span { background: #9aa6ab; }
.lb-depart-prix { display: flex; align-items: center; justify-content: flex-end; gap: 16px; }
.lb-badge-promo { padding: 4px 8px; background: #a8d4d8; color: #112534; font-size: 10px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; }
.lb-depart-montant { display: flex; flex-direction: column; align-items: flex-end; font-family: 'Lato', sans-serif; font-size: 20px; line-height: 1.2; color: #112534; white-space: nowrap; }
.lb-depart-montant small { font-family: 'Work Sans', sans-serif; font-size: 11px; color: #65757b; }
.lb-depart-fleche { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid #cfd8da; border-radius: 50%; color: #112534; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.lb-depart-ligne:hover .lb-depart-fleche { background: #112534; border-color: #112534; color: #ffffff; }
@media (max-width: 1150px) {
	.lb-depart-ligne { grid-template-columns: 125px 105px minmax(0, 1fr) 150px 185px; gap: 12px 18px; }
}
@media (max-width: 900px) {
	.lb-depart-ligne { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: 20px 6px; }
	.lb-depart-voyage { grid-column: 1 / -1; order: -1; }
	.lb-depart-places { grid-column: 1 / -1; }
	.lb-depart-prix { grid-column: 1 / -1; justify-content: flex-end; }
	.lb-badge-promo { margin-right: auto; }
}

/* ---------- Cartes destinations ---------- */
.lb-destinations { display: grid; grid-template-columns: repeat(var(--lb-dest-cols, 3), minmax(0, 1fr)); gap: 16px; }
@media (max-width: 1000px) { .lb-destinations { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .lb-destinations { grid-template-columns: 1fr; } }
.lb-dest-carte { position: relative; display: block; min-height: 540px; overflow: hidden; isolation: isolate; background: #112534; color: #ffffff !important; text-decoration: none !important; box-shadow: 0 22px 52px rgba(17, 37, 52, .14); transition: transform .55s cubic-bezier(.2, .8, .2, 1), box-shadow .55s ease; }
.lb-dest-carte:hover { transform: translateY(-6px); box-shadow: 0 34px 70px rgba(17, 37, 52, .24); }
/* Pas de zoom au survol (comme dev.sattse.com) : la photo s'éclaire, le liseré se resserre et l'ancre se trace dans le coin */
.lb-dest-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.84) saturate(.92); transition: filter .6s ease; }
.lb-dest-carte:hover .lb-dest-image { filter: brightness(1) saturate(1); }
.lb-dest-voile { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(7, 19, 28, .1) 0%, rgba(7, 19, 28, .05) 38%, rgba(7, 19, 28, .86) 100%); }
.lb-dest-cadre { position: absolute; inset: 13px; border: 1px solid rgba(255, 255, 255, .22); pointer-events: none; transition: inset .55s cubic-bezier(.2, .8, .2, 1), border-color .55s ease; }
.lb-dest-carte:hover .lb-dest-cadre { inset: 9px; border-color: rgba(255, 255, 255, .5); }
.lb-dest-badge { position: absolute; top: 30px; left: 30px; display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; background: rgba(8, 22, 33, .55); font-size: 11px; font-weight: 500; letter-spacing: .4px; }
.lb-dest-badge i { position: relative; width: 6px; height: 6px; border-radius: 50%; background: #a8d4d8; }
.lb-dest-badge i::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 1px solid #a8d4d8; animation: lb-pulse 2.4s ease-out infinite; }
.lb-dest-coord { margin-bottom: 8px; font-family: 'Fraunces', serif; font-style: italic; font-size: 13px; color: rgba(255, 255, 255, .72); }
.lb-dest-contenu { position: absolute; right: 30px; bottom: 34px; left: 30px; display: flex; flex-direction: column; transition: transform .55s cubic-bezier(.2, .8, .2, 1); }
.lb-dest-carte:hover .lb-dest-contenu { transform: translateY(-6px); }
.lb-dest-region { margin-bottom: 12px; font-size: 10px; font-weight: 600; letter-spacing: 2.2px; text-transform: uppercase; color: #a8d4d8; }
.lb-dest-nom { margin-bottom: 14px; font-family: 'Lato', sans-serif; font-weight: 300; font-size: 38px; line-height: 1; letter-spacing: 0; text-transform: uppercase; transition: letter-spacing .6s cubic-bezier(.2, .8, .2, 1); }
.lb-dest-carte:hover .lb-dest-nom { letter-spacing: .04em; }
.lb-dest-texte { max-width: 300px; font-size: 13.5px; line-height: 1.65; color: rgba(255, 255, 255, .86); }
.lb-dest-pied { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 22px; font-size: 10px; font-weight: 700; letter-spacing: 1.8px; text-transform: uppercase; }
.lb-dest-prix { flex: 0 0 auto; font-size: 12px; font-weight: 500; letter-spacing: .3px; text-transform: none; white-space: nowrap; color: rgba(255, 255, 255, .88); }
.lb-dest-pied .lb-lien-fleche { white-space: nowrap; }
@media (max-width: 400px) { .lb-dest-pied .lb-lien-fleche::after { width: 18px; } }
.lb-lien-fleche::after { content: ""; display: inline-block; width: 34px; height: 1px; margin-left: 12px; vertical-align: middle; background: currentColor; transition: width .3s ease; }
.lb-dest-carte:hover .lb-lien-fleche::after { width: 58px; }

/* ---------- Repères d'une destination : [destination_chiffres] ---------- */
.lb-chiffres { display: flex; flex-wrap: wrap; gap: 0; margin: 0; font-family: 'Work Sans', system-ui, sans-serif; }
.lb-chiffres > div { padding: 4px 28px 4px 0; margin: 0 28px 12px 0; border-right: 1px solid rgba(255, 255, 255, .25); }
.lb-chiffres > div:last-child { border-right: 0; margin-right: 0; padding-right: 0; }
.lb-chiffres dt { margin: 0; font-family: 'Lato', sans-serif; font-weight: 300; font-size: 26px; line-height: 1.1; color: #ffffff; }
.lb-chiffres dd { margin: 4px 0 0; font-size: 11px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; color: rgba(255, 255, 255, .7); }
@media (max-width: 640px) { .lb-chiffres > div { padding-right: 18px; margin-right: 18px; } .lb-chiffres dt { font-size: 21px; } }

/* ---------- Moteur de recherche ---------- */
.lb-recherche { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; align-items: end; padding: 22px; background: #ffffff; box-shadow: 0 24px 60px rgba(17, 37, 52, .16); }
.lb-recherche-champ { display: flex; flex-direction: column; gap: 7px; margin: 0; }
.lb-recherche-champ > span { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: #5b6970; }
#top .lb-recherche select { width: 100%; height: 50px; margin: 0; padding: 0 14px; border: 1px solid #dfe5e6; border-radius: 0; background-color: #f7f9f9; font-family: inherit; font-size: 15px; color: #112534; }
#top .lb-recherche-bouton { height: 50px; margin: 0; padding: 0 20px; border: 0; border-radius: 0; background: #112534; color: #ffffff; font-family: inherit; font-size: 12px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; cursor: pointer; }
#top .lb-recherche-bouton:hover { background: #1d3a50; }
.lb-prochain-depart { margin: 14px 0 0; text-align: center; font-size: 13px; color: #5b6970; }
.lb-prochain-depart a { color: #112534; font-weight: 600; }

/* ---------- Animations d'apparition (lb-voyages.js ajoute .lb-anim sur <html>, puis .is-visible au bloc à l'écran) ----------
   La montée passe par la propriété « translate » pour ne pas entrer en conflit avec les « transform » du survol. */
@keyframes lb-monte { from { opacity: 0; translate: 0 32px; } to { opacity: 1; translate: 0 0; } }
@keyframes lb-glisse { from { opacity: 0; translate: -18px 0; } to { opacity: 1; translate: 0 0; } }
@keyframes lb-fondu { from { opacity: 0; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }
@keyframes lb-pulse { 0% { transform: scale(1); opacity: .9; } 80%, 100% { transform: scale(3.2); opacity: 0; } }
.lb-anim .lb-destinations > *, .lb-anim .lb-vue-grille > *, .lb-anim .lb-recherche { opacity: 0; }
.lb-anim .lb-departs-liste > *, .lb-anim .lb-departs-filtres > * { opacity: 0; }
.lb-anim .is-visible.lb-destinations > *, .lb-anim .is-visible.lb-vue-grille > *, .lb-anim .lb-recherche.is-visible { animation: lb-monte 1s cubic-bezier(.2, .75, .2, 1) both; animation-delay: calc(var(--lb-i, 0) * 110ms); }
.lb-anim .is-visible.lb-departs-liste > *, .lb-anim .is-visible.lb-departs-filtres > * { animation: lb-glisse .8s cubic-bezier(.2, .75, .2, 1) both; animation-delay: calc(var(--lb-i, 0) * 70ms); }
.lb-anim .lb-departs-liste .lb-jauge > span { transform: scaleX(0); transform-origin: left center; transition: transform 1.3s cubic-bezier(.2, .75, .2, 1); transition-delay: calc(var(--lb-i, 0) * 70ms + 350ms); }
.lb-anim .is-visible.lb-departs-liste .lb-jauge > span { transform: scaleX(1); }
.lb-depart-ligne.lb-reapparait { animation: lb-fondu .45s ease both !important; animation-delay: calc(var(--lb-j, 0) * 45ms) !important; }
@media (prefers-reduced-motion: reduce) {
	.lb-dest-badge i::after { animation: none; }
	.lb-dest-carte, .lb-dest-contenu, .lb-dest-nom, .lb-dest-cadre { transition: none; }
}
