.availability-calendar{background:#fff;border-radius:8px;max-width:800px;margin:0 auto;padding:20px;box-shadow:0 2px 4px #0000001a}.availability-calendar .calendar-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.availability-calendar .calendar-header button{cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:4px;padding:8px 16px;transition:all .2s}.availability-calendar .calendar-header button:hover{background:#f5f5f5}.availability-calendar .calendar-header button.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.availability-calendar .calendar-header h2{text-transform:capitalize;margin:0;font-size:1.5rem}.availability-calendar .calendar-weekdays{grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px;display:grid}.availability-calendar .calendar-weekdays .weekday{text-align:center;color:#666;padding:8px;font-weight:700}.availability-calendar .calendar-grid{grid-template-columns:repeat(7,1fr);gap:8px;display:grid}.availability-calendar .calendar-grid .calendar-day{aspect-ratio:1;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;padding:8px;display:flex;position:relative}.availability-calendar .calendar-grid .calendar-day.empty{background:0 0}.availability-calendar .calendar-grid .calendar-day.other-month{opacity:.45;background:0 0;border:1px dashed #eee}.availability-calendar .calendar-grid .calendar-day.available{background:#e8f5e9;border:1px solid #c8e6c9}.availability-calendar .calendar-grid .calendar-day.available .status{color:#2e7d32}.availability-calendar .calendar-grid .calendar-day.booked{background:#ffebee;border:1px solid #ffcdd2}.availability-calendar .calendar-grid .calendar-day.booked .status{color:#c62828;text-align:center;flex-direction:column;align-items:center;display:flex}.availability-calendar .calendar-grid .calendar-day.booked .status .booking-source{opacity:.8;margin-top:2px;font-size:.7rem}.availability-calendar .calendar-grid .calendar-day.manual-block{background:#fff3e0;border:1px solid #ffe0b2}.availability-calendar .calendar-grid .calendar-day.manual-block .status{color:#e65100}.availability-calendar .calendar-grid .calendar-day.past{opacity:.5;cursor:not-allowed}.availability-calendar .calendar-grid .calendar-day .day-number{margin-bottom:4px;font-size:1.1rem;font-weight:700}.availability-calendar .calendar-grid .calendar-day .status{font-size:.8rem}.availability-calendar .calendar-legend{border-top:1px solid #eee;justify-content:center;gap:20px;margin-top:20px;padding-top:20px;display:flex}.availability-calendar .calendar-legend .legend-item{align-items:center;gap:8px;display:flex}.availability-calendar .calendar-legend .legend-item .legend-color{border-radius:4px;width:16px;height:16px}.availability-calendar .calendar-legend .legend-item .legend-color.available{background:#e8f5e9;border:1px solid #c8e6c9}.availability-calendar .calendar-legend .legend-item .legend-color.booked{background:#ffebee;border:1px solid #ffcdd2}.availability-calendar .calendar-legend .legend-item .legend-color.manual-block{background:#fff3e0;border:1px solid #ffe0b2}.availability-calendar .loading,.availability-calendar .error{text-align:center;color:#666;padding:40px}.availability-calendar .error{color:#c62828}@media (max-width:768px){.availability-calendar{padding:10px}.availability-calendar .calendar-grid{gap:4px}.availability-calendar .calendar-grid .calendar-day{padding:4px}.availability-calendar .calendar-grid .calendar-day .day-number{font-size:.9rem}.availability-calendar .calendar-grid .calendar-day .status{font-size:.7rem}.availability-calendar .calendar-grid .calendar-day .status .booking-source{font-size:.6rem}}@media (max-width:600px){.availability-calendar{max-width:100vw;padding:4px}.availability-calendar .calendar-header{flex-direction:column;gap:8px}.availability-calendar .calendar-header h2{font-size:1.1rem}.availability-calendar .calendar-header button{padding:6px 12px;font-size:1rem}.availability-calendar .calendar-weekdays,.availability-calendar .calendar-grid{grid-template-columns:repeat(7,minmax(38px,1fr));gap:2px;width:100%;min-width:280px;display:grid;overflow-x:auto}.availability-calendar .calendar-weekdays .weekday{padding:4px;font-size:.85rem}.availability-calendar .calendar-grid .calendar-day{min-width:38px;min-height:38px;padding:2px;font-size:.8rem}.availability-calendar .calendar-grid .calendar-day .day-number{font-size:.85rem}.availability-calendar .calendar-grid .calendar-day .status{font-size:.65rem}.availability-calendar .calendar-legend{flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;font-size:.9rem}}
