/* ============================================================
   Shared, theme-able availability calendar.
   Every design version links this file and only overrides the
   CSS custom properties below to match its palette.
   The calendar always renders as a light card so it looks good
   on any background (light, cream, dark, image).
   ============================================================ */
.cal-wrap{
  --cal-bg:#ffffff;
  --cal-fg:#2c2a24;
  --cal-muted:#8c8578;
  --cal-line:#e7e1d5;
  --cal-cell:#faf8f3;
  --cal-accent:#4b5840;
  --cal-free-bg:#e7efe0;   --cal-free-fg:#3f4c33;
  --cal-limited-bg:#f7ecd3; --cal-limited-fg:#8a6a2c;
  --cal-full-bg:#efd8d2;   --cal-full-fg:#9a4636;
  --cal-radius:14px;
  background:var(--cal-bg);
  color:var(--cal-fg);
  border:1px solid var(--cal-line);
  border-radius:var(--cal-radius);
  padding:20px;
  box-shadow:0 18px 45px rgba(40,35,25,.10);
  font-family:inherit;
}
.cal-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.cal-title{margin:0;font-size:1.15rem;font-weight:600;letter-spacing:.01em}
.cal-nav{display:flex;gap:8px}
.cal-prev,.cal-next{
  width:36px;height:36px;border-radius:50%;
  border:1px solid var(--cal-line);background:transparent;color:var(--cal-fg);
  font-size:1.1rem;line-height:1;cursor:pointer;transition:.18s;
}
.cal-prev:hover:not(:disabled),.cal-next:hover:not(:disabled){background:var(--cal-accent);color:#fff;border-color:var(--cal-accent)}
.cal-prev:disabled,.cal-next:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-dows{margin-bottom:8px}
.cal-dow{text-align:center;font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;color:var(--cal-muted);font-weight:600}
.cal-cell{
  min-height:54px;border-radius:10px;padding:7px 7px 6px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:var(--cal-cell);border:1px solid transparent;
}
.cal-cell.is-empty{background:transparent}
.cal-cell .num{font-size:.85rem;font-weight:600;line-height:1}
.cal-cell .dot{font-size:.58rem;letter-spacing:.01em;opacity:.9}
.cal-cell.is-past{opacity:.35}
.cal-cell.is-free{background:var(--cal-free-bg);color:var(--cal-free-fg)}
.cal-cell.is-limited{background:var(--cal-limited-bg);color:var(--cal-limited-fg)}
.cal-cell.is-full{background:var(--cal-full-bg);color:var(--cal-full-fg)}
.cal-cell.today{outline:2px solid var(--cal-accent);outline-offset:0}
.cal-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;font-size:.72rem;color:var(--cal-muted)}
.cal-legend span{display:flex;align-items:center;gap:7px}
.swatch{width:13px;height:13px;border-radius:4px;display:inline-block}
.swatch.free{background:var(--cal-free-bg)}
.swatch.limited{background:var(--cal-limited-bg)}
.swatch.full{background:var(--cal-full-bg)}
.cal-note{font-size:.76rem;line-height:1.55;color:var(--cal-muted);margin:14px 0 0}
.cal-note a{color:var(--cal-accent);font-weight:600}
@media(max-width:520px){
  .cal-cell{min-height:44px;padding:5px}
  .cal-cell .dot{display:none}
}
