.cal { max-width: 360px; margin: 0 auto; user-select: none; }
.cal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.cal-label { font-weight: 700; }
.cal-nav { border: 1px solid #d1d5db; background: #fff; width: 32px; height: 32px;
  border-radius: 8px; cursor: pointer; font-size: 1.1rem; line-height: 1; }
.cal-nav:hover { background: #f3f4f6; }
.cal-weekdays, .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-weekday { text-align: center; font-size: 0.7rem; color: #6b7280; padding: 4px 0; }
.cal-day { aspect-ratio: 1 / 1; border: 1px solid transparent; border-radius: 8px;
  background: #fff; font-size: 0.85rem; cursor: pointer; padding: 0; }
.cal-blank { background: transparent; border: none; cursor: default; }
.cal-day.is-free { background: #ecfdf5; color: #065f46; border-color: #a7f3d0; }
.cal-day.is-free:hover { background: #d1fae5; }
.cal-day.is-busy { background: #f3f4f6; color: #9ca3af; }
.cal-day.is-block { background: #fee2e2; color: #991b1b; border-color: #fecaca; cursor: pointer; }
.cal-day.is-booking { background: #e5e7eb; color: #6b7280; }
.cal-day.is-disabled { cursor: not-allowed; opacity: 0.55; }
.cal-day.is-past { background: #fff; color: #d1d5db; }
.cal-day.is-selected { background: #0e7490; color: #fff; border-color: #0e7490; }
.cal-day.is-range { background: #cffafe; color: #155e75; }
.cal-legend { display: flex; gap: 14px; justify-content: center; margin-top: 12px; font-size: 0.75rem; color: #374151; }
.cal-legend-item { display: inline-flex; align-items: center; gap: 5px; }
.cal-legend .sw { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.cal-legend .sw.is-free { background: #a7f3d0; }
.cal-legend .sw.is-block { background: #fecaca; }
.cal-legend .sw.is-booking { background: #e5e7eb; }
