/* ============================================================
   Disponibilità & Preventivo — Cala Blu Terrasini
   ============================================================ */
:root{
  --av-blue:#014c97;
  --av-blue-dark:#013a75;
  --av-blue-soft:#e8f4ff;
  --av-green:#0a7f3f;
  --av-red:#b02a37;
  --av-line:#e2e8f0;
}

.availability-page{background:#fff;}
.av-wrap{max-width:1080px;margin:0 auto;padding:0 16px;}

.av-intro{padding:34px 0 8px;text-align:center;}
.av-intro p{max-width:720px;margin:0 auto;color:#475569;font-size:1.02rem;}

/* --- Coupon banner --- */
.av-coupon{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 18px;
  background:linear-gradient(135deg,var(--av-blue),var(--av-blue-dark));
  color:#fff;border-radius:16px;padding:16px 22px;margin:18px auto 8px;max-width:760px;
  box-shadow:0 10px 30px rgba(1,76,151,.25);
}
.av-coupon strong{font-size:1.15rem;}
.av-coupon .av-code{
  background:#fff;color:var(--av-blue);font-weight:800;letter-spacing:1px;
  padding:6px 14px;border-radius:8px;border:2px dashed var(--av-blue);
}

/* --- Layout --- */
.av-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:26px;align-items:start;margin:26px 0 40px;}
/* Senza questo le colonne non scendono sotto la larghezza minima del contenuto
   e su smartphone le due card sporgono fuori dallo schermo. */
.av-grid > *{min-width:0;}
@media(max-width:900px){.av-grid{grid-template-columns:1fr;}}

.av-card{background:#fff;border:1px solid var(--av-line);border-radius:18px;padding:20px;box-shadow:0 6px 24px rgba(13,27,42,.06);}
.av-card h3{margin:0 0 14px;color:var(--av-blue);font-size:1.2rem;}

/* --- Apartment switch --- */
.av-apts{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap;}
.av-apt-btn{
  flex:1 1 160px;cursor:pointer;border:2px solid var(--av-line);background:#fff;border-radius:12px;
  padding:12px 14px;text-align:left;transition:.18s;font:inherit;
}
.av-apt-btn:hover{border-color:var(--av-blue);}
.av-apt-btn.is-active{border-color:var(--av-blue);background:var(--av-blue-soft);}
.av-apt-btn .n{display:block;font-weight:700;color:var(--av-blue);}
.av-apt-btn .g{display:block;font-size:.85rem;color:#64748b;}

/* --- Calendar --- */
.av-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.av-cal-head button{
  background:var(--av-blue);color:#fff;border:0;border-radius:10px;width:38px;height:38px;
  font-size:1.2rem;cursor:pointer;line-height:1;transition:.15s;
}
.av-cal-head button:hover{background:var(--av-blue-dark);}
.av-cal-head button:disabled{opacity:.35;cursor:not-allowed;}
.av-cal-title{font-weight:700;color:#0D1B2A;}

.av-months{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
@media(max-width:640px){.av-months{grid-template-columns:1fr;}}

.av-month h4{margin:0 0 8px;text-align:center;font-size:1rem;color:#0D1B2A;}
.av-dow,.av-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.av-dow span{text-align:center;font-size:.72rem;color:#94a3b8;font-weight:600;padding:4px 0;}
.av-day{
  aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;font-size:.85rem;
  border-radius:8px;cursor:pointer;user-select:none;border:1px solid transparent;position:relative;
}
.av-day.empty{cursor:default;}
.av-day.past{color:#cbd5e1;cursor:not-allowed;text-decoration:line-through;}
.av-day.free{background:#f0fdf4;color:#166534;}
.av-day.free:hover{background:#dcfce7;border-color:var(--av-green);}
.av-day.booked{background:#fdecec;color:#b02a37;cursor:not-allowed;text-decoration:line-through;}
/* Giorno occupato che può comunque essere scelto come partenza (l'ospite
   successivo arriva quel giorno): resta rosso ma diventa cliccabile. */
.av-day.booked.checkout{
  cursor:pointer;text-decoration:none;border:1px dashed var(--av-blue);
  background:linear-gradient(135deg,#fdecec 0 50%,#eef4fb 50% 100%);color:var(--av-blue);font-weight:600;
}
.av-day.booked.checkout:hover{background:var(--av-blue-soft);}
.av-day.sel-start,.av-day.sel-end{background:var(--av-blue)!important;color:#fff!important;font-weight:700;}
.av-day.in-range{background:var(--av-blue-soft);color:var(--av-blue);}

.av-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:.82rem;color:#475569;}
.av-legend i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px;vertical-align:-2px;}
.av-legend .lg-free{background:#f0fdf4;border:1px solid #86efac;}
.av-legend .lg-booked{background:#fdecec;border:1px solid #f5a3ab;}
.av-legend .lg-sel{background:var(--av-blue);}
.av-legend .lg-checkout{background:linear-gradient(135deg,#fdecec 0 50%,#eef4fb 50% 100%);border:1px dashed var(--av-blue);}

.av-note{margin-top:12px;font-size:.82rem;color:#64748b;}
.av-note.warn{color:#92600a;background:#fff8e6;border:1px solid #f5d68a;border-radius:10px;padding:8px 12px;}

/* --- Quote panel --- */
.av-quote .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
/* Su schermi stretti i due campi affiancati non ci stanno: uno sotto l'altro. */
@media(max-width:430px){.av-quote .row2{grid-template-columns:1fr;}}
.av-field{margin-bottom:14px;min-width:0;}
.av-field label{display:block;font-size:.82rem;font-weight:600;color:#334155;margin-bottom:5px;}
.av-field input,.av-field select{
  width:100%;min-width:0;padding:10px 12px;border:1px solid var(--av-line);border-radius:10px;font:inherit;background:#fff;
}
.av-field input:focus,.av-field select:focus{outline:2px solid var(--av-blue-soft);border-color:var(--av-blue);}
/* Arrivo/Partenza sono un riepilogo: si compilano dal calendario. */
.av-field input[readonly]{background:#f8fafc;color:#334155;cursor:pointer;}
.av-hint{margin:-8px 0 14px;font-size:.8rem;line-height:1.4;color:#64748b;}
.av-hint::before{content:"📅 ";}
.av-hint strong{color:#334155;font-weight:700;}
.av-hint.is-hint{color:var(--av-blue);}
.av-hint.is-hint strong{color:var(--av-blue);}

/* Lampeggio del calendario quando l'utente clicca sui campi data. */
@keyframes avHint{0%,100%{box-shadow:0 0 0 0 rgba(1,76,151,0);}35%{box-shadow:0 0 0 4px rgba(1,76,151,.28);}}
.av-card.is-hint{animation:avHint 1.4s ease-out;}
@media (prefers-reduced-motion:reduce){.av-card.is-hint{animation:none;box-shadow:0 0 0 3px rgba(1,76,151,.28);}}

.av-summary{border-top:1px dashed var(--av-line);margin-top:8px;padding-top:14px;}
.av-summary .line{display:flex;justify-content:space-between;padding:5px 0;font-size:.95rem;color:#334155;}
.av-summary .line.muted{color:#94a3b8;}
.av-summary .line del{color:#94a3b8;}
.av-summary .line.total{font-size:1.35rem;font-weight:800;color:var(--av-blue);border-top:1px solid var(--av-line);margin-top:8px;padding-top:12px;}
.av-summary .save{background:var(--av-blue-soft);color:var(--av-blue);border-radius:10px;padding:8px 12px;font-weight:700;text-align:center;margin:10px 0;}
.av-placeholder{color:#94a3b8;text-align:center;padding:18px 0;}

.av-actions{display:flex;flex-direction:column;gap:10px;margin-top:16px;}
.av-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 18px;border-radius:12px;font-weight:700;text-decoration:none;cursor:pointer;border:0;font:inherit;font-weight:700;transition:.15s;}
.av-btn-primary{background:var(--av-blue);color:#fff;}
.av-btn-primary:hover{background:var(--av-blue-dark);color:#fff;}
.av-btn-primary:disabled{opacity:.5;cursor:not-allowed;}
.av-btn-wa{background:#25d366;color:#0b3a1e;}
.av-btn-wa:hover{background:#1fbf5a;color:#0b3a1e;}
.av-btn-wa.is-disabled{pointer-events:none;opacity:.5;}

.av-feedback{display:none;margin-top:12px;font-weight:600;border-radius:10px;padding:10px 12px;}

/* --- Inline booking form (email) --- */
.av-book{margin-top:14px;display:none;border-top:1px dashed var(--av-line);padding-top:14px;}
.av-book.is-open{display:block;}
.av-book .av-field{margin-bottom:10px;}
.av-consent{font-size:.82rem;color:#475569;display:flex;gap:8px;align-items:flex-start;}
