/* MOTORE-A-143. Il calendario di widget.js e' il riferimento del percorso ospite.
   Palette e tipografia locali al body: il tema legacy dell'hotel non deve
   riapparire dopo l'iframe. motore.css resta condiviso con l'extranet. */
body.booking-raffinato {
  --titolo: system-ui, -apple-system, sans-serif;
  --corpo: system-ui, -apple-system, sans-serif;
  --accento: #24292d;
  --accento-scuro: #454d56;
  --accento-chiaro: #f0f2f4;
  --fondo: #f1f2f4;
  --fondo-alt: #f0f2f4;
  --pannello: #fff;
  --carta-scheda: #fff;
  --testo: #343b42;
  --tenue: #626c77;
  --linea: #dce0e5;
  --linea-forte: #c5cad1;
  --raggio: 4px;
  --raggio-g: 8px;
  --raggio-scheda: 8px;
  --raggio-piccolo: 4px;
  --pannello-l: 720px;
  --ombra-scheda: none;
  --ombra-scheda-hover: none;
  background: #182a22;
  font-size: 15px;
}
.booking-raffinato .pannello { border-left: 0; }
.booking-raffinato .pannello-testa { padding: 14px 28px; background: #fff; gap: 12px; border: 0; }
.booking-raffinato .testa-identita { margin-right: auto; min-width: 0; }
.booking-raffinato .sopra { display: block; font-size: 9px; letter-spacing: .18em; text-transform: uppercase; color: #626c77; margin-bottom: 4px; }
.booking-raffinato .pannello-testa .nome,
.booking-raffinato .scheda-testo h3,
.booking-raffinato .camera-titolo,
.booking-raffinato .riepilogo h4,
.booking-raffinato .conferma h2 { font-family: var(--titolo); font-size: 24px; font-weight: 500; letter-spacing: 0; line-height: 1.15; color: #343b42; }
.booking-raffinato .testa-cmd { border-radius: 0; border-color: var(--linea); }
.booking-raffinato .ricerca { padding: 0 28px 12px; gap: 16px; background: #fff; grid-template-columns: 1.4fr 1.1fr 1fr auto; border: 0; }
.booking-raffinato .campo { display: grid; grid-template-columns: 22px minmax(0,1fr); align-content: center; align-items: center; gap: 8px; background: #fff; border: 0; border-radius: 4px; min-height: 48px; padding: 4px 0; box-shadow: none; }
.booking-raffinato .campo > svg { width: 21px; height: 21px; }
.booking-raffinato .campo .et { display: none; }
.booking-raffinato .campo .vl { font-size: 14px; font-weight: 400; color: #4b535d; }
.booking-raffinato .campo-cerca { display: none; }
.booking-raffinato .corpo { padding: 20px 28px calc(var(--barra-h) + 28px); background: var(--fondo); border-radius: 12px 12px 0 0; }
.booking-raffinato .riga-esito { font-size: 12px; padding: 4px 0 8px; }

/* Stessa azione primaria in calendario, ricerca, camera e pagamento. */
.booking-raffinato .btn { border-radius: 4px; min-height: 56px; font-size: 14px; font-weight: 400; letter-spacing: .08em; text-transform: uppercase; padding: 16px 22px; }
.booking-raffinato .campo-cerca,
.booking-raffinato .btn-principale,
.booking-raffinato .scheda-piede .btn {
  border: 0; border-radius: 4px; min-height: 56px; background: var(--accento); color: #fff;
  font-size: 14px; font-weight: 400; letter-spacing: .08em; text-transform: uppercase;
  padding: 16px 22px; line-height: normal; box-shadow: none; transform: none;
}
.booking-raffinato .campo-cerca:hover,
.booking-raffinato .btn-principale:hover,
.booking-raffinato .scheda-piede .btn:hover { background: var(--accento-scuro); color: #fff; box-shadow: none; transform: none; }
.booking-raffinato .btn-piatto { min-height: 44px; padding: 8px 0; text-transform: none; letter-spacing: 0; }
.booking-raffinato button:focus-visible,
.booking-raffinato a:focus-visible,
.booking-raffinato input:focus-visible,
.booking-raffinato select:focus-visible,
.booking-raffinato textarea:focus-visible { outline: 3px solid #596b80; outline-offset: 2px; }

/* L’altezza segue lo schermo: nome e dettagli restano vicini alla foto anche sui portatili. */
/* Immagini senza scritte sovrapposte: nome e prezzi sullo stesso fondo dei campi. */
.booking-raffinato .scheda { border: 1px solid var(--linea); border-radius: 8px; box-shadow: none; margin-bottom: 28px; }
.booking-raffinato .scheda:hover:not(.scheda-no) { transform: none; box-shadow: none; }
.booking-raffinato .scheda-foto:not(.senza-foto) { aspect-ratio: auto; height: clamp(140px, 26vh, 280px); height: clamp(140px, 26dvh, 280px); }
.booking-raffinato .scheda-foto:not(.senza-foto)::after { display: none; }
.booking-raffinato .scheda-foto img,
.booking-raffinato .scheda:hover:not(.scheda-no) .scheda-foto img { transform: none; transition: none; }
.booking-raffinato .scheda-testo { padding: 20px 24px; }
.booking-raffinato .scheda-no { opacity: 1; }
.booking-raffinato .ragione .sugg { display: inline-block; margin-top: 8px; color: var(--testo); }
.booking-raffinato .btn-date-alternative { display: flex; margin-top: 14px; min-height: 44px; gap: 12px; }
.booking-raffinato .scheda:focus-visible { outline: 3px solid #596b80; outline-offset: 3px; }
.booking-raffinato .camera-intestazione { display: flex; justify-content: space-between; align-items: start; gap: 20px; margin-bottom: 14px; }
.booking-raffinato .camera-intestazione h3 { margin: 0; }
.booking-raffinato .camera-da { text-align: right; flex: none; }
.booking-raffinato .camera-da .et { font-size: 11px; color: var(--tenue); }
.booking-raffinato .camera-da .et-notte { display: block; }
.booking-raffinato .camera-da .n { margin-left: 6px; }
.booking-raffinato .camera-da .n,
.booking-raffinato .prezzo-da .n,
.booking-raffinato .piano-prezzo .n,
.booking-raffinato .barra-somma .n { font-family: var(--corpo); font-size: 24px; font-weight: 500; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.booking-raffinato .etichetta,
.booking-raffinato .tag { border-radius: 0; font-size: 9px; letter-spacing: .1em; }
.booking-raffinato .scheda-piede { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 16px; padding-top: 18px; margin-top: 18px; border-top: 1px solid var(--linea); }
.booking-raffinato .scheda-piede .btn { justify-content: center; width: 100%; }
.booking-raffinato .scheda-piede .btn span { font-size: 18px; }
.booking-raffinato .galleria { border-radius: 8px; overflow: hidden; }
.booking-raffinato .galleria .grande { aspect-ratio: auto; height: clamp(140px, 26vh, 280px); height: clamp(140px, 26dvh, 280px); }
.booking-raffinato .camera-titolo { margin-top: 12px; }
.booking-raffinato .galleria-strip { gap: 8px; margin-top: 8px; }
.booking-raffinato .galleria-strip button { flex: 0 1 88px; height: 40px; aspect-ratio: auto; border-radius: 4px; }
.booking-raffinato h4.sez { font-family: var(--corpo); font-size: 10px; font-weight: 400; letter-spacing: .13em; text-transform: uppercase; margin: 28px 0 16px; color: var(--tenue); }
.booking-raffinato .piano { padding: 22px; border: 1px solid var(--linea); border-radius: 8px; background: #fff; box-shadow: none; }
.booking-raffinato .piano[aria-pressed="true"] { background: var(--accento-chiaro); border-color: var(--accento); box-shadow: inset 0 -2px var(--accento); }
.booking-raffinato .piano-nome { font-weight: 500; font-size: 16px; }
.booking-raffinato .piano-incluso { line-height: 1.7; }
.booking-raffinato .extra { padding: 18px 0; border: 0; border-bottom: 1px solid var(--linea); background: transparent; }
.booking-raffinato .extra-prezzo { font-family: var(--corpo); font-size: 17px; font-variant-numeric: tabular-nums; }
.booking-raffinato .barra-totale { background: var(--fondo); border-top: 1px solid var(--linea); padding-left: 28px; padding-right: 28px; box-shadow: none; }
.booking-raffinato .fiducia { font-size: 11px; }

/* Campi, riepilogo e conferma riprendono selettori e intervallo del calendario. */
.booking-raffinato .checkout { grid-template-columns: minmax(0,1fr); gap: 24px; }
.booking-raffinato .checkout > div { min-width: 0; }
.booking-raffinato input:not([type="checkbox"]):not([type="radio"]),
.booking-raffinato select,
.booking-raffinato textarea { background: #fff; border: 1px solid var(--linea); border-radius: 4px; min-height: 46px; padding: 10px 12px; color: var(--testo); font-family: var(--corpo); font-size: 15px; }
.booking-raffinato select { appearance: auto; }
.booking-raffinato .gruppo > label,
.booking-raffinato .campo-et { font-size: 10px; font-weight: 400; letter-spacing: .08em; color: var(--tenue); margin-bottom: 8px; }
.booking-raffinato .riquadro { padding: 22px; border-radius: 8px; background: #fff; border: 1px solid var(--linea); }
.booking-raffinato .riepilogo { padding: 24px; background: var(--accento-chiaro); border: 1px solid var(--linea); border-radius: 8px; position: static; order: -1; }
.booking-raffinato .riepilogo dl { font-size: 14px; gap: 12px 20px; }
.booking-raffinato .riepilogo dd { font-variant-numeric: tabular-nums; }
.booking-raffinato .conferma { background: #fff; border: 1px solid var(--linea); border-radius: 8px; padding: 36px 24px; }
.booking-raffinato .consenso { line-height: 1.7; }
.booking-raffinato .consenso input { min-height: 20px; width: 20px; flex: none; accent-color: var(--accento); }
.booking-raffinato .percorso-booking { display: flex; gap: 18px; border-bottom: 1px solid var(--linea); margin: 0 0 12px; padding: 0 0 10px; list-style: none; color: var(--tenue); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; }
.booking-raffinato .percorso-booking li[aria-current="step"] { color: var(--testo); font-weight: 600; }
.booking-raffinato .percorso-booking span { margin-right: 6px; color: var(--accento); font-variant-numeric: tabular-nums; }
.booking-raffinato .popover { top: 0; max-height: calc(100dvh - 132px); padding: 24px 28px; border-radius: 0 0 8px 8px; background: #fff; border: 1px solid var(--linea); }
.booking-raffinato .pop-testa { position: relative; justify-content: center; min-height: 44px; margin-bottom: 20px; }
.booking-raffinato .pop-testa > b { font-size: 20px; font-weight: 500; text-transform: capitalize; }
.booking-raffinato .popover-con-chiusura .pop-testa { position: sticky; top: -24px; z-index: 6; background: #fff; padding: 0 48px; }
.booking-raffinato .popover-con-chiusura .pop-chiudi { position: absolute; right: 0; top: 0; width: 44px; height: 44px; }
.booking-raffinato .pop-nav { position: absolute; inset: 0; display: flex; justify-content: space-between; pointer-events: none; }
.booking-raffinato .pop-nav button { pointer-events: auto; border: 0; background: #fff; border-radius: 4px; }
.booking-raffinato .calendari { display: block; }
.booking-raffinato .mese-nome { display: none; }
.booking-raffinato .dow { gap: 4px; }
.booking-raffinato .dow span { font-size: 13px; color: #626c77; padding-bottom: 14px; }
.booking-raffinato .griglia { gap: 4px; }
.booking-raffinato .g { aspect-ratio: auto; min-height: 72px; font-size: 20px; background: #fff; border: 1px solid var(--linea); border-radius: 2px; }
.booking-raffinato .g.no, .booking-raffinato .g.spenta { border-color: transparent; color: #abb2bb; }
.booking-raffinato .g.inizio, .booking-raffinato .g.fine, .booking-raffinato .g.dentro,
.booking-raffinato .g.inizio:hover, .booking-raffinato .g.fine:hover, .booking-raffinato .g.dentro:hover { background: var(--accento); border-color: var(--accento); color: #fff; }
.booking-raffinato .g.fine { clip-path: polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%); }
.booking-raffinato .q-pieno { background: #eceef1; border: 1px solid #b5bdc6; }
.booking-raffinato .q-scelto { background: var(--accento); }
.booking-raffinato .g.pieno { background: #eceef1; color: #737c87; text-decoration: line-through; }
.booking-raffinato .pop-piede { position: sticky; bottom: -24px; padding: 18px 0 0; background: #fff; }
.booking-raffinato .benvenuto { padding: 24px; background: #fff; border-radius: 8px; margin-bottom: 24px; }
.booking-raffinato .benvenuto h2 { margin: 0 0 8px; font-size: 24px; font-weight: 500; }
.booking-raffinato .benvenuto p { margin: 0; color: var(--tenue); }
.booking-raffinato .scheda-descrizione { color: var(--tenue); font-size: 14px; margin: 12px 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.booking-raffinato .foto-comandi { position: absolute; inset: 50% 16px auto; display: flex; align-items: center; justify-content: space-between; pointer-events: none; }
.booking-raffinato .foto-comandi button { pointer-events: auto; width: 40px; min-height: 40px; border: 0; border-radius: 50%; background: #fffffff0; color: #343b42; display: grid; place-items: center; }
.booking-raffinato .foto-contatore { position: absolute; right: 16px; bottom: 16px; font-size: 12px; padding: 4px 10px; background: #fffffff0; color: #343b42; border-radius: 4px; }
.booking-raffinato .menu-apri { border: 0; background: transparent; color: #4b535d; width: 32px; min-height: 44px; padding: 0; flex: none; }
.booking-raffinato .menu-apri svg { width: 24px; height: 24px; }
.booking-raffinato .menu-ospite { border: 0; padding: 36px; margin: 0; inset: 0 auto 0 0; width: min(560px,calc(100% - 56px)); max-width: none; height: 100dvh; max-height: 100dvh; background: #343b42; color: white; overflow: auto; }
.booking-raffinato .menu-ospite::backdrop { background: #343b4255; }
.booking-raffinato .menu-ospite h2 { font-size: 26px; font-weight: 500; margin: 36px 0; }
.booking-raffinato .menu-ospite .menu-chiudi { width: 44px; min-height: 44px; margin-left: -8px; border: 0; background: transparent; color: white; font-size: 32px; }
.booking-raffinato .menu-voci { padding: 24px 0; border-top: 1px solid #ffffff25; border-bottom: 1px solid #ffffff25; display: grid; gap: 8px; }
.booking-raffinato .menu-voci button, .booking-raffinato .menu-voci a { text-align: left; font: inherit; font-size: 19px; padding: 12px 0; background: none; border: 0; color: white; text-decoration: none; cursor: pointer; }
.booking-raffinato .menu-hotel { color: #c9cdd2; font-size: 13px; margin: 24px 0; }
.booking-raffinato .menu-aiuto { line-height: 1.8; color: #e0e3e7; }
.booking-raffinato .menu-aiuto a { color: white; text-underline-offset: 4px; }
.booking-raffinato .menu-ospite button:focus-visible, .booking-raffinato .menu-ospite a:focus-visible { outline-color: white; }
.booking-raffinato .menu-ospite [hidden] { display: none; }

/* Ospiti e filtri: stessi bordi, controlli e gerarchia del calendario. */
.booking-raffinato .filtri-apri { display: flex; align-items: center; gap: 8px; padding: 4px; min-height: 44px; border: 0; background: #fff; color: var(--testo); font: inherit; cursor: pointer; }
.booking-raffinato .filtri-apri svg { width: 22px; height: 22px; }
.booking-raffinato .filtri-numero { background: var(--accento); color: #fff; border-radius: 50%; min-width: 20px; padding: 2px; font-size: 12px; }
.booking-raffinato .contatore { padding: 20px; border: 1px solid var(--linea); border-radius: 5px; margin-bottom: 10px; gap: 16px; }
.booking-raffinato .contatore .n { font-size: 19px; font-weight: 500; }
.booking-raffinato .contatore .d { font-size: 13px; margin-top: 6px; line-height: 1.5; }
.booking-raffinato .pm { flex: none; }
.booking-raffinato .pm button { border: 0; background: #f0f2f4; border-radius: 50%; width: 40px; height: 40px; }
.booking-raffinato .pm button:disabled { opacity: .4; }
.booking-raffinato .eta-nota { color: var(--tenue); font-size: 13px; }
.booking-raffinato .filtri-vuoto { padding: 24px; background: #fff; border-radius: 8px; margin-bottom: 24px; }
.booking-raffinato .filtri-ospite { padding: 0; border: 0; border-radius: 8px; width: min(640px,calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px); background: #fff; color: var(--testo); margin: auto; }
.booking-raffinato .filtri-ospite::backdrop { background: #343b4270; }
.booking-raffinato .filtri-ospite header { position: relative; padding: 20px 60px; background: #f7f8fa; border-bottom: 1px solid var(--linea); text-align: center; }
.booking-raffinato .filtri-ospite h2 { font-size: 20px; font-weight: 500; margin: 0; }
.booking-raffinato .filtri-chiudi { position: absolute; right: 12px; top: 9px; width: 44px; height: 44px; background: none; border: 0; color: #4b535d; font-size: 30px; cursor: pointer; }
.booking-raffinato .filtri-corpo { padding: 28px; overflow: auto; max-height: calc(100dvh - 230px); }
.booking-raffinato .filtri-corpo fieldset { border: 0; padding: 0; margin: 0 0 28px; min-width: 0; }
.booking-raffinato .filtri-corpo legend, .booking-raffinato .filtri-corpo h3 { font-size: 13px; font-weight: 500; text-transform: uppercase; letter-spacing: .04em; padding: 0; margin: 0 0 16px; }
.booking-raffinato .filtri-ordina { display: flex; flex-wrap: wrap; gap: 8px 28px; }
.booking-raffinato .filtro-opzione { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 15px; cursor: pointer; }
.booking-raffinato .filtro-opzione input { width: 20px; height: 20px; margin: 0; flex: none; accent-color: var(--accento); }
.booking-raffinato .filtri-corpo details { border: 1px solid var(--linea); border-radius: 4px; margin-top: 10px; }
.booking-raffinato .filtri-corpo summary { padding: 20px; cursor: pointer; font-size: 16px; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.booking-raffinato .filtri-corpo summary::-webkit-details-marker { display: none; }
.booking-raffinato .filtri-corpo summary::after { content: ""; width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-right: 4px; }
.booking-raffinato .filtri-corpo details[open] summary::after { transform: rotate(225deg); }
.booking-raffinato .filtri-corpo summary:focus-visible { outline: 3px solid #596b80; outline-offset: 2px; }
.booking-raffinato .filtri-corpo details > div { border-top: 1px solid var(--linea); padding: 12px 20px; }
.booking-raffinato .filtri-ospite footer { display: flex; align-items: center; gap: 24px; padding: 20px 28px; border-top: 1px solid var(--linea); background: #fff; }
.booking-raffinato .filtri-cancella { border: 0; padding: 10px 0; background: none; color: #4b535d; text-decoration: underline; text-underline-offset: 3px; font: inherit; cursor: pointer; }
.booking-raffinato .filtri-applica { flex: 1; }
@media(max-width:650px) {
 .booking-raffinato .filtri-apri { grid-column: 2; justify-self: end; }
 .booking-raffinato .filtri-corpo { padding: 20px; }
 .booking-raffinato .filtri-ospite footer { padding: 16px; gap: 12px; }
 .booking-raffinato .filtri-applica { padding: 12px; font-size: 12px; }
 .booking-raffinato .filtri-cancella { font-size: 13px; }
 .booking-raffinato .contatore { padding: 16px; }
 .booking-raffinato .contatore .n { font-size: 17px; }
 .booking-raffinato .contatore .d { font-size: 12px; }
}

/* Un solo ingresso e una sola uscita anche quando l'iframe carica lentamente. */
.booking-raffinato.nel-widget #chiudi { visibility: hidden; }
.booking-raffinato.nel-widget .sito,
.booking-raffinato.nel-widget > .velo,
.booking-raffinato.nel-widget .barra-mockup { display: none!important; }
.booking-raffinato.nel-widget .pannello { transform: none!important; transition: none!important; width: 100%; box-shadow: none; border: 0; }
@media(max-width:650px) {
  .booking-raffinato .pannello-testa { padding: 12px 16px; gap: 8px; }
  .booking-raffinato .pannello-testa .nome,
  .booking-raffinato .scheda-testo h3,
  .booking-raffinato .camera-titolo,
  .booking-raffinato .riepilogo h4,
  .booking-raffinato .conferma h2 { font-size: 22px; }
  .booking-raffinato .ricerca { padding: 0 16px 10px; gap: 4px 12px; grid-template-columns: 1fr 1fr; }
  .booking-raffinato .campo:first-child { grid-column: 1 / -1; }
  .booking-raffinato .campo { min-height: 44px; }
  .booking-raffinato .corpo { padding-left: 16px; padding-right: 16px; }
  .booking-raffinato .benvenuto { padding: 20px; }
  .booking-raffinato .benvenuto h2 { font-size: 22px; }
  .booking-raffinato .scheda-piede { grid-template-columns: 1fr; }
  .booking-raffinato .menu-ospite { padding: 24px; }
  .booking-raffinato .testa-identita .nome { font-size: 18px; }
  .booking-raffinato .scheda-testo,
  .booking-raffinato .riquadro,
  .booking-raffinato .riepilogo { padding: 18px; }
  .booking-raffinato .camera-intestazione { flex-wrap: wrap; gap: 10px; }
  .booking-raffinato .camera-da { text-align: left; }
  .booking-raffinato .barra-totale { padding-left: 16px; padding-right: 16px; }
  .booking-raffinato .percorso-booking { gap: 10px; font-size: 9px; }
  .booking-raffinato .popover { padding: 20px 16px; }
  .booking-raffinato .g { min-height: 52px; font-size: 17px; }
  .booking-raffinato .dow span { font-size: 11px; }
  .booking-raffinato .pop-testa > b { font-size: 18px; }
  /* I campi editabili a 16px evitano lo zoom automatico di Safari su iPhone. */
  .booking-raffinato input:not([type="checkbox"]):not([type="radio"]),
  .booking-raffinato select,
  .booking-raffinato textarea { font-size: 16px; }
}
@media(prefers-reduced-motion:reduce) {
  .booking-raffinato *, .booking-raffinato *::before, .booking-raffinato *::after { scroll-behavior: auto!important; animation: none!important; transition: none!important; }
}

/* Camere separate nella ricerca, un unico riepilogo per il soggiorno. */
.booking-raffinato .camera-ospiti-gruppo { position: relative; margin: 0 0 16px; padding: 16px; border: 0; border-radius: 5px; background: #f7f8fa; min-width: 0; }
.booking-raffinato .camera-ospiti-gruppo legend { float: left; width: 100%; padding-right: 80px; margin-bottom: 16px; font-size: 13px; letter-spacing: .05em; text-transform: uppercase; }
.booking-raffinato .camera-ospiti-gruppo .contatore:first-of-type { clear: both; }
.booking-raffinato .camera-ospiti-gruppo .contatore { background: white; }
.booking-raffinato .rimuovi-camera-gruppo { position: absolute; right: 16px; top: 2px; min-height: 44px; background: none; border: 0; color: var(--tenue); text-decoration: underline; font: inherit; font-size: 12px; cursor: pointer; }
.booking-raffinato .aggiungi-camera-gruppo { width: 100%; min-height: 52px; padding: 12px; border: 1px dashed #cdd3db; border-radius: 4px; background: #f7f8fa; color: #4b535d; font: inherit; cursor: pointer; }
.booking-raffinato .aggiungi-camera-gruppo:disabled { opacity: .45; cursor: default; }
.booking-raffinato .codice-ospiti { padding: 0; border: 0; min-width: 0; margin: 32px 0 0; }
.booking-raffinato .codice-ospiti legend { font-size: 13px; text-transform: uppercase; margin-bottom: 16px; }
.booking-raffinato .codice-ospiti-riga { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: end; }
.booking-raffinato .codice-ospiti label { font-size: 11px; text-transform: uppercase; }
.booking-raffinato .codice-ospiti input { display: block; width: 100%; min-width: 0; margin-top: 8px; }
.booking-raffinato .codice-ospiti .btn { min-height: 46px; padding: 10px 18px; }
.booking-raffinato .nota-codice-ospiti { color: var(--tenue); font-size: 12px; line-height: 1.5; }
.booking-raffinato .scelta-camere { padding: 20px; background: white; margin-bottom: 24px; border-radius: 8px; }
.booking-raffinato .scelta-camere h2 { font-size: 21px; font-weight: 500; margin: 0 0 6px; }
.booking-raffinato .scelta-camere p { margin: 0 0 16px; font-size: 13px; color: var(--tenue); }
.booking-raffinato .scelta-camere nav { display: flex; flex-wrap: wrap; gap: 8px; }
.booking-raffinato .scelta-camere button { text-align: left; flex: 1 1 90px; min-height: 56px; border: 1px solid var(--linea); border-radius: 4px; background: #fff; color: var(--testo); padding: 10px; font: inherit; font-size: 13px; cursor: pointer; }
.booking-raffinato .scelta-camere button[aria-current] { background: var(--accento); color: #fff; border-color: var(--accento); }
.booking-raffinato .scelta-camere button span { display: block; font-size: 11px; margin-top: 5px; }
.booking-raffinato .riepilogo-camere { margin: 20px 0; text-align: left; }
.booking-raffinato .riepilogo-camere > div { padding: 16px 0; border-bottom: 1px solid var(--linea); }
.booking-raffinato .riepilogo-camere strong { display: block; font-size: 17px; font-weight: 500; margin-top: 8px; }
.booking-raffinato .riepilogo-camere .camera-numero { text-transform: uppercase; letter-spacing: .05em; font-size: 11px; color: var(--tenue); }
.booking-raffinato .riepilogo-camere p { font-size: 13px; color: var(--tenue); margin: 8px 0; }
.booking-raffinato .riepilogo-camere button { float: right; padding: 0 0 0 16px; border: 0; background: none; color: var(--testo); text-decoration: underline; min-height: 30px; cursor: pointer; font: inherit; font-size: 13px; }
@media(max-width:500px) {
 .booking-raffinato .camera-ospiti-gruppo { padding: 12px; }
 .booking-raffinato .camera-ospiti-gruppo .contatore { padding: 12px; gap: 8px; }
 .booking-raffinato .camera-ospiti-gruppo .pm { gap: 6px; }
 .booking-raffinato .camera-ospiti-gruppo .pm button { width: 36px; height: 36px; }
}

/* La barra resta fuori dal contenuto che scorre, anche su camera e checkout. */
.booking-raffinato .ricerca button:disabled { cursor: default; opacity: 1; }
.booking-raffinato .aiuto-camere { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 0 0 16px; }
.booking-raffinato .aiuto-camere p { flex: 1 1 260px; margin: 0; color: var(--tenue); font-size: 13px; line-height: 1.5; }
.booking-raffinato .aiuto-camere button { border: 0; background: none; color: var(--testo); font: inherit; font-size: 13px; min-height: 44px; padding: 8px 0; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.booking-raffinato .aiuto-camere button:disabled { opacity: .45; cursor: default; }

/* Il ritorno fisso sopra la ricerca rende superfluo il duplicato prima della foto. */
.booking-raffinato .corpo > .torna { display: none; }

/* Ritorno visibile anche dopo aver fatto scorrere la camera. */
.booking-raffinato .ritorno-percorso { padding: 8px 28px 0; background:#fff; }
.booking-raffinato .ritorno-percorso button { display:flex;align-items:center;gap:8px;min-height:36px;border:0;background:none;color:var(--testo);font:inherit;font-size:12px;cursor:pointer;padding:0; }
.booking-raffinato .ritorno-percorso svg {width:16px;height:16px;}
.booking-raffinato .g {height:auto;min-height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 0;}
.booking-raffinato .g-prezzo {font-size:12px;line-height:1.2;white-space:nowrap;}
.booking-raffinato .g-vincolo {font-size:10px;line-height:1.2;}
.booking-raffinato .cal-prezzi-nota,.booking-raffinato .cal-errore {font-size:11px;line-height:1.5;color:var(--tenue);margin:12px 0;}
.booking-raffinato .cal-errore button {min-height:44px;background:white;border:1px solid var(--linea);padding:8px 12px;color:var(--testo);}
@media(max-width:650px){.booking-raffinato .ritorno-percorso{padding:0 16px}.booking-raffinato .g{min-height:64px}.booking-raffinato .g-prezzo{font-size:10px}.booking-raffinato .g-vincolo{font-size:9px}}

.booking-raffinato .g-vincolo {text-decoration:none;}

/* Su telefoni stretti lingua e valuta hanno una riga propria, lontano dalla X. */
@media(max-width:360px) {
 .booking-raffinato .pannello-testa { display:grid;grid-template-columns:32px minmax(0,1fr) 44px;gap:8px; }
 .booking-raffinato #menu-ospite-apri { grid-column:1;grid-row:1; }
 .booking-raffinato .testa-identita { grid-column:2;grid-row:1; }
 .booking-raffinato #chiudi { grid-column:3;grid-row:1; }
 .booking-raffinato #lingua { grid-column:1 / 3;grid-row:2;justify-self:start; }
 .booking-raffinato #valuta { grid-column:2 / 4;grid-row:2;justify-self:end; }
}

/* Il colore riguarda il prezzo del mese, non la disponibilita' della data. */
.booking-raffinato .fasce-prezzi{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;line-height:1.5;margin:0 0 16px;color:#4b535d}.booking-raffinato .prezzo-bassa{background:#e6f3ed;color:#1b5b48}.booking-raffinato .prezzo-media{background:#eef0f3;color:#4b535d}.booking-raffinato .prezzo-alta{background:#fff0d8;color:#78501b}.booking-raffinato .fasce-prezzi span:not(:first-child){padding:3px 7px;border-radius:3px}
.booking-raffinato .g-prezzo{border-radius:3px;padding:1px 3px;max-width:100%}.booking-raffinato .g.inizio .g-prezzo,.booking-raffinato .g.fine .g-prezzo,.booking-raffinato .g.dentro .g-prezzo{background:transparent;color:inherit}
.booking-raffinato .cal-stato{font-size:12px;line-height:1.5;color:#4b535d;margin:0 0 16px}

/* Arrivo e partenza espliciti: la casella del check-out non vende una notte. */
.booking-raffinato .cal-riepilogo{position:sticky;top:-24px;z-index:5;background:#fff;padding:12px 0;box-shadow:0 6px 10px #fff;margin-bottom:12px}
.booking-raffinato .cal-date{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--linea);border-radius:6px;overflow:hidden}
.booking-raffinato .cal-date button{background:#fff;color:var(--testo);border:0;text-align:left;padding:12px;min-height:66px}
.booking-raffinato .cal-date button+button{border-left:1px solid var(--linea)}
.booking-raffinato .cal-date button[aria-pressed=true]{background:var(--accento-chiaro);box-shadow:inset 0 -2px var(--accento)}
.booking-raffinato .cal-date small{display:block;font-size:10px;margin-bottom:7px;color:var(--tenue)}
.booking-raffinato .cal-date strong{font-size:15px;font-weight:500}
.booking-raffinato .cal-durata{margin:10px 0 0;font-size:12px;line-height:1.5}
.booking-raffinato .g-ruolo{display:block;font-size:9px;line-height:1.2;margin:3px 0}
.booking-raffinato .g.fine,.booking-raffinato .g.fine:hover{clip-path:none;background:#fff;color:var(--accento);border:2px solid var(--accento)}
.booking-raffinato .cal-continua{width:100%;margin-top:12px;min-height:44px;padding:10px;border:1px solid var(--linea);border-radius:4px;background:#fff;color:var(--testo);font-size:13px}
@media(max-width:650px){.booking-raffinato .cal-riepilogo{top:-20px}.booking-raffinato .cal-date strong{font-size:14px}}

/* Spazio stabile prima e dopo la risposta dei prezzi. */
.booking-raffinato .g{height:88px;min-height:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.booking-raffinato .cal-stato,.booking-raffinato .cal-errore,.booking-raffinato .fasce-prezzi{min-height:40px}
@media(max-width:650px){.booking-raffinato .g{height:76px;min-height:76px}}

@media(max-width:650px){.booking-raffinato .popover-con-chiusura .pop-testa{top:-20px}}

/* Una data vietata resta disabilitata: il contenitore rende leggibile il motivo. */
.aiuto-minimo{position:relative;min-width:0;display:block;cursor:help;border-radius:3px}
.aiuto-minimo>button{width:100%;pointer-events:none}
.aiuto-minimo:focus-visible{outline:2px solid #4b535d;outline-offset:2px}
.aiuto-minimo-testo{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);width:230px;max-width:calc(100vw - 64px);box-sizing:border-box;padding:10px 12px;border-radius:6px;background:#24292d;color:#fff;font:400 12px/1.5 system-ui,sans-serif;text-align:left;white-space:normal;text-decoration:none;pointer-events:none;z-index:30;box-shadow:0 3px 12px #0002}
.aiuto-minimo:hover,.aiuto-minimo:focus{z-index:30}
.aiuto-minimo:hover .aiuto-minimo-testo,.aiuto-minimo:focus .aiuto-minimo-testo{display:block}
.aiuto-minimo[data-colonna="0"] .aiuto-minimo-testo,.aiuto-minimo[data-colonna="1"] .aiuto-minimo-testo{left:0;transform:none}
.aiuto-minimo[data-colonna="5"] .aiuto-minimo-testo,.aiuto-minimo[data-colonna="6"] .aiuto-minimo-testo{left:auto;right:0;transform:none}

/* SEQ-215: il calendario e' una vista dedicata, dalla testa al piede del pannello. */
.booking-raffinato .calendario-aperto #zona-ricerca { position:static; z-index:auto; }
.booking-raffinato .calendario-aperto > :not(#zona-ricerca),
.booking-raffinato .calendario-aperto #zona-ricerca > :not(#popover) { visibility:hidden; }
.booking-raffinato .popover-date {
  position:absolute; inset:0; z-index:70; height:100%; max-height:none;
  display:flex; flex-direction:column; overflow:hidden; padding:0; border:0; border-radius:0;
}
.booking-raffinato .cal-testa { flex:none; position:relative; display:flex; align-items:center; justify-content:center; min-height:52px; padding:4px 56px; background:#f7f8f9; border-bottom:1px solid var(--linea); }
.booking-raffinato .cal-testa h2 { margin:0; font:500 16px/1.4 var(--corpo); }
.booking-raffinato .cal-chiudi { border-radius:4px; outline-offset:-2px; position:absolute; right:12px; top:4px; width:44px; height:44px; }
.booking-raffinato .cal-contenuto { flex:1; min-height:0; display:flex; flex-direction:column; overflow:auto; overscroll-behavior:contain; padding:12px 24px 8px; gap:8px; }
.booking-raffinato .popover-date .cal-riepilogo { flex:none; position:static; padding:0; margin:0; box-shadow:none; }
.booking-raffinato .popover-date .cal-date button { min-height:48px; padding:6px 10px; line-height:1.2; }
.booking-raffinato .popover-date .cal-date small { margin-bottom:2px; }
.booking-raffinato .popover-date .cal-durata { margin:4px 0 0; font-size:11px; line-height:1.4; min-height:16px; }
.booking-raffinato .popover-date .pop-testa { flex:none; min-height:44px; margin:0; }
.booking-raffinato .popover-date .pop-testa > b { font-size:18px; }
.booking-raffinato .popover-date .fasce-prezzi,
.booking-raffinato .popover-date .cal-stato,
.booking-raffinato .popover-date .cal-errore { flex:none; margin:0; min-height:28px; font-size:11px; }
.booking-raffinato .popover-date .calendari { flex:1; min-height:0; display:flex; }
.booking-raffinato .popover-date .mese { flex:1; min-width:0; min-height:0; display:flex; flex-direction:column; }
.booking-raffinato .popover-date .dow { flex:none; margin:0 0 6px; }
.booking-raffinato .popover-date .dow span { padding:0; font-size:12px; }
.booking-raffinato .popover-date .griglia { flex:1; min-height:0; }
.booking-raffinato .popover-date .g { height:100%; min-height:var(--cal-giorno-min,50px); padding:2px 0; font-size:18px; line-height:1.1; gap:0; min-width:0; }
.booking-raffinato .popover-date .g-ruolo { font-size:9px; line-height:1; margin:1px 0; }
.booking-raffinato .popover-date .g-prezzo { font-size:11px; line-height:1.1; padding:1px 2px; }
.booking-raffinato .popover-date .g-vincolo { font-size:9px; line-height:1.1; }
.booking-raffinato .popover-date .aiuto-minimo { min-height:var(--cal-giorno-min,50px); }
.booking-raffinato .cal-fondo { flex:none; position:relative; padding:0 24px max(12px,env(safe-area-inset-bottom)); background:#fff; border-top:1px solid var(--linea); }
.booking-raffinato .cal-informazioni summary { cursor:pointer; min-height:36px; display:flex; align-items:center; font-size:11px; color:var(--tenue); }
.booking-raffinato .cal-informazioni summary::after { content:'+'; margin-left:auto; font-size:20px; }
.booking-raffinato .cal-informazioni[open] summary::after { content:'−'; }
.booking-raffinato .cal-informazioni[open] { position:absolute; bottom:100%; left:0; right:0; max-height:60dvh; overflow:auto; padding:12px 24px; background:#fff; box-shadow:0 -8px 24px #0002; border-top:1px solid var(--linea); }
.booking-raffinato .popover-date .pop-piede { position:static; padding:0; margin:0; border:0; }
.booking-raffinato .popover-date .pop-piede .btn { min-height:48px; padding:12px; }
@media(max-width:650px) {
 .booking-raffinato .cal-contenuto { padding-left:12px; padding-right:12px; gap:6px; }
 .booking-raffinato .cal-fondo { padding-left:12px; padding-right:12px; }
 .booking-raffinato .popover-date .g { font-size:16px; }
 .booking-raffinato .popover-date .g-prezzo { font-size:10px; }
}

@media(max-height:740px) {
 .booking-raffinato .popover-date { --cal-giorno-min:44px; }
 .booking-raffinato .cal-testa { min-height:48px; }
 .booking-raffinato .cal-chiudi { top:2px; }
 .booking-raffinato .cal-contenuto { padding-top:8px; gap:4px; }
 .booking-raffinato .popover-date .g { font-size:16px; }
 .booking-raffinato .popover-date .g.inizio .g-vincolo { display:none; }
}

/* Il testo "Min" basta: il puntino non deve sovrapporsi alla scritta. */
.booking-raffinato .popover-date .g:has(.g-vincolo) .g-minimo { display:none; }

.booking-raffinato .popover-date .cal-errore { display:flex; align-items:center; gap:8px; }

.booking-raffinato .eta-minima-ospiti { margin: 0; padding: 8px 28px 12px; background: #fff; color: var(--testo); font-size: 13px; line-height: 1.4; }
