.hall-availability { margin: 0 0 20px; padding: 16px; border: 1px solid #e5e7eb; border-radius: 18px; background: #fff; color: #222; scroll-margin-top: 95px; }
.hall-availability-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; gap: 8px; }
.hall-availability-heading button { border: 1px solid #e5e7eb; border-radius: 50%; background: transparent; color: inherit; width: 34px; height: 34px; font-size: 24px; line-height: 1; }
.hall-availability button:focus-visible { outline: 3px solid #ff385c; outline-offset: 2px; }
.hall-availability button:disabled { cursor: default; opacity: .4; }
.hall-availability-weekdays, .hall-availability-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; text-align: center; }
.hall-availability-weekdays { font-size: 11px; font-weight: 600; color: #666; margin-bottom: 5px; }
.hall-availability-days button { position: relative; border: 1px solid transparent; border-radius: 10px; background: #f0f8f3; color: #245c39; min-height: 35px; padding: 4px 0; font-size: 13px; }
.hall-availability-days button.is-booked { background: #f4f4f5; color: #666; text-decoration: line-through; }
.hall-availability-days button.has-bookings::after { content: ''; display: block; width: 4px; height: 4px; border-radius: 50%; background: currentColor; position: absolute; bottom: 3px; left: calc(50% - 2px); }
.hall-availability-days button[aria-pressed="true"] { background: #ff385c; color: #fff; border-color: #ff385c; text-decoration: none; }
.hall-availability-legend { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; font-size: 10px; color: #666; }
.hall-availability-legend span { display: inline-flex; align-items: center; gap: 4px; }
.hall-availability-legend i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; }
.hall-availability-legend .is-open { background: #4f9867; }
.hall-availability-legend .is-booked { background: #9ca3af; }
.hall-availability-status { font-size: 12px; margin: 12px 0; }
.hall-availability-status.is-error { color: #b4233c; }
.hall-availability-retry { font-size: 12px; border: 1px solid #aaa; border-radius: 8px; background: transparent; color: inherit; padding: 6px 10px; margin-bottom: 12px; }
.hall-availability [data-selected-day] { font-size: 13px; }
.hall-booked-periods { font-size: 12px; color: #666; margin: 7px 0 12px; }
.hall-booked-periods p { margin: 3px 0; }
.hall-times-caption { font-size: 11px; margin: 0 0 8px; }
.hall-available-times { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; max-height: 145px; overflow-y: auto; padding: 3px; }
.hall-available-times button { font-size: 11px; padding: 8px 2px; border: 1px solid #d9dce0; background: transparent; color: inherit; border-radius: 8px; }
.hall-available-times button[aria-pressed="true"] { background: #fff0f3; border-color: #ff385c; color: #c92346; }
.hall-availability [hidden] { display: none !important; }
html[data-theme="dark"] .hall-availability { background: #20242c; color: #f7f7f7; border-color: #414754; }
html[data-theme="dark"] .hall-availability-days button { background: #213d2d; color: #b4e0bf; }
html[data-theme="dark"] .hall-availability-days button.is-booked { background: #343944; color: #b7bcc6; }
html[data-theme="dark"] .hall-availability-days button[aria-pressed="true"] { background: #ff385c; color: #fff; }
html[data-theme="dark"] .hall-availability-weekdays, html[data-theme="dark"] .hall-availability-legend, html[data-theme="dark"] .hall-booked-periods { color: #b7bcc6; }
html[data-theme="dark"] .hall-available-times button[aria-pressed="true"] { background: #4e2634; color: #ffb6c3; }
html[data-theme="dark"] .hall-availability-status.is-error { color: #ffb6c3; }
@media (min-width: 992px) { .price-card:has(.hall-availability) { position: static; } }
