/* YESBY HOTEL — search.css */
/* Recherche publique d'hébergements */
.hotel-search-form{margin:18px 0 24px}.hotel-search-results{margin-top:15px}.hotel-search-category{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:8px 0;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:9px}.hotel-search-category strong{flex:1 1 140px}.hotel-search-category span{font-size:.9rem}

/* Unités visibles sur les fiches publiques */
.public-unit-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}

/* Recherche : 2 champs en première ligne, 4 en seconde. */
.hotel-search-form{grid-template-columns:repeat(4,minmax(0,1fr))}
.hotel-search-form>label{grid-column:span 1;min-width:0}
.hotel-search-form>label:nth-of-type(1),.hotel-search-form>label:nth-of-type(2){grid-column:span 2}
.hotel-search-form>.form-actions{grid-column:1/-1}
@media(max-width:650px){.hotel-search-form{grid-template-columns:repeat(2,minmax(0,1fr))}.hotel-search-form>label:nth-of-type(1),.hotel-search-form>label:nth-of-type(2){grid-column:span 1}}
@media(max-width:380px){.hotel-search-form{grid-template-columns:repeat(2,minmax(0,1fr))}.hotel-search-form>label{grid-column:span 1}}

.hotel-search-card{display:block;color:var(--text);text-decoration:none;cursor:pointer}.hotel-search-card:hover,.hotel-search-card:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.hotel-search-card-action{font-weight:700;color:var(--accent)}

/* Suggestions AJAX destination */
.hotel-search-form .hotel-destination-field{position:relative}
.hotel-suggestions:not([hidden]){position:absolute;top:100%;left:0;right:0;z-index:40;max-height:300px;overflow-y:auto;background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:9px;box-shadow:0 12px 28px #0003;padding:5px}
.hotel-suggestion-heading{padding:7px 10px;font-size:.75rem;font-weight:700;opacity:.8}
.hotel-suggestion-item{display:block;width:100%;text-align:left;color:inherit;background:transparent;border:0;border-radius:6px;padding:9px 11px;cursor:pointer;font:inherit}
.hotel-suggestion-item:hover,.hotel-suggestion-item[aria-selected="true"]{background:var(--hover);color:var(--text)}

/* Nom dominant dans les résultats de recherche */
.hotel-search-card .hotel-result-name{font-size:clamp(1.8rem,3.8vw,2.65rem);line-height:1.15;font-weight:800;letter-spacing:-.025em;margin:0 0 16px;overflow-wrap:anywhere}

/* Encadré de recherche de disponibilités */
.hotel-stay-box{background:var(--surface-2,var(--surface));border:1px solid var(--line-strong,var(--line));border-radius:14px;padding:22px;margin:18px 0 28px;box-shadow:0 4px 18px #00000012}
.hotel-stay-box h2{margin:0 0 18px}.hotel-stay-box .hotel-stay-form{margin:0}
@media(max-width:600px){.hotel-stay-box{padding:15px}}

/* Parcours compact après choix d'une unité. */
.hotel-booking-nav{display:flex;flex-wrap:wrap;gap:9px;margin:16px 0}.hotel-booking-nav .btn{flex:0 0 auto;width:auto;min-width:0;text-align:center;cursor:pointer;padding:9px 15px}
#hotel-dates[hidden],#hotel-categories[hidden]{display:none!important}

/* Choix d'accès avant confirmation de réservation. */
.hotel-booking-account{padding:16px;border:1px solid var(--line-strong,var(--line));border-radius:10px;background:var(--surface);margin:18px 0}.hotel-booking-account>p:first-child{margin-top:0}.hotel-booking-account .hotel-auth-options .btn{background:#1769d4;color:#fff;border-color:#1769d4}.hotel-booking-account .hotel-guest-toggle{font-size:.9rem}.hotel-my-bookings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
#hotel-guest-form[hidden]{display:none!important}

/* Équipements et services dans les résultats de recherche. */
.hotel-search-options{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.hotel-search-option{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2);font-size:.88rem;line-height:1.35}

/* Recherche : contraste des établissements, catégories et badges d'options. */
.hotel-search-results .hotel-search-card{background:#f7f9fc;border:1px solid #a8b6c9;box-shadow:0 3px 12px #172b4a12}
.hotel-search-results .hotel-search-category{background:#e8eef7;border-color:#a5b5cd}
.hotel-search-results .hotel-search-option{background:#e3edfb;border:1px solid #90add4;color:#173e77;font-weight:600}
:root[data-theme="dark"] .hotel-search-results .hotel-search-card{background:#303b4b;border-color:#8395ad;box-shadow:0 4px 14px #0004}
:root[data-theme="dark"] .hotel-search-results .hotel-search-category{background:#263342;border-color:#8194ae}
:root[data-theme="dark"] .hotel-search-results .hotel-search-option{background:#172d48;border-color:#688fbf;color:#f1f6ff}
@media(prefers-color-scheme:dark){
  :root:not([data-theme]) .hotel-search-results .hotel-search-card{background:#303b4b;border-color:#8395ad;box-shadow:0 4px 14px #0004}
  :root:not([data-theme]) .hotel-search-results .hotel-search-category{background:#263342;border-color:#8194ae}
  :root:not([data-theme]) .hotel-search-results .hotel-search-option{background:#172d48;border-color:#688fbf;color:#f1f6ff}
}

/* Recherche HOTEL : grille adaptable sans débordement horizontal. */
.hotel-search-form{width:100%;max-width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}
.hotel-search-form>label,.hotel-search-form input,.hotel-search-form select{min-width:0;max-width:100%}
@media(max-width:1050px){.hotel-search-form{grid-template-columns:repeat(2,minmax(0,1fr))}.hotel-search-form>label:nth-of-type(1),.hotel-search-form>label:nth-of-type(2){grid-column:span 1}}
@media(max-width:520px){.hotel-search-form{grid-template-columns:1fr}.hotel-search-form>label,.hotel-search-form>label:nth-of-type(1),.hotel-search-form>label:nth-of-type(2){grid-column:1/-1}}

/* Brouillons visibles uniquement par leurs gestionnaires dans la recherche */
.hotel-draft-private-badge{display:inline-block;padding:5px 10px;margin:3px 0 10px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-2,var(--surface));color:var(--text);font-size:12px;font-weight:700}

/* Le lien Maps ne couvre que le texte de l'adresse. */
.hotel-search-address{justify-content:flex-start}
.hotel-search-address .hotel-search-map-link{flex:0 0 auto;width:max-content;max-width:calc(100% - 26px);align-self:flex-start}

/* Titre et ville sur la même ligne dans les résultats. */
.hotel-search-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0}
.hotel-search-title-row .hotel-result-name{min-width:0;margin:0;overflow-wrap:anywhere}
.hotel-search-title-city{flex:0 1 auto;text-align:right;font-size:clamp(1.8rem,3.8vw,2.65rem);line-height:1.15;font-weight:800;letter-spacing:-.025em;color:var(--accent);white-space:nowrap}
@media(max-width:520px){.hotel-search-title-row{flex-wrap:wrap;gap:4px 10px}.hotel-search-title-city{margin-left:auto}}

/* Recherche par établissement : notice sur toute la ligne et espacement du récapitulatif. */
.hotel-search-results>.hotel-search-notice{grid-column:1/-1;width:100%;margin:0 0 8px}
.hotel-search-card .hotel-my-reservation-counts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 16px}
.hotel-search-card .hotel-my-reservation-dates{margin:8px 0 18px;gap:10px}
.hotel-search-card .hotel-my-reservation-dates>div{padding:10px 12px}

/* Hébergement : options sous dates, tarif et total du séjour mis en valeur. */
.hotel-search-card .hotel-unit-options{margin:12px 0 16px;justify-content:flex-start}
.hotel-stay-price{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:16px 18px;margin:14px 0;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-2,var(--surface))}
.hotel-stay-price>div{display:flex;flex-direction:column;gap:3px}
.hotel-stay-price small{font-size:12px;color:var(--sub)}
.hotel-stay-price strong{font-size:1.25rem;line-height:1.2}
.hotel-stay-price .hotel-stay-price-total strong{font-size:1.7rem;color:var(--accent)}
@media(max-width:500px){.hotel-stay-price{gap:12px}.hotel-stay-price .hotel-stay-price-total strong{font-size:1.45rem}}

/* Dès qu'un critère change, les résultats précédents disparaissent. */
.panel.hotel-search-dirty > .hotel-search-form ~ *{display:none!important}


/* Mode privatif : formulaire réduit de moitié, deux champs par ligne. */
.hotel-search-form.hotel-search-private-form{width:50%;max-width:700px;grid-template-columns:repeat(2,minmax(0,1fr))}
.hotel-search-private-form>.form-actions{grid-column:1/-1}
.hotel-private-type{font-weight:700;font-size:1.15rem;color:var(--accent);margin:0 0 12px}
@media(max-width:850px){.hotel-search-form.hotel-search-private-form{width:100%;max-width:700px;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.hotel-search-form.hotel-search-private-form{grid-template-columns:1fr}}

/* Mode privatif : panneau centré, sans moitié droite vide, quatre critères sur une ligne. */
.panel.hotel-private-search-panel{width:100%;max-width:940px;margin-left:auto;margin-right:auto}
.hotel-private-search-panel .hotel-search-form.hotel-search-private-form{width:100%;max-width:none;grid-template-columns:repeat(4,minmax(0,1fr))}
.hotel-private-search-panel .hotel-search-results{grid-template-columns:minmax(0,1fr)}
.hotel-private-search-panel .hotel-search-results .hotel-search-card{width:100%;max-width:none;min-width:0}
@media(max-width:760px){.hotel-private-search-panel .hotel-search-form.hotel-search-private-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.hotel-private-search-panel .hotel-search-form.hotel-search-private-form{grid-template-columns:1fr}}

/* Repère visible du nombre de logements dans les résultats privatifs. */
.hotel-search-result-count{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:12px 0;font-size:14px}
.hotel-search-result-count strong{color:var(--accent);font-size:1.05rem}
.hotel-search-result-count span{color:var(--sub)}
@media(max-width:600px){.hotel-search-result-count{position:static;background:transparent;padding:0;border:0}}

/* Barre de sélection rapide des hébergements */
.hotel-unit-filter-toolbar{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 16px;align-items:center}
.hotel-unit-filter-toolbar .btn{font-size:13px;padding:7px 12px;background:var(--surface-2,var(--surface));color:var(--text);border:1px solid var(--line-strong);cursor:pointer}
.hotel-unit-filter-toolbar .btn.active{background:#2368c9;color:#fff;border-color:#2368c9}
.hotel-search-results article.hotel-search-card[hidden]{display:none!important}
@media(max-width:600px){.hotel-unit-filter-toolbar{position:static;background:transparent;padding:0}}

.hotel-unit-filter-toolbar .hotel-unit-filter-price{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:5px;font-size:11px;font-weight:700;white-space:nowrap;background:var(--line-strong);color:var(--text)}
.hotel-unit-filter-toolbar .btn.active .hotel-unit-filter-price{background:rgba(255,255,255,.2);color:#fff}

/* Grand écran : deux hébergements par ligne en mode privatif. */
@media(min-width:1150px){
  .panel.hotel-private-search-panel{max-width:1400px}
  .hotel-private-search-panel .hotel-search-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px}
  .hotel-private-search-panel .hotel-search-results>.hotel-search-notice{grid-column:1/-1}
}
@media(max-width:1149px){
  .hotel-private-search-panel .hotel-search-results{grid-template-columns:minmax(0,1fr)}
}




/* Hébergements indisponibles : groupe secondaire, hors compteur et filtres. */
.hotel-unavailable-title{margin:30px 0 15px;padding-top:18px;border-top:1px solid var(--line-strong)}
.hotel-unavailable-results{opacity:.78}
.hotel-unavailable-results .hotel-search-card{border-style:dashed}
.hotel-unavailable-results .hotel-search-card:hover{outline:none;cursor:default}

/* Badges voyageurs et dates des cartes de recherche. */
.hotel-my-reservation-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.hotel-my-reservation-dates>div{display:flex;flex-direction:column;gap:3px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:9px}
.hotel-my-reservation-dates small,.hotel-my-reservation-footer small{color:var(--sub)}
.hotel-my-reservation-dates strong{font-size:.92rem}
.hotel-my-reservation-count,.hotel-my-reservation-options .hotel-search-option{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;border:1px solid #91aed5;border-radius:9px;background:#e1edfc;color:#173c70;font-weight:600;font-size:.88rem}
.hotel-my-reservation-count strong{font-size:1rem;font-weight:800}
:root[data-theme="dark"] .hotel-my-reservation-count,:root[data-theme="dark"] .hotel-my-reservation-options .hotel-search-option{background:#1c3757;border-color:#7398c6;color:#f2f7ff}
@media(prefers-color-scheme:dark){:root:not([data-theme]) .hotel-my-reservation-count,:root:not([data-theme]) .hotel-my-reservation-options .hotel-search-option{background:#1c3757;border-color:#7398c6;color:#f2f7ff}}
@media(max-width:480px){.hotel-search-card .hotel-my-reservation-dates{grid-template-columns:1fr}}


/* Compteurs voyageurs compacts : moitié de la largeur des autres champs. */
.hotel-search-form>label:has(>input[name="adults"]),.hotel-search-form>label:has(>input[name="children"]){width:50%;min-width:0}
@media(max-width:520px){.hotel-search-form>label:has(>input[name="adults"]),.hotel-search-form>label:has(>input[name="children"]){width:50%}}

/* Adultes et enfants côte à côte, sans espace entre les deux compteurs. */
.hotel-search-form .hotel-travellers-fields{display:flex;align-items:end;gap:0;grid-column:span 2;min-width:0}
.hotel-search-form .hotel-travellers-fields>label{display:block;flex:0 1 50%;min-width:0;font-weight:600}
.hotel-search-form .hotel-travellers-fields input{display:block;width:100%;min-width:0;margin-top:5px;padding:11px;border:1px solid var(--line-strong);border-radius:9px;background:var(--field-bg);color:var(--text);font:inherit}
@media(max-width:760px){.hotel-search-form .hotel-travellers-fields{grid-column:1/-1}}


/* Mode privatif : arrivée, départ, adultes et enfants sur une seule ligne desktop. */
@media(min-width:761px){
  .hotel-private-search-panel .hotel-search-form.hotel-search-private-form{grid-template-columns:repeat(4,minmax(0,1fr))}
  .hotel-private-search-panel .hotel-search-form.hotel-search-private-form>label:nth-of-type(1),
  .hotel-private-search-panel .hotel-search-form.hotel-search-private-form>label:nth-of-type(2){grid-column:span 1}
  .hotel-private-search-panel .hotel-search-form .hotel-travellers-fields{grid-column:span 2}
}


/* Compteurs voyageurs : bloc moitié moins large et espace entre les champs. */
.hotel-search-form .hotel-travellers-fields{gap:12px;width:50%;justify-self:start}
.hotel-search-form .hotel-travellers-fields>label{flex:1 1 0;min-width:0}
@media(max-width:760px){.hotel-search-form .hotel-travellers-fields{width:100%}}

/* Cartes de recherche compactes : bannière et galerie réduites. */
.hotel-search-results .hotel-search-card{padding:12px 16px;overflow:hidden}
.hotel-search-results .hotel-search-card>.hotel-result-photo{display:block;width:100%;height:92px;max-height:92px;object-fit:cover;object-position:center;border-radius:8px;margin:0 0 7px}
.hotel-search-results .hotel-search-card>.hotel-public-gallery{display:flex;gap:5px;margin:0 0 9px;max-height:36px;overflow:hidden}
.hotel-search-results .hotel-search-card .hotel-photo-thumb{width:54px;height:36px;object-fit:cover;flex:0 0 54px;border-radius:5px}
.hotel-search-results .hotel-search-card .hotel-result-name{font-size:clamp(1.3rem,2.2vw,1.65rem);margin:0;line-height:1.18}
.hotel-search-results .hotel-search-card .hotel-search-title-city{font-size:1.1rem}
.hotel-search-results .hotel-search-card .hotel-search-title-row{margin:0 0 5px}
.hotel-search-results .hotel-search-card>.muted{margin:3px 0;font-size:.85rem}
.hotel-search-results .hotel-search-card>.hotel-search-address{margin:4px 0}
.hotel-search-results .hotel-search-card>.hotel-search-description{margin:6px 0;line-height:1.35;font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hotel-search-results .hotel-search-card>.hotel-search-options{margin:6px 0;gap:5px}
.hotel-search-results .hotel-search-card .hotel-search-option{padding:3px 7px;font-size:.8rem}
.hotel-search-results .hotel-search-card .hotel-search-category{padding:6px 9px;margin:4px 0;gap:5px;font-size:.85rem}
.hotel-search-results .hotel-search-card>.hotel-search-card-action{margin:6px 0 0}
.hotel-search-results .hotel-search-card>.hotel-search-card-action+.muted{display:none}
@media(max-width:520px){.hotel-search-results .hotel-search-card{padding:10px}.hotel-search-results .hotel-search-card>.hotel-result-photo{height:80px;max-height:80px}.hotel-search-results .hotel-search-card>.hotel-public-gallery{max-height:30px}.hotel-search-results .hotel-search-card .hotel-photo-thumb{width:45px;height:30px;flex-basis:45px}}

/* Résultats généraux : chaque fiche occupe au plus 59 % de la zone. */
.hotel-search-results:has(>a.hotel-search-card){display:flex;flex-direction:column;align-items:flex-start}
.hotel-search-results>a.hotel-search-card{width:59%;max-width:59%;box-sizing:border-box}
@media(max-width:760px){.hotel-search-results>a.hotel-search-card{width:100%;max-width:100%}}

/* Markdown compact à l'intérieur des descriptions de résultats. */
.hotel-search-results .hotel-search-description{max-height:3.3em;overflow:hidden;line-height:1.5}
.hotel-search-results .hotel-search-description h1,.hotel-search-results .hotel-search-description h2,.hotel-search-results .hotel-search-description h3{font-size:.92rem;line-height:1.4;margin:0 0 3px}
.hotel-search-results .hotel-search-description p{margin:0 0 4px}
.hotel-search-results .hotel-search-description ul,.hotel-search-results .hotel-search-description ol{margin:0 0 4px;padding-left:20px}

/* Deux fiches établissement côte à côte dans les résultats généraux. */
.hotel-search-results:has(>a.hotel-search-card){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.hotel-search-results>a.hotel-search-card{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
@media(max-width:760px){.hotel-search-results:has(>a.hotel-search-card){grid-template-columns:minmax(0,1fr)}}

/* Même emplacement de bannière, même sans photo. */
.hotel-search-results .hotel-search-card>.hotel-result-photo-empty{display:block;width:100%;height:92px;max-height:92px;margin:0 0 7px;border-radius:8px;background:var(--surface-2,#263342);border:1px solid var(--line);box-sizing:border-box}
@media(max-width:520px){.hotel-search-results .hotel-search-card>.hotel-result-photo-empty{height:80px;max-height:80px}}

/* Adresse : liens Google Maps affichés comme badges. */
.hotel-search-results .hotel-search-address-lines{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.hotel-search-results .hotel-address-badge-link{display:inline-flex;align-items:center;width:auto;max-width:100%;padding:3px 8px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface-2);color:var(--accent);font-size:.85rem;line-height:1.35;text-decoration:none;cursor:pointer;overflow-wrap:anywhere}
.hotel-search-results .hotel-address-badge-link:hover,.hotel-search-results .hotel-address-badge-link:focus-visible{border-color:var(--accent);text-decoration:underline}

/* Zone adresse ajustée au contenu : seuls les badges sont interactifs. */
.hotel-search-results .hotel-search-card>.hotel-search-address{width:max-content;max-width:100%;align-self:flex-start}
.hotel-search-results .hotel-search-address-lines{width:max-content;max-width:100%}

/* Boutons d'authentification distincts et lisibles. */
.hotel-booking-account .hotel-auth-options{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0}
.hotel-booking-account .hotel-auth-options>.btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:42px;padding:10px 18px;border-radius:8px;text-decoration:none;box-sizing:border-box}
.hotel-booking-account .hotel-auth-options>.btn:hover{filter:brightness(1.12)}
/* Filtres d'hébergement : retour à la ligne sans débordement. */
.hotel-unit-filter-toolbar{display:flex;flex-wrap:wrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0;overflow:visible}
.hotel-unit-filter-toolbar>.btn{flex:0 1 auto;max-width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere}
@media(max-width:520px){.hotel-booking-account .hotel-auth-options>.btn{flex:1 1 120px}}

/* Un seul formulaire partagé, ouvert après choix d'un hébergement. */
.hotel-search-results .hotel-guest-booking-panel{grid-column:1/-1;width:100%;max-width:720px;box-sizing:border-box;scroll-margin-top:90px}
.hotel-search-results .hotel-guest-booking-panel[hidden]{display:none!important}
.hotel-search-results .hotel-guest-booking-choice{margin:5px 0 0}
.hotel-search-results .hotel-auth-options{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.hotel-search-results .hotel-auth-options .btn{display:inline-flex;align-items:center;padding:9px 15px;border-radius:8px}

/* Rappel compact de l'établissement sur la recherche privative. */
.hotel-search-property-recap{display:flex;align-items:flex-start;gap:15px;padding:12px;margin:12px 0;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-2);max-width:900px}
.hotel-search-recap-photo{width:180px;height:100px;flex:0 0 180px;object-fit:cover;border-radius:7px;cursor:zoom-in}
.hotel-search-recap-text{min-width:0;line-height:1.45}
.hotel-search-recap-text p{margin:0 0 7px}
.hotel-search-recap-subtitle{font-weight:700}
.hotel-search-recap-description{font-size:.9rem;color:var(--sub)}
@media(max-width:550px){.hotel-search-property-recap{flex-direction:column}.hotel-search-recap-photo{width:100%;height:110px;flex-basis:auto}}
