/* Availability calendar (plan 07 #1). Half-day turnover rendering via CSS gradients. */
.avail-cal { --cal-available:#ffffff; --cal-booked:#c9d3dd; --cal-open:#e9f4ec; --cal-line:#e2e8ef;
    --cal-primary:#1e6091; --cal-accent:#e9c46a; color:#24303a; }
.avail-cal-toolbar { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-bottom:.75rem; flex-wrap:wrap; }
.avail-cal-toolbar .cal-title { font-family:'Montserrat',sans-serif; font-weight:700; font-size:1.05rem; }
.avail-cal-nav button { border:1px solid var(--cal-line); background:#fff; border-radius:8px; padding:.3rem .7rem; cursor:pointer; font-weight:600; color:#24303a; }
.avail-cal-nav button:hover { background:#f2f6fa; }
.avail-cal-nav button:disabled { opacity:.4; cursor:not-allowed; }

.avail-cal-months { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:1.25rem; }
.cal-month h4 { font-family:'Montserrat',sans-serif; font-weight:700; font-size:.95rem; text-align:center; margin-bottom:.4rem; }
.cal-grid { display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; }
.cal-dow { text-align:center; font-size:.7rem; font-weight:700; color:#6b8299; padding:.2rem 0; text-transform:uppercase; }
.cal-cell { position:relative; aspect-ratio:1/1; display:flex; align-items:flex-start; justify-content:flex-end;
    border:1px solid var(--cal-line); border-radius:6px; font-size:.78rem; font-weight:600; padding:2px 4px;
    background:var(--cal-available); overflow:hidden; }
.cal-cell.empty { border:none; background:transparent; }
.cal-cell .cal-num { position:relative; z-index:2; }

/* Fully booked / lead-time blocked */
.cal-cell.unavailable { background:var(--cal-booked); color:#5b6b7a; }
.cal-cell.blocked_leadtime { background:repeating-linear-gradient(45deg,#eef2f6,#eef2f6 4px,#e2e8ef 4px,#e2e8ef 8px); color:#9aa8b6; }

/* Half-day states: split the cell diagonally. Booked half = grey, open half = white/green. */
.cal-cell.checkin_only  { background:linear-gradient(135deg, var(--cal-open) 0 50%, var(--cal-booked) 50% 100%); }
.cal-cell.checkout_only { background:linear-gradient(135deg, var(--cal-booked) 0 50%, var(--cal-open) 50% 100%); }
.cal-cell.turnover      { background:linear-gradient(135deg, var(--cal-booked) 0 50%, var(--cal-booked) 50% 100%);
    /* both guests occupy — show a thin open seam so it reads as a turnover, not a full block */
    position:relative; }
.cal-cell.turnover::after { content:""; position:absolute; inset:0; background:linear-gradient(135deg, transparent 46%, #fff 46% 54%, transparent 54%); z-index:1; }

.cal-cell.today { outline:2px solid var(--cal-primary); outline-offset:-2px; }

/* Legend */
.avail-cal-legend { display:flex; gap:1rem; flex-wrap:wrap; margin-top:1rem; font-size:.8rem; color:#5b6b7a; }
.avail-cal-legend .lg { display:inline-flex; align-items:center; gap:.35rem; }
.avail-cal-legend .sw { width:16px; height:16px; border-radius:4px; border:1px solid var(--cal-line); display:inline-block; }
.avail-cal-legend .sw.available { background:#fff; }
.avail-cal-legend .sw.unavailable { background:var(--cal-booked); }
.avail-cal-legend .sw.turnover { background:linear-gradient(135deg,var(--cal-booked) 0 46%,#fff 46% 54%,var(--cal-booked) 54% 100%); }
.avail-cal-legend .sw.today { background:#fff; outline:2px solid var(--cal-primary); outline-offset:-2px; }

.avail-cal-loading { padding:2rem; text-align:center; color:#6b8299; }
