/* Stile base Oniblu.it - v0.1 (mobile guests panel centering fix) */
:root { --blu:#0D47A1; --blu2:#1E63D0; --grigio:#f5f7fb; --scuro:#1f2937; }
*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#222;background:#fff}
.container{max-width:1080px;margin:0 auto;padding:0 16px}
.site-header{border-bottom:1px solid #eee;background:#fff}
.logo{display:inline-block;padding:16px 0;font-weight:700;font-size:22px;color:var(--blu);text-decoration:none}
.logo span{color:var(--blu2)}
.navbar{background:#fff;position:sticky;top:0;z-index:10;border-bottom:1px solid #eee}
.navbar .nav-link{display:inline-block;margin:8px 10px;padding:10px 6px;color:#333;text-decoration:none}
.navbar .nav-link:hover{color:var(--blu)}
.btn-primary{display:inline-block;margin-left:auto;padding:10px 16px;border-radius:8px;background:var(--blu);color:#fff;text-decoration:none}
main{padding:32px 0}
h1{color:var(--blu);font-size:28px;margin:0 0 12px}
.site-footer{background:var(--grigio);margin-top:32px}
.site-footer p{margin:0;padding:16px;color:#555}

/* =========================================================
   Oniblu – UI tweaks: divisorio verticale (solo desktop)
   ========================================================= */
.onb-divider{
  display:none;
  flex:0 0 2px;
  align-self:stretch;
  background:#f6b100;
  border-radius:1px;
  margin:0 16px;
  opacity:.9;
}
@media (min-width:768px){
  .onb-divider{display:block;}
}

/* =========================================================
   Oniblu – FIX mobile searchbar (sicuro e non invasivo)
   Obiettivo: allineare il gruppo date nel contenitore bianco
   ========================================================= */
@media (max-width:760px){
  /* Contenitore bianco della searchbar */
  #oniblu-searchbar{
    padding:14px;
    gap:12px;
    overflow:visible !important;      /* FIX: niente clipping del pannello */
    border-radius:12px;
    position:relative !important;     /* FIX: ancora il pannello a questo wrapper */
  }

  /* Primo blocco interno (gruppo date) */
  #oniblu-searchbar > div:first-child{
    width:100%;
    box-sizing:border-box;
    margin:0;
    border-radius:12px;
    padding:12px;
  }

  #oniblu-searchbar label{width:100%;}
  #oniblu-searchbar input[type="date"]{width:100%;}

  .onb-divider{display:none !important;}
}

/* =========================================================
   Oniblu – FIX mobile guests panel (centering + fit)
   ========================================================= */
@media (max-width:768px){
  /* Selettori robusti: pannello dentro/accanto alla searchbar */
  #oniblu-searchbar .onb-guests-panel,
  #oniblu-searchbar #guests-panel,
  #oniblu-searchbar .guests-panel {
    /* Centra orizzontalmente sotto il trigger/pill */
    left:50% !important;                 /* FIX */
    transform:translateX(-50%) !important;/* FIX */
    right:auto !important;               /* FIX: annulla eventuale anchor a destra */
    width:min(92vw,420px) !important;    /* FIX: mai oltre lo schermo */
    max-width:92vw !important;
    z-index:9999 !important;             /* FIX: sopra a tutto */
  }

  /* In caso il pannello sia posizionato assoluto dal JS/CSS di base,
     questi reset aiutano a non “scivolare” lateralmente */
  #oniblu-searchbar .onb-guests-panel,
  #oniblu-searchbar #guests-panel,
  #oniblu-searchbar .guests-panel {
    /* NON forziamo top per non alterare la distanza verticale già ok */
    /* position viene lasciata al valore di base del componente. */
    padding-inline:8px !important;       /* micro margine di sicurezza */
  }
}
/* Oniblu – MOBILE Guests Panel: FORCE CENTER (universale) */
@media (max-width: 820px){
  /* Colpisce i nomi più comuni + fallback per classi composte */
  .onb-guests-panel,
  #guests-panel,
  .guests-panel,
  [data-onb="guests-panel"],
  [class*="guest"][class*="panel"],
  [class*="guests"][class*="drop"] {
    position: fixed !important;         /* svincola dal contenitore */
    /* centratura orizzontale robusta */
    left: 4vw !important;
    right: 4vw !important;              /* crea margini simmetrici */
    transform: none !important;         /* annulla eventuali translate */
    width: auto !important;             /* calcola da left/right */
    max-width: 92vw !important;         /* non supera lo schermo */
    z-index: 2147483647 !important;     /* sopra tutto */
  }

  /* Il contenitore della searchbar resta “referenza” ma non è necessario: */
  #oniblu-searchbar { position: relative !important; overflow: visible !important; }
}
/* ============== Oniblu – Step 2 Dati Ospite ============== */
.onb-section-title{font-size:1.375rem;margin:16px 0 12px;}
.onb-alert{border-left:4px solid #f9a825;background:#fff8e1;padding:12px 16px;border-radius:10px}
.onb-alert-error{border-left-color:#e53935;background:#fdecea}

.onb-form{display:grid;grid-template-columns:1fr;gap:12px;margin-top:8px}
.onb-field{display:flex;flex-direction:column;gap:6px}
.onb-label{font-weight:600}
.onb-input, .onb-textarea{
  width:100%;padding:12px 14px;border:1px solid #cfd8dc;border-radius:10px;
  background:#fff;outline:none;transition:border-color .15s, box-shadow .15s
}
.onb-input:focus, .onb-textarea:focus{
  border-color:#0d47a1; box-shadow:0 0 0 3px rgba(13,71,161,.13)
}
.onb-invalid{border-color:#e53935 !important}

.onb-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.onb-btn{
  display:inline-block;padding:12px 18px;border-radius:12px;border:0;cursor:pointer;
  text-decoration:none;line-height:1;font-weight:600
}
.onb-btn-primary{background:#0d47a1;color:#fff}
.onb-btn-primary:hover{filter:brightness(1.05)}
.onb-btn-secondary{background:#eceff1;color:#0d47a1}

@media (min-width:768px){
  .onb-form{grid-template-columns:repeat(2,1fr)}
  .onb-span-2{grid-column:1 / -1}
}
/* ===== Oniblu – Step 2: Dati Ospite (CSS-only restyle v1) ===== */
main form[action*="step=guest"]{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  margin-top:8px;
}

main form[action*="step=guest"] label{
  font-weight:600;
}

main form[action*="step=guest"] input[type="text"],
main form[action*="step=guest"] input[type="email"],
main form[action*="step=guest"] textarea{
  width:100%;
  padding:12px 14px;
  border:1px solid #cfd8dc;
  border-radius:10px;
  background:#fff;
  outline:none;
  transition:border-color .15s, box-shadow .15s;
}

main form[action*="step=guest"] input:focus,
main form[action*="step=guest"] textarea:focus{
  border-color:#0d47a1;
  box-shadow:0 0 0 3px rgba(13,71,161,.13);
}

/* Bottoni esistenti con class="btn" */
main form[action*="step=guest"] .btn{
  display:inline-block;
  padding:12px 18px;
  border-radius:12px;
  border:0;
  background:#0d47a1;
  color:#fff;
  text-decoration:none;
  cursor:pointer;
  font-weight:600;
}
main form[action*="step=guest"] .btn + .btn{
  background:#eceff1;
  color:#0d47a1;
}

/* Desktop: due colonne; note/privacy e azioni a tutta larghezza */
@media (min-width:768px){
  main form[action*="step=guest"]{ grid-template-columns:repeat(2,1fr); }
  main form[action*="step=guest"] > div:has(textarea),
  main form[action*="step=guest"] > div:has(input[type="checkbox"]),
  main form[action*="step=guest"] .onb-actions{ grid-column:1 / -1; }
}

/* ==========================
   ONIBLU: S1 — Background full‑page + A11y + Hero Title
   ========================== */
html, body { min-height: 100%; }

/* Sfondo a tutta pagina */
body {
  background-image: url('/assets/images/bg-oniblu.jpg');
  background-size: cover;           /* copre tutta la pagina */
  background-position: center;      /* centrato */
  background-repeat: no-repeat;     /* no ripetizione */
  background-attachment: fixed;     /* effetto piacevole su desktop */
}

/* Performance su mobile: niente background fisso */
@media (max-width: 768px) {
  body { background-attachment: scroll; }
}

/* Titolo nel riquadro blu */
#oniblu-hero .onb-hero-title {
  color: #fff;                       /* bianco */
  font-weight: 700;
  line-height: 1.2;
  margin: 0 0 8px 0;
  text-align: center;
  font-size: clamp(24px, 3.2vw, 36px);
}

/* Accessibilità: testo solo per screen reader */
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
/* ONIBLU: S1-top — header e navbar trasparenti sopra lo sfondo */
.site-header, .navbar {
  background: transparent !important;   /* mostra lo sfondo */
  border-bottom: 1px solid rgba(0,0,0,0.06); /* lieve separazione */
  -webkit-backdrop-filter: saturate(110%) blur(2px);
  backdrop-filter: saturate(110%) blur(2px); /* migliora leggibilità dove supportato */
}
/* ONIBLU: S1-top — header e navbar trasparenti sopra lo sfondo */
.site-header, .navbar {
  background: transparent !important;   /* mostra lo sfondo */
  border-bottom: 1px solid rgba(0,0,0,0.06); /* lieve separazione */
  -webkit-backdrop-filter: saturate(110%) blur(2px);
  backdrop-filter: saturate(110%) blur(2px); /* migliora leggibilità dove supportato */
}
/* ONIBLU: C2 — testo bianco solo quando è direttamente sulla foto */
main .container > h1,
main .container > h2,
.onb-section-title {
  color: #fff !important;
  text-shadow: 0 2px 4px rgba(0,0,0,.35);
}

/* I contenuti su sfondo BIANCO restano scuri (rinforzo) */
table, .table, .card, .panel, .box, .onb-form, main form, .site-footer {
  color: #111 !important;
}
/* ONIBLU: C2 — titoli bianchi quando sono direttamente sulla foto */
main h1, main h2, main h3 {
  color: #fff !important;
  text-shadow: 0 2px 4px rgba(0,0,0,.35);
}

/* I contenuti su sfondo bianco restano scuri (rinforzo) */
main .card, main .panel, main .box, main .onb-form, main form,
main table, main .table { color: #111 !important; }

/* Titoli dentro riquadri bianchi tornano scuri/brand */
main .card h1, main .card h2, main .box h1, main .box h2,
main .panel h1, main .panel h2 { 
  color: #0B3A88 !important; 
  text-shadow: none !important;
}
/* ONIBLU: C3 — testo bianco su foto, scuro nei riquadri bianchi */
/* Testo di base su foto */
body { color:#fff !important; }

/* Menu trasparente: link bianchi */
.navbar .nav-link { color:#fff !important; }
.navbar .nav-link:hover { color:#e9f2ff !important; }

/* Titoli su foto più leggibili */
main h1, main h2, main h3, .onb-section-title {
  color:#fff !important;
  text-shadow:0 2px 4px rgba(0,0,0,.35);
}

/* Riquadri bianchi: testo scuro (rinforzo) */
#oniblu-searchbar,
main .card, main .panel, main .box,
main .onb-form, main form,
main table, main .table,
.table, .card, .panel, .box,
.site-footer {
  color:#111 !important;
}

/* Helper opzionali per casi particolari */
.onb-whitebox { background:#fff !important; color:#111 !important; }
.onb-onphoto  { color:#fff !important; }
/* ONIBLU: C3‑strong — Forza bianco su foto; scuro nei riquadri bianchi */
/* 1) Per default, tutto il contenuto di <main> diventa bianco (più leggibile su foto) */
main { color:#fff !important; }

/* 2) Navbar/Logo sopra lo sfondo: link bianchi */
.navbar .nav-link, .logo { color:#fff !important; text-shadow:0 1px 2px rgba(0,0,0,.28); }
.navbar .nav-link:hover { color:#e9f2ff !important; }

/* 3) Titoli su foto: rinforzo leggibilità */
main h1, main h2, main h3, .onb-section-title {
  color:#fff !important;
  text-shadow:0 2px 4px rgba(0,0,0,.35);
}

/* 4) CONTENITORI BIANCHI: tutto torna scuro e pulito */
#oniblu-searchbar,
main .card, main .panel, main .box,
main .onb-form, main form,
main table, main .table,
.table, .card, .panel, .box,
.site-footer {
  color:#111 !important; /* testi scuri dentro ai box bianchi */
}

/* 4b) Titoli dentro i riquadri bianchi: brand + no ombra */
main .card h1, main .card h2, main .box h1, main .box h2,
main .panel h1, main .panel h2 { 
  color:#0B3A88 !important; 
  text-shadow:none !important; 
}

/* 5) Link su foto bianchi, ma tornano brand dentro ai box bianchi */
main a:not(.btn) { color:#fff !important; text-decoration:underline; }
#oniblu-searchbar a,
main .card a, main .panel a, main .box a,
main form a, main table a { color:var(--blu) !important; text-decoration:underline; }
/* ONIBLU: G1 — Riepilogo prenotazione: grigi più scuri + bordi più leggibili */
main .card, main .panel, main .box {
  --onb-muted: #485360;              /* testo secondario più scuro */
  --onb-border: rgba(0,0,0,.22);     /* linee di separazione più visibili */
}

/* Testo secondario/descrittivo dentro al riquadro */
main .card .text-muted,
main .panel .text-muted,
main .box .text-muted,
main .card small,
main .panel small,
main .box small,
main .card .muted,
main .panel .muted,
main .box .muted {
  color: var(--onb-muted) !important;
}

/* Celle e intestazioni tabella più scure (no grigio chiaro) */
main .card table th,
main .panel table th,
main .box table th,
main .card table td,
main .panel table td,
main .box table td {
  color: #1a1f24; /* quasi-nero elegante */
}

/* Linee tratteggiate/di separazione più scure nel riepilogo */
main .card table tr,
main .panel table tr,
main .box table tr {
  border-color: var(--onb-border) !important;
}
/* ONIBLU: C3-strong v2 — testo bianco su foto; scuro nei riquadri bianchi */
/* 1) Tutto ciò che è “sulla foto” → bianco */
main, .site-header, .navbar { color:#fff !important; }
.navbar .nav-link, .logo { color:#fff !important; text-shadow:0 1px 2px rgba(0,0,0,.28); }
main h1, main h2, main h3, .onb-section-title {
  color:#fff !important;
  text-shadow:0 2px 4px rgba(0,0,0,.35);
}
/* Link su foto */
main a:not(.btn) { color:#fff !important; text-decoration:underline; }

/* 2) Eccezioni: dentro ai riquadri bianchi tutto torna scuro */
#oniblu-searchbar,
main .card, main .panel, main .box,
main .onb-form, main form,
main table, main .table,
.table, .card, .panel, .box,
.site-footer {
  color:#111 !important;
}
#oniblu-searchbar a,
main .card a, main .panel a, main .box a,
main form a, main table a {
  color:var(--blu) !important;
  text-shadow:none !important;
}
/* ONIBLU: G1-bis — grigi molto più scuri + outline bianco nei box review/guest */
/* 1) Valori di contrasto più alti per tutti i box bianchi */
main .card, main .panel, main .box {
--onb-muted: #0b0f17; /* quasi-nero */
--onb-border: rgba(0,0,0,.35); /* separatori più visibili */
}


/* 2) Testi “muted” e simili resi scuri + outline bianco per staccare dalla foto */
main .card .text-muted,
main .panel .text-muted,
main .box .text-muted,
main .card small,
main .panel small,
main .box small,
main .card .muted,
main .panel .muted,
main .box .muted,
main .card label,
main .panel label,
main .box label,
main .card .label,
main .panel .label,
main .box .label {
color: var(--onb-muted) !important;
/* contorno bianco leggero in tutte le direzioni */
text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff;
}


/* 3) Celle di tabella e intestazioni ancora più leggibili */
main .card table th,
main .panel table th,
main .box table th,
main .card table td,
main .panel table td,
main .box table td {
color: #0b0f17 !important;
text-shadow: 0 1px 0 #fff; /* leggero contorno sotto */
}


/* 4) Linee tratteggiate/separatori più scuri */
main .card table tr,
main .panel table tr,
main .box table tr {
border-color: var(--onb-border) !important;
}
/* ONIBLU: C4 — Dati Ospite: label grigi molto scuri + contorno bianco */
/* Valido per ogni riquadro tipo “box/panel/card” che sta sulla foto */
main .box label,
main .box .label,
main .box .text-muted,
main .box small,
main .panel label,
main .panel .text-muted,
main .card label,
main .card .text-muted {
color:#0b0f17 !important; /* grigio molto scuro */
-webkit-text-stroke: 0.6px #fff; /* contorno bianco netto (Chrome/Safari) */
text-shadow: /* fallback contorno bianco su tutti */
0 1px 0 #fff,
0 -1px 0 #fff,
1px 0 0 #fff,
-1px 0 0 #fff;
letter-spacing: .15px; /* micro-nitidezza */
}


/* Se qualche label resta troppo chiaro in intestazioni/table */
main .box table th small,
main .box table td small,
main .panel table th small,
main .panel table td small {
color:#0b0f17 !important;
-webkit-text-stroke: 0.6px #fff;
text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff;
}
/* ONIBLU: C4-bis — Dati Ospite: etichette molto scure + contorno bianco, annulla opacità */
/* Selettori robusti: colpiscono label, small, .text-muted e classi affini dentro i box bianchi */
main .box :is(label, small, .text-muted, .muted, [class*="label"], [class*="Muted"]) ,
main .panel :is(label, small, .text-muted, .muted, [class*="label"], [class*="Muted"]) ,
main .card :is(label, small, .text-muted, .muted, [class*="label"], [class*="Muted"]) {
color:#0a0c10 !important; /* quasi nero */
opacity:1 !important; /* ignora eventuali opacità */
-webkit-text-stroke:0.8px #fff; /* contorno bianco (Chrome/Safari) */
text-shadow: /* fallback contorno per tutti */
0 1px 0 #fff, 0 -1px 0 #fff,
1px 0 0 #fff, -1px 0 0 #fff;
letter-spacing:.2px;
}


/* Titolo "Dati Ospite" ancora più netto su foto */
main .box :is(h2,h3),
main .panel :is(h2,h3),
main .card :is(h2,h3) {
color:#ffffff !important;
text-shadow:0 2px 4px rgba(0,0,0,.45), 0 0 1px #fff;
}
/* ONIBLU: M-fix 2025-10-26 — anti-accavallamento home mobile */
@media (max-width: 760px){
#oniblu-hero { padding-top: 16px; padding-bottom: 12px; }
#oniblu-hero .onb-hero-title { margin: 8px 0; line-height: 1.25; }
#oniblu-searchbar { margin-top: 10px; margin-bottom: 10px; position: relative; z-index: 3; }
}
/* ONIBLU: GPANEL fix — apertura pannello ospiti su mobile */
#oniblu-searchbar { overflow: visible !important; position: relative !important; }
.onb-guests-panel{
  left:50% !important; transform:translateX(-50%) !important; right:auto !important;
  width:min(92vw,420px) !important; max-width:92vw !important; z-index:9999 !important;
}
@media (max-width:760px){ .onb-guests-panel{ padding-inline:8px !important; } }
/* ONIBLU: REVIEW head — evita accavallamenti su mobile (2 colonne) */
@media (max-width:760px){
  main h1 + .box > :first-child,
  main h1 + .panel > :first-child{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
  }
  main h1 + .box > :first-child > *,
  main h1 + .panel > :first-child > *{ min-width:0 !important; }
}
/* ONIBLU: M-fix 2025-10-26 — anti-accavallamento home mobile */
@media (max-width: 760px){
#oniblu-hero { padding-top: 16px; padding-bottom: 12px; }
#oniblu-hero .onb-hero-title { margin: 8px 0; line-height: 1.25; }
#oniblu-searchbar { margin-top: 10px; margin-bottom: 10px; position: relative; z-index: 3; }
}
/* ONIBLU: GPANEL fix — apertura pannello ospiti su mobile */
#oniblu-searchbar { overflow: visible !important; position: relative !important; }
.onb-guests-panel,
#ob_guestPanel{
left:50% !important; transform:translateX(-50%) !important; right:auto !important;
width:min(92vw,420px) !important; max-width:92vw !important; z-index:99999 !important;
}
@media (max-width:760px){
#oniblu-searchbar .card, #oniblu-searchbar .panel, #oniblu-searchbar .box { overflow: visible !important; }
.onb-guests-panel,#ob_guestPanel{ position: fixed !important; top: 22vh !important; padding-inline:8px !important; }
}
/* ONIBLU: REVIEW head — evita accavallamenti su mobile (2 colonne responsive) */
@media (max-width:760px){
/* Seleziona il primo riquadro subito dopo l'H1 della pagina */
main h1 + .box, main h1 + .panel, main h1 + .card{
display:grid !important; grid-template-columns:1fr 1fr !important; gap:10px !important; padding:12px !important;
}
main h1 + .box > *, main h1 + .panel > *, main h1 + .card > *{ min-width:0 !important; white-space:normal !important; }
}
/* ONIBLU: C-Review-Grid v2 — evita accavallamenti nel box di riepilogo su mobile */
@media (max-width:760px){
  /* Seleziona il PRIMO riquadro subito dopo l'H1 (qualunque classe abbia) */
  main h1 + *{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
    padding:12px !important;
    align-items:start !important;
  }
  /* Variante nel caso il primo riquadro non sia l'immediato fratello dell'H1 */
  main h1 ~ .box:first-of-type,
  main h1 ~ .panel:first-of-type,
  main h1 ~ .card:first-of-type{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
    padding:12px !important;
    align-items:start !important;
  }
  /* I figli del riquadro: niente larghezze minime rigide, testi a capo */
  main h1 + * > *,
  main h1 ~ .box:first-of-type > *,
  main h1 ~ .panel:first-of-type > *,
  main h1 ~ .card:first-of-type > *{
    min-width:0 !important;
    white-space:normal !important;
    overflow:visible !important;
  }
  /* Mini-fallback per telefoni molto stretti (<360px): leggero scale del font */
  @media (max-width:360px){
    main h1 + * , 
    main h1 ~ .box:first-of-type,
    main h1 ~ .panel:first-of-type,
    main h1 ~ .card:first-of-type{ font-size:0.95em !important; }
  }
}
/* ONIBLU: C-Review-Grid v3 — evita accavallamenti nel box di riepilogo su mobile */
@media (max-width:760px){
/* 2 target: (a) immediato fratello dell'H1 (b) primo .box/.panel/.card dopo l'H1 */
main h1 + *,
main h1 ~ :is(.box,.panel,.card):first-of-type{
display:grid !important;
grid-template-columns:1fr 1fr !important;
gap:12px !important;
padding:12px !important;
align-items:start !important;
}
/* Ogni "cella" della griglia diventa colonna verticale label→valore */
main h1 + * > *,
main h1 ~ :is(.box,.panel,.card):first-of-type > *{
display:flex !important;
flex-direction:column !important;
gap:4px !important;
min-width:0 !important;
white-space:normal !important;
overflow:visible !important;
position:static !important; /* disinnesca eventuali absolute */
float:none !important; /* disinnesca eventuali float */
word-break:break-word !important;
}
/* Qualsiasi span/strong interno torna block per andare a capo correttamente */
main h1 + * > * > *,
main h1 ~ :is(.box,.panel,.card):first-of-type > * > *{
display:block !important;
white-space:normal !important;
}
/* Leggera riduzione del font su telefoni molto stretti */
@media (max-width:360px){
main h1 + * ,
main h1 ~ :is(.box,.panel,.card):first-of-type{ font-size:0.95em !important; }
}
}
/* ONIBLU: G-Guest-Stack v1 — Dati Ospite: niente accavallamenti su mobile */
@media (max-width:760px){
  /* Preferito: il box subito dopo la tabella "Notte" */
  main :is(table,.table) + :is(.box,.panel,.card),
  /* Fallback: qualunque box/panel/card che abbia un titolo (es. "Dati Ospite") */
  main :is(.box,.panel,.card):has(> :is(h2,h3)){
    display:grid !important;
    grid-template-columns: 1fr !important; /* 1 colonna su mobile */
    gap:12px !important;
    padding:12px !important;
    align-items:start !important;
  }

  /* Ogni riga del box diventa colonna verticale: etichetta sopra, valore sotto */
  main :is(table,.table) + :is(.box,.panel,.card) > *,
  main :is(.box,.panel,.card):has(> :is(h2,h3)) > *{
    display:flex !important;
    flex-direction:column !important;
    gap:4px !important;
    min-width:0 !important;
    position:static !important;   /* disinnesca absolute */
    float:none !important;        /* disinnesca float */
  }

  /* Testi lunghi (email/telefono): vanno sempre a capo */
  main :is(table,.table) + :is(.box,.panel,.card) > * > *,
  main :is(.box,.panel,.card):has(> :is(h2,h3)) > * > *{
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-word !important;
  }
}
/* ONIBLU: G-Guest-Stack v2 — Dati Ospite: impilamento 1 colonna su mobile */
@media (max-width:760px){
  /* Target del riquadro Dati Ospite:
     - Preferito: primo box subito dopo la tabella "Notte"
     - Fallback: qualunque box con titolo (Dati Ospite) */
  main :is(table,.table) + :is(.box,.panel,.card),
  main :is(.box,.panel,.card):has(> :is(h2,h3)) {
    display: block !important;
    padding: 12px !important;
  }

  /* Qualsiasi "riga" interna (row/flex/grid) diventa blocco singolo */
  main :is(table,.table) + :is(.box,.panel,.card) :is(.row,[class*="row"],.grid,[class*="grid"]),
  main :is(.box,.panel,.card):has(> :is(h2,h3)) :is(.row,[class*="row"],.grid,[class*="grid"]) {
    display: block !important;
    margin: 0 !important;
  }

  /* Tutte le colonne diventano larghe 100% (niente float/flex a due colonne) */
  main :is(table,.table) + :is(.box,.panel,.card) :is(.col,[class^="col-"],[class*=" col-"],[class*="span"]),
  main :is(.box,.panel,.card):has(> :is(h2,h3)) :is(.col,[class^="col-"],[class*=" col-"],[class*="span"]) {
    float: none !important;
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
    display: block !important;
  }

  /* Ogni coppia etichetta/valore: colonna verticale, con spazio */
  main :is(table,.table) + :is(.box,.panel,.card) > *,
  main :is(.box,.panel,.card):has(> :is(h2,h3)) > * {
    display: block !important;
    margin-top: 8px !important;
  }

  /* Testi lunghi (email/telefono/note): devono andare sempre a capo */
  main :is(table,.table) + :is(.box,.panel,.card) * ,
  main :is(.box,.panel,.card):has(> :is(h2,h3)) * {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }
}
/* // ONIBLU: G-Guest-Stack v3 — Review: Dati Ospite in UNA colonna su mobile */
@media (max-width:760px){
  /* Target del box Dati Ospite = PRIMO box subito dopo la tabella delle notti */
  main :is(table,.table) + :is(.box,.panel,.card){
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:10px !important;
    padding:12px !important;
    clear:both !important;
  }

  /* Ogni figlio del box occupa l'intera riga; disattiva layout a 2 colonne */
  main :is(table,.table) + :is(.box,.panel,.card) > *{
    grid-column:1 / -1 !important;
    display:block !important;
    width:100% !important; max-width:100% !important;
    float:none !important; flex:none !important;
    position:static !important; margin:0 !important;
  }

  /* Righe/colonne interne (row/grid/flex/col-xx/span…) => blocchi singoli */
  main :is(table,.table) + :is(.box,.panel,.card)
       :is(.row,[class*="row"],.grid,[class*="grid"],[class*="flex"],
            [class*="columns"],[class*="col-"],[class*="span"]){
    display:block !important;
    width:100% !important; max-width:100% !important;
    float:none !important; flex:none !important; clear:both !important;
    position:static !important;
  }

  /* Testi lunghi (email/telefono/note) vanno SEMPRE a capo */
  main :is(table,.table) + :is(.box,.panel,.card)
       :is(label,.label,b,strong,span,small,p,div){
    display:block !important;
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-word !important;
  }
}
/* ================================
   ONIBLU: G-Guest-FINAL (mobile fix)
   Elimina sovrapposizioni nel box "Dati Ospite"
   ================================ */
@media (max-width:760px){
  /* 1 colonna pulita nel box ospite */
  #onb-guest-box form{
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  /* Spegni eventuali float/width fissi che causano accavallamenti */
  #onb-guest-box .row,
  #onb-guest-box .form-row,
  #onb-guest-box .form-group,
  #onb-guest-box [class*="col-"]{
    float: none !important;
    width: 100% !important;
    display: block !important;
    position: static !important;
  }

  /* Campi e testi: vai a capo, niente testo che “esce” (email lunghe) */
  #onb-guest-box label,
  #onb-guest-box input,
  #onb-guest-box select,
  #onb-guest-box textarea,
  #onb-guest-box .help,
  #onb-guest-box small{
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }

  /* Contrasto etichette su foto (bordino bianco leggero) */
  #onb-guest-box label,
  #onb-guest-box .text-muted,
  #onb-guest-box small{
    color: #0b0f17 !important;                 /* testo scuro */
    -webkit-text-stroke: 0.6px #fff;           /* bordo bianco */
    text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff,
                 1px 0 0 #fff, -1px 0 0 #fff;  /* contorno morbido */
  }
}
/* ================================
   ONIBLU: G-Guest-FINAL v2 (mobile fix definitivo)
   1) Forza 1 colonna su form e review
   2) Consente il ritorno a capo delle stringhe (email/telefono)
   ================================ */
@media (max-width:760px){
  /* Forza 1 colonna sul GRID interno del form (step=guest)
     e sul GRID del riepilogo (step=review) */
  #onb-guest-box form > div,
  #onb-guest-box > div{
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  /* Fondamentale in CSS Grid: permette il wrap dentro le colonne strette */
  #onb-guest-box *{
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }

  /* Contrasto etichette su sfondo foto */
  #onb-guest-box label,
  #onb-guest-box .text-muted,
  #onb-guest-box small{
    color:#0b0f17 !important;
    -webkit-text-stroke:0.6px #fff;
    text-shadow:0 1px 0 #fff,0 -1px 0 #fff,1px 0 0 #fff,-1px 0 0 #fff;
  }
}