:root {
  /*
   * Booking liest zuerst die generischen Core-Theme-Tokens.
   * Fallen diese im Theme nicht an, greifen die alten Alias-Namen oder sichere Defaults.
   * So laufen Light und Dark mit dem aktuellen Theme sauber, ohne Mid-Annahmen.
   */
  --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(--text-color, var(--lh-text, #233234)));
  --lh-booking-muted: var(--color-text-soft, var(--muted-color, var(--lh-muted, #5b6d6a)));
  --lh-booking-line: var(--color-border, var(--line-color, var(--lh-border, rgba(35,50,52,.18))));
  --lh-booking-line-strong: var(--color-border-strong, var(--line-strong, rgba(35,50,52,.28)));

  --lh-booking-bg: var(--color-surface-strong, var(--surface-bg, #fcfbf8));
  --lh-booking-soft: var(--color-surface, var(--page-bg, #f3f3ef));
  --lh-booking-soft-2: var(--color-surface-muted, color-mix(in srgb, var(--surface-bg, #fcfbf8) 88%, var(--page-bg, #f3f3ef)));
  --lh-booking-card: var(--color-card, var(--surface-bg, #fcfbf8));
  --lh-booking-card-alt: var(--color-card-alt, color-mix(in srgb, var(--surface-bg, #fcfbf8) 92%, var(--page-bg, #f3f3ef)));

  --lh-booking-accent: var(--color-accent-2, var(--brand-color, var(--cv2-color-light-brand, #2f8b84)));
  --lh-booking-accent-strong: var(--color-accent-3, color-mix(in srgb, var(--brand-color, #2f8b84) 78%, black 22%));
  --lh-booking-highlight: var(--color-accent-1, var(--highlight-color, 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, var(--page-bg, #f3f3ef));

  --lh-booking-free-border: color-mix(in srgb, var(--cv2-status-available, #4dbb72) 70%, 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(--cv2-status-available, #4dbb72) 12%, 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));
}


html[data-theme="dark"] {
  --lh-booking-overlay-backdrop: rgba(5,8,10,.82);
}

#c-booking-root,
.c-booking-inline-root,
.c-booking-confirmation-state {
  color: var(--lh-booking-text);
  font-family: var(--lh-booking-font-body);
}

.c-booking-primary-cta,
[data-lh-booking-trigger="1"],
.c-booking-trigger-shortcode,
.c-booking-close,
.c-booking-nav-prev,
.c-booking-nav-next,
.c-booking-slot,
.c-booking-submit,
.c-booking-back-button,
.c-booking-next-button {
  font-family: var(--lh-booking-font-ui);
}

.c-booking-modal-copy h2,
.c-booking-intro-copy h3,
.c-booking-month-label,
.c-booking-slots-title strong,
.c-booking-request-title,
.c-booking-inline-copy h2,
.c-booking-success-copy h2,
.c-booking-confirmation-state h2 {
  font-family: var(--lh-booking-font-heading);
}

.c-booking-primary-cta,
[data-lh-booking-trigger="1"],
.c-booking-trigger-shortcode {
  min-height: 3rem;
  padding: .75rem 1rem;
  border-radius: var(--lh-booking-radius-md);
  box-shadow: var(--lh-booking-shadow);
}

.c-booking-card,
.c-booking-slots,
.c-booking-request-card,
.c-booking-inline-shell,
.c-booking-success-shell {
  background: var(--lh-booking-bg);
  color: var(--lh-booking-text);
  border-color: var(--lh-booking-line);
}

.c-booking-inline-root {
  font-size: 1rem;
}

.c-booking-modal-kicker,
.c-booking-inline-kicker,
.c-booking-flow-step,
.c-booking-dow,
.c-booking-legend-item,
.c-booking-day-meta,
.c-booking-slot-note,
.c-booking-form-label,
.c-booking-success-kicker,
.c-booking-success-summary span {
  font-size: .8125rem;
}

.c-booking-modal-copy p,
.c-booking-inline-copy p,
.c-booking-intro-copy p,
.c-booking-slots-title span,
.c-booking-empty-state,
.c-booking-form-note,
.c-booking-success-copy p,
.c-booking-confirmation-state p {
  font-size: 1rem;
  line-height: 1.65;
}

.c-booking-day,
.c-booking-slot,
.c-booking-form-control,
.c-booking-submit,
.c-booking-back-button,
.c-booking-next-button {
  font-size: 1rem;
}

.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,
.c-booking-slot:hover,
.c-booking-slot:focus-visible,
.c-booking-submit:focus-visible,
.c-booking-back-button:focus-visible,
.c-booking-next-button:focus-visible {
  border-color: var(--lh-booking-accent);
  box-shadow: var(--c-booking-form-focus-ring);
}

.c-booking-day.is-fully-booked,
.c-booking-slot.is-booked,
.c-booking-slot.is-past {
  background: color-mix(in srgb, var(--cv2-status-occupied, #8c9491) 16%, var(--lh-booking-bg));
  border-color: color-mix(in srgb, var(--cv2-status-occupied, #8c9491) 34%, transparent);
  color: color-mix(in srgb, var(--lh-booking-text) 70%, var(--cv2-status-occupied, #8c9491));
}

.c-booking-day.is-nearly-full,
.c-booking-slot.is-reserved,
.c-booking-slot.is-new {
  background: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 18%, var(--lh-booking-bg));
  border-color: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 34%, transparent);
  color: color-mix(in srgb, var(--lh-booking-text) 74%, var(--cv2-status-request, #d3a86a));
}

.c-booking-day.is-free-day,
.c-booking-slot.is-free,
.c-booking-slot.is-direct-bookable {
  background: color-mix(in srgb, var(--cv2-status-available, #4dbb72) 12%, var(--lh-booking-bg));
  border-color: color-mix(in srgb, var(--cv2-status-available, #4dbb72) 30%, transparent);
}

.c-booking-day.is-holiday {
  background: color-mix(in srgb, var(--cv2-special-attention, #c96b5a) 14%, var(--lh-booking-bg));
  border-color: color-mix(in srgb, var(--cv2-special-attention, #c96b5a) 30%, transparent);
}

.c-booking-success-overlay,
.c-booking-backdrop {
  background: transparent;
}

.c-booking-backdrop {
  background: color-mix(in srgb, var(--lh-booking-soft) 28%, #000);
}

@media (max-width: 48rem) {
  .c-booking-inline-root {
    font-size: 1rem;
  }

  .c-booking-inline-shell,
  .c-booking-card,
  .c-booking-slots,
  .c-booking-request-card {
    padding: 1rem;
  }
}


/* 3.0.5 Light/Dark cleanup + klare Tagespriorität */
.c-booking-inline-header {
  background: transparent;
  border-bottom: 0;
}

.c-booking-inline-root,
.c-booking-confirmation-state,
.c-booking-success-shell {
  background: var(--lh-booking-soft);
}

.c-booking-success-summary > div,
.c-booking-card,
.c-booking-slots,
.c-booking-request-card,
.c-booking-mobile-day,
.c-booking-mobile-empty {
  background: var(--lh-booking-card);
}

.c-booking-day.is-past {
  background: var(--lh-booking-full-bg) !important;
  border-color: var(--lh-booking-occupied-border) !important;
  color: var(--lh-booking-muted) !important;
}

.c-booking-day.is-weekend:not(.is-blocked):not(.is-past) {
  background: var(--lh-booking-weekend-bg) !important;
  border-color: var(--lh-booking-occupied-border) !important;
  opacity: 1;
}

.c-booking-day.has-free-slots:not(:disabled):hover,
.c-booking-day.has-free-slots:not(:disabled):focus-visible,
.c-booking-day.is-free-day:not(:disabled):hover,
.c-booking-day.is-free-day:not(:disabled):focus-visible {
  background: color-mix(in srgb, var(--cv2-status-available, #4dbb72) 22%, var(--lh-booking-card)) !important;
  border-color: var(--lh-booking-free-border) !important;
  box-shadow: 0 0 0 .1875rem color-mix(in srgb, var(--cv2-status-available, #4dbb72) 22%, transparent);
}

.c-booking-day.has-one-slot:not(:disabled):hover,
.c-booking-day.has-one-slot:not(:disabled):focus-visible,
.c-booking-day.is-nearly-full:not(:disabled):hover,
.c-booking-day.is-nearly-full:not(:disabled):focus-visible {
  background: color-mix(in srgb, var(--cv2-status-request, #d3a86a) 28%, var(--lh-booking-card)) !important;
  border-color: var(--lh-booking-request-border) !important;
  box-shadow: 0 0 0 .1875rem color-mix(in srgb, var(--cv2-status-request, #d3a86a) 22%, transparent);
}

.c-booking-day:not(:disabled):not(.is-selected):hover,
.c-booking-day:not(:disabled):not(.is-selected):focus-visible {
  transform: translateY(-1px);
}

.c-booking-day.is-selected,
.c-booking-day.is-selected:hover,
.c-booking-day.is-selected:focus-visible {
  background: linear-gradient(180deg, var(--lh-booking-accent) 0%, var(--lh-booking-accent-strong) 100%) !important;
  border-color: var(--lh-booking-accent-strong) !important;
  color: var(--button-text, var(--color-button-text, #fff)) !important;
  box-shadow: 0 0 0 .1875rem color-mix(in srgb, var(--lh-booking-accent) 16%, transparent);
  transform: none;
}

.c-booking-slot.is-direct-bookable,
.c-booking-slot.is-free:hover,
.c-booking-slot.is-free:focus-visible {
  color: var(--lh-booking-text);
}

.c-booking-slot.is-direct-bookable strong,
.c-booking-slot.is-direct-bookable span,
.c-booking-slot.is-direct-bookable small,
.c-booking-slot.is-free:hover strong,
.c-booking-slot.is-free:hover span,
.c-booking-slot.is-free:hover small,
.c-booking-slot.is-free:focus-visible strong,
.c-booking-slot.is-free:focus-visible span,
.c-booking-slot.is-free:focus-visible small {
  color: var(--lh-booking-text);
}


/* 3.0.7 Inline-Root an Theme-Seitenhintergrund angleichen */
.c-booking-inline-root,
.c-booking-inline-root.is-open,
.c-booking-inline-shell,
.c-booking-confirmation-state {
  background: transparent !important;
}

/* Die obere Intro-Zeile soll ebenfalls nicht als eigene Fläche erscheinen. */
.c-booking-inline-header {
  background: transparent !important;
}

/* 4.0.1 UI polish: dark-form readability + slot hover headroom */
.c-booking-slots-grid {
  padding-top: 10px;
  scroll-padding-top: 10px;
}

html[data-theme="dark"] .c-booking-form input,
html[data-theme="dark"] .c-booking-form textarea,
html[data-theme="dark"] .c-booking-form select {
  background: color-mix(in srgb, var(--lh-booking-bg) 82%, #091214 18%);
  color: var(--lh-booking-text);
  border-color: color-mix(in srgb, var(--lh-booking-line) 82%, rgba(182, 220, 216, .28) 18%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}

html[data-theme="dark"] .c-booking-form input::placeholder,
html[data-theme="dark"] .c-booking-form textarea::placeholder,
html[data-theme="dark"] .c-booking-form select::placeholder {
  color: color-mix(in srgb, var(--lh-booking-muted) 82%, #dfeeed 18%);
  opacity: .92;
}

html[data-theme="dark"] .c-booking-form input:focus,
html[data-theme="dark"] .c-booking-form textarea:focus,
html[data-theme="dark"] .c-booking-form select:focus {
  border-color: color-mix(in srgb, var(--lh-booking-accent) 78%, white 22%);
  box-shadow: 0 0 0 3px rgba(94,155,153,.16), inset 0 1px 0 rgba(255,255,255,.04);
}

html[data-theme="dark"] .c-booking-form input:-webkit-autofill,
html[data-theme="dark"] .c-booking-form input:-webkit-autofill:hover,
html[data-theme="dark"] .c-booking-form input:-webkit-autofill:focus,
html[data-theme="dark"] .c-booking-form textarea:-webkit-autofill,
html[data-theme="dark"] .c-booking-form textarea:-webkit-autofill:hover,
html[data-theme="dark"] .c-booking-form textarea:-webkit-autofill:focus,
html[data-theme="dark"] .c-booking-form select:-webkit-autofill,
html[data-theme="dark"] .c-booking-form select:-webkit-autofill:hover,
html[data-theme="dark"] .c-booking-form select:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--lh-booking-text);
  caret-color: var(--lh-booking-text);
  box-shadow: 0 0 0 1000px color-mix(in srgb, var(--lh-booking-bg) 82%, #091214 18%) inset, 0 0 0 1px color-mix(in srgb, var(--lh-booking-line) 82%, rgba(182, 220, 216, .28) 18%) inset;
  transition: background-color 9999s ease-in-out 0s;
}
