.ez-booking {
  background: var(--ez-booking-surface, var(--ez-color-surface, #fff));
  border-color: var(--ez-booking-border, var(--ez-color-border, #d7dce2));
  border-radius: var(--ez-booking-radius, 16px);
  border-style: solid;
  border-width: var(--ez-booking-border-width, 1px);
  box-shadow: var(--ez-booking-shadow, 0 18px 55px rgba(15, 23, 42, 0.08));
  color: var(--ez-booking-text, var(--ez-color-text, #172033));
  height: var(--ez-booking-height, auto);
  margin-block: var(--ez-booking-margin-block, 2rem);
  margin-inline: var(--ez-booking-margin-inline, auto);
  max-height: var(--ez-booking-max-height, none);
  max-width: var(--ez-booking-max-width, 780px);
  min-height: var(--ez-booking-min-height, 0);
  overflow-y: var(--ez-booking-overflow-y, visible);
  padding: var(--ez-booking-padding, clamp(1rem, 4vw, 2.5rem));
  text-align: var(--ez-booking-text-align, left);
  width: min(100%, var(--ez-booking-width, 100%));
}

.ez-booking.alignleft,
.ez-booking.has-text-align-left { margin-left: 0; margin-right: auto; }
.ez-booking.aligncenter,
.ez-booking.has-text-align-center { margin-left: auto; margin-right: auto; }
.ez-booking.alignright,
.ez-booking.has-text-align-right { margin-left: auto; margin-right: 0; }
.ez-booking.alignwide,
.ez-booking.alignfull { max-width: 100%; width: 100%; }
.ez-booking--unavailable { padding: 1rem; }

.ez-booking *,
.ez-booking *::before,
.ez-booking *::after {
  box-sizing: border-box;
}

.ez-booking__progress {
  display: grid;
  gap: var(--ez-booking-progress-gap, 0.4rem);
  grid-auto-columns: minmax(0, 1fr);
  grid-auto-flow: column;
  margin-bottom: 2rem;
}

.ez-booking__progress span {
  align-items: center;
  background: var(--ez-booking-progress-bg, var(--ez-color-background-alt, #e8edf3));
  border-radius: var(--ez-booking-progress-radius, 999px);
  color: var(--ez-booking-progress-color, var(--ez-text-muted, #526173));
  display: flex;
  font-size: var(--ez-booking-progress-font-size, 0.75rem);
  font-weight: 800;
  height: var(--ez-booking-progress-height, 28px);
  justify-content: center;
}

.ez-booking__progress .is-active {
  background: var(--ez-booking-progress-active-bg, var(--ez-color-accent, #2563eb));
  color: var(--ez-booking-progress-active-color, var(--ez-text-inverse, #fff));
}

.ez-booking__step { display: none; }
.ez-booking__step.is-active { display: block; }

.ez-booking__qualification-questions { display: grid; gap: var(--ez-booking-field-gap, 1rem); }
.ez-booking__qualification-questions fieldset { border: 0; margin: 0; padding: 0; }
.ez-booking__qualification-questions legend { color: var(--ez-booking-label-color, var(--ez-color-text, inherit)); font-weight: 700; margin-bottom: 0.5rem; }
.ez-booking__qualification-option { display: flex; gap: 0.65rem; margin-block: 0.4rem; }
.ez-booking__qualification-option input { accent-color: var(--ez-color-accent, currentColor); margin-top: 0.2em; }
.ez-booking__help,.ez-booking__qualification-intro { color: var(--ez-booking-muted, var(--ez-text-muted, inherit)); }
.ez-booking__qualification-failure { background: var(--ez-booking-error-bg, color-mix(in srgb, var(--ez-color-warning, #b42318) 10%, transparent)); border-radius: var(--ez-booking-message-radius, var(--ez-radius-card, 8px)); color: var(--ez-booking-error-color, var(--ez-color-text, #b42318)); margin-block: 1rem; padding: 1rem; }

.ez-booking__kicker {
  color: var(--ez-booking-kicker-color, var(--ez-text-accent, var(--ez-color-accent, #2563eb)));
  font-size: var(--ez-booking-kicker-size, 0.78rem);
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.ez-booking h1,
.ez-booking h2 {
  color: var(--ez-booking-heading-color, inherit);
  font-size: var(--ez-booking-heading-size, inherit);
  font-weight: var(--ez-booking-heading-weight, inherit);
  line-height: var(--ez-booking-heading-line-height, inherit);
  margin: 0.25rem 0 1.25rem;
}

.ez-booking__services,
.ez-booking__slots {
  display: grid;
}

.ez-booking__services {
  gap: var(--ez-booking-service-gap, 0.75rem);
  grid-template-columns: repeat(auto-fit, minmax(var(--ez-booking-service-min-width, 180px), 1fr));
}

.ez-booking__slots {
  gap: var(--ez-booking-slot-gap, 0.75rem);
  grid-template-columns: repeat(auto-fit, minmax(var(--ez-booking-slot-min-width, 180px), 1fr));
}

.ez-booking__choice,
.ez-booking__slot {
  cursor: pointer;
  display: block;
  position: relative;
}

.ez-booking__choice input,
.ez-booking__slot input {
  inset: 0;
  opacity: 0;
  position: absolute;
}

.ez-booking__choice span {
  background: var(--ez-booking-service-bg, var(--ez-color-surface, #fff));
  border: 1px solid var(--ez-booking-service-border, var(--ez-booking-border, #d7dce2));
  border-radius: var(--ez-booking-service-radius, 12px);
  display: grid;
  gap: 0.25rem;
  padding: var(--ez-booking-service-padding, 1rem);
  transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}

.ez-booking__slot {
  background: var(--ez-booking-slot-bg, var(--ez-color-surface, #fff));
  border: 1px solid var(--ez-booking-slot-border, var(--ez-booking-border, #d7dce2));
  border-radius: var(--ez-booking-slot-radius, 12px);
  display: grid;
  gap: 0.25rem;
  padding: var(--ez-booking-slot-padding, 1rem);
  transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}

.ez-booking__choice:hover span {
  border-color: var(--ez-booking-service-hover-border, var(--ez-color-accent, #2563eb));
}

.ez-booking__choice input:checked + span {
  background: var(--ez-booking-service-selected-bg, var(--ez-booking-service-bg, #fff));
  border-color: var(--ez-booking-service-selected-border, var(--ez-color-accent, #2563eb));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ez-booking-service-selected-border, var(--ez-color-accent, #2563eb)) 22%, transparent);
}

.ez-booking__slot:has(input:checked) {
  background: var(--ez-booking-slot-selected-bg, var(--ez-booking-slot-bg, #fff));
  border-color: var(--ez-booking-slot-selected-border, var(--ez-color-accent, #2563eb));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ez-booking-slot-selected-border, var(--ez-color-accent, #2563eb)) 22%, transparent);
}

.ez-booking__choice input:focus-visible + span,
.ez-booking__slot:has(input:focus-visible) {
  outline: 3px solid color-mix(in srgb, var(--ez-booking-focus, var(--ez-border-focus, var(--ez-color-accent, #2563eb))) 35%, transparent);
  outline-offset: 2px;
}

.ez-booking__choice small,
.ez-booking__slot small {
  color: var(--ez-booking-muted, var(--ez-text-muted, #667085));
}

.ez-booking__choice em {
  font-size: 0.88rem;
  font-style: normal;
  margin-top: 0.35rem;
}

.ez-booking__fields {
  display: grid;
  gap: var(--ez-booking-field-gap, 1rem);
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ez-booking label {
  color: var(--ez-booking-label-color, inherit);
  font-weight: 650;
}

.ez-booking input,
.ez-booking select,
.ez-booking textarea {
  background: var(--ez-booking-field-bg, var(--ez-color-surface, #fff));
  border: 1px solid var(--ez-booking-field-border, var(--ez-booking-border, #d7dce2));
  border-radius: var(--ez-booking-field-radius, 8px);
  color: var(--ez-booking-field-color, inherit);
  display: block;
  font: inherit;
  margin-top: 0.4rem;
  padding: var(--ez-booking-field-padding, 0.75rem);
  width: 100%;
}

.ez-booking input::placeholder,
.ez-booking textarea::placeholder {
  color: var(--ez-booking-placeholder, var(--ez-booking-muted, var(--ez-text-muted, #667085)));
}

.ez-booking input:focus-visible,
.ez-booking select:focus-visible,
.ez-booking textarea:focus-visible {
  border-color: var(--ez-booking-focus, var(--ez-border-focus, var(--ez-color-accent, #2563eb)));
  outline: 3px solid color-mix(in srgb, var(--ez-booking-focus, var(--ez-border-focus, var(--ez-color-accent, #2563eb))) 25%, transparent);
  outline-offset: 1px;
}

.ez-booking fieldset { border: 0; margin: 1.5rem 0; padding: 0; }
.ez-booking legend { color: var(--ez-booking-label-color, inherit); font-weight: 800; margin-bottom: 0.75rem; }
.ez-booking__wide { grid-column: 1 / -1; }

.ez-booking__actions,
.ez-booking__manage-actions {
  align-items: center;
  display: flex;
  gap: var(--ez-booking-actions-gap, 1rem);
}

.ez-booking__actions { justify-content: flex-end; margin-top: 1.5rem; }
.ez-booking__manage-actions { margin-top: 1.5rem; }

.ez-booking__button,
.ez-booking__slot-button,
.ez-booking__link {
  --ez-booking-action-bg: var(--ez-booking-button-bg, var(--ez-button-fill-bg, var(--ez-color-accent, #2563eb)));
  --ez-booking-action-color: var(--ez-booking-button-color, var(--ez-button-fill-color, var(--ez-color-text, #fff)));
  --ez-booking-action-border: var(--ez-button-fill-border, var(--ez-color-accent, #2563eb));
  --ez-booking-action-hover-bg: var(--ez-booking-button-hover-bg, var(--ez-button-fill-hover-bg, var(--ez-color-text, #172033)));
  --ez-booking-action-hover-color: var(--ez-booking-button-hover-color, var(--ez-button-fill-hover-color, var(--ez-color-background, #fff)));
  --ez-booking-action-hover-border: var(--ez-button-fill-hover-border, var(--ez-color-text, #172033));
  --ez-booking-action-border-width: var(--ez-button-fill-border-width, var(--ez-button-border-width, 1px));
  --ez-booking-action-width: var(--ez-button-fill-width, var(--ez-button-width, auto));
  --ez-booking-action-mobile-width: var(--ez-button-fill-mobile-width, var(--ez-button-mobile-width, 100%));
  background: var(--ez-booking-action-bg);
  border: var(--ez-booking-action-border-width) var(--ez-button-border-style, solid) var(--ez-booking-action-border);
  border-radius: var(--ez-booking-button-radius, var(--ez-button-radius, 8px));
  color: var(--ez-booking-action-color);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--ez-font-body, inherit);
  font-size: var(--ez-button-font-size, 1rem);
  font-weight: var(--ez-booking-button-weight, var(--ez-button-font-weight, 700));
  justify-content: center;
  letter-spacing: var(--ez-button-letter-spacing, 0);
  line-height: var(--ez-button-line-height, 1.2);
  min-height: var(--ez-button-min-height, 2.75rem);
  padding: var(--ez-booking-button-padding-y, var(--ez-button-padding-y, 0.75rem)) var(--ez-booking-button-padding-x, var(--ez-button-padding-x, 1.1rem));
  text-decoration: none;
  text-transform: var(--ez-button-text-transform, none);
  transition: background-color var(--ez-button-transition, 250ms) ease, border-color var(--ez-button-transition, 250ms) ease, color var(--ez-button-transition, 250ms) ease, transform var(--ez-button-transition, 250ms) ease, box-shadow var(--ez-button-transition, 250ms) ease;
  width: var(--ez-booking-action-width);
}

.ez-booking__button:hover,
.ez-booking__slot-button:hover,
.ez-booking__link:hover {
  background: var(--ez-booking-action-hover-bg);
  border-color: var(--ez-booking-action-hover-border);
  box-shadow: var(--ez-button-hover-shadow, none);
  color: var(--ez-booking-action-hover-color);
  transform: var(--ez-button-hover-transform, none);
}

.ez-booking__button:focus-visible,
.ez-booking__slot-button:focus-visible,
.ez-booking__link:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--ez-booking-focus, var(--ez-border-focus, var(--ez-color-accent, #2563eb))) 35%, transparent);
  outline-offset: 3px;
}

.ez-booking__button:disabled,
.ez-booking__slot-button:disabled { cursor: wait; opacity: 0.55; }

.ez-booking :is([data-ez-booking-action="back"],[data-ez-booking-action="cancel"]) {
  --ez-booking-action-bg: var(--ez-button-outline-bg, transparent);
  --ez-booking-action-color: var(--ez-button-outline-color, var(--ez-color-text, currentColor));
  --ez-booking-action-border: var(--ez-button-outline-border, var(--ez-color-text, currentColor));
  --ez-booking-action-hover-bg: var(--ez-button-outline-hover-bg, var(--ez-color-text, currentColor));
  --ez-booking-action-hover-color: var(--ez-button-outline-hover-color, var(--ez-color-background, #fff));
  --ez-booking-action-hover-border: var(--ez-button-outline-hover-border, var(--ez-color-text, currentColor));
  --ez-booking-action-border-width: var(--ez-button-outline-border-width, var(--ez-button-border-width, 1px));
  --ez-booking-action-width: var(--ez-button-outline-width, var(--ez-button-width, auto));
  --ez-booking-action-mobile-width: var(--ez-button-outline-mobile-width, var(--ez-button-mobile-width, 100%));
}
.ez-booking [data-ez-booking-action="qualification-failure"] {
  --ez-booking-action-bg: var(--ez-button-ez-outline-bg, transparent);
  --ez-booking-action-color: var(--ez-button-ez-outline-color, var(--ez-color-text, currentColor));
  --ez-booking-action-border: var(--ez-button-ez-outline-border, var(--ez-color-accent, currentColor));
  --ez-booking-action-hover-bg: var(--ez-button-ez-outline-hover-bg, var(--ez-color-text, currentColor));
  --ez-booking-action-hover-color: var(--ez-button-ez-outline-hover-color, var(--ez-color-background, #fff));
  --ez-booking-action-hover-border: var(--ez-button-ez-outline-hover-border, var(--ez-color-text, currentColor));
  --ez-booking-action-border-width: var(--ez-button-ez-outline-border-width, var(--ez-button-border-width, 1px));
  --ez-booking-action-width: var(--ez-button-ez-outline-width, var(--ez-button-width, auto));
  --ez-booking-action-mobile-width: var(--ez-button-ez-outline-mobile-width, var(--ez-button-mobile-width, 100%));
}

.ez-booking__message:not(:empty),
.ez-booking__error,
.ez-booking__success {
  border-radius: var(--ez-booking-message-radius, 8px);
  margin: 1rem 0;
  padding: 0.75rem;
}

.ez-booking__message:not(:empty) {
  background: var(--ez-booking-message-bg, #eef6ff);
  color: var(--ez-booking-message-color, inherit);
}

.ez-booking__message.is-error,
.ez-booking__error {
  background: var(--ez-booking-error-bg, #fff1f0);
  color: var(--ez-booking-error-color, #b42318);
}

.ez-booking__message.is-success,
.ez-booking__success {
  background: var(--ez-booking-success-bg, #ecfdf3);
  color: var(--ez-booking-success-color, #067647);
}

.ez-booking.is-loading { cursor: progress; }
.ez-booking.is-loading .ez-booking__message:not(:empty) { animation: ez-booking-pulse 1.2s ease-in-out infinite; }

.ez-booking__honeypot { height: 1px; left: -9999px; overflow: hidden; position: absolute; width: 1px; }
.ez-booking__summary,
.ez-booking--manage dl { display: grid; gap: 0.75rem; }

.ez-booking__summary div,
.ez-booking--manage dl div {
  border-bottom: 1px solid var(--ez-booking-summary-divider, var(--ez-booking-border, #d7dce2));
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  padding: 0.75rem 0;
}

.ez-booking--manage dt { font-weight: 750; }
.ez-booking--manage dd { margin: 0; text-transform: capitalize; }

.ez-booking__reschedule {
  background: var(--ez-booking-reschedule-bg, transparent);
  border-top: 1px solid var(--ez-booking-summary-divider, var(--ez-booking-border, #d7dce2));
  margin-top: 1.5rem;
  padding: 1.5rem 0 0;
}

.ez-booking__slot-button { margin: 0.25rem; }
.ez-booking__success { padding: 2rem; text-align: center; }

@keyframes ez-booking-pulse { 50% { opacity: 0.68; } }

@media (max-width: 1024px) and (min-width: 761px) {
  .ez-booking { height: var(--ez-booking-height-tablet, var(--ez-booking-height, auto)); max-height: var(--ez-booking-max-height-tablet, var(--ez-booking-max-height, none)); max-width: var(--ez-booking-max-width-tablet, var(--ez-booking-max-width, 780px)); min-height: var(--ez-booking-min-height-tablet, var(--ez-booking-min-height, 0)); padding: var(--ez-booking-padding-tablet, var(--ez-booking-padding, clamp(1rem, 4vw, 2.5rem))); width: min(100%, var(--ez-booking-width-tablet, var(--ez-booking-width, 100%))); }
  .ez-booking h1,
  .ez-booking h2 { font-size: var(--ez-booking-heading-size-tablet, var(--ez-booking-heading-size, inherit)); }
  .ez-booking__services { grid-template-columns: var(--ez-booking-service-columns-tablet, repeat(auto-fit, minmax(var(--ez-booking-service-min-width, 180px), 1fr))); }
  .ez-booking__slots { grid-template-columns: var(--ez-booking-slot-columns-tablet, repeat(auto-fit, minmax(var(--ez-booking-slot-min-width, 180px), 1fr))); }
  .ez-booking__fields { grid-template-columns: var(--ez-booking-field-columns-tablet, repeat(2, minmax(0, 1fr))); }
}

@media (max-width: 760px) {
  .ez-booking { height: var(--ez-booking-height-mobile, var(--ez-booking-height-tablet, var(--ez-booking-height, auto))); max-height: var(--ez-booking-max-height-mobile, var(--ez-booking-max-height-tablet, var(--ez-booking-max-height, none))); max-width: var(--ez-booking-max-width-mobile, var(--ez-booking-max-width-tablet, var(--ez-booking-max-width, 100%))); min-height: var(--ez-booking-min-height-mobile, var(--ez-booking-min-height-tablet, var(--ez-booking-min-height, 0))); padding: var(--ez-booking-padding-mobile, var(--ez-booking-padding-tablet, var(--ez-booking-padding, 1rem))); width: min(100%, var(--ez-booking-width-mobile, var(--ez-booking-width-tablet, var(--ez-booking-width, 100%)))); }
  .ez-booking h1,
  .ez-booking h2 { font-size: var(--ez-booking-heading-size-mobile, var(--ez-booking-heading-size-tablet, var(--ez-booking-heading-size, inherit))); }
  .ez-booking__services { grid-template-columns: var(--ez-booking-service-columns-mobile, 1fr); }
  .ez-booking__slots { grid-template-columns: var(--ez-booking-slot-columns-mobile, 1fr); }
  .ez-booking__fields { grid-template-columns: var(--ez-booking-field-columns-mobile, 1fr); }
  .ez-booking__wide { grid-column: auto; }
  .ez-booking__actions,
  .ez-booking__manage-actions {
    align-items: stretch;
    flex-direction: var(--ez-booking-actions-mobile, column-reverse);
  }
  .ez-booking__button,
  .ez-booking__slot-button,
  .ez-booking__link { width: var(--ez-booking-button-width-mobile, var(--ez-booking-action-mobile-width, 100%)); }
  .ez-booking__summary div,
  .ez-booking--manage dl div { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  .ez-booking *,
  .ez-booking *::before,
  .ez-booking *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
