:root {
  --lh-booking-accent: var(--lh-teal-2, #5e9b99);
  --c-booking-form-bg: var(--c-form-bg, #ffffff);
  --c-booking-form-text: var(--c-form-text, var(--lh-booking-text, #132325));
  --c-booking-form-muted: var(--c-form-muted, var(--lh-booking-muted, #49605e));
  --c-booking-form-line: var(--c-form-line, var(--lh-booking-line, rgba(12,32,34,.14)));
  --c-booking-form-radius-field: var(--c-form-radius-field, 12px 6px 6px 6px);
  --c-booking-form-radius-button: var(--c-form-radius-button, 14px 6px 6px 6px);
  --c-booking-form-focus-ring: var(--c-form-focus-ring, 0 0 0 3px rgba(94,155,153,.12));
  --lh-booking-accent-strong: var(--lh-teal-3, #1f5d5f);
  --lh-booking-free-hover: #dff7e7;
  --lh-booking-free-border: #2f9e5b;
  --lh-booking-bg: #ffffff;
  --lh-booking-soft: #f7f4f1;
  --lh-booking-text: var(--lh-text, #132325);
  --lh-booking-muted: var(--lh-muted, #49605e);
  --lh-booking-line: var(--lh-border, rgba(12,32,34,.14));
  --lh-booking-shadow: 0 18px 50px rgba(11,28,30,.18);
  --lh-booking-radius-lg: 22px 8px 8px 8px;
  --lh-booking-radius-md: 16px 6px 6px 6px;
}
body.c-booking-modal-open { overflow: hidden; }
#c-booking-root { position: relative; z-index: 999999; }
.c-booking-primary-cta,
[data-lh-booking-trigger="1"],
.c-booking-trigger-shortcode {
  appearance:none; border:1px solid var(--lh-booking-accent-strong); background:linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%);
  color:#fff; border-radius:14px 6px 6px 6px; padding:12px 16px; font-weight:700; cursor:pointer; text-decoration:none; line-height:1.1;
}
.c-booking-primary-cta { margin-left:auto; min-height:44px; }
.c-booking-overlay { position: fixed; inset: 0; display: none; }
.c-booking-overlay.is-open { display: block; }
.c-booking-backdrop { position:absolute; inset:0; background:rgba(11,28,30,.56); backdrop-filter: blur(4px); }
.c-booking-shell {
  position:relative; z-index:1; width:100%; height:100%; margin:0; background:var(--lh-booking-soft); color:var(--lh-booking-text);
  display:grid; grid-template-rows:auto 1fr;
}
.c-booking-modal-header {
  display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:18px 16px 16px; background:#fff; border-bottom:1px solid var(--lh-booking-line);
}
.c-booking-modal-copy { display:grid; gap:6px; }
.c-booking-modal-kicker { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--lh-booking-accent-strong); }
.c-booking-modal-copy h2 { margin:0; font-family:var(--lh-font-heading, Georgia, serif); font-size:clamp(24px, 5vw, 36px); line-height:1.05; color:var(--lh-booking-text); }
.c-booking-modal-copy p { margin:0; color:var(--lh-booking-muted); font-size:14px; line-height:1.55; max-width:62ch; }
.c-booking-close {
  appearance:none; border:1px solid var(--lh-booking-line); background:#fff; color:var(--lh-booking-text); width:44px; height:44px; border-radius:14px 6px 6px 6px;
  font-size:28px; line-height:1; cursor:pointer; flex:0 0 auto;
}
.c-booking-modal-body { min-height:0; overflow:auto; padding:16px; }
.c-booking-panel-inner { display:grid; grid-template-columns:1fr; gap:16px; align-items:start; }
.c-booking-side-column { display:grid; grid-template-columns:1fr; gap:16px; align-items:start; }
.c-booking-card, .c-booking-slots, .c-booking-request-card {
  background: var(--lh-booking-bg); border: 1px solid var(--lh-booking-line); box-shadow: 0 10px 24px rgba(11,28,30,.08);
  border-radius: var(--lh-booking-radius-lg); padding: 16px; min-width: 0;
}
.c-booking-intro { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 16px; }
.c-booking-intro-copy h3 { margin: 0 0 6px; color: var(--lh-booking-text); font-family: var(--lh-font-heading, Georgia, serif); font-weight: 600; font-size: clamp(22px, 1.7vw, 30px); line-height: 1.08; }
.c-booking-intro-copy p { margin: 0; color: var(--lh-booking-muted); font-size: 14px; line-height: 1.6; max-width: 58ch; }
.c-booking-badge { display:inline-flex; align-items:center; min-height:36px; padding:.5rem .8rem; border-radius:999px; background:rgba(94,155,153,.12); color:var(--lh-booking-accent-strong); border:1px solid rgba(94,155,153,.20); font-size:12px; font-weight:700; letter-spacing:.03em; white-space:nowrap; }
.c-booking-month-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; }
.c-booking-month-label { color:var(--lh-booking-text); font-family:var(--lh-font-heading, Georgia, serif); font-size:21px; line-height:1.1; font-weight:700; }
.c-booking-nav-prev, .c-booking-nav-next {
  appearance:none; border:1px solid var(--lh-booking-line); background:#fff; color:var(--lh-booking-text);
  border-radius:12px 6px 6px 6px; padding:10px 12px; cursor:pointer; box-shadow:0 4px 10px rgba(11,28,30,.05);
}
.c-booking-nav-prev:disabled, .c-booking-nav-next:disabled { opacity:.42; cursor:not-allowed; box-shadow:none; }
.c-booking-grid { display:grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap:var(--lh-booking-calendar-grid-gap, 6px); }

.c-booking-grid-days {
  grid-template-rows: repeat(6, var(--lh-booking-calendar-cell-height, 42px));
  grid-auto-rows: var(--lh-booking-calendar-cell-height, 42px);
  min-height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
}

.c-booking-grid-viewport {
  --lh-booking-calendar-cell-height: 42px;
  --lh-booking-calendar-grid-gap: 6px;
  position: relative;
  overflow: hidden;
  height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
  min-height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
  touch-action: pan-y;
}

.c-booking-grid-viewport > .c-booking-grid-days {
  position: relative;
  height: 100%;
}

.c-booking-grid-viewport.is-animating {
  height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
  min-height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
}

.c-booking-grid-viewport.is-animating > .c-booking-grid-days {
  position: absolute;
  inset: 0;
  width: 100%;
}

.c-booking-grid-days.is-transition-pane {
  will-change: transform;
}

.c-booking-grid-days.is-entering.from-next {
  transform: translateX(100%);
}

.c-booking-grid-days.is-entering.from-prev {
  transform: translateX(-100%);
}

.c-booking-grid-days.is-exiting.to-left,
.c-booking-grid-days.is-exiting.to-right {
  transform: translateX(0);
}

.c-booking-grid-days.is-entering.is-active,
.c-booking-grid-days.is-exiting.is-active {
  transition: transform 260ms ease;
}

.c-booking-grid-days.is-entering.from-next.is-active,
.c-booking-grid-days.is-entering.from-prev.is-active {
  transform: translateX(0);
}

.c-booking-grid-days.is-exiting.to-left.is-active {
  transform: translateX(-100%);
}

.c-booking-grid-days.is-exiting.to-right.is-active {
  transform: translateX(100%);
}

@media (prefers-reduced-motion: reduce) {
  .c-booking-grid-viewport,
  .c-booking-grid-viewport.is-animating {
    height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
    min-height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
  }

  .c-booking-grid-viewport.is-animating > .c-booking-grid-days,
  .c-booking-grid-days.is-transition-pane {
    position: relative;
    inset: auto;
    width: auto;
    transform: none !important;
    transition: none !important;
  }
}

@media (max-width: 900px) {
  .c-booking-grid-viewport,
  .c-booking-grid-viewport.is-animating {
    --lh-booking-calendar-cell-height: 37px;
    height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
    min-height: calc((var(--lh-booking-calendar-cell-height) * 6) + (var(--lh-booking-calendar-grid-gap) * 5));
  }
}

.c-booking-dow { font-size:12px; color:var(--lh-booking-muted); text-align:center; padding-bottom:2px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; }
.c-booking-day, .c-booking-empty { min-height:var(--lh-booking-calendar-cell-height, 42px); height:100%; border-radius:12px 6px 6px 6px; display:flex; align-items:center; justify-content:center; }
.c-booking-day { border:1px solid var(--lh-booking-line); background:#fff; cursor:pointer; color:var(--lh-booking-text); font-weight:700; font-size:15px; }
.c-booking-day:hover, .c-booking-day:focus-visible, .c-booking-nav-prev:hover, .c-booking-nav-next:hover, .c-booking-nav-prev:focus-visible, .c-booking-nav-next:focus-visible, .c-booking-close:hover, .c-booking-close:focus-visible { border-color:var(--lh-booking-accent); outline:none; box-shadow:0 0 0 3px rgba(94,155,153,.12); }
.c-booking-day.is-selected { background:linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%); border-color:var(--lh-booking-accent-strong); color:#fff; }
.c-booking-day.is-blocked, .c-booking-day:disabled { background:#f2f0ef; color:#95a09f; border-color:#e0dedd; cursor:not-allowed; box-shadow:none; }
.c-booking-day.is-outside-month {
  background: rgba(242,240,239,.5);
  color: rgba(71,84,82,.46);
  border-color: rgba(201,196,193,.55);
  opacity: .82;
}
.c-booking-day.is-outside-month.is-weekend { opacity: .68; }
.c-booking-day.is-outside-month:hover,
.c-booking-day.is-outside-month:focus-visible,
.c-booking-day.is-outside-month:disabled {
  background: rgba(242,240,239,.5);
  color: rgba(71,84,82,.46);
  border-color: rgba(201,196,193,.55);
  box-shadow: none;
}
.c-booking-day.is-fully-booked { background:#f8e3e3; color:#7a3e3e; border-color:#d9a8a8; }
.c-booking-day.is-fully-booked:hover, .c-booking-day.is-fully-booked:focus-visible { background:#f5d8d8; border-color:#cb8f8f; box-shadow:0 0 0 3px rgba(203,143,143,.18); }
.c-booking-day.is-nearly-full { background:#fff4cc; color:#7a5a00; border-color:#e5cf80; }
.c-booking-day.is-nearly-full:hover, .c-booking-day.is-nearly-full:focus-visible { background:#ffefba; border-color:#d6bd63; box-shadow:0 0 0 3px rgba(214,189,99,.18); }
.c-booking-day.is-weekend { opacity:.72; }
.c-booking-slots-header { display:grid; gap:10px; margin-bottom:14px; }
.c-booking-slots-title { display:grid; gap:2px; }
.c-booking-slots-title strong { font-family:var(--lh-font-heading, Georgia, serif); font-size:19px; color:var(--lh-booking-text); line-height:1.15; }
.c-booking-slots-title span, .c-booking-empty-state { color:var(--lh-booking-muted); font-size:14px; line-height:1.55; }
.c-booking-slots-grid { display:grid; grid-template-columns: 1fr; gap:8px; }
.c-booking-slots.is-loading .c-booking-slots-grid { opacity: 1; }
.c-booking-loading-state {
  display:flex; align-items:center; gap:10px; min-height:52px;
  padding:12px 14px; border:1px solid rgba(12,32,34,.10);
  border-radius:12px 6px 6px 6px; background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(247,244,241,.92));
  color:var(--lh-booking-muted); font-size:14px; line-height:1.45;
}
.c-booking-spinner {
  width:16px; height:16px; border-radius:999px; flex:0 0 16px;
  border:2px solid rgba(31,93,95,.20); border-top-color: var(--lh-booking-accent-strong);
  animation: c-booking-spin .75s linear infinite;
}
.c-booking-loading-text { display:inline-block; }
@keyframes c-booking-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .c-booking-spinner { animation: none; }
}
.c-booking-slot {
  appearance:none; width:100%; text-align:left; display:grid; gap:4px; align-content:start;
  border-radius:12px 6px 6px 6px; border:1px solid var(--lh-booking-line); background:#fff; padding:10px 12px;
  transition: background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}
.c-booking-slot strong { color:var(--lh-booking-text); font-size:20px; line-height:1.05; font-weight:700; }
.c-booking-slot span { color:var(--lh-booking-muted); font-size:14px; font-weight:600; }
.c-booking-slot.is-free { cursor:pointer; }
.c-booking-slot.is-free:hover, .c-booking-slot.is-free:focus-visible { background: linear-gradient(180deg, #e9fbef 0%, #d8f5e2 100%); border-color: var(--lh-booking-free-border); box-shadow: 0 0 0 3px rgba(47,158,91,.22); transform: translateY(-1px); outline:none; }
.c-booking-slot.is-selected { background:linear-gradient(180deg, rgba(94,155,153,.18), rgba(94,155,153,.10)); border-color:var(--lh-booking-accent-strong); box-shadow:0 0 0 3px rgba(94,155,153,.15); }
.c-booking-slot.is-reserved { background:linear-gradient(180deg, #fff8dc 0%, #fff1bf 100%); border-color:#d2b24c; cursor:not-allowed; }
.c-booking-slot.is-reserved strong, .c-booking-slot.is-reserved span { color:#7a5a00; }
.c-booking-slot.is-confirmed, .c-booking-slot.is-booked { background:#f2f0ef; border-color:#ddd7d3; cursor:not-allowed; }
.c-booking-slot.is-confirmed strong, .c-booking-slot.is-confirmed span, .c-booking-slot.is-booked strong, .c-booking-slot.is-booked span { color:#66707a; }
.c-booking-form-head { margin-bottom:12px; }
.c-booking-form-head strong { display:block; font-family:var(--lh-font-heading, Georgia, serif); font-size:20px; color:var(--lh-booking-text); margin-bottom:4px; }
.c-booking-form-head span { color:var(--lh-booking-muted); font-size:14px; line-height:1.55; }
.c-booking-selected-slot { display:grid; gap:4px; margin-bottom:14px; padding:12px 14px; border:1px solid rgba(94,155,153,.20); background:rgba(94,155,153,.08); border-radius:14px 6px 6px 6px; }
.c-booking-selected-slot span { color:var(--lh-booking-muted); font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
.c-booking-selected-slot strong { color:var(--lh-booking-text); font-size:15px; }
.c-booking-form { display:grid; gap:10px; }
.c-booking-form label { display:grid; gap:6px; }
.c-booking-form label span { color:var(--lh-booking-text); font-size:13px; font-weight:600; }
.c-booking-form input, .c-booking-form textarea { width:100%; border:1px solid var(--lh-booking-line); border-radius:12px 6px 6px 6px; background:#fff; color:var(--lh-booking-text); padding:12px 12px; font:inherit; }
.c-booking-form input:focus, .c-booking-form textarea:focus { outline:none; border-color:var(--lh-booking-accent); box-shadow:0 0 0 3px rgba(94,155,153,.12); }
.c-booking-form.is-locked label span { color:#97a3a2; }
.c-booking-form.is-locked input:disabled, .c-booking-form.is-locked textarea:disabled { background:#f4f2f1; color:#8a9594; border-color:#e2ddda; cursor:not-allowed; }
.c-booking-form.is-locked .c-booking-checkbox { opacity:.72; }
.c-booking-checkbox { grid-template-columns: 18px 1fr; align-items:flex-start; gap:10px !important; }
.c-booking-checkbox input { margin-top:3px; }
.c-booking-checkbox span { font-size:13px !important; font-weight:400 !important; line-height:1.5; color:var(--lh-booking-muted) !important; }
.c-booking-form-actions { display:grid; gap:10px; }
.c-booking-submit { appearance:none; border:1px solid var(--lh-booking-accent-strong); background:linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%); color:#fff; border-radius:14px 6px 6px 6px; padding:12px 16px; font-weight:700; cursor:pointer; }
.c-booking-submit:hover, .c-booking-submit:focus-visible { outline:none; filter:brightness(.98); box-shadow:0 0 0 3px rgba(94,155,153,.15); }
.c-booking-submit:disabled { opacity:.45; cursor:not-allowed; filter:grayscale(.15); }
.c-booking-form-status { min-height:20px; font-size:13px; line-height:1.4; }
.c-booking-form-status.is-pending { color:var(--lh-booking-muted); }
.c-booking-form-status.is-success { color:#17663f; }
.c-booking-form-status.is-error { color:#9b2c2c; }
@media (min-width: 760px) {
  .c-booking-shell { width:min(100% - 32px, 1240px); height:min(100% - 32px, 920px); margin:16px auto; border-radius:28px 10px 10px 10px; overflow:hidden; box-shadow:var(--lh-booking-shadow); }
  .c-booking-modal-header { padding:22px 24px 20px; }
  .c-booking-modal-body { padding:24px; }
}
@media (min-width: 980px) {
  .c-booking-panel-inner { grid-template-columns: minmax(360px, .95fr) minmax(420px, 1.05fr); }
}




/* 1.0.4 desktop balance refinement */
.c-booking-panel-inner,
.c-booking-side-column {
  align-items: start;
}

.c-booking-card,
.c-booking-slots,
.c-booking-request-card {
  align-self: start;
}

.c-booking-slots {
  display: grid;
  align-content: start;
  gap: 12px;
}

.c-booking-request-card {
  display: grid;
  align-content: start;
}

.c-booking-slots-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.c-booking-slot {
  min-height: 78px;
}

@media (min-width: 980px) {
  .c-booking-shell {
    width: min(100% - 40px, 1380px);
    height: min(100% - 40px, 920px);
  }

  .c-booking-panel-inner {
    grid-template-columns: minmax(340px, 0.9fr) minmax(300px, 0.72fr) minmax(360px, 0.95fr);
    gap: 18px;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-content: start;
  }

  .c-booking-slots {
    max-height: none;
  }

  .c-booking-modal-copy p {
    max-width: 72ch;
  }
}

@media (min-width: 1180px) {
  .c-booking-panel-inner {
    grid-template-columns: minmax(360px, 0.92fr) minmax(340px, 0.82fr) minmax(380px, 0.98fr);
    gap: 20px;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .c-booking-slot {
    min-height: 82px;
    padding: 12px 14px;
  }

  .c-booking-slot strong {
    font-size: 18px;
  }

  .c-booking-slot span {
    font-size: 13px;
  }
}

@media (min-width: 1440px) {
  .c-booking-panel-inner {
    grid-template-columns: minmax(380px, 0.95fr) minmax(380px, 0.9fr) minmax(400px, 1fr);
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}



/* 1.0.5 fullscreen overlay and fixed form footer */
.c-booking-shell {
  width: 100%;
  height: 100%;
  margin: 0;
  border-radius: 0;
}

.c-booking-modal-body {
  padding-bottom: 128px;
}

.c-booking-request-card {
  position: relative;
  display: grid;
  align-content: start;
  min-height: 100%;
}

.c-booking-form {
  display: grid;
  align-content: start;
  gap: 14px;
  min-height: 100%;
}

.c-booking-form-fields {
  display: grid;
  gap: 12px;
  padding-bottom: 8px;
}

.c-booking-form-field-full {
  grid-column: 1 / -1;
}

.c-booking-form-footer {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  z-index: 6;
  display: grid;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid var(--lh-booking-line);
  border-radius: 18px 8px 8px 8px;
  background: rgba(255,255,255,.98);
  backdrop-filter: blur(10px);
  box-shadow: 0 -8px 24px rgba(11,28,30,.10);
}

.c-booking-form-actions {
  display: grid;
  gap: 10px;
}

.c-booking-form-status {
  order: 1;
}

.c-booking-submit {
  width: 100%;
  min-height: 52px;
  order: 2;
}

.c-booking-checkbox {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 10px;
  opacity: 1;
}

@media (min-width: 760px) {
  .c-booking-shell {
    width: min(100% - 32px, 100vw - 32px);
    height: min(100% - 32px, 100vh - 32px);
    margin: 16px auto;
    border-radius: 28px 10px 10px 10px;
    overflow: hidden;
  }

  .c-booking-modal-body {
    padding: 24px 24px 160px;
  }

  .c-booking-form-footer {
    left: 40px;
    right: 40px;
    bottom: 16px;
    padding: 16px 18px;
  }
}

@media (min-width: 980px) {
  .c-booking-shell {
    width: min(100% - 40px, 100vw - 40px);
    height: min(100% - 40px, 100vh - 40px);
    margin: 20px auto;
  }

  .c-booking-modal-body {
    padding: 24px 24px 170px;
  }

  .c-booking-panel-inner {
    grid-template-columns: minmax(340px, 0.9fr) minmax(320px, 0.8fr) minmax(400px, 1fr);
    gap: 18px;
  }

  .c-booking-form-fields {
    grid-template-columns: 1fr 1fr;
    gap: 12px 14px;
  }

  .c-booking-form-footer {
    left: 44px;
    right: 44px;
    bottom: 20px;
    grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr);
    align-items: center;
    gap: 18px;
  }

  .c-booking-form-actions {
    align-items: end;
  }

  .c-booking-form-status {
    min-height: 1.4em;
  }
}

@media (min-width: 1320px) {
  .c-booking-shell {
    width: min(100% - 48px, 100vw - 48px);
    height: min(100% - 48px, 100vh - 48px);
    margin: 24px auto;
  }

  .c-booking-modal-body {
    padding-bottom: 182px;
  }

  .c-booking-form-footer {
    left: 48px;
    right: 48px;
    bottom: 24px;
  }
}


/* 1.0.6 date and time always stacked */
.c-booking-date-time-stack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-content: start;
  min-width: 0;
}

.c-booking-panel-inner {
  grid-template-columns: 1fr;
  align-items: start;
}

.c-booking-date-time-stack > .c-booking-card,
.c-booking-date-time-stack > .c-booking-slots,
.c-booking-request-card {
  min-width: 0;
}

@media (min-width: 980px) {
  .c-booking-panel-inner {
    grid-template-columns: minmax(420px, 0.95fr) minmax(400px, 1fr);
    gap: 18px;
  }

  .c-booking-date-time-stack {
    gap: 18px;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1320px) {
  .c-booking-panel-inner {
    grid-template-columns: minmax(460px, 0.98fr) minmax(420px, 1fr);
    gap: 20px;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}


/* 1.0.7 remove fixed footer, keep natural form flow */
.c-booking-modal-body {
  padding-bottom: 24px;
}

.c-booking-request-card {
  position: relative;
  display: block;
  min-height: 0;
}

.c-booking-form {
  display: grid;
  align-content: start;
  gap: 14px;
  min-height: 0;
}

.c-booking-form-fields {
  display: grid;
  gap: 12px;
  padding-bottom: 0;
}

.c-booking-form-field-full {
  grid-column: 1 / -1;
}

.c-booking-form-footer {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  z-index: auto;
  display: block;
  gap: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  backdrop-filter: none;
  box-shadow: none;
}

.c-booking-form-actions {
  display: grid;
  gap: 10px;
}

.c-booking-submit {
  width: 100%;
  min-height: 48px;
}

.c-booking-checkbox {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 10px;
  opacity: 1;
}

.c-booking-form-status {
  min-height: 1.4em;
}

@media (min-width: 760px) {
  .c-booking-modal-body {
    padding: 24px;
  }
}

@media (min-width: 980px) {
  .c-booking-modal-body {
    padding: 24px;
  }

  .c-booking-form-fields {
    grid-template-columns: 1fr 1fr;
    gap: 12px 14px;
  }
}

@media (min-width: 1320px) {
  .c-booking-modal-body {
    padding-bottom: 24px;
  }
}


/* 1.0.9 success banner above header / top of page */
.c-banner-region {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000001;
  pointer-events: none;
}

.c-banner {
  pointer-events: auto;
  background: linear-gradient(180deg, #3ca66b 0%, #257f4e 100%);
  color: #fff;
  box-shadow: 0 10px 28px rgba(11,28,30,.18);
}

.c-banner.is-info {
  background: linear-gradient(180deg, #3b7ea1 0%, #275b79 100%);
}

.c-banner__inner {
  width: min(100% - 24px, 1320px);
  margin: 0 auto;
  min-height: 52px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
}

.c-banner__inner strong {
  font-size: 14px;
  line-height: 1.1;
}

.c-banner__inner span {
  font-size: 14px;
  line-height: 1.4;
}

.c-banner__close {
  appearance: none;
  border: 1px solid rgba(255,255,255,.28);
  background: rgba(255,255,255,.08);
  color: #fff;
  border-radius: 12px 6px 6px 6px;
  width: 40px;
  height: 40px;
  cursor: pointer;
  font-size: 24px;
  line-height: 1;
}

@media (max-width: 759px) {
  .c-banner__inner {
    width: 100%;
    grid-template-columns: 1fr auto;
    align-items: start;
    gap: 10px;
    padding: 10px 12px;
  }

  .c-banner__inner strong {
    grid-column: 1 / -1;
  }

  .c-banner__inner span {
    font-size: 13px;
  }

  .c-banner__close {
    width: 36px;
    height: 36px;
  }
}


/* 1.0.10 legend + calendar colors */
:root {
  --lh-booking-holiday-bg: #d8c2a0;
  --lh-booking-holiday-border: #b28d5c;
  --lh-booking-weekend-bg: #9fb8a0;
  --lh-booking-weekend-border: #6f8d71;
  --lh-booking-free-day-bg: #edf8ee;
  --lh-booking-free-day-border: #9dc8a0;
  --lh-booking-free-slot-bg: #dff7e7;
  --lh-booking-free-slot-border: #2f9e5b;
  --lh-booking-full-bg: #eef1f3;
  --lh-booking-full-border: #97a6ae;
}

.c-booking-legend {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--lh-booking-line);
}

.c-booking-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--lh-booking-muted);
  font-size: 13px;
  line-height: 1.4;
}

.c-booking-legend-swatch {
  width: 16px;
  height: 16px;
  border-radius: 6px 4px 4px 4px;
  border: 1px solid var(--lh-booking-line);
  flex: 0 0 auto;
}

.c-booking-legend-swatch.is-free-day {
  background: var(--lh-booking-free-day-bg);
  border-color: var(--lh-booking-free-day-border);
}
.c-booking-legend-swatch.is-free-slot-day {
  background: var(--lh-booking-free-slot-bg);
  border-color: var(--lh-booking-free-slot-border);
}
.c-booking-legend-swatch.is-fully-booked-day {
  background: var(--lh-booking-full-bg);
  border-color: var(--lh-booking-full-border);
}
.c-booking-legend-swatch.is-holiday-day {
  background: var(--lh-booking-holiday-bg);
  border-color: var(--lh-booking-holiday-border);
}
.c-booking-legend-swatch.is-weekend-day {
  background: var(--lh-booking-weekend-bg);
  border-color: var(--lh-booking-weekend-border);
}

.c-booking-day.is-holiday,
.c-booking-day.is-holiday[disabled] {
  background: var(--lh-booking-holiday-bg);
  border-color: var(--lh-booking-holiday-border);
  color: #3c2c18;
}

.c-booking-day.is-weekend:not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-weekend-bg);
  border-color: var(--lh-booking-weekend-border);
  color: #173222;
}

.c-booking-day.is-free-day:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-free-day-bg);
  border-color: var(--lh-booking-free-day-border);
}

.c-booking-day.has-free-slots:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-free-slot-bg);
  border-color: var(--lh-booking-free-slot-border);
  box-shadow: inset 0 0 0 1px rgba(47,158,91,.08);
}

.c-booking-day.is-fully-booked:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-full-bg);
  border-color: var(--lh-booking-full-border);
  color: var(--lh-booking-muted);
}

@media (min-width: 760px) {
  .c-booking-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 14px;
  }
}
@media (min-width: 1180px) {
  .c-booking-legend {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}


/* 1.0.11 blocked-state color correction */
.c-booking-legend-swatch.is-free-day {
  display: none;
}

.c-booking-day.is-free-day:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: #fff;
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
  box-shadow: none;
}

.c-booking-day:not(.is-blocked):not(.is-selected):not(.has-free-slots):not(.is-fully-booked):not(.is-holiday) {
  background: #fff;
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
  box-shadow: none;
}

.c-booking-day.is-weekend.is-blocked:not(.is-holiday),
.c-booking-day.is-weekend.is-blocked[disabled]:not(.is-holiday) {
  background: var(--lh-booking-weekend-bg);
  border-color: var(--lh-booking-weekend-border);
  color: #173222;
  opacity: 1;
}

.c-booking-day.is-holiday.is-blocked,
.c-booking-day.is-holiday.is-blocked[disabled] {
  background: var(--lh-booking-holiday-bg);
  border-color: var(--lh-booking-holiday-border);
  color: #3c2c18;
  opacity: 1;
}

.c-booking-day.is-blocked:not(.is-weekend):not(.is-holiday)[disabled] {
  opacity: .55;
}


/* 1.0.12 content-width booking overlay */
@media (min-width: 760px) {
  .c-booking-shell {
    width: min(100% - 32px, 1180px);
    height: min(100% - 32px, 920px);
    margin: 16px auto;
  }
}

@media (min-width: 980px) {
  .c-booking-shell {
    width: min(100% - 48px, 1240px);
    height: min(100% - 40px, 920px);
    margin: 20px auto;
  }
}

@media (min-width: 1320px) {
  .c-booking-shell {
    width: min(100% - 64px, 1280px);
    height: min(100% - 48px, 920px);
    margin: 24px auto;
  }
}


/* 1.0.13 almost full height, date+time beside each other, form full width below */
.c-booking-panel-inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: start;
}

.c-booking-top-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: start;
  min-width: 0;
}

.c-booking-request-card {
  width: 100%;
  min-width: 0;
}

@media (min-width: 760px) {
  .c-booking-shell {
    width: min(100% - 32px, 1180px);
    height: min(100% - 24px, 980px);
    margin: 12px auto;
  }
}

@media (min-width: 980px) {
  .c-booking-top-row {
    grid-template-columns: minmax(360px, 0.95fr) minmax(360px, 1.05fr);
    gap: 18px;
  }

  .c-booking-panel-inner {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .c-booking-shell {
    width: min(100% - 48px, 1240px);
    height: min(100% - 28px, 980px);
    margin: 14px auto;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1320px) {
  .c-booking-top-row {
    grid-template-columns: minmax(390px, 0.95fr) minmax(420px, 1.05fr);
    gap: 20px;
  }

  .c-booking-shell {
    width: min(100% - 64px, 1280px);
    height: min(100% - 32px, 1000px);
    margin: 16px auto;
  }

  .c-booking-slots-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}


/* 1.0.14 equal top block heights + almost full height overlay */
.c-booking-top-row,
.c-booking-top-row > .c-booking-card,
.c-booking-top-row > .c-booking-slots {
  min-width: 0;
}

@media (min-width: 980px) {
  .c-booking-shell {
    width: min(100% - 48px, 1240px);
    height: calc(100dvh - 32px);
    max-height: calc(100dvh - 32px);
    margin: 16px auto;
  }

  .c-booking-modal-body {
    min-height: 0;
  }

  .c-booking-panel-inner {
    min-height: 100%;
    align-content: start;
  }

  .c-booking-top-row {
    display: grid;
    grid-template-columns: minmax(360px, 0.95fr) minmax(360px, 1.05fr);
    gap: 18px;
    align-items: stretch;
  }

  .c-booking-top-row > .c-booking-card,
  .c-booking-top-row > .c-booking-slots {
    height: 100%;
    display: flex;
    flex-direction: column;
  }

  .c-booking-top-row > .c-booking-card .c-booking-grid-days,
  .c-booking-top-row > .c-booking-slots .c-booking-slots-grid {
    flex: 1 1 auto;
    align-content: start;
  }

  .c-booking-top-row > .c-booking-slots {
    min-height: 100%;
  }
}

@media (min-width: 1320px) {
  .c-booking-shell {
    width: min(100% - 64px, 1280px);
    height: calc(100dvh - 40px);
    max-height: calc(100dvh - 40px);
    margin: 20px auto;
  }

  .c-booking-top-row {
    grid-template-columns: minmax(390px, 0.95fr) minmax(420px, 1.05fr);
    gap: 20px;
  }
}

@media (max-width: 979px) {
  .c-booking-shell {
    height: calc(100dvh - 24px);
    max-height: calc(100dvh - 24px);
    margin: 12px auto;
  }
}


/* 1.0.15 refined legend + calendar state logic */
:root {
  --lh-booking-holiday-bg: #d8c2a0;
  --lh-booking-holiday-border: #b28d5c;
  --lh-booking-weekend-bg: #d2d7da;
  --lh-booking-weekend-border: #a4adb3;
  --lh-booking-one-slot-bg: #f2e4a8;
  --lh-booking-one-slot-border: #d1b24d;
  --lh-booking-full-bg: #f5e7e7;
  --lh-booking-full-border: #d3a4a4;
}

.c-booking-legend-swatch.is-free-day {
  display: inline-block;
  background: #fff;
  border-color: var(--lh-booking-line);
}
.c-booking-legend-swatch.is-one-slot-day {
  background: var(--lh-booking-one-slot-bg);
  border-color: var(--lh-booking-one-slot-border);
}
.c-booking-legend-swatch.is-fully-booked-day {
  background: var(--lh-booking-full-bg);
  border-color: var(--lh-booking-full-border);
}
.c-booking-legend-swatch.is-holiday-day {
  background: var(--lh-booking-holiday-bg);
  border-color: var(--lh-booking-holiday-border);
}
.c-booking-legend-swatch.is-weekend-day {
  background: var(--lh-booking-weekend-bg);
  border-color: var(--lh-booking-weekend-border);
}

.c-booking-day:not(.is-blocked):not(.is-selected):not(.has-one-slot):not(.is-fully-booked):not(.is-holiday) {
  background: #fff;
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
  box-shadow: none;
}

.c-booking-day.has-free-slots:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: #fff;
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
  box-shadow: none;
}

.c-booking-day.has-one-slot:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-one-slot-bg);
  border-color: var(--lh-booking-one-slot-border);
  color: #5a4712;
}

.c-booking-day.is-fully-booked:not(.is-selected),
.c-booking-day.is-fully-booked[disabled] {
  background: var(--lh-booking-full-bg);
  border-color: var(--lh-booking-full-border);
  color: #7a4d4d;
  opacity: 1;
  cursor: not-allowed;
}

.c-booking-day.is-weekend.is-blocked:not(.is-holiday),
.c-booking-day.is-weekend.is-blocked[disabled]:not(.is-holiday) {
  background: var(--lh-booking-weekend-bg);
  border-color: var(--lh-booking-weekend-border);
  color: #485057;
  opacity: 1;
}

.c-booking-day.is-holiday.is-blocked,
.c-booking-day.is-holiday.is-blocked[disabled] {
  background: var(--lh-booking-holiday-bg);
  border-color: var(--lh-booking-holiday-border);
  color: #3c2c18;
  opacity: 1;
}


/* 1.0.16 calendar state specificity + IBM Plex in calendar UI */
.c-booking-dow,
.c-booking-day,
.c-booking-month-label,
.c-booking-nav-prev,
.c-booking-nav-next,
.c-booking-badge,
.c-booking-slot,
.c-booking-slot strong,
.c-booking-slot span,
.c-booking-slots-title strong,
.c-booking-selected-date {
  font-family: var(--lh-font-ui, var(--font-ui, 'IBM Plex Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif));
}

.c-booking-day,
.c-booking-day:disabled,
.c-booking-day.is-blocked,
.c-booking-day.is-holiday,
.c-booking-day.is-holiday[disabled],
.c-booking-day.is-weekend.is-blocked,
.c-booking-day.is-weekend.is-blocked[disabled],
.c-booking-day.is-fully-booked,
.c-booking-day.is-fully-booked[disabled],
.c-booking-day.has-one-slot {
  opacity: 1;
}

.c-booking-day:not(.is-blocked):not(.is-selected):not(.has-one-slot):not(.is-fully-booked):not(.is-holiday) {
  background: #fff;
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
  box-shadow: none;
}

.c-booking-day.has-one-slot:not(.is-selected):not(.is-blocked):not(.is-holiday),
.c-booking-day.has-one-slot:focus-visible:not(.is-selected):not(.is-blocked):not(.is-holiday),
.c-booking-grid-days .c-booking-day.has-one-slot:not(.is-selected):not(.is-blocked):not(.is-holiday) {
  background: var(--lh-booking-one-slot-bg) !important;
  border-color: var(--lh-booking-one-slot-border) !important;
  color: #5a4712 !important;
  box-shadow: inset 0 0 0 1px rgba(209,178,77,.15);
}

.c-booking-day.is-fully-booked:not(.is-selected),
.c-booking-day.is-fully-booked[disabled],
.c-booking-grid-days .c-booking-day.is-fully-booked:not(.is-selected),
.c-booking-grid-days .c-booking-day.is-fully-booked[disabled] {
  background: var(--lh-booking-full-bg) !important;
  border-color: var(--lh-booking-full-border) !important;
  color: #7a4d4d !important;
  cursor: not-allowed;
  box-shadow: none;
}

.c-booking-day.is-weekend.is-blocked:not(.is-holiday),
.c-booking-day.is-weekend.is-blocked[disabled]:not(.is-holiday),
.c-booking-grid-days .c-booking-day.is-weekend.is-blocked:not(.is-holiday),
.c-booking-grid-days .c-booking-day.is-weekend.is-blocked[disabled]:not(.is-holiday) {
  background: var(--lh-booking-weekend-bg) !important;
  border-color: var(--lh-booking-weekend-border) !important;
  color: #485057 !important;
  cursor: not-allowed;
  box-shadow: none;
}

.c-booking-day.is-holiday,
.c-booking-day.is-holiday[disabled],
.c-booking-day.is-holiday.is-blocked,
.c-booking-day.is-holiday.is-blocked[disabled],
.c-booking-grid-days .c-booking-day.is-holiday,
.c-booking-grid-days .c-booking-day.is-holiday[disabled],
.c-booking-grid-days .c-booking-day.is-holiday.is-blocked,
.c-booking-grid-days .c-booking-day.is-holiday.is-blocked[disabled] {
  background: var(--lh-booking-holiday-bg) !important;
  border-color: var(--lh-booking-holiday-border) !important;
  color: #3c2c18 !important;
  cursor: not-allowed;
  box-shadow: none;
}

.c-booking-day:disabled:not(.is-holiday):not(.is-weekend):not(.is-fully-booked) {
  background: #f2f0ef;
  color: #95a09f;
  border-color: #e0dedd;
  cursor: not-allowed;
}


/* 1.0.17 holiday disabled color priority fix */
.c-booking-grid-days .c-booking-day.is-holiday,
.c-booking-grid-days .c-booking-day.is-holiday[disabled],
.c-booking-grid-days .c-booking-day.is-holiday.is-blocked,
.c-booking-grid-days .c-booking-day.is-holiday.is-blocked[disabled],
.c-booking-grid-days .c-booking-day.is-holiday:disabled,
.c-booking-grid-days .c-booking-day.is-holiday.is-blocked:disabled {
  background: var(--lh-booking-holiday-bg) !important;
  border-color: var(--lh-booking-holiday-border) !important;
  color: #3c2c18 !important;
  -webkit-text-fill-color: #3c2c18 !important;
  opacity: 1 !important;
  cursor: not-allowed;
  box-shadow: none !important;
  filter: none !important;
}

.c-booking-grid-days .c-booking-day.is-holiday:hover,
.c-booking-grid-days .c-booking-day.is-holiday[disabled]:hover,
.c-booking-grid-days .c-booking-day.is-holiday:focus,
.c-booking-grid-days .c-booking-day.is-holiday:focus-visible {
  background: var(--lh-booking-holiday-bg) !important;
  border-color: var(--lh-booking-holiday-border) !important;
  color: #3c2c18 !important;
}

.c-booking-grid-days .c-booking-day:disabled:not(.is-holiday):not(.is-weekend):not(.is-fully-booked) {
  background: #f2f0ef;
  color: #95a09f;
  border-color: #e0dedd;
}


/* 1.0.41 week teaser */
.c-booking-week-teaser {
  position: relative;
  display: grid;
  gap: 14px;
  padding: 18px 18px 16px;
  border-radius: 26px 10px 10px 10px;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(94,155,153,.16);
  box-shadow: 0 28px 70px rgba(18,34,33,.14);
  backdrop-filter: blur(8px);
  max-width: 667px;
}

.c-booking-week-teaser__head {
  display: grid;
  gap: 6px;
}

.c-booking-week-teaser__eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--lh-booking-accent-strong);
}

.c-booking-week-teaser__head h3 {
  margin: 0;
  font-family: var(--lh-font-heading, Georgia, serif);
  font-size: clamp(22px, 1.8vw, 28px);
  line-height: 1.08;
  color: var(--lh-booking-text);
}

.c-booking-week-teaser__head p {
  margin: 0;
  color: var(--lh-booking-muted);
  font-size: 14px;
  line-height: 1.55;
}

.c-booking-week-teaser__days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 8px;
}

.c-booking-week-teaser__day {
  appearance: none;
  display: grid;
  justify-items: center;
  align-content: start;
  gap: 2px;
  min-height: 96px;
  padding: 10px 8px;
  border-radius: 18px 8px 8px 8px;
  border: 1px solid var(--lh-booking-line);
  background: #fff;
  color: var(--lh-booking-text);
  text-align: center;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease, background-color 160ms ease;
}

.c-booking-week-teaser__day.is-available {
  cursor: pointer;
}

.c-booking-week-teaser__day.is-available:hover,
.c-booking-week-teaser__day.is-available:focus-visible {
  transform: translateY(-2px);
  border-color: var(--lh-booking-accent-strong);
  box-shadow: 0 0 0 3px rgba(94,155,153,.14);
  outline: none;
}

.c-booking-week-teaser__day.is-unavailable {
  opacity: .72;
  background: #f5f3f2;
  color: #7f8a89;
}

.c-booking-week-teaser__weekday {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--lh-booking-muted);
}

.c-booking-week-teaser__daynum {
  font-size: 24px;
  line-height: 1;
  font-weight: 800;
  color: inherit;
}

.c-booking-week-teaser__month {
  font-size: 12px;
  font-weight: 700;
  color: inherit;
}


@media (max-width: 900px) {
  .c-booking-week-teaser {
    padding: 16px;
    max-width: none;
  }

  .c-booking-week-teaser__days {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .c-booking-week-teaser__day {
    min-height: 92px;
  }
}


/* hero teaser placement */
.c-hero-booking-teaser {
  position: relative;
  z-index: 3;
  width: min(100%, 667px);
  margin: 18px 0 0;
}

.c-booking-week-teaser--hero {
  position: relative;
}

@media (min-width: 980px) {
  .c-hero-booking-teaser {
    align-self: end;
    margin: 28px 0 -13px;
    margin-left: 203px;
  }

  .c-booking-week-teaser--hero {
    box-shadow: 0 20px 50px rgba(11, 28, 30, .18);
    backdrop-filter: blur(3px);
  }
}

@media (max-width: 979px) {
  .c-hero-booking-teaser {
    width: 100%;
    max-width: 540px;
  }
}


/* 1.0.40 global form standard bridge */
.c-booking-form .c-form-label{color:var(--c-booking-form-text);}
.c-booking-form .c-form-control{border-color:var(--c-booking-form-line);border-radius:var(--c-booking-form-radius-field);background:var(--c-booking-form-bg);color:var(--c-booking-form-text);}
.c-booking-form .c-form-control:focus,.c-booking-form .c-form-control:focus-visible{border-color:var(--lh-booking-accent);box-shadow:var(--c-booking-form-focus-ring);}
.c-booking-form.is-locked .c-form-label{color:#97a3a2;}
.c-booking-form.is-locked .c-form-control:disabled{background:#f4f2f1;color:#8a9594;border-color:#e2ddda;}
.c-booking-checkbox.c-form-check span{color:var(--c-booking-form-muted)!important;}
.c-booking-submit.c-form-submit{border-color:var(--lh-booking-accent-strong);background:linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%);color:#fff;box-shadow:none;}
.c-booking-submit.c-form-submit:hover,.c-booking-submit.c-form-submit:focus-visible{box-shadow:0 0 0 3px rgba(94,155,153,.15);filter:brightness(.98);}

.c-booking-slot-hint{display:block;margin-top:2px;font-size:11px;line-height:1.2;opacity:.72;white-space:normal;}
.c-booking-slot.is-free .c-booking-slot-hint{display:none;}


/* 2.0.1 visual refinement */
.c-booking-slot{
  text-align:left;
  justify-items:start;
  align-content:start;
}
.c-booking-slot strong,
.c-booking-slot span,
.c-booking-slot .c-booking-slot-hint{
  width:100%;
  text-align:left;
  justify-self:start;
}
.c-booking-form input,
.c-booking-form textarea{
  border:1px solid var(--c-booking-form-line) !important;
  border-radius:var(--c-booking-form-radius-field) !important;
  background:var(--c-booking-form-bg) !important;
  color:var(--c-booking-form-text) !important;
  padding:12px 14px !important;
  box-shadow:none !important;
}
.c-booking-form input:focus,
.c-booking-form textarea:focus{
  border-color:var(--lh-booking-accent) !important;
  box-shadow:var(--c-booking-form-focus-ring) !important;
}


/* 2.0.6 outside-month visual priority fix */
.c-booking-grid-days .c-booking-day.is-outside-month,
.c-booking-grid-days .c-booking-day.is-outside-month:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-blocked,
.c-booking-grid-days .c-booking-day.is-outside-month.is-blocked:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend.is-blocked,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend.is-blocked:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-holiday,
.c-booking-grid-days .c-booking-day.is-outside-month.is-holiday:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-holiday.is-blocked,
.c-booking-grid-days .c-booking-day.is-outside-month.is-holiday.is-blocked:disabled {
  background: rgba(242,240,239,.5) !important;
  color: rgba(71,84,82,.46) !important;
  -webkit-text-fill-color: rgba(71,84,82,.46) !important;
  border-color: rgba(201,196,193,.55) !important;
  box-shadow: none !important;
  opacity: .82 !important;
  cursor: default !important;
  filter: none !important;
}

.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend:disabled,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend.is-blocked,
.c-booking-grid-days .c-booking-day.is-outside-month.is-weekend.is-blocked:disabled {
  opacity: .72 !important;
}

.c-booking-grid-days .c-booking-day.is-outside-month:hover,
.c-booking-grid-days .c-booking-day.is-outside-month:focus,
.c-booking-grid-days .c-booking-day.is-outside-month:focus-visible,
.c-booking-grid-days .c-booking-day.is-outside-month:active {
  background: rgba(242,240,239,.5) !important;
  color: rgba(71,84,82,.46) !important;
  -webkit-text-fill-color: rgba(71,84,82,.46) !important;
  border-color: rgba(201,196,193,.55) !important;
  box-shadow: none !important;
}

:root {
  --core-booking-accent: var(--lh-booking-accent, var(--lh-teal-2, #5e9b99));
  --core-booking-accent-strong: var(--lh-booking-accent-strong, var(--lh-teal-3, #1f5d5f));
}

body.c-booking-success-open { overflow: hidden; }
[data-core-booking-trigger="1"] { appearance:none; border:1px solid var(--lh-booking-accent-strong); background:linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%); color:#fff; border-radius:14px 6px 6px 6px; padding:12px 16px; font-weight:700; cursor:pointer; text-decoration:none; line-height:1.1; }

.c-booking-inline-root {
  --c-booking-panel-index: 0;
  position: relative;
  z-index: 20;
  max-height: 0;
  overflow: clip;
  opacity: 0;
  background: var(--lh-booking-soft);
  border-bottom: 1px solid var(--lh-booking-line);
  transition: max-height .42s ease, opacity .24s ease;
}
.c-booking-inline-root.is-open { max-height: 2400px; opacity: 1; }
.c-booking-inline-shell {
  max-width: min(1440px, calc(100% - 32px));
  margin: 0 auto;
  padding: 20px 0 28px;
  display: grid;
  gap: 18px;
}
.c-booking-inline-header {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding: 18px 8px 0;
}
.c-booking-inline-copy { display:grid; gap:6px; }
.c-booking-inline-kicker,
.c-booking-success-kicker {
  font-size:12px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--lh-booking-accent-strong);
}
.c-booking-inline-copy h2,
.c-booking-success-copy h2 {
  margin:0;
  font-family:var(--lh-font-heading, Georgia, serif);
  font-size:clamp(24px, 4vw, 40px);
  line-height:1.03;
  color:var(--lh-booking-text);
}
.c-booking-inline-copy p,
.c-booking-success-copy p {
  margin:0;
  color:var(--lh-booking-muted);
  font-size:14px;
  line-height:1.6;
  max-width:70ch;
}
.c-booking-inline-actions { display:grid; gap:12px; justify-items:end; }
.c-booking-flow-steps {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px;
}
.c-booking-flow-step {
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:.45rem .85rem;
  border-radius:999px;
  border:1px solid var(--lh-booking-line);
  background:#fff;
  color:var(--lh-booking-muted);
  font-size:12px;
  font-weight:700;
}
.c-booking-flow-step.is-active { border-color:var(--lh-booking-accent-strong); color:var(--lh-booking-accent-strong); box-shadow:0 0 0 3px rgba(94,155,153,.10); }
.c-booking-flow-step.is-complete { background:rgba(94,155,153,.12); border-color:rgba(94,155,153,.2); color:var(--lh-booking-accent-strong); }
.c-booking-panels-viewport { overflow:hidden; }
.c-booking-panels-track {
  --c-booking-track-gap: 20px;
  --c-booking-panel-step: calc((100% + var(--c-booking-track-gap)) / 2);
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:calc((100% - var(--c-booking-track-gap)) / 2);
  gap:var(--c-booking-track-gap);
  align-items:start;
  transform:translateX(calc(var(--c-booking-panel-index) * -1 * var(--c-booking-panel-step)));
  transition:transform .34s ease;
  will-change:transform;
}
.c-booking-panel { min-width:0; }
.c-booking-panel-head,
.c-booking-form-head-top {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
}
.c-booking-panel-copy { display:grid; gap:4px; }
.c-booking-panel-copy strong,
.c-booking-form-head strong { color:var(--lh-booking-text); }
.c-booking-panel-copy span,
.c-booking-form-head span,
.c-booking-panel-subline { color:var(--lh-booking-muted); font-size:14px; line-height:1.55; }
.c-booking-panel-back {
  appearance:none;
  border:1px solid var(--lh-booking-line);
  background:#fff;
  color:var(--lh-booking-text);
  border-radius:999px;
  min-height:38px;
  padding:.45rem .8rem;
  cursor:pointer;
  font-weight:700;
  white-space:nowrap;
}
.c-booking-panel-back:hover,
.c-booking-panel-back:focus-visible { border-color:var(--lh-booking-accent); outline:none; box-shadow:0 0 0 3px rgba(94,155,153,.12); }
.c-booking-request-card { scroll-margin-top: calc(16px + var(--lh-header-height, 0px)); }
.c-booking-form-head { margin-bottom: 14px; }
.c-booking-success-overlay { position:fixed; inset:0; display:none; z-index:1000000; }
.c-booking-success-overlay.is-open { display:block; }
.c-booking-success-shell {
  position:relative;
  z-index:1;
  width:min(860px, calc(100% - 28px));
  margin:min(10vh, 64px) auto 0;
  background:#fff;
  border-radius:26px 10px 10px 10px;
  box-shadow:var(--lh-booking-shadow);
  padding:28px 24px 24px;
}
.c-booking-success-body { display:grid; gap:20px; }
.c-booking-success-summary {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:12px;
}
.c-booking-success-summary > div {
  border:1px solid var(--lh-booking-line);
  border-radius:16px 8px 8px 8px;
  background:var(--lh-booking-soft);
  padding:14px 16px;
  display:grid;
  gap:4px;
}
.c-booking-success-summary > div.is-full { grid-column:1 / -1; }
.c-booking-success-summary span { font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--lh-booking-muted); }
.c-booking-success-summary strong { color:var(--lh-booking-text); font-size:15px; line-height:1.5; word-break:break-word; }
.c-booking-success-actions { display:flex; justify-content:flex-end; }
.c-booking-success-actions .c-booking-submit { min-width:180px; }
.c-booking-success-close { position:absolute; top:16px; right:16px; }

@media (max-width: 900px) {
  .c-booking-inline-root.is-open { max-height: 3200px; }
  .c-booking-inline-shell { max-width: calc(100% - 20px); padding-bottom: 22px; }
  .c-booking-inline-header { padding:16px 4px 0; display:grid; }
  .c-booking-inline-actions { justify-items:start; }
  .c-booking-flow-steps { justify-content:flex-start; }
  .c-booking-panels-track {
    --c-booking-track-gap: 16px;
    --c-booking-panel-step: calc(100% + var(--c-booking-track-gap));
    grid-auto-columns:100%;
  }
  .c-booking-panel-head,
  .c-booking-form-head-top { display:grid; }
  .c-booking-success-shell { width:min(100%, calc(100% - 16px)); margin:20px auto 0; padding:22px 16px 18px; }
  .c-booking-success-summary { grid-template-columns:1fr; }
  .c-booking-success-summary > div.is-full { grid-column:auto; }
}


/* 2.6.2 desktop panel height follows real form height */
.c-booking-panels-track {
  align-items: stretch;
}
.c-booking-panel.c-booking-card,
.c-booking-panel.c-booking-slots,
.c-booking-panel.c-booking-request-card {
  min-height: var(--c-booking-panel-height);
  height: var(--c-booking-panel-height);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.c-booking-panel.c-booking-slots,
.c-booking-panel.c-booking-request-card {
  align-content: stretch;
}
.c-booking-slots-grid {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding-right: 4px;
  align-content: start;
}
.c-booking-request-card {
  scroll-margin-top: calc(16px + var(--lh-header-height, 0px));
}
.c-booking-form {
  flex: 1 1 auto;
  min-height: 0;
}
.c-booking-form-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.c-booking-form-col {
  display: grid;
  gap: 12px;
  align-content: start;
  min-height: 0;
}
.c-booking-form-col-purpose {
  grid-template-rows: auto auto auto;
  align-content: start;
}
.c-booking-form-field-message {
  display: grid;
  grid-template-rows: auto auto;
  min-height: 0;
}
.c-booking-form-field-message textarea {
  min-height: 220px;
  height: auto;
  resize: vertical;
}
.c-booking-form-actions {
  margin-top: 0;
}
.c-booking-success-overlay {
  background: rgba(11, 28, 30, .72);
  backdrop-filter: blur(6px);
}
.c-booking-success-shell {
  position: relative;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  border-radius: 0;
  box-shadow: none;
  padding: clamp(24px, 4vw, 44px);
  background: #ffffff;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.c-booking-success-body {
  width: min(980px, 100%);
  margin: 0 auto;
}
.c-booking-success-summary > div {
  border-radius: 0;
}
.c-booking-success-close {
  top: clamp(16px, 3vw, 28px);
  right: clamp(16px, 3vw, 28px);
}

@media (max-width: 900px) {
  .c-booking-panel.c-booking-card,
  .c-booking-panel.c-booking-slots,
  .c-booking-panel.c-booking-request-card {
    min-height: 0;
    height: auto;
  }
  .c-booking-form-layout {
    grid-template-columns: 1fr;
  }
  .c-booking-form-field-message {
    grid-template-rows: auto auto;
  }
  .c-booking-form-field-message textarea {
    min-height: 180px;
    height: auto;
  }
  .c-booking-success-shell {
    padding: 24px 16px 18px;
  }
  .c-booking-success-body {
    width: 100%;
  }
}


.c-booking-slot.is-direct-bookable{
  cursor:pointer;
  position:relative;
  background:linear-gradient(180deg, #ecfbf1 0%, #dcf8e6 100%);
  border-color:var(--lh-booking-free-border);
  box-shadow:0 0 0 1px rgba(47,158,91,.08);
}
.c-booking-slot.is-direct-bookable:hover,
.c-booking-slot.is-direct-bookable:focus-visible{
  background:linear-gradient(180deg, #e3f9ea 0%, #cef3dc 100%);
  border-color:var(--lh-booking-free-border);
  box-shadow:0 0 0 3px rgba(47,158,91,.22);
  outline:none;
}
.c-booking-slot.is-direct-bookable::after{
  content:"✓";
  position:absolute;
  top:8px;
  right:10px;
  width:18px;
  height:18px;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  line-height:1;
  font-weight:800;
  background:#2f9e5b;
  color:#fff;
}
.c-booking-slot.is-direct-bookable .c-booking-slot-hint{
  display:block;
  color:#2c6b46;
  opacity:.9;
}



.c-booking-slot-legend{
  display:flex;
  flex-wrap:wrap;
  gap:10px 16px;
  align-items:center;
  margin:10px 0 14px;
  padding:10px 12px;
  border:1px solid var(--lh-booking-line);
  border-radius:14px 6px 6px 6px;
  background:#fbfbfa;
}
.c-booking-slot-legend-item{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:var(--lh-booking-muted);
  font-size:12px;
  line-height:1.4;
  font-weight:600;
}
.c-booking-slot-legend-swatch{
  width:12px;
  height:12px;
  border-radius:999px;
  border:1px solid transparent;
  display:inline-block;
}
.c-booking-slot-legend-swatch.is-booked{
  background:#d7d3cf;
  border-color:#c6c1bc;
}
.c-booking-slot-legend-swatch.is-free{
  background:#eef7f1;
  border-color:#9cccad;
}
.c-booking-slot-legend-swatch.is-direct{
  background:#2f9e5b;
  border-color:#2f9e5b;
  position:relative;
}
.c-booking-slot-legend-swatch.is-direct::after{
  content:"";
  position:absolute;
  left:3px;
  top:1px;
  width:3px;
  height:6px;
  border:solid #fff;
  border-width:0 2px 2px 0;
  transform:rotate(45deg);
}


/* 2.7.2 mobile app flow */
.c-booking-mobile-days-wrap{display:none;}

@media (max-width: 900px) {
  body.c-booking-mobile-open{overflow:hidden;}
  .c-booking-inline-root{
    position:fixed;
    inset:0;
    z-index:1000000;
    max-height:100dvh;
    height:100dvh;
    opacity:0;
    pointer-events:none;
    border-bottom:none;
    background:rgba(11,28,30,.46);
    backdrop-filter:blur(6px);
  }
  .c-booking-inline-root.is-open{
    max-height:100dvh;
    opacity:1;
    pointer-events:auto;
  }
  .c-booking-inline-shell{
    max-width:none;
    width:100%;
    height:100dvh;
    margin:0;
    padding:0;
    gap:0;
    grid-template-rows:auto 1fr;
    background:var(--lh-booking-soft);
  }
  .c-booking-inline-header{
    padding:max(14px, env(safe-area-inset-top)) 16px 14px;
    background:#fff;
    border-bottom:1px solid var(--lh-booking-line);
    position:relative;
    z-index:2;
  }
  .c-booking-inline-copy h2{font-size:clamp(26px, 8vw, 34px);}
  .c-booking-inline-copy p{max-width:none;font-size:15px;}
  .c-booking-inline-actions{gap:10px;}
  .c-booking-flow-steps{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));}
  .c-booking-flow-step{justify-content:center;min-height:40px;border-radius:14px 8px 8px 8px;}
  .c-booking-close{position:absolute;top:max(12px, env(safe-area-inset-top));right:14px;}
  .c-booking-panels-viewport{min-height:0;height:100%;overflow:hidden;}
  .c-booking-panels-track{
    --c-booking-track-gap:0px;
    --c-booking-panel-step:100%;
    height:100%;
    grid-auto-columns:100%;
    gap:0;
  }
  .c-booking-panel.c-booking-card,
  .c-booking-panel.c-booking-slots,
  .c-booking-panel.c-booking-request-card{
    min-height:100%;
    height:100%;
    border-radius:0;
    box-shadow:none;
    border:none;
    padding:16px;
    background:var(--lh-booking-soft);
    overflow:auto;
  }
  .c-booking-desktop-grid{display:none;}
  .c-booking-mobile-days-wrap{display:grid;gap:12px;margin-top:8px;}
  .c-booking-mobile-days-meta{font-size:13px;line-height:1.5;color:var(--lh-booking-muted);}
  .c-booking-mobile-days{display:grid;gap:10px;align-content:start;}
  .c-booking-mobile-empty{padding:16px;border:1px dashed var(--lh-booking-line);border-radius:18px 8px 8px 8px;background:#fff;color:var(--lh-booking-muted);font-size:14px;line-height:1.55;}
  .c-booking-mobile-day{appearance:none;border:1px solid var(--lh-booking-line);background:#fff;border-radius:20px 10px 10px 10px;padding:14px 16px;display:grid;gap:8px;text-align:left;cursor:pointer;box-shadow:0 8px 18px rgba(11,28,30,.06);}
  .c-booking-mobile-day-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;}
  .c-booking-mobile-day-weekday{font-weight:700;color:var(--lh-booking-text);font-size:16px;line-height:1.35;}
  .c-booking-mobile-day-date{font-weight:800;color:var(--lh-booking-accent-strong);font-size:18px;line-height:1.2;white-space:nowrap;}
  .c-booking-mobile-day-subline{font-size:13px;line-height:1.45;color:var(--lh-booking-muted);}
  .c-booking-mobile-day.is-selected{border-color:var(--lh-booking-accent-strong);background:linear-gradient(180deg, rgba(94,155,153,.12), rgba(94,155,153,.06));box-shadow:0 0 0 3px rgba(94,155,153,.10);}
  .c-booking-mobile-day:focus-visible,.c-booking-mobile-day:hover{outline:none;border-color:var(--lh-booking-accent);box-shadow:0 0 0 3px rgba(94,155,153,.12);}
  .c-booking-month-head{margin-bottom:4px;}
  .c-booking-slots-grid{padding-right:0;gap:10px;}
  .c-booking-slot{padding:16px 18px;border-radius:18px 10px 10px 10px;}
  .c-booking-slot strong{font-size:24px;}
  .c-booking-slot span{font-size:15px;}
  .c-booking-slot-legend{position:sticky;top:0;z-index:2;background:rgba(251,251,250,.92);backdrop-filter:blur(4px);margin-top:0;}
  .c-booking-form-head-top,.c-booking-panel-head{position:sticky;top:-16px;z-index:2;background:var(--lh-booking-soft);padding-top:4px;}
  .c-booking-form-layout{gap:14px;}
  .c-booking-form-col{gap:10px;}
  .c-booking-form label span,.c-booking-form .c-form-label{font-size:13px;}
  .c-booking-form input,.c-booking-form textarea,.c-booking-form select{font-size:16px;}
  .c-booking-form-actions{position:sticky;bottom:0;background:linear-gradient(180deg, rgba(247,244,241,0), rgba(247,244,241,1) 30%);padding-bottom:max(8px, env(safe-area-inset-bottom));}
  .c-booking-submit{width:100%;min-height:48px;}
  .c-booking-success-shell{padding:max(22px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));}
}
