/* Selettore di lingua, menu del telefono e popup della lingua: uguali su tutte le pagine.
   Si carica dopo gli stili della pagina, così a parità di selettore vince questo file. */

/* ---------- selettore di lingua (header) ---------- */
.langmenu{position:relative;flex:none}
.langmenu-btn{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 12px;border-radius:999px;border:1px solid currentColor;
  background:transparent;color:inherit;font:600 13px/1 var(--f-label);letter-spacing:.1em;cursor:pointer;opacity:.92}
.langmenu-btn:hover{opacity:1}
.langmenu-btn svg{width:16px;height:16px}
.langmenu-list{position:absolute;right:0;top:calc(100% + 8px);min-width:190px;margin:0;padding:6px;list-style:none;
  background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:0 22px 50px -20px rgba(0,0,0,.5);z-index:60}
.langmenu-list li{margin:0}
.langmenu-list a{display:flex!important;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;text-decoration:none;color:var(--ink);
  font:500 15px/1.2 var(--f-body);opacity:1}
.langmenu-list a:hover,.langmenu-list a[aria-current]{background:var(--paper-2)}
.langmenu-list a b{font:600 12px/1 var(--f-label);letter-spacing:.1em;width:22px}

/* ---------- pulsante del menu (telefono) ---------- */
.burger{display:none;width:42px;height:42px;border-radius:50%;border:1px solid currentColor;background:transparent;color:inherit;
  cursor:pointer;flex:none;align-items:center;justify-content:center;flex-direction:column;gap:4px;padding:0}
.burger span{display:block;width:16px;height:1.5px;background:currentColor;border-radius:2px;transition:transform .25s,opacity .25s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}

/* ---------- pannello del menu ---------- */
.mnav{position:fixed;inset:0;z-index:45;display:flex;flex-direction:column;gap:2px;overflow-y:auto;background:var(--paper);color:var(--ink);
  padding:calc(92px + env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) calc(28px + env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));
  animation:mnavIn .3s cubic-bezier(.16,1,.3,1)}
.mnav[hidden]{display:none}
@keyframes mnavIn{from{opacity:0;transform:translateY(-8px)}}
.mnav-link{font:500 30px/1.15 var(--f-display);color:var(--ink);text-decoration:none;padding:12px 0;border-bottom:1px solid var(--line)}
.mnav-langs{display:flex;gap:6px;flex-wrap:wrap;margin-top:20px}
.mnav-langs a{padding:10px 14px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--ink);font:600 13px/1 var(--f-label);letter-spacing:.1em}
.mnav-langs a[aria-current]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.mnav .mnav-book{margin-top:22px;display:flex;align-items:center;justify-content:center;min-height:52px;border-radius:999px;background:var(--sofa);
  color:#fff;font:600 16px/1 var(--f-body);text-decoration:none}
body.mnav-open{overflow:hidden}
/* a menu aperto l'header resta sopra al pannello e prende i suoi colori (sulla home nasce bianco sopra la foto) */
body.mnav-open header.top{background:var(--paper)!important;color:var(--ink)!important;box-shadow:0 1px 0 var(--line)}

/* ---------- popup "il sito è disponibile nella tua lingua" ---------- */
.lp{position:fixed;inset:0;z-index:1001;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(8,18,17,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:lpIn .25s ease}
@keyframes lpIn{from{opacity:0}}
.lp-card{position:relative;max-width:400px;width:100%;background:var(--paper);color:var(--ink);border-radius:22px;padding:32px 26px 22px;
  text-align:center;box-shadow:0 30px 80px -20px rgba(0,0,0,.5);animation:lpCard .3s cubic-bezier(.16,1,.3,1)}
@keyframes lpCard{from{transform:translateY(14px) scale(.97)}}
.lp-flag{font-size:40px;line-height:1;margin-bottom:12px}
.lp-card h2{font:500 28px/1.15 var(--f-display);margin:0 0 10px;letter-spacing:0}
.lp-card p{margin:0 0 20px;color:var(--ink-soft);font-size:15px;line-height:1.55}
.lp-go{display:block;padding:14px 18px;border-radius:999px;background:var(--sofa);color:#fff;text-decoration:none;font:600 15px/1.2 var(--f-body)}
.lp-stay{display:block;width:100%;margin-top:8px;border:0;background:none;color:var(--ink-soft);font:500 14px var(--f-body);padding:10px;cursor:pointer}
.lp-x{position:absolute;top:10px;right:12px;width:36px;height:36px;border:0;border-radius:50%;background:none;color:var(--ink-soft);font-size:22px;line-height:1;cursor:pointer}
.lp :focus-visible,.mnav :focus-visible,.langmenu :focus-visible,.burger:focus-visible{outline:3px solid var(--sofa);outline-offset:2px}

/* ---------- header sul telefono ---------- */
@media (max-width:860px){
  .burger{display:inline-flex}
  header.top .nav{gap:8px}
  header.top .nav .btn{padding:0 14px;font-size:14px;min-height:40px}
  header.top .cnav a:not(.btn){display:none}
}
@media (max-width:420px){ header.top .brand{font-size:16px;letter-spacing:.04em} header.top .brand svg{width:24px;height:24px} }
/* sui telefoni più stretti il selettore resta nell'header ma mostra solo il mappamondo:
   con "Reservar"/"Réserver" a 360 px la sigla faceva uscire il ☰ dal bordo */
@media (max-width:379px){ header.top .langmenu-btn{width:40px;padding:0;justify-content:center} header.top .langmenu-btn span{display:none} }
@media (prefers-reduced-motion: reduce){ .mnav,.lp,.lp-card{animation:none} .burger span{transition:none} }

/* ---------- calendario di Lodgify: si capisce cosa è libero, occupato, solo partenza ----------
   Il calendario è di Lodgify (stessi dati, stessa logica); qui cambia solo come si vede. Lodgify segna
   ogni giorno con classi stabili su [data-testid^="calendar-calendar-cell-"]:
     nessuna classe = libero · .unavailable = occupato · .disabled da solo = non selezionabile ora
     (prima dell'arrivo: solo partenza, la notte dopo è occupata; dopo l'arrivo: partenza non valida)
     .selection-start.selection-end sulla stessa cella = arrivo scelto, si sta scegliendo la partenza */
[data-testid="calendar-range-calendar"]{position:relative;padding-bottom:46px!important}
@media (max-width:500px){ [data-testid="calendar-range-calendar"]{padding-bottom:60px!important} }
[data-testid^="calendar-calendar-cell-"]{border-radius:10px;transition:background .15s, box-shadow .15s}
[data-testid^="calendar-calendar-cell-"]:not(.disabled):not(.unavailable):not(.outside-month):not(.outside-visible-range):not([data-sn="no"]) span{color:#172322!important;font-weight:700}
[data-testid^="calendar-calendar-cell-"]:not(.disabled):not(.unavailable):not(.outside-month):not(.outside-visible-range):not([data-sn]):hover{background:#fbe6dc}
/* occupato: righe diagonali */
[data-testid^="calendar-calendar-cell-"].unavailable:not(.outside-month):not(.outside-visible-range):not([data-sn="co"]):not([data-sn="min"]):not(.selected){
  background:repeating-linear-gradient(135deg,#efe3de 0 3px,#fbf7f5 3px 7px)!important}
[data-testid^="calendar-calendar-cell-"].unavailable:not(.outside-visible-range):not([data-sn="co"]):not([data-sn="min"]):not(.selected) span{color:#b3a39d!important;text-decoration:line-through}
/* Fase 1, nessuna data scelta: un giorno bloccato che non vale nemmeno come partenza è rigato pieno;
   i giorni di sola partenza (data-sn="co", calcolati in site-ui.js) sono bianchi come i liberi, e così le notti
   libere che da sole non bastano al soggiorno minimo (data-sn="min"): non sono occupate */
body:not(:has(.selection-start)) [data-testid^="calendar-calendar-cell-"].disabled:not(.unavailable):not(.outside-month):not(.outside-visible-range):not([data-sn="co"]):not([data-sn="min"]){
  background:repeating-linear-gradient(135deg,#efe3de 0 3px,#fbf7f5 3px 7px)!important}
body:not(:has(.selection-start)) [data-testid^="calendar-calendar-cell-"].disabled:not(.unavailable):not(.outside-visible-range):not([data-sn="co"]):not([data-sn="min"]) span{color:#b3a39d!important;text-decoration:line-through}
[data-testid^="calendar-calendar-cell-"][data-sn="co"],[data-testid^="calendar-calendar-cell-"][data-sn="min"]{background:#fff!important;text-decoration:none!important}
[data-testid^="calendar-calendar-cell-"][data-sn="co"] span,[data-testid^="calendar-calendar-cell-"][data-sn="min"] span{color:#172322!important;font-weight:700;text-decoration:none!important}
/* data-sn="no" (site-ui.js): Lodgify lo lascerebbe scegliere, il suo checkout lo rifiuterebbe. Prima dell'arrivo è
   rigato come un occupato; dopo l'arrivo è una partenza non valida: niente verde, numero attenuato */
[data-testid^="calendar-calendar-cell-"][data-sn="no"]{background:repeating-linear-gradient(135deg,#efe3de 0 3px,#fbf7f5 3px 7px)!important;cursor:default}
[data-testid^="calendar-calendar-cell-"][data-sn="no"] span{color:#b3a39d!important;text-decoration:line-through}
body:has(.selection-start.selection-end) [data-testid^="calendar-calendar-cell-"][data-sn="no"]{background:none!important;box-shadow:none!important}
body:has(.selection-start.selection-end) [data-testid^="calendar-calendar-cell-"][data-sn="no"] span{color:#9aa5a2!important;text-decoration:none;font-weight:400}
/* il tooltip generico di Lodgify ("non selezionabile") lì lascia il posto al nostro, più preciso */
body:has([data-sn="co"]:hover) [data-testid^="calendar-calendar-tooltip-"],body:has([data-sn="min"]:hover) [data-testid^="calendar-calendar-tooltip-"]{display:none!important}
/* Il riquadro degli ospiti di Lodgify sta fuori dalla barra, sul body: col tema scuro ne ereditava il testo chiaro
   e "adulti", "bambini", "neonati" sparivano sul fondo bianco del riquadro. Il colore lo mette Lodgify con una sua
   regola successiva (color: var(--ldg-component-popover-color), che vale inherit): serve !important */
[data-testid^="search-bar.guests-breakdown-overlay"]{--ldg-component-popover-color:#172322;color:#172322!important}
.sn-tip{position:fixed;z-index:2000;max-width:240px;padding:8px 12px;border-radius:8px;background:#111;color:#fff;font:500 13px/1.35 var(--f-body);text-align:center;pointer-events:none}
.sn-tip[hidden]{display:none}
/* Fase 3, arrivo e partenza scelti: Lodgify segna "disabled" anche i giorni liberi. Rigati restano solo gli occupati */
body:has(.selection-start):not(:has(.selection-start.selection-end)) [data-testid^="calendar-calendar-cell-"].disabled:not(.unavailable):not(.selected) span{color:#9aa5a2!important;text-decoration:none}
[data-testid^="calendar-calendar-cell-"].selected,[data-testid^="calendar-calendar-cell-"].selected span{text-decoration:none!important}
/* arrivo e partenza scelti: numero bianco sull'arancio (sulla partenza Lodgify lo lasciava grigio da "occupato") */
[data-testid^="calendar-calendar-cell-"].selection-start span,[data-testid^="calendar-calendar-cell-"].selection-end span{color:#fff!important;font-weight:700}
/* arrivo scelto: le partenze possibili in verde, il resto si attenua */
body:has(.selection-start.selection-end) [data-testid^="calendar-calendar-cell-"]:not(.disabled):not(.unavailable):not(.outside-month):not(.outside-visible-range):not([data-sn="no"]){
  background:#e3eeea!important;box-shadow:inset 0 0 0 1.5px #1E4744}
body:has(.selection-start.selection-end) [data-testid^="calendar-calendar-cell-"]:not(.disabled):not(.unavailable):not([data-sn="no"]) span{color:#1E4744!important}
body:has(.selection-start.selection-end) [data-testid^="calendar-calendar-cell-"].disabled:not(.unavailable):not(.selected) span{color:#c6cdcb!important}
/* legenda sotto il calendario, nella lingua della pagina; cambia quando si sceglie l'arrivo */
[data-testid="calendar-range-calendar"]::after{position:absolute;left:18px;right:18px;bottom:14px;font:500 12.5px/1.35 var(--f-body);color:#4A5856;
  content:"Bianco: disponibile · Rigato: occupato"}
html[lang="en"] [data-testid="calendar-range-calendar"]::after{content:"White: available · Striped: booked"}
html[lang="es"] [data-testid="calendar-range-calendar"]::after{content:"Blanco: disponible · Rayado: ocupado"}
html[lang="fr"] [data-testid="calendar-range-calendar"]::after{content:"Blanc : disponible · Hachuré : occupé"}
html[lang="de"] [data-testid="calendar-range-calendar"]::after{content:"Weiß: verfügbar · Gestreift: belegt"}
body:has(.selection-start.selection-end) [data-testid="calendar-range-calendar"]::after{color:#1E4744;font-weight:700;content:"Ora scegli la partenza: i giorni possibili sono in verde"}
html[lang="en"] body:has(.selection-start.selection-end) [data-testid="calendar-range-calendar"]::after{content:"Now pick your departure: the possible days are in green"}
html[lang="es"] body:has(.selection-start.selection-end) [data-testid="calendar-range-calendar"]::after{content:"Ahora elige la salida: los días posibles están en verde"}
html[lang="fr"] body:has(.selection-start.selection-end) [data-testid="calendar-range-calendar"]::after{content:"Choisissez maintenant le départ : les jours possibles sont en vert"}
html[lang="de"] body:has(.selection-start.selection-end) [data-testid="calendar-range-calendar"]::after{content:"Wählen Sie jetzt die Abreise: mögliche Tage sind grün"}
