.product-availability [hidden] { display: none !important; }
.product-availability .availability-controls { display: flex; align-items: center; gap: 12px; padding-bottom: 16px; border-bottom: 1px solid #d6dde2; }
.product-availability .availability-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.product-availability select { width: auto; max-width: 60%; min-height: 44px; padding: 6px 28px 6px 8px; border: 1px solid #bcc8cf; border-radius: 4px; background-color: #fff; color: #253746; font-size: 16px; font-weight: 600; }
.product-availability .availability-navigation { display: flex; gap: 8px; margin-left: auto; }
.product-availability button { min-width: 44px; min-height: 44px; padding: 6px 10px; border: 1px solid #bcc8cf; border-radius: 4px; background: #fff; color: #253746; font: inherit; }
.product-availability button:disabled { opacity: .4; cursor: default; }
.product-availability button:not(:disabled):hover { background: #eef6fa; }
.product-availability button:focus-visible, .product-availability select:focus-visible { outline: 2px solid #0772aa; outline-offset: 3px; }
.product-availability .availability-count { margin: 10px 0 3px; color: #52616b; font-size: 14px; }
.product-availability .availability-days { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 0; margin: 0 0 20px; list-style: none; }
.product-availability .availability-day { padding: 14px; margin: 0; border: 1px solid #b4d2e3; border-radius: 6px; background: #fff; }
.product-availability .availability-day > time { display: block; color: #253746; font-size: 16px; font-weight: 600; }
.product-availability .availability-times { list-style: none; margin: 8px 0 0; padding: 0; color: #0772aa; }
.product-availability .availability-times li { margin: 4px 0 0; padding: 0; }
.product-availability .availability-location { display: block; color: #52616b; font-size: 12px; }
.product-availability .availability-note { margin: 0; color: #52616b; font-size: 13px; line-height: 1.5; }
.product-availability .availability-note a { color: #0772aa; text-decoration: underline; text-underline-offset: 2px; font-weight: 600; }
.product-availability .availability-note a:hover { color: #045580; }
.product-availability .availability-note a:focus-visible { outline: 2px solid #0772aa; outline-offset: 3px; }
@media (max-width: 767px) {
    .product-availability .availability-days { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .product-availability .availability-controls { flex-wrap: wrap; gap: 8px; }
    .product-availability select { font-size: 16px; max-width: 100%; }
    .product-availability .availability-navigation { margin-left: 0; }
}
@media (max-width: 359px) {
    .product-availability .availability-days { grid-template-columns: 1fr; }
}

/* Enhanced calendar; the original date list remains the no-JavaScript fallback. */
.product-availability .availability-calendar { width: 100%; table-layout: fixed; border-collapse: collapse; margin: 0 0 20px; }
.product-availability .availability-calendar th { padding: 7px 2px; text-align: center; font-size: 13px; font-weight: 400; color: #52616b; border-bottom: 1px solid #e4e8ed; }
.product-availability .availability-calendar abbr { text-decoration: none; border: 0; cursor: inherit; }
.product-availability .availability-calendar td { height: 72px; padding: 6px; vertical-align: top; border: 1px solid #edf0f3; background: #fff; }
.product-availability .availability-calendar td > time { display: block; text-align: center; font-size: 14px; line-height: 20px; color: #253746; }
.product-availability .availability-calendar .availability-outside { background: #f0f2f4; }
.product-availability .availability-calendar .availability-outside > time { color: #78838c; }
.product-availability .availability-calendar .availability-times { margin: 6px 0 0; }
.product-availability .availability-calendar .availability-times li { border: 0; border-radius: 3px; padding: 4px; font-size: 13px; line-height: 1.3; overflow-wrap: anywhere; background: #eaf4fa; color: #253746; }
@media (max-width: 767px) {
    .product-availability .availability-calendar th { font-size: 11px; padding: 8px 0; }
    .product-availability .availability-calendar td { height: 64px; padding: 3px 1px; }
    .product-availability .availability-calendar td > time { font-size: 12px; }
    .product-availability .availability-calendar .availability-times li { padding: 3px 1px; font-size: 11px; text-align: center; }
    .product-availability .availability-calendar .availability-location { font-size: 10px; }
}

.product-availability .availability-more { display: block; min-width: 0; min-height: 32px; width: 100%; margin-top: 4px; padding: 3px 0; border: 0; background: transparent; color: #0772aa; text-align: left; font-size: 12px; line-height: 1.3; text-decoration: underline; text-underline-offset: 2px; }
.product-availability .availability-calendar .availability-selected { background: #f1f8fc; box-shadow: inset 0 0 0 2px #0772aa; }
.product-availability .availability-details { position: relative; margin: 0 0 20px; padding: 16px; border: 1px solid #b4d2e3; border-radius: 4px; background: #f7fbfd; }
.product-availability .availability-details h3 { margin: 0 75px 12px 0; font-size: 16px; line-height: 1.5; color: #253746; }
.product-availability .availability-details-close { position: absolute; top: 8px; right: 8px; }
.product-availability .availability-details .availability-times { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.product-availability .availability-details .availability-times li { margin: 0; padding: 6px 10px; background: #eaf4fa; color: #253746; border-radius: 3px; }
@media (max-width: 767px) {
    .product-availability .availability-more { min-height: 44px; font-size: 11px; text-align: center; }
    .product-availability .availability-details { padding: 12px; }
}
