.urgent-rental {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  margin-top: 34px;
  padding: clamp(24px, 4vw, 40px);
  border-left: 4px solid var(--accent);
  background: var(--charcoal-soft);
  color: var(--white);
}
.urgent-rental h3 { margin: 0; font-size: clamp(1.25rem, 2vw, 1.75rem); }
.urgent-rental p:not(.kicker) { max-width: 780px; margin: 12px 0 0; color: #c6cbc8; font-size: .9rem; }
.urgent-rental .kicker { margin-bottom: 8px; }

.reservation-intake-notice {
  margin-bottom: 22px;
  padding: 20px;
  border: 1px solid #edb360;
  border-left: 5px solid #f0b04d;
  border-radius: 8px;
  background: #3a2d1e;
  color: #fff0d7;
}
.reservation-intake-notice[hidden], .reservation-flow-caption[hidden] { display: none; }
.reservation-intake-notice strong { display: block; font-size: 1.15rem; line-height: 1.6; }
.reservation-notes .reservation-intake-notice p { margin: 8px 0 14px; color: #fff0d7; }
.reservation-intake-notice a { display: inline-block; padding-block: 10px; color: #fff0d7; font-weight: 750; text-decoration: underline; text-underline-offset: 4px; }
.reservation-intake-notice a:focus-visible { outline: 3px solid #f0b04d; outline-offset: 4px; }
.reservation-notes .reservation-flow-caption { margin-bottom: 10px; color: #d8c3a3; font-weight: 750; }
.reservation-notes:not([data-web-booking-state="open"]) [data-web-booking-flow] p,
.reservation-notes:not([data-web-booking-state="open"]) [data-web-booking-flow] a { color: #aeb8bd; }
.reservation-notes[data-web-booking-state="unknown"] .reservation-intake-notice { background: #29343a; border-color: #a9b9c1; color: #e3ebef; }
.reservation-notes[data-web-booking-state="unknown"] .reservation-intake-notice p,
.reservation-notes[data-web-booking-state="unknown"] .reservation-intake-notice a { color: #e3ebef; }

.availability-calendar {
  max-width: 1080px;
  margin-inline: auto;
  padding: clamp(22px, 4vw, 38px);
  border: 1px solid #394145;
  border-radius: var(--radius);
  background: var(--charcoal-soft);
  color: var(--white);
}
.availability-calendar-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.availability-calendar-head h3 { margin: 0; font-size: clamp(1.3rem, 2.5vw, 1.8rem); }
.availability-calendar-head p { margin: 7px 0 0; color: #c6cbc8; font-size: .85rem; }
.availability-emergency { margin: 24px 0 12px; padding: 14px 16px; border-left: 3px solid #f0b04d; background: rgba(240,176,77,.1); color: #ffe0aa; font-weight: 750; }
.availability-status { min-height: 1.6em; margin: 12px 0; color: #c6cbc8; font-size: .85rem; }
.availability-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(110px, 1fr)); gap: 8px; overflow-x: auto; padding: 4px 0 12px; }
.availability-day { min-width: 110px; padding: 12px 10px; border-top: 3px solid #5a6265; background: #171c1f; }
.availability-day.is-available { border-color: #70c65a; }
.availability-day.is-call-only { border-color: #f0b04d; }
.availability-day.is-unavailable { border-color: #626a6d; }
.availability-day-date { display: block; margin-bottom: 10px; font-size: .9rem; }
.availability-slots { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.availability-slots li { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 6px 7px; border-radius: 3px; background: #22292d; font-size: .78rem; }
.availability-slots .slot-available b { color: #8fdd79; }
.availability-slots .slot-call-only b { color: #ffd080; }
.availability-slots .slot-unavailable b { color: #aeb4b5; }
.availability-legend { display: flex; flex-wrap: wrap; gap: 14px 22px; margin-top: 4px; color: #c6cbc8; font-size: .78rem; }
.availability-legend span { display: inline-flex; align-items: center; gap: 7px; }
.availability-legend i { width: 10px; height: 10px; border-radius: 50%; }
.available-dot { background: #70c65a; }
.call-dot { background: #f0b04d; }
.unavailable-dot { background: #626a6d; }
.availability-disclaimer { margin: 16px 0 0; color: #adb5b6; font-size: .76rem; }
.availability-month-nav { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 24px; }
.availability-month-nav > strong { font-size: 1.2rem; }
.availability-month-nav > div { display: flex; gap: 8px; }
.availability-month-nav button { min-height: 44px; padding: 10px 16px; border: 1px solid #647174; border-radius: 6px; background: #303a3e; color: #fff; font: inherit; cursor: pointer; }
.availability-month-nav button:disabled { opacity: .45; cursor: default; }
.availability-month-nav button:focus-visible { outline: 3px solid #f0b04d; outline-offset: 3px; }
.availability-day.is-outside-window { opacity: .65; }
.availability-day.is-today { outline: 2px solid #f0b04d; outline-offset: -2px; }

.shop-map { grid-column: 1 / -1; margin-top: 24px; }
.shop-map h3 { margin: 0 0 12px; font-size: 1rem; }
.shop-map iframe { display: block; width: 100%; min-height: 360px; border: 0; border-radius: 8px; }
.shop-map p { margin: 10px 0 0; font-size: .85rem; }
.shop-map a { text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 980px) {
  .availability-calendar-grid { grid-template-columns: repeat(4, minmax(110px, 1fr)); }
}
@media (max-width: 680px) {
  .urgent-rental, .availability-calendar-head { align-items: stretch; flex-direction: column; }
  .urgent-rental .button, .availability-calendar-head .button { width: 100%; }
  .availability-calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
  .availability-day { min-width: 0; }
  .availability-month-nav { justify-content: center; }
  .availability-month-nav > strong { flex-basis: 100%; text-align: center; }
  .availability-month-nav > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; }
  .availability-month-nav button { padding: 10px 4px; }
  .shop-map iframe { min-height: 300px; }
}

/* Sunday stays in the first column at every width. */
.availability-compact-date { display: none; }
[data-availability-grid].availability-calendar-grid { grid-template-columns: repeat(7, minmax(110px, 1fr)); overflow-x: auto; }
.availability-weekday { text-align: center; font-weight: 750; padding: 7px 0; color: #c6cbc8; }
.availability-weekday:first-child { color: #fa9a9a; }
.availability-weekday:nth-child(7) { color: #8fc8f4; }
.availability-empty { min-width: 0; pointer-events: none; }
[data-availability-grid][data-calendar-display-mode=DAILY].availability-calendar-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); overflow: visible; }
[data-calendar-display-mode=DAILY] .availability-day { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 680px) {
  .availability-calendar:has([data-calendar-display-mode=DAILY]) { padding: 16px 8px; }
  [data-calendar-display-mode=DAILY].availability-calendar-grid { gap: 3px; }
  [data-calendar-display-mode=DAILY] .availability-day { padding: 7px 3px; }
  [data-calendar-display-mode=DAILY] .availability-full-date { display: none; }
  [data-calendar-display-mode=DAILY] .availability-compact-date { display: inline; }
  [data-calendar-display-mode=DAILY] .availability-day-date { font-size: .85rem; text-align: center; margin-bottom: 7px; }
  [data-calendar-display-mode=DAILY] .availability-day > b { display: block; font-size: .65rem; line-height: 1.6; text-align: center; }
  [data-calendar-display-mode=DAILY] .availability-day p { display: none; }
}
