.sf-availability {
  --av-ink: #352b24;
  --av-muted: #766b62;
  --av-accent: #a85f3d;
  --av-accent-dark: #7d432c;
  --av-soft: #f7f0e7;
  --av-line: rgba(53, 43, 36, .16);
  background: #fffdf9;
  color: var(--av-ink);
  border: 1px solid var(--av-line);
  border-radius: 24px;
  box-shadow: 0 20px 54px rgba(53, 43, 36, .10);
  padding: clamp(20px, 4vw, 34px);
}

.sf-availability[aria-busy="true"] .sf-calendar-grid { opacity: .55; }
.sf-availability__heading { margin-bottom: 18px; }
.sf-availability__heading h2 { margin: 0 0 7px; font-size: clamp(1.45rem, 3vw, 2rem); }
.sf-availability__heading p { margin: 0; color: var(--av-muted); line-height: 1.6; }
.sf-availability__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 18px 0; }
.sf-availability__month { font-weight: 800; text-transform: capitalize; text-align: center; }
.sf-calendar-nav {
  appearance: none; border: 1px solid var(--av-line); background: #fff; color: var(--av-ink);
  width: 42px; height: 42px; border-radius: 50%; cursor: pointer; font-size: 1.25rem;
}
.sf-calendar-nav:hover, .sf-calendar-nav:focus-visible { border-color: var(--av-accent); outline: 3px solid rgba(168, 95, 61, .18); }
.sf-calendar-weekdays, .sf-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.sf-calendar-weekdays { margin-bottom: 6px; }
.sf-calendar-weekdays span { text-align: center; color: var(--av-muted); font-size: .78rem; font-weight: 800; }
.sf-calendar-day {
  appearance: none; border: 1px solid transparent; background: #fff; color: var(--av-ink);
  min-height: 46px; border-radius: 12px; cursor: pointer; font: inherit; font-weight: 750;
}
.sf-calendar-day:hover:not(:disabled), .sf-calendar-day:focus-visible { border-color: var(--av-accent); outline: 2px solid rgba(168, 95, 61, .16); }
.sf-calendar-day.is-other { color: #a59b94; background: transparent; }
.sf-calendar-day.is-past { color: #b7afa9; cursor: not-allowed; text-decoration: line-through; }
.sf-calendar-day.is-blocked { background: #f0ece8; color: #91877f; text-decoration: line-through; cursor: not-allowed; }
.sf-calendar-day.is-checkout-only { cursor: pointer; border-style: dashed; border-color: #a99d94; }
.sf-calendar-day.is-in-range { background: #f3ded2; border-radius: 4px; }
.sf-calendar-day.is-start, .sf-calendar-day.is-end { background: var(--av-accent); color: #fff; border-color: var(--av-accent); text-decoration: none; border-radius: 12px; }
.sf-availability__legend { display: flex; flex-wrap: wrap; gap: 14px; margin: 15px 0; color: var(--av-muted); font-size: .86rem; }
.sf-availability__legend span { display: inline-flex; align-items: center; gap: 7px; }
.sf-availability__legend i { width: 13px; height: 13px; border-radius: 4px; border: 1px solid var(--av-line); background: #fff; }
.sf-availability__legend .is-free i { background: #fff; }
.sf-availability__legend .is-busy i { background: #f0ece8; }
.sf-availability__legend .is-selected i { background: var(--av-accent); }
.sf-availability__selection { background: var(--av-soft); border-radius: 16px; padding: 15px 17px; line-height: 1.5; }
.sf-availability__selection strong { display: block; }
.sf-availability__status { min-height: 1.5em; margin: 12px 0 0; color: var(--av-muted); font-size: .93rem; }
.sf-availability__status.is-error { color: #9b2c2c; font-weight: 700; }
.sf-availability__status.is-success { color: #456044; font-weight: 700; }
.sf-availability__booking[hidden] { display: none !important; }
.sf-availability__booking {
  scroll-margin-top: 100px;
  margin-top: 20px;
  padding: clamp(18px, 3.5vw, 28px);
  border: 1px solid rgba(168, 95, 61, .24);
  border-radius: 18px;
  background: var(--av-soft);
  animation: sf-booking-in .28s ease-out;
}
.sf-availability__booking-heading { margin-bottom: 18px; }
.sf-availability__booking-heading span {
  display: block; margin-bottom: 6px; color: var(--av-accent-dark); font-size: .76rem;
  font-weight: 850; letter-spacing: .13em; text-transform: uppercase;
}
.sf-availability__booking-heading h3 { margin: 0 0 7px; font-size: clamp(1.25rem, 2.5vw, 1.65rem); }
.sf-availability__booking-heading p { margin: 0; color: var(--av-muted); line-height: 1.55; }
.sf-availability__booking-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.sf-availability__field { min-width: 0; }
.sf-availability__field--full { grid-column: 1 / -1; }
.sf-availability__field label {
  display: block; margin-bottom: 7px; color: var(--av-ink); font-size: .8rem; font-weight: 850;
  letter-spacing: .04em; text-transform: uppercase;
}
.sf-availability__field label small { color: var(--av-muted); font-size: .72rem; font-weight: 700; text-transform: none; }
.sf-availability__field input,
.sf-availability__field select,
.sf-availability__field textarea {
  width: 100%; border: 1px solid var(--av-line); border-radius: 12px; background: #fffdf9;
  color: var(--av-ink); font: inherit; padding: 13px 14px;
}
.sf-availability__field input:focus-visible,
.sf-availability__field select:focus-visible,
.sf-availability__field textarea:focus-visible {
  border-color: var(--av-accent); outline: 3px solid rgba(168, 95, 61, .16);
}
.sf-availability__field input[readonly] { color: var(--av-muted); }
.sf-availability__field textarea { min-height: 96px; resize: vertical; }
.sf-availability__submit {
  appearance: none; width: 100%; margin-top: 16px; padding: 14px 18px; border: 0; border-radius: 999px;
  background: var(--av-accent); color: #fff; cursor: pointer; font: inherit; font-weight: 850;
}
.sf-availability__submit:hover, .sf-availability__submit:focus-visible { background: var(--av-accent-dark); outline: 3px solid rgba(168, 95, 61, .18); }
.sf-availability__submit:disabled { cursor: wait; opacity: .7; }
.sf-availability__form-status { min-height: 1.35em; margin: 10px 0 0; color: var(--av-muted); font-size: .88rem; font-weight: 700; }
.sf-availability__form-status.is-error { color: #9b2c2c; }
.sf-availability__form-status.is-success { color: #456044; }
.sf-availability__privacy { margin: 6px 0 0; color: var(--av-muted); font-size: .8rem; line-height: 1.45; }
.sf-availability-section { padding: 48px clamp(18px, 5vw, 72px); background: #f7f0e7; }
.sf-availability-section > .sf-availability { max-width: 880px; margin: 0 auto; }
.contact-grid--single { grid-template-columns: minmax(0, 760px); justify-content: center; }

@keyframes sf-booking-in {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 620px) {
  .sf-calendar-weekdays, .sf-calendar-grid { gap: 3px; }
  .sf-calendar-day { min-height: 42px; font-size: .9rem; padding: 0; }
  .sf-availability { border-radius: 18px; padding: 18px 12px; }
  .sf-availability__booking-fields { grid-template-columns: 1fr; }
  .sf-availability__field--full { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
  .sf-availability__booking { animation: none; }
}