.mom-availability {
  --mom-ink: #1d1d1b;
  --mom-charcoal: #252522;
  --mom-gold: #bd8732;
  --mom-gold-dark: #8d611f;
  --mom-ivory: #f7f3eb;
  --mom-paper: #fff;
  --mom-muted: #6d6a64;
  --mom-line: #ded8cc;
  color: var(--mom-ink);
  font-family: inherit;
  margin: 2rem auto;
  max-width: 1120px;
}
.mom-availability *, .mom-availability *::before, .mom-availability *::after { box-sizing: border-box; }
.mom-availability-access-intro { color: #35332f; font-size: 1rem; line-height: 1.7; margin: 0 0 1.25rem; max-width: 720px; }
.mom-availability__intro { background: var(--mom-charcoal); color: var(--mom-paper); padding: clamp(2rem, 5vw, 4.75rem); position: relative; }
.mom-availability__intro::before { background: var(--mom-gold); content: ''; height: 4px; left: clamp(2rem, 5vw, 4.75rem); position: absolute; top: 0; width: 72px; }
.mom-availability__intro h2 { color: var(--mom-paper); font-family: inherit; font-size: clamp(2rem, 5vw, 4.5rem); font-weight: 400; letter-spacing: .01em; line-height: 1.05; margin: 0 0 1rem; max-width: 850px; }
.mom-availability__intro > p:last-child { color: #e4dfd5; font-size: 1rem; line-height: 1.7; margin: 0; max-width: 760px; }
.mom-availability__panel { background: var(--mom-paper); border: 1px solid var(--mom-line); border-top: 0; box-shadow: 0 18px 55px rgba(22,20,17,.11); padding: clamp(1.25rem, 4vw, 3.25rem); }
.mom-availability__field { max-width: 520px; }
.mom-availability__field label { display: block; font-size: .82rem; font-weight: 700; letter-spacing: .1em; margin-bottom: .65rem; text-transform: uppercase; }
.mom-availability__select-wrap { position: relative; }
.mom-availability__select-wrap::after { border-bottom: 2px solid var(--mom-gold-dark); border-right: 2px solid var(--mom-gold-dark); content: ''; height: 9px; pointer-events: none; position: absolute; right: 1.15rem; top: 48%; transform: translateY(-65%) rotate(45deg); width: 9px; }
.mom-availability select { appearance: none; background: var(--mom-ivory); border: 1px solid #c9bda8; border-radius: 0; color: var(--mom-ink); cursor: pointer; font: inherit; min-height: 52px; padding: .75rem 3rem .75rem 1rem; width: 100%; }
.mom-availability select:disabled { cursor: wait; opacity: .68; }
.mom-availability select:focus-visible, .mom-availability button:focus-visible, .mom-availability a:focus-visible { outline: 3px solid var(--mom-gold); outline-offset: 3px; }
.mom-availability__status { color: var(--mom-muted); margin: 1rem 0 0; min-height: 1.5em; }
.mom-availability__status[data-state='error'] { color: #9c2f28; font-weight: 600; }
.mom-availability__calendar { border-top: 1px solid var(--mom-line); margin-top: 2rem; padding-top: 2rem; }
.mom-availability__toolbar { align-items: center; display: grid; gap: .75rem; grid-template-columns: 46px minmax(0,1fr) 46px; margin-bottom: 1rem; }
.mom-availability__toolbar h3 { color: var(--mom-ink); font-size: clamp(1.45rem, 3vw, 2.2rem); font-weight: 500; margin: 0; text-align: center; }
.mom-availability__nav { align-items: center; background: var(--mom-charcoal); border: 1px solid var(--mom-charcoal); border-radius: 50%; color: var(--mom-paper); cursor: pointer; display: inline-flex; font: inherit; font-size: 2rem; height: 46px; justify-content: center; line-height: 1; padding: 0 0 4px; transition: background-color 160ms ease, border-color 160ms ease; width: 46px; }
.mom-availability__nav:hover:not(:disabled) { background: var(--mom-gold-dark); border-color: var(--mom-gold-dark); }
.mom-availability__nav:disabled { cursor: not-allowed; opacity: .28; }
.mom-availability__legend { align-items: center; color: var(--mom-muted); display: flex; flex-wrap: wrap; font-size: .88rem; gap: .6rem 1.25rem; justify-content: flex-end; margin: 0 0 .9rem; }
.mom-availability__legend span { align-items: center; display: inline-flex; gap: .45rem; }
.mom-availability__key { border: 1px solid var(--mom-line); display: inline-block; height: 14px; width: 14px; }
.mom-availability__key--unavailable { background: var(--mom-gold); border-color: var(--mom-gold-dark); }
.mom-availability__key--unrecorded { background: var(--mom-paper); }
.mom-availability__table-wrap { overflow-x: auto; }
.mom-availability__table { border-collapse: collapse; table-layout: fixed; width: 100%; }
.mom-availability__table th { background: var(--mom-charcoal); border: 1px solid var(--mom-charcoal); color: var(--mom-paper); font-size: .7rem; font-weight: 600; letter-spacing: .06em; padding: .75rem .25rem; text-align: center; text-transform: uppercase; }
.mom-weekday-short { display: none; }
.mom-day { background: var(--mom-paper); border: 1px solid var(--mom-line); height: 92px; padding: .6rem; position: relative; text-align: left; vertical-align: top; }
.mom-day--empty { background: #f2efe9; }
.mom-day--past:not(.mom-day--unavailable) { background: #f7f6f2; color: #98938a; }
.mom-day--unavailable { background: linear-gradient(145deg,#f6ead6 0%,#ead2aa 100%); box-shadow: inset 4px 0 0 var(--mom-gold-dark); color: #3c2b12; }
.mom-day--today::after { border: 2px solid var(--mom-gold-dark); border-radius: 50%; content: ''; height: 31px; left: .35rem; position: absolute; top: .35rem; width: 31px; }
.mom-day__number { font-size: .92rem; font-weight: 700; position: relative; z-index: 1; }
.mom-day__label { bottom: .5rem; display: block; font-size: .68rem; font-weight: 700; left: .6rem; letter-spacing: .04em; line-height: 1.25; max-width: calc(100% - 1.2rem); position: absolute; text-transform: uppercase; }
.mom-day__label--port { font-size: .62rem; letter-spacing: 0; text-transform: none; }
.mom-day__label-line { display: block; overflow-wrap: anywhere; }
.mom-availability__actions { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.mom-availability__profile, .mom-availability__enquiry { border: 1px solid var(--mom-gold); display: inline-block; font-size: .82rem; font-weight: 700; letter-spacing: .08em; padding: .95rem 1.35rem; text-decoration: none; text-transform: uppercase; transition: background-color 160ms ease,color 160ms ease; }
.mom-availability__profile { background: var(--mom-charcoal); border-color: var(--mom-charcoal); color: var(--mom-paper); }
.mom-availability__profile:hover { background: var(--mom-gold-dark); border-color: var(--mom-gold-dark); color: var(--mom-paper); }
.mom-availability__enquiry { background: var(--mom-gold); color: #15130f; }
.mom-availability__enquiry:hover { background: var(--mom-charcoal); border-color: var(--mom-charcoal); color: var(--mom-paper); }
.mom-availability [hidden] { display: none !important; }
.mom-availability .screen-reader-text { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; }

@media (max-width: 720px) {
  .mom-availability { margin: 1rem auto; }
  .mom-availability__panel { padding-left: .85rem; padding-right: .85rem; }
  .mom-weekday-long { display: none; }
  .mom-weekday-short { display: inline; }
  .mom-availability__table th { font-size: .62rem; letter-spacing: 0; padding: .55rem 0; }
  .mom-availability__table { min-width: 700px; }
  .mom-day { height: 78px; padding: .35rem; text-align: left; }
  .mom-day--unavailable { box-shadow: inset 0 -4px 0 var(--mom-gold-dark); }
  .mom-day__label { bottom: .35rem; font-size: .58rem; left: .35rem; max-width: calc(100% - .7rem); }
  .mom-day__label--port { font-size: .56rem; }
  .mom-day--today::after { height: 28px; left: 50%; top: .15rem; transform: translateX(-50%); width: 28px; }
  .mom-availability__legend { justify-content: flex-start; }
}
@media (prefers-reduced-motion: reduce) { .mom-availability__nav, .mom-availability__profile, .mom-availability__enquiry { transition: none; } }
