: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, var(--lh-booking-radius-sm));
  --c-booking-form-radius-button: var(--c-form-radius-button, var(--lh-booking-radius-sm));
  --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: var(--lh-booking-radius-sm);
  --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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm);
  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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); }
.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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); 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:var(--lh-booking-radius-sm); 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: var(--lh-booking-radius-sm);
  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: var(--lh-booking-radius-sm);
    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: var(--lh-booking-radius-sm);
  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: var(--lh-booking-radius-sm);
  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;
}


/* 4.1.3 calendar state specificity + theme font UI fallback */
.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, var(--font-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: var(--lh-booking-radius-sm);
  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: var(--lh-booking-radius-sm);
  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:var(--lh-booking-radius-sm); 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 var(--c-booking-open-duration, 1000ms) cubic-bezier(.22, .72, .18, 1), opacity 220ms 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:var(--lh-booking-radius-sm);
  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:var(--lh-booking-radius-sm);
  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, color-mix(in srgb, var(--lh-booking-accent) 14%, white) 0%, color-mix(in srgb, var(--lh-booking-accent) 10%, var(--lh-booking-card)) 100%);
  border-color:var(--lh-booking-free-border);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--lh-booking-accent) 18%, transparent);
}
.c-booking-slot.is-direct-bookable:hover,
.c-booking-slot.is-direct-bookable:focus-visible{
  background:linear-gradient(180deg, color-mix(in srgb, var(--lh-booking-accent) 18%, white) 0%, color-mix(in srgb, var(--lh-booking-accent) 14%, var(--lh-booking-card)) 100%);
  border-color:var(--lh-booking-free-border);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--lh-booking-accent) 24%, transparent);
  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:var(--lh-booking-accent-strong);
  color:#fff;
}
.c-booking-slot.is-direct-bookable .c-booking-slot-hint{
  display:block;
  color:var(--lh-booking-accent-strong);
  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:var(--lh-booking-radius-sm);
  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:var(--lh-booking-accent-strong);
  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:var(--lh-booking-radius-sm);}
  .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:var(--lh-booking-radius-sm);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:var(--lh-booking-radius-sm);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:var(--lh-booking-radius-sm);}
  .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));}
}


/* 2.8.0 theme alignment + inline mobile layer */
:root{
  --lh-booking-font-body: var(--font-body, var(--lh-font-body, var(--font-sans, 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif)));
  --lh-booking-font-heading: var(--font-heading, var(--lh-font-heading, var(--font-serif, 'Merriweather', Georgia, serif)));
  --lh-booking-font-ui: var(--font-ui, var(--lh-font-ui, var(--lh-booking-font-body)));
  --lh-booking-text: var(--color-text, var(--lh-text, #233234));
  --lh-booking-muted: var(--color-text-soft, var(--lh-muted, #5b6d6a));
  --lh-booking-line: var(--color-border, var(--lh-border, rgba(35,50,52,.18)));
  --lh-booking-line-strong: var(--color-border-strong, rgba(35,50,52,.28));
  --lh-booking-bg: var(--color-surface-strong, #fcfbf8);
  --lh-booking-soft: var(--color-surface, #f3f3ef);
  --lh-booking-soft-2: var(--color-surface-muted, #f7f5f1);
  --lh-booking-card: var(--color-card, #fefdfb);
  --lh-booking-card-alt: var(--color-card-alt, #f8f6f2);
  --lh-booking-accent: var(--color-accent-2, var(--cv2-color-light-brand, #2f8b84));
  --lh-booking-accent-strong: var(--color-accent-3, #216762);
  --lh-booking-highlight: var(--color-accent-1, var(--cv2-color-light-highlight, #62b8ae));
  --lh-booking-shadow: var(--shadow-soft, 0 14px 28px rgba(10,24,26,.09));
  --lh-booking-overlay-backdrop: rgba(11,28,30,.72);
  --lh-booking-success-bg: var(--color-surface, #f3f3ef);
  --lh-booking-free-border: color-mix(in srgb, var(--lh-booking-accent) 72%, var(--lh-booking-line));
  --lh-booking-request-border: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 70%, var(--lh-booking-line));
  --lh-booking-occupied-border: color-mix(in srgb, var(--cv2-status-occupied, #8c9491) 70%, var(--lh-booking-line));
  --lh-booking-special-border: color-mix(in srgb, var(--cv2-special-attention, #c96b5a) 72%, var(--lh-booking-line));
  --lh-booking-free-day-bg: color-mix(in srgb, var(--lh-booking-accent) 16%, var(--lh-booking-card));
  --lh-booking-one-slot-bg: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 18%, var(--lh-booking-card));
  --lh-booking-full-bg: color-mix(in srgb, var(--cv2-status-occupied, #8c9491) 16%, var(--lh-booking-card));
  --lh-booking-weekend-bg: color-mix(in srgb, var(--cv2-status-occupied, #8c9491) 11%, var(--lh-booking-card));
  --lh-booking-holiday-bg: color-mix(in srgb, var(--cv2-special-attention, #c96b5a) 14%, var(--lh-booking-card));
  --lh-booking-radius-sm: 8px;
}
html[data-theme="mid"]{
  --lh-booking-overlay-backdrop: rgba(4,10,8,.62);
}
html[data-theme="dark"]{
  --lh-booking-overlay-backdrop: rgba(5,8,10,.82);
}

[data-core-booking-trigger="1"],
[data-lh-booking-trigger="1"],
.c-booking-trigger-shortcode,
.c-booking-primary-cta,
.c-booking-submit,
.c-booking-file-button{
  font-family: var(--lh-booking-font-ui);
}

.c-booking-inline-root,
.c-booking-inline-shell,
.c-booking-success-shell,
.c-booking-confirmation-state{
  color: var(--lh-booking-text);
  font-family: var(--lh-booking-font-body);
}
.c-booking-inline-root{
  background: var(--lh-booking-soft);
  border-bottom-color: var(--lh-booking-line);
}
.c-booking-inline-header,
.c-booking-card,
.c-booking-slots,
.c-booking-request-card,
.c-booking-success-summary > div,
.c-booking-slot-legend,
.c-booking-mobile-day,
.c-booking-mobile-empty{
  background: var(--lh-booking-card);
  border-color: var(--lh-booking-line);
  color: var(--lh-booking-text);
}
.c-booking-inline-header,
.c-booking-form-head-top,
.c-booking-panel-head{
  color: var(--lh-booking-text);
}
.c-booking-close,
.c-booking-nav-prev,
.c-booking-nav-next,
.c-booking-panel-back,
.c-booking-day,
.c-booking-form input,
.c-booking-form textarea,
.c-booking-form select{
  background: var(--lh-booking-bg);
  color: var(--lh-booking-text);
  border-color: var(--lh-booking-line);
  font-family: var(--lh-booking-font-ui);
}
.c-booking-close,
.c-booking-nav-prev,
.c-booking-nav-next,
.c-booking-panel-back{
  box-shadow: none;
}
.c-booking-intro-copy h3,
.c-booking-month-label,
.c-booking-slots-title strong,
.c-booking-form-head strong,
.c-booking-inline-copy h2,
.c-booking-success-copy h2,
.c-booking-confirmation-state h2{
  font-family: var(--lh-booking-font-heading);
  color: var(--lh-booking-text);
}
.c-booking-inline-copy h2,
.c-booking-success-copy h2,
.c-booking-confirmation-state h2{font-size: clamp(1.85rem, 4vw, 2.9rem);}
.c-booking-intro-copy h3,
.c-booking-month-label,
.c-booking-slots-title strong,
.c-booking-form-head strong{font-size: clamp(1.35rem, 2.1vw, 1.95rem);}
.c-booking-inline-kicker,
.c-booking-success-kicker,
.c-booking-modal-kicker,
.c-booking-dow,
.c-booking-success-summary span,
.c-booking-selected-slot span,
.c-booking-slot-legend-item,
.c-booking-flow-step,
.c-booking-badge{
  font-family: var(--lh-booking-font-ui);
}
.c-booking-inline-copy p,
.c-booking-success-copy p,
.c-booking-intro-copy p,
.c-booking-slots-title span,
.c-booking-empty-state,
.c-booking-form-head span,
.c-booking-panel-subline,
.c-booking-mobile-days-meta,
.c-booking-mobile-day-subline,
.c-booking-mobile-empty,
.c-booking-checkbox span,
.c-booking-form-status,
.c-booking-success-summary strong,
.c-booking-success-summary span{
  color: var(--lh-booking-muted);
}
.c-booking-inline-copy p,
.c-booking-success-copy p,
.c-booking-intro-copy p,
.c-booking-slots-title span,
.c-booking-empty-state,
.c-booking-form-head span,
.c-booking-panel-subline,
.c-booking-mobile-days-meta,
.c-booking-mobile-day-subline,
.c-booking-mobile-empty,
.c-booking-checkbox span,
.c-booking-form-status{font-size: .95rem; line-height: 1.65;}
.c-booking-badge,
.c-booking-dow,
.c-booking-inline-kicker,
.c-booking-success-kicker,
.c-booking-modal-kicker,
.c-booking-success-summary span,
.c-booking-selected-slot span,
.c-booking-slot-legend-item,
.c-booking-flow-step{font-size: .76rem; letter-spacing: .05em;}
.c-booking-day,
.c-booking-nav-prev,
.c-booking-nav-next,
.c-booking-panel-back,
.c-booking-mobile-day-weekday,
.c-booking-form label span{font-size: .95rem;}
.c-booking-day,
.c-booking-mobile-day,
.c-booking-slot,
.c-booking-submit,
.c-booking-trigger-shortcode,
[data-core-booking-trigger="1"],
[data-lh-booking-trigger="1"],
.c-booking-primary-cta,
.c-booking-form input,
.c-booking-form textarea,
.c-booking-form select{font-size: 1rem;}
.c-booking-slot strong{font-size: 1.35rem;}
.c-booking-slot span{font-size: .95rem;}
.c-booking-mobile-day-date{font-size: 1.125rem;}
.c-booking-success-summary strong,
.c-booking-selected-slot strong{font-size: 1rem; color: var(--lh-booking-text);}
.c-booking-form input,
.c-booking-form textarea,
.c-booking-form select{line-height: 1.5;}
.c-booking-form input::placeholder,
.c-booking-form textarea::placeholder{color: color-mix(in srgb, var(--lh-booking-muted) 78%, transparent); opacity:1;}
.c-booking-form input:focus,
.c-booking-form textarea:focus,
.c-booking-form select:focus,
.c-booking-close:focus-visible,
.c-booking-nav-prev:focus-visible,
.c-booking-nav-next:focus-visible,
.c-booking-panel-back:focus-visible,
.c-booking-day:focus-visible,
.c-booking-mobile-day:focus-visible,
.c-booking-submit:focus-visible,
.c-booking-trigger-shortcode:focus-visible,
[data-core-booking-trigger="1"]:focus-visible,
[data-lh-booking-trigger="1"]:focus-visible,
.c-booking-primary-cta:focus-visible{
  outline: none;
  border-color: var(--lh-booking-accent);
  box-shadow: 0 0 0 .1875rem color-mix(in srgb, var(--lh-booking-accent) 22%, transparent);
}
.c-booking-day.has-free-slots,
.c-booking-day.is-free-day{background: var(--lh-booking-free-day-bg) !important; border-color: var(--lh-booking-free-border) !important;}
.c-booking-day.has-one-slot,
.c-booking-day.is-nearly-full{background: var(--lh-booking-one-slot-bg) !important; border-color: var(--lh-booking-request-border) !important;}
.c-booking-day.is-fully-booked{background: var(--lh-booking-full-bg) !important; border-color: var(--lh-booking-occupied-border) !important; color: var(--lh-booking-text) !important;}
.c-booking-day.is-weekend{background: var(--lh-booking-weekend-bg) !important; border-color: var(--lh-booking-occupied-border) !important; opacity: 1;}
.c-booking-day.is-holiday{background: var(--lh-booking-holiday-bg) !important; border-color: var(--lh-booking-special-border) !important;}
.c-booking-day.is-blocked,
.c-booking-day:disabled,
.c-booking-slot.is-booked,
.c-booking-slot.is-confirmed{background: var(--lh-booking-full-bg); border-color: var(--lh-booking-occupied-border); color: var(--lh-booking-muted);}
.c-booking-slot.is-reserved{background: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 18%, var(--lh-booking-card)); border-color: var(--lh-booking-request-border);}
.c-booking-slot.is-direct-bookable,
.c-booking-slot.is-free:hover,
.c-booking-slot.is-free:focus-visible{background: color-mix(in srgb, var(--lh-booking-accent) 16%, var(--lh-booking-card)); border-color: var(--lh-booking-free-border);}
.c-booking-slot.is-selected,
.c-booking-mobile-day.is-selected,
.c-booking-selected-slot{background: color-mix(in srgb, var(--lh-booking-accent) 16%, var(--lh-booking-card)); border-color: color-mix(in srgb, var(--lh-booking-accent-strong) 65%, var(--lh-booking-line));}
.c-booking-inline-kicker,
.c-booking-success-kicker,
.c-booking-modal-kicker,
.c-booking-mobile-day-date,
.c-booking-flow-step.is-active,
.c-booking-flow-step.is-complete{color: var(--lh-booking-accent-strong);}
.c-booking-flow-step{background: var(--lh-booking-bg); border-color: var(--lh-booking-line);}
.c-booking-flow-step.is-active{box-shadow: 0 0 0 .1875rem color-mix(in srgb, var(--lh-booking-accent) 16%, transparent);}
.c-booking-flow-step.is-complete{background: color-mix(in srgb, var(--lh-booking-accent) 14%, var(--lh-booking-card)); border-color: color-mix(in srgb, var(--lh-booking-accent-strong) 35%, var(--lh-booking-line));}
.c-booking-submit,
.c-booking-primary-cta,
[data-core-booking-trigger="1"],
[data-lh-booking-trigger="1"],
.c-booking-trigger-shortcode{
  border-color: var(--lh-booking-accent-strong);
  background: linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%);
  color: var(--color-button-text, #fff);
}
.c-booking-success-overlay{background: var(--lh-booking-overlay-backdrop); backdrop-filter: blur(.5rem);}
.c-booking-success-shell{background: var(--lh-booking-success-bg); color: var(--lh-booking-text);}
.c-booking-confirmation-state{
  min-height: calc(100dvh - var(--lh-header-height, 0px));
  display: grid;
  align-items: center;
  padding: clamp(1.5rem, 4vw, 3rem) max(1rem, env(safe-area-inset-left)) clamp(2rem, 5vw, 4rem) max(1rem, env(safe-area-inset-right));
  background: var(--lh-booking-success-bg);
}
.c-booking-confirmation-state .c-booking-request-card{
  width: min(56rem, 100%);
  margin: 0 auto;
  background: var(--lh-booking-card);
  box-shadow: var(--lh-booking-shadow);
}

@media (max-width: 900px){
  body.c-booking-mobile-open{overflow:auto;}
  .c-booking-inline-root{
    position: relative;
    inset: auto;
    z-index: 20;
    max-height: 0;
    height: auto;
    opacity: 0;
    pointer-events: none;
    border-bottom: 1px solid var(--lh-booking-line);
    background: var(--lh-booking-soft);
    backdrop-filter: none;
  }
  .c-booking-inline-root.is-open{
    max-height: 4800px;
    height: auto;
    opacity: 1;
    pointer-events: auto;
  }
  .c-booking-inline-shell{
    max-width: calc(100% - 20px);
    width: auto;
    height: auto;
    margin: 0 auto;
    padding: 1rem 0 1.5rem;
    gap: 1rem;
    grid-template-rows: none;
    background: transparent;
  }
  .c-booking-inline-header{
    position: static;
    z-index: auto;
    display: grid;
    padding: 1rem 0 0;
    background: transparent;
    border-bottom: none;
  }
  .c-booking-close{
    position: static;
    justify-self: end;
  }
  .c-booking-flow-steps{
    justify-content: flex-start;
  }
  .c-booking-panels-viewport{
    min-height: 0;
    height: auto;
    overflow: hidden;
  }
  .c-booking-panels-track{
    --c-booking-track-gap: 1rem;
    --c-booking-panel-step: calc(100% + 1rem);
    height: auto;
    grid-auto-columns: 100%;
    gap: 1rem;
  }
  .c-booking-panel.c-booking-card,
  .c-booking-panel.c-booking-slots,
  .c-booking-panel.c-booking-request-card{
    min-height: 0;
    height: auto;
    border-radius: var(--lh-booking-radius-lg, var(--lh-booking-radius-sm));
    box-shadow: var(--lh-booking-shadow);
    border: 1px solid var(--lh-booking-line);
    padding: 1rem;
    background: var(--lh-booking-card);
    overflow: visible;
  }
  .c-booking-slot-legend,
  .c-booking-form-head-top,
  .c-booking-panel-head,
  .c-booking-form-actions{
    position: static;
    top: auto;
    bottom: auto;
    padding-top: 0;
    padding-bottom: 0;
    background: transparent;
    backdrop-filter: none;
  }
  .c-booking-desktop-grid{display:none;}
  .c-booking-mobile-days-wrap{display:grid;gap:.75rem;margin-top:.5rem;}
  .c-booking-mobile-empty,
  .c-booking-mobile-day{box-shadow: var(--lh-booking-shadow);}
  .c-booking-slot{padding: 1rem 1.125rem;}
  .c-booking-slot strong{font-size: 1.5rem;}
  .c-booking-slot span,
  .c-booking-mobile-day-weekday,
  .c-booking-form label span{font-size: 1rem;}
  .c-booking-mobile-day-date{font-size: 1.2rem;}
  .c-booking-form input,
  .c-booking-form textarea,
  .c-booking-form select{font-size: 1rem;}
  .c-booking-submit{width: 100%; min-height: 3rem;}
  .c-booking-success-shell{padding:max(1.5rem, env(safe-area-inset-top)) 1rem max(1.25rem, env(safe-area-inset-bottom));}
}


/* 4.0.8: Lazy Booking + echter Inline-Shortcode */
.c-booking-calendar-shortcode{
  width:100%;
}

.c-booking-inline-root.is-embedded{
  max-height:none !important;
  height:auto !important;
  opacity:1 !important;
  overflow:visible !important;
  pointer-events:auto !important;
  position:relative !important;
  inset:auto !important;
  z-index:20;
  border-bottom:0;
  background:transparent;
  backdrop-filter:none;
}

.c-booking-inline-root.is-embedded .c-booking-inline-shell{
  max-width:100%;
  width:100%;
  height:auto;
  margin:0;
  padding:0;
}

.c-booking-inline-root.is-embedded .c-booking-close[data-c-booking-close="1"]{
  display:none;
}

@media (max-width: 900px){
  .c-booking-inline-root.is-embedded{
    max-height:none !important;
    height:auto !important;
    opacity:1 !important;
    overflow:visible !important;
    pointer-events:auto !important;
    position:relative !important;
    inset:auto !important;
    background:transparent;
    backdrop-filter:none;
  }

  .c-booking-inline-root.is-embedded .c-booking-inline-shell{
    max-width:100%;
    width:100%;
    height:auto;
    margin:0;
    padding:0;
  }
}

/* Core Booking 4.1.1: deutlicher Reveal + physisches Scrollen */
[data-core-booking-trigger="1"].is-core-booking-loading,
[data-lh-booking-trigger="1"].is-core-booking-loading,
.c-booking-trigger-shortcode.is-core-booking-loading{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.55em;
  cursor:progress;
  pointer-events:none;
  opacity:.96;
}

.c-booking-trigger-spinner{
  width:1.05em;
  height:1.05em;
  flex:0 0 1.05em;
  display:inline-block;
  border-radius:999px;
  border:.16em solid transparent;
  border-top-color:currentColor;
  border-left-color:currentColor;
  animation:c-booking-trigger-halfspin .72s linear infinite;
}

.c-booking-trigger-loading-text{
  display:inline-block;
}

@keyframes c-booking-trigger-halfspin{
  to{transform:rotate(360deg);}
}

@media (prefers-reduced-motion: reduce){
  .c-booking-trigger-spinner{animation:none;}
}


/* Core Booking 4.1.1: sichtbarer Einlauf beim ersten Öffnen */
.c-booking-inline-root.is-opening-motion .c-booking-inline-shell{
  animation:c-booking-reveal-settle var(--c-booking-reveal-duration, 980ms) cubic-bezier(.16,1,.3,1) both;
  transform-origin:top center;
  will-change:transform, opacity;
}

@keyframes c-booking-reveal-settle{
  0%{
    opacity:.01;
    transform:translateY(-26px) scaleY(.965);
  }
  36%{
    opacity:1;
    transform:translateY(8px) scaleY(1.012);
  }
  58%{
    transform:translateY(-4px) scaleY(.996);
  }
  76%{
    transform:translateY(2px) scaleY(1.002);
  }
  100%{
    opacity:1;
    transform:translateY(0) scaleY(1);
  }
}

@media (prefers-reduced-motion: reduce){
  .c-booking-inline-root.is-opening-motion .c-booking-inline-shell{
    animation:none;
  }
}

/* Core Booking 4.1.2: Bounce entfernt, Öffnen bewusst ca. 1s */
.c-booking-inline-root{
  transition:
    max-height var(--c-booking-open-duration, 1000ms) cubic-bezier(.22, .72, .18, 1),
    opacity 220ms ease !important;
}
.c-booking-inline-root.is-opening-motion .c-booking-inline-shell{
  animation:none !important;
  transform:none !important;
  opacity:1 !important;
}
@media (prefers-reduced-motion: reduce){
  .c-booking-inline-root{
    transition:none !important;
  }
}
