/* Availability calendar (#1, Plan 09 Phase 2)
   Multi-month grid with half-day turnover rendering + hover tooltips.
   Colors reference the site palette (see style.css :root). */

.yhv-cal { --cal-unavail:#c25c54; --cal-open:#fffdf9; --cal-today:#e0b256; --cal-lead:#d8d2c6; }

.yhv-cal__bar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.yhv-cal__nav { display:flex; align-items:center; gap:8px; }
.yhv-cal__btn { border:1px solid var(--sand); background:var(--white); color:var(--ink); border-radius:8px;
    width:36px; height:36px; cursor:pointer; font-size:.95rem; display:inline-flex; align-items:center; justify-content:center; }
.yhv-cal__btn:hover { border-color:var(--lake); color:var(--lake); }
.yhv-cal__today { padding:0 14px; width:auto; font-weight:600; }

.yhv-cal__legend { display:flex; flex-wrap:wrap; gap:14px; font-size:.82rem; color:var(--ink-soft); }
.yhv-cal__legend .k { display:inline-flex; align-items:center; gap:6px; }
.yhv-cal__swatch { width:16px; height:16px; border-radius:4px; border:1px solid var(--sand); display:inline-block; }
.yhv-cal__swatch--avail { background:var(--cal-open); }
.yhv-cal__swatch--unavail { background:var(--cal-unavail); }
.yhv-cal__swatch--turn { background:linear-gradient(135deg, var(--cal-unavail) 0 50%, var(--cal-open) 50% 100%); }
.yhv-cal__swatch--today { background:var(--cal-open); box-shadow:inset 0 0 0 2px var(--cal-today); }

.yhv-cal__months { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:22px; }
.yhv-cal__month { }
.yhv-cal__mtitle { font-family:var(--serif, Georgia, serif); font-size:1.05rem; font-weight:600; text-align:center; margin:0 0 8px; color:var(--ink); }
.yhv-cal__dow { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; font-size:.68rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.02em; margin-bottom:4px; }
.yhv-cal__dow span { text-align:center; }
.yhv-cal__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }

.yhv-cal__day { position:relative; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center;
    font-size:.82rem; border-radius:6px; background:var(--cal-open); color:var(--ink); border:1px solid var(--sand); overflow:hidden; }
.yhv-cal__day--empty { background:transparent; border:none; }

/* the day number sits above the fill */
.yhv-cal__day > .n { position:relative; z-index:2; }
/* fill layer painted via ::before so half-day gradients don't obscure the number */
.yhv-cal__day::before { content:""; position:absolute; inset:0; z-index:1; }

.yhv-cal__day--available::before { background:var(--cal-open); }
.yhv-cal__day--unavailable::before { background:var(--cal-unavail); }
.yhv-cal__day--unavailable { color:#fff; border-color:var(--cal-unavail); }
.yhv-cal__day--blocked_leadtime::before { background:var(--cal-lead); }
.yhv-cal__day--blocked_leadtime { color:var(--ink-soft); }
.yhv-cal__day--past::before { background:var(--paper-2); }
.yhv-cal__day--past { color:#b7b0a3; }

/* Half-day turnovers: diagonal split. The occupied half is the "booked" color.
   checkin_only  = stay ENDS here (morning occupied, evening open) -> top-left booked.
   checkout_only = stay STARTS here (open until afternoon check-in) -> bottom-right booked.
   turnover      = both -> full diagonal split. */
.yhv-cal__day--checkin_only::before  { background:linear-gradient(135deg, var(--cal-unavail) 0 50%, var(--cal-open) 50% 100%); }
.yhv-cal__day--checkout_only::before { background:linear-gradient(135deg, var(--cal-open) 0 50%, var(--cal-unavail) 50% 100%); }
.yhv-cal__day--turnover::before      { background:linear-gradient(135deg, var(--cal-unavail) 0 50%, var(--cal-open) 50% 100%); }

.yhv-cal__day--today { box-shadow:inset 0 0 0 2px var(--cal-today); font-weight:700; }

/* hover tooltip */
.yhv-cal__day[data-tip]:hover::after {
    content:attr(data-tip); position:absolute; z-index:5; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%);
    background:var(--ink); color:#fff; font-size:.72rem; line-height:1.2; white-space:nowrap; padding:5px 8px; border-radius:6px;
    pointer-events:none; box-shadow:0 4px 10px rgba(0,0,0,.18);
}
.yhv-cal__loading, .yhv-cal__error { padding:20px; text-align:center; color:var(--ink-soft); font-size:.9rem; }
.yhv-cal__error { color:var(--cal-unavail); }
