/* Availability calendar. Uses the site's color tokens (--night, --glow, etc.). */
.cal { display: grid; gap: 18px; }
.cal-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; }
.cal-nav { display: flex; gap: 8px; }
.cal-nav button { width: 44px; height: 44px; border-radius: 999px; border: 2px solid var(--dusk-2); background: transparent; color: var(--ink); font-size: 1.2rem; cursor: pointer; }
.cal-nav button:hover:not(:disabled) { border-color: var(--muted); }
.cal-nav button:disabled { opacity: .35; cursor: default; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; padding: 0; list-style: none; color: var(--muted); font-size: .92rem; }
.cal-legend li { display: flex; align-items: center; gap: 8px; }
.cal-legend i { width: 16px; height: 16px; border-radius: 5px; display: inline-block; }
.cal-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 20px 32px; min-height: 300px; }
.cal-month { min-width: 0; background: rgba(35,28,64,.45); border: 1px solid var(--dusk-2); border-radius: 20px; padding: 18px; }
.cal-title { font-size: 1.6rem; margin-bottom: 12px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.cal-dow { text-align: center; font-family: var(--mono); font-size: .78rem; color: var(--dim); padding-bottom: 4px; }
.cal-day { height: clamp(38px, 9vw, 50px); display: grid; place-items: center; border-radius: 10px; font: 500 .98rem var(--body); border: 2px solid transparent; min-width: 0; padding: 0; }
.cal-day.is-open, .cal-legend .is-open { background: rgba(163,205,69,.16); color: var(--ink); border-color: rgba(163,205,69,.55); }
button.cal-day { cursor: pointer; transition: transform .12s ease, background .15s; }
button.cal-day:hover, button.cal-day:focus-visible { background: var(--glow); color: var(--glow-ink); border-color: var(--glow); transform: translateY(-1px); outline: none; }
.cal-day.is-booked, .cal-legend .is-booked { background: rgba(232,66,59,.2); color: #f3a6a2; text-decoration: line-through; text-decoration-thickness: 1.5px; }
.cal-day.is-soon, .cal-legend .is-soon { background: repeating-linear-gradient(135deg, rgba(184,176,207,.12) 0 5px, transparent 5px 10px); color: var(--muted); }
.cal-day.is-past { color: var(--dim); opacity: .55; }
.cal-day.is-selected { background: var(--glow); color: var(--glow-ink); border-color: var(--glow); text-decoration: none; }
.cal-day.is-blocked { background: rgba(163,90,163,.3); color: #e2b8e2; }
.cal-day.is-hold { background: rgba(255,194,61,.18); color: var(--glow); }
.cal-status { margin: 0; color: var(--muted); min-height: 1.5em; }
.cal[aria-busy="true"] .cal-months { opacity: .6; }
@media (max-width: 480px) { .cal-month { padding: 14px 10px; } .cal-grid { gap: 3px; } .cal-day { font-size: .9rem; border-radius: 8px; } }
