/**
 * Consistent unavailable-date presentation across public accommodation calendars.
 *
 * Layout modules remain free to choose cell borders/backgrounds. This module owns
 * only the disabled text treatment and the deterministic strike through the date
 * number, preventing button height and nightly-rate rows from moving the marker.
 */
.pxab-ui .pxab-calendar-day.is-blocked,
.pxab-ui .pxab-calendar-day.is-pending,
.pxab-ui .pxab-calendar-day.is-unselectable,
.pxab-ui .pxab-calendar-day.is-rule-blocked,
.pxab-ui .pxab-calendar-day:disabled,
.pxab-ui .pxab-quote-calendar-day.is-blocked,
.pxab-ui .pxab-quote-calendar-day.is-pending,
.pxab-ui .pxab-quote-calendar-day.is-unselectable,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked,
.pxab-ui .pxab-quote-calendar-day:disabled {
  color: var(--pxab-public-calendar-disabled-text, #9ca3af) !important;
  opacity: 1 !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  cursor: not-allowed !important;
}

.pxab-ui .pxab-calendar-day.is-blocked:hover,
.pxab-ui .pxab-calendar-day.is-blocked:focus-visible,
.pxab-ui .pxab-calendar-day.is-pending:hover,
.pxab-ui .pxab-calendar-day.is-pending:focus-visible,
.pxab-ui .pxab-calendar-day.is-unselectable:hover,
.pxab-ui .pxab-calendar-day.is-unselectable:focus-visible,
.pxab-ui .pxab-calendar-day.is-rule-blocked:hover,
.pxab-ui .pxab-calendar-day.is-rule-blocked:focus-visible,
.pxab-ui .pxab-quote-calendar-day.is-blocked:hover,
.pxab-ui .pxab-quote-calendar-day.is-blocked:focus-visible,
.pxab-ui .pxab-quote-calendar-day.is-pending:hover,
.pxab-ui .pxab-quote-calendar-day.is-pending:focus-visible,
.pxab-ui .pxab-quote-calendar-day.is-unselectable:hover,
.pxab-ui .pxab-quote-calendar-day.is-unselectable:focus-visible,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked:hover,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked:focus-visible {
  color: var(--pxab-public-calendar-disabled-text, #9ca3af) !important;
  box-shadow: none !important;
  outline: 0 !important;
}

/* Remove the legacy whole-button marker; its vertical position varied by layout. */
.pxab-ui .pxab-calendar-day.is-blocked::after,
.pxab-ui .pxab-calendar-day.is-pending::after,
.pxab-ui .pxab-calendar-day.is-unselectable::after,
.pxab-ui .pxab-calendar-day.is-rule-blocked::after,
.pxab-ui .pxab-calendar-day:disabled::after,
.pxab-ui .pxab-quote-calendar-day.is-blocked::after,
.pxab-ui .pxab-quote-calendar-day.is-pending::after,
.pxab-ui .pxab-quote-calendar-day.is-unselectable::after,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked::after,
.pxab-ui .pxab-quote-calendar-day:disabled::after {
  content: none !important;
  display: none !important;
}

.pxab-ui .pxab-calendar-day__date {
  position: relative;
  z-index: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.45em;
  color: inherit;
}

.pxab-ui .pxab-calendar-day.is-blocked:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-calendar-day.is-pending:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-calendar-day.is-unselectable:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-calendar-day.is-rule-blocked:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-calendar-day:disabled:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day.is-blocked:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day.is-pending:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day.is-unselectable:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked:not(.is-selected) .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day:disabled:not(.is-selected) .pxab-calendar-day__date::after {
  content: "";
  position: absolute;
  z-index: 1;
  left: -.14em;
  right: -.14em;
  top: 52%;
  height: 1px;
  background: currentColor;
  opacity: .82;
  transform: translateY(-50%) rotate(-8deg);
  transform-origin: center;
  pointer-events: none;
}

.pxab-ui .pxab-calendar-day.is-blocked .pxab-calendar-day__rate,
.pxab-ui .pxab-calendar-day.is-pending .pxab-calendar-day__rate,
.pxab-ui .pxab-calendar-day.is-unselectable .pxab-calendar-day__rate,
.pxab-ui .pxab-calendar-day.is-rule-blocked .pxab-calendar-day__rate,
.pxab-ui .pxab-calendar-day:disabled .pxab-calendar-day__rate,
.pxab-ui .pxab-quote-calendar-day.is-blocked .pxab-calendar-day__rate,
.pxab-ui .pxab-quote-calendar-day.is-pending .pxab-calendar-day__rate,
.pxab-ui .pxab-quote-calendar-day.is-unselectable .pxab-calendar-day__rate,
.pxab-ui .pxab-quote-calendar-day.is-rule-blocked .pxab-calendar-day__rate,
.pxab-ui .pxab-quote-calendar-day:disabled .pxab-calendar-day__rate {
  color: inherit !important;
  opacity: 1 !important;
}

/* A selected date is always presented as active, even if stale classes linger. */
.pxab-ui .pxab-calendar-day.is-selected,
.pxab-ui .pxab-quote-calendar-day.is-selected {
  opacity: 1 !important;
}
.pxab-ui .pxab-calendar-day.is-selected .pxab-calendar-day__date::after,
.pxab-ui .pxab-quote-calendar-day.is-selected .pxab-calendar-day__date::after {
  content: none !important;
}

/* A booked arrival boundary remains a valid checkout only. It is deliberately
 * distinct from an ordinary available night and is never muted or struck. */
.pxab-ui :where(.pxab-calendar-day, .pxab-quote-calendar-day)[data-pxab-checkout-only="1"] {
  position: relative;
  color: var(--pxab-single-text, #111827) !important;
  opacity: 1 !important;
  cursor: pointer !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pxab-single-reserve-bg, #e11d48) 38%, transparent) !important;
}

.pxab-ui :where(.pxab-calendar-day, .pxab-quote-calendar-day)[data-pxab-checkout-only="1"]::before {
  content: "";
  position: absolute;
  right: 4px;
  bottom: 4px;
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: var(--pxab-single-reserve-bg, #e11d48);
  pointer-events: none;
}

.pxab-ui :where(.pxab-calendar-day, .pxab-quote-calendar-day)[data-pxab-checkout-only="1"].is-selected {
  box-shadow: none !important;
}

.pxab-ui :where(.pxab-calendar-day, .pxab-quote-calendar-day)[data-pxab-checkout-only="1"].is-selected::before {
  background: currentColor;
}

/* Warning-only stay-rule cells remain keyboard discoverable. */
.pxab-ui :where(.pxab-calendar-day, .pxab-quote-calendar-day).is-rule-warning-only:focus-visible {
  outline: 2px solid currentColor !important;
  outline-offset: 2px !important;
}
