/* Shared Calendar Appointment Website Builder component.
 * Calendar owns services, availability, readiness, booking, and lifecycle.
 * Website Builder owns only the four fixed compositions and the nested Edit
 * Form presentation contract. The baseline below is structural; all form
 * surface, border, typography, and control aesthetics come from form state.
 */
.wb-calendar-appts {
  display: grid;
  gap: 1.5rem;
  position: relative;
  background: var(--wb-feature-section-default-surface, #d3d3d3);
  color: inherit;
}

.wb-calendar-appts-copy {
  display: grid;
  gap: 0.75rem;
  align-content: center;
}

.wb-calendar-appts-copy h2,
.wb-calendar-appts-copy p,
.wb-calendar-appts-template-detail {
  margin: 0;
}

.wb-calendar-appts-card-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 2.5rem);
  align-items: center;
  max-width: 1180px;
  width: 100%;
  margin-inline: auto;
}

.wb-calendar-appts-panel-stack {
  display: grid;
  gap: 0.55rem;
  min-width: 0;
  align-content: start;
}

.wb-calendar-appts-card,
.wb-calendar-appts-calendar-wrap,
.wb-calendar-appts-compact-panel {
  --wb-calendar-form-font:
    ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
  --wb-calendar-form-size: 1rem;
  --wb-calendar-form-style-color: #0f172a;
  --wb-calendar-form-color: var(--wb-calendar-form-style-color);
  --wb-calendar-panel-surface: transparent;
  --wb-calendar-panel-border: transparent;
  --wb-calendar-panel-border-width: 0;
  --wb-calendar-panel-radius: 0;
  --wb-calendar-panel-shadow: none;
  --wb-calendar-panel-backdrop: none;
  --wb-calendar-control-surface: transparent;
  --wb-calendar-control-border: color-mix(
    in srgb,
    currentColor 24%,
    transparent
  );
  --wb-calendar-control-radius: 0.7rem;
  --wb-calendar-day-surface: color-mix(in srgb, currentColor 7%, transparent);
  --wb-calendar-day-available-surface: color-mix(
    in srgb,
    currentColor 11%,
    transparent
  );
  --wb-calendar-popover-surface: Canvas;
  position: relative;
  min-width: 0;
  overflow: visible;
  border: var(--wb-calendar-panel-border-width) solid
    var(--wb-calendar-panel-border);
  border-radius: var(--wb-calendar-panel-radius);
  background: var(--wb-calendar-panel-surface);
  color: var(--wb-calendar-form-color) !important;
  box-shadow: var(--wb-calendar-panel-shadow);
  backdrop-filter: var(--wb-calendar-panel-backdrop);
  font-family: var(--wb-calendar-form-font) !important;
  font-size: var(--wb-calendar-form-size);
}

.wb-calendar-appts-card,
.wb-calendar-appts-compact-panel {
  padding: clamp(1rem, 2.4vw, 1.5rem);
}

.wb-calendar-appts-calendar-wrap {
  padding: clamp(1rem, 2.8vw, 1.75rem);
}

/* Compact is a single panel, not a two-column layout — narrower cap than
   the two-column layouts above, since a single card stretched to 1180px
   would look sparse, not compact. */
.wb-calendar-appts-compact-panel {
  max-width: 620px;
  width: 100%;
  margin-inline: auto;
}

.wb-calendar-appts-form,
.wb-calendar-appts-source-controls,
.wb-calendar-appts-customer-details {
  display: grid;
  gap: 0.9rem;
}

/* `hidden` is Calendar runtime state. Structural grid declarations below must
   never make a hidden provider, notes field, or other conditional control
   visible again. */
.wb-calendar-appts [hidden] {
  display: none !important;
}

/* Card Left / Card Right are website-section cards, not full-height intake
   pages. Pair related controls on desktop so these presets stay comparable
   in height to the Reservation card layouts. */
.wb-calendar-appts-card .wb-calendar-appts-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.wb-calendar-appts-card .wb-calendar-appts-source-controls,
.wb-calendar-appts-card .wb-calendar-appts-customer-details {
  grid-column: 1 / -1;
}

.wb-calendar-appts-card .wb-calendar-appts-source-controls {
  grid-template-areas:
    "type provider"
    "detail detail";
}

.wb-calendar-appts-card
  .wb-calendar-appts-source-controls:has(
    [data-calendar-appts-provider-field][hidden]
  ) {
  grid-template-areas:
    "type type"
    "detail detail";
}

.wb-calendar-appts-card
  .wb-calendar-appts-source-controls
  > .wb-calendar-appts-field:first-child {
  grid-area: type;
}

.wb-calendar-appts-card
  .wb-calendar-appts-source-controls
  > [data-calendar-appts-provider-field] {
  grid-area: provider;
}

.wb-calendar-appts-card .wb-calendar-appts-template-detail {
  grid-area: detail;
}

.wb-calendar-appts-card .wb-calendar-appts-customer-details {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.wb-calendar-appts-card .wb-calendar-appts-customer-details > label {
  align-content: start;
}

.wb-calendar-appts-card .wb-calendar-appts-customer-details > .wb-consent,
.wb-calendar-appts-card .wb-calendar-appts-customer-details > .wb-public-btn {
  grid-column: 1 / -1;
}

.wb-calendar-appts-card .wb-consent {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 0.55rem;
}

.wb-calendar-appts-card .wb-consent input {
  width: auto;
  margin: 0.2rem 0 0;
}

.wb-calendar-appts-source-controls {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: end;
}

.wb-calendar-appts-template-detail {
  grid-column: 1 / -1;
  min-height: 1.2em;
  opacity: 0.78;
  font-size: 0.92em;
}

.wb-calendar-appts-field,
.wb-calendar-appts-form > label,
.wb-calendar-appts-customer-details > label {
  display: grid;
  gap: 0.35rem;
  min-width: 0;
}

.wb-calendar-appts-form input,
.wb-calendar-appts-form select,
.wb-calendar-appts-form textarea,
.wb-calendar-appts-date-trigger {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  border: 1px solid var(--wb-calendar-control-border);
  border-radius: var(--wb-calendar-control-radius);
  background: var(--wb-calendar-control-surface);
  color: inherit;
  padding: 0.72rem 0.8rem;
  font: inherit;
}

.wb-calendar-appts-calendar-layout {
  display: grid;
  /* ~40% calendar / ~60% form — was 62.5%/37.5%, even more calendar-dominant
     than the F&B Reservations equivalent. Capped to match the editor
     canvas's own "normal desktop" width (.website-builder-canvas) so it
     doesn't keep growing to fill an ultra-wide viewport. */
  grid-template-columns: minmax(13rem, 2fr) minmax(15rem, 3fr);
  gap: clamp(1rem, 3vw, 2rem);
  align-items: start;
  max-width: 1180px;
  width: 100%;
  margin-inline: auto;
}

.wb-calendar-appts-calendar-shell,
.wb-calendar-appts-selected-card {
  min-width: 0;
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
}

.wb-calendar-appts-month-header {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 0.6rem;
  align-items: center;
  margin-bottom: 0.75rem;
  text-align: center;
}

.wb-calendar-appts-month-nav {
  border: 1px solid var(--wb-calendar-control-border);
  border-radius: var(--wb-calendar-control-radius);
  background: var(--wb-calendar-control-surface);
  color: inherit;
  min-width: 2.4rem;
  min-height: 2.4rem;
  font: inherit;
}

.wb-calendar-appts-calendar-grid,
.wb-calendar-appts-popover-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.3rem;
}

.wb-calendar-appts-calendar-weekday,
.wb-calendar-appts-calendar-blank,
.wb-calendar-appts-calendar-day {
  display: grid;
  place-items: center;
  min-width: 0;
  aspect-ratio: 1;
}

.wb-calendar-appts-calendar-weekday {
  aspect-ratio: auto;
  min-height: 1.5rem;
  opacity: 0.7;
  font-size: 0.8em;
}

.wb-calendar-appts-calendar-day {
  border: 1px solid transparent;
  border-radius: var(--wb-calendar-control-radius);
  background: var(--wb-calendar-day-surface);
  color: inherit;
  font: inherit;
}

.wb-calendar-appts-calendar-day.is-available {
  border-color: var(--wb-calendar-control-border);
  background: var(--wb-calendar-day-available-surface);
  cursor: pointer;
}

.wb-calendar-appts-calendar-day.is-selected {
  outline: 2px solid currentColor;
  outline-offset: 1px;
}

.wb-calendar-appts-calendar-day:disabled,
.wb-calendar-appts-month-nav:disabled {
  opacity: 0.34;
  cursor: not-allowed;
}

.wb-calendar-appts-selected-card {
  display: grid;
  gap: 0.9rem;
}

.wb-calendar-appts-selected-date {
  margin: 0;
  font-weight: 600;
}

.wb-calendar-appts-date-field {
  position: relative;
  min-width: 0;
  display: grid;
  gap: 0.35rem;
}

.wb-calendar-appts-date-field-label {
  display: block;
}

.wb-calendar-appts-date-trigger {
  display: block;
  text-align: left;
}

.wb-calendar-appts-date-popover {
  display: none;
  position: absolute;
  z-index: 20;
  inset-inline-start: 0;
  top: calc(100% + 0.45rem);
  width: min(22rem, 90vw);
  padding: 0.9rem;
  border: 1px solid var(--wb-calendar-control-border);
  border-radius: var(--wb-calendar-panel-radius, 0.85rem);
  background: var(--wb-calendar-popover-surface);
  color: var(--wb-calendar-form-color);
  box-shadow: var(--wb-calendar-panel-shadow);
}

.wb-calendar-appts-date-popover.is-open {
  display: block;
}

.wb-calendar-appts-customer-details {
  margin-top: 0.25rem;
}

.wb-calendar-appts-compact .wb-calendar-appts-customer-details {
  display: none;
}

.wb-calendar-appts-compact .wb-calendar-appts-customer-details.is-expanded {
  display: grid;
}

.wb-calendar-appts-compact-row {
  display: grid;
  grid-template-columns: minmax(12rem, 1.25fr) minmax(10rem, 0.9fr) minmax(
      9rem,
      0.75fr
    ) auto;
  grid-template-areas: "source date time action";
  gap: 0.75rem;
  align-items: start;
}

.wb-calendar-appts-compact-row .wb-calendar-appts-source-controls {
  grid-area: source;
  grid-template-columns: minmax(0, 1fr);
}

.wb-calendar-appts-compact-row .wb-calendar-appts-template-detail {
  display: none;
}

.wb-calendar-appts-compact-row .wb-calendar-appts-date-field {
  grid-area: date;
}

.wb-calendar-appts-compact-row > .wb-calendar-appts-field {
  grid-area: time;
}

.wb-calendar-appts-compact-row > [data-calendar-appts-continue] {
  grid-area: action;
  align-self: start;
  justify-self: end;
  margin-top: 0;
}

.wb-calendar-appts-compact .wb-calendar-appts-date-popover {
  top: auto;
  bottom: calc(100% + 0.45rem);
}

/* Status is transient Calendar-owned readiness/result state. It is a
   horizontal banner above the form card, not an overlay inside the card and
   not a section-level grid item. */
.wb-calendar-appts-status {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin: 0;
  min-height: 0;
  padding: 0.52rem 0.72rem;
  border: 1px solid #d1d5db;
  border-radius: 0.55rem;
  background: #ffffff;
  color: #000000 !important;
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1.3;
  pointer-events: none;
}

.wb-calendar-appts-status:empty {
  display: none;
}

.wb-calendar-appts-status.is-error {
  border-color: #dc2626;
  border-inline-start-width: 4px;
  background: #ffffff;
  color: #000000 !important;
  font-weight: 800;
}

.wb-calendar-appts-manage {
  display: grid;
  gap: 0.75rem;
}

.wb-calendar-appts-manage-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
}

/* Form Style is the only preset-aesthetic authority inside Calendar forms. */
.wb-calendar-appts-card[data-form-style="glass"],
.wb-calendar-appts-calendar-wrap[data-form-style="glass"],
.wb-calendar-appts-compact-panel[data-form-style="glass"] {
  --wb-calendar-form-style-color: #0f172a;
  --wb-calendar-panel-surface: color-mix(in srgb, #fff 78%, transparent);
  --wb-calendar-panel-border: rgba(15, 23, 42, 0.16);
  --wb-calendar-panel-border-width: 1px;
  --wb-calendar-panel-radius: 1rem;
  --wb-calendar-panel-shadow: 0 14px 36px rgba(15, 23, 42, 0.12);
  --wb-calendar-panel-backdrop: blur(16px);
  --wb-calendar-control-surface: rgba(255, 255, 255, 0.68);
  --wb-calendar-control-border: rgba(15, 23, 42, 0.18);
  --wb-calendar-popover-surface: color-mix(in srgb, #fff 96%, transparent);
}

.wb-calendar-appts-card[data-form-style="cct_app"],
.wb-calendar-appts-calendar-wrap[data-form-style="cct_app"],
.wb-calendar-appts-compact-panel[data-form-style="cct_app"] {
  --wb-calendar-form-style-color: #f8fbff;
  --wb-calendar-panel-surface: linear-gradient(
    135deg,
    rgba(6, 21, 40, 0.96),
    rgba(15, 23, 42, 0.98) 58%,
    rgba(18, 62, 114, 0.94)
  );
  --wb-calendar-panel-border: rgba(56, 189, 248, 0.32);
  --wb-calendar-panel-border-width: 1px;
  --wb-calendar-panel-radius: 1.05rem;
  --wb-calendar-panel-shadow:
    0 18px 44px rgba(2, 6, 23, 0.46), inset 0 1px 0 rgba(255, 255, 255, 0.045);
  --wb-calendar-panel-backdrop: blur(14px);
  --wb-calendar-control-surface: rgba(15, 23, 42, 0.72);
  --wb-calendar-control-border: rgba(56, 189, 248, 0.28);
  --wb-calendar-day-surface: rgba(255, 255, 255, 0.06);
  --wb-calendar-day-available-surface: rgba(56, 189, 248, 0.16);
  --wb-calendar-popover-surface: #081426;
}

.wb-calendar-appts-card[data-form-style="light"],
.wb-calendar-appts-calendar-wrap[data-form-style="light"],
.wb-calendar-appts-compact-panel[data-form-style="light"] {
  --wb-calendar-form-style-color: #172033;
  --wb-calendar-panel-surface: #fff;
  --wb-calendar-panel-border: #dbe3ee;
  --wb-calendar-panel-border-width: 1px;
  --wb-calendar-panel-radius: 1rem;
  --wb-calendar-panel-shadow: 0 10px 28px rgba(15, 23, 42, 0.09);
  --wb-calendar-control-surface: #f8fafc;
  --wb-calendar-control-border: #cbd5e1;
  --wb-calendar-popover-surface: #fff;
}

.wb-calendar-appts-card[data-form-style="dark"],
.wb-calendar-appts-calendar-wrap[data-form-style="dark"],
.wb-calendar-appts-compact-panel[data-form-style="dark"] {
  --wb-calendar-form-style-color: #fff;
  --wb-calendar-panel-surface: #111827;
  --wb-calendar-panel-border: rgba(255, 255, 255, 0.2);
  --wb-calendar-panel-border-width: 1px;
  --wb-calendar-panel-radius: 1rem;
  --wb-calendar-panel-shadow: 0 16px 38px rgba(2, 6, 23, 0.34);
  --wb-calendar-control-surface: rgba(255, 255, 255, 0.08);
  --wb-calendar-control-border: rgba(255, 255, 255, 0.24);
  --wb-calendar-day-surface: rgba(255, 255, 255, 0.06);
  --wb-calendar-day-available-surface: rgba(96, 165, 250, 0.18);
  --wb-calendar-popover-surface: #111827;
}

.wb-calendar-appts-card[data-form-style="blue"],
.wb-calendar-appts-calendar-wrap[data-form-style="blue"],
.wb-calendar-appts-compact-panel[data-form-style="blue"] {
  --wb-calendar-form-style-color: #172033;
  --wb-calendar-panel-surface: #dbeafe;
  --wb-calendar-panel-border: #93c5fd;
  --wb-calendar-panel-border-width: 1px;
  --wb-calendar-panel-radius: 1rem;
  --wb-calendar-panel-shadow: 0 12px 30px rgba(37, 99, 235, 0.14);
  --wb-calendar-control-surface: rgba(255, 255, 255, 0.68);
  --wb-calendar-control-border: #93c5fd;
  --wb-calendar-popover-surface: #eff6ff;
}

.wb-calendar-appts-card[data-form-style="minimal"],
.wb-calendar-appts-calendar-wrap[data-form-style="minimal"],
.wb-calendar-appts-compact-panel[data-form-style="minimal"] {
  --wb-calendar-form-style-color: currentColor;
  --wb-calendar-panel-surface: transparent;
  --wb-calendar-panel-border: transparent;
  --wb-calendar-panel-border-width: 0;
  --wb-calendar-panel-radius: 0;
  --wb-calendar-panel-shadow: none;
  --wb-calendar-panel-backdrop: none;
  --wb-calendar-control-surface: transparent;
  --wb-calendar-control-border: color-mix(
    in srgb,
    currentColor 28%,
    transparent
  );
  --wb-calendar-popover-surface: Canvas;
}

.wb-calendar-appts-card[data-form-panel-bg-color="white"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="white"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="white"] {
  --wb-calendar-panel-surface: #ffffff;
  --wb-calendar-popover-surface: #ffffff;
}

.wb-calendar-appts-card[data-form-panel-bg-color="offwhite"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="offwhite"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="offwhite"] {
  --wb-calendar-panel-surface: #f8fafc;
  --wb-calendar-popover-surface: #f8fafc;
}

.wb-calendar-appts-card[data-form-panel-bg-color="slate"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="slate"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="slate"] {
  --wb-calendar-panel-surface: #0f172a;
  --wb-calendar-popover-surface: #0f172a;
}

.wb-calendar-appts-card[data-form-panel-bg-color="lightgray"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="lightgray"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="lightgray"] {
  --wb-calendar-panel-surface: #d3d3d3;
  --wb-calendar-popover-surface: #d3d3d3;
}

.wb-calendar-appts-card[data-form-panel-bg-color="gray"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="gray"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="gray"] {
  --wb-calendar-panel-surface: #808080;
  --wb-calendar-popover-surface: #808080;
}

.wb-calendar-appts-card[data-form-panel-bg-color="zinc"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="zinc"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="zinc"] {
  --wb-calendar-panel-surface: #f4f4f5;
  --wb-calendar-popover-surface: #f4f4f5;
}

.wb-calendar-appts-card[data-form-panel-bg-color="red"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="red"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="red"] {
  --wb-calendar-panel-surface: #fee2e2;
  --wb-calendar-popover-surface: #fee2e2;
}

.wb-calendar-appts-card[data-form-panel-bg-color="orange"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="orange"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="orange"] {
  --wb-calendar-panel-surface: #ffedd5;
  --wb-calendar-popover-surface: #ffedd5;
}

.wb-calendar-appts-card[data-form-panel-bg-color="amber"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="amber"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="amber"] {
  --wb-calendar-panel-surface: #fef3c7;
  --wb-calendar-popover-surface: #fef3c7;
}

.wb-calendar-appts-card[data-form-panel-bg-color="yellow"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="yellow"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="yellow"] {
  --wb-calendar-panel-surface: #fef9c3;
  --wb-calendar-popover-surface: #fef9c3;
}

.wb-calendar-appts-card[data-form-panel-bg-color="lime"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="lime"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="lime"] {
  --wb-calendar-panel-surface: #ecfccb;
  --wb-calendar-popover-surface: #ecfccb;
}

.wb-calendar-appts-card[data-form-panel-bg-color="green"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="green"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="green"] {
  --wb-calendar-panel-surface: #dcfce7;
  --wb-calendar-popover-surface: #dcfce7;
}

.wb-calendar-appts-card[data-form-panel-bg-color="emerald"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="emerald"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="emerald"] {
  --wb-calendar-panel-surface: #d1fae5;
  --wb-calendar-popover-surface: #d1fae5;
}

.wb-calendar-appts-card[data-form-panel-bg-color="teal"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="teal"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="teal"] {
  --wb-calendar-panel-surface: #ccfbf1;
  --wb-calendar-popover-surface: #ccfbf1;
}

.wb-calendar-appts-card[data-form-panel-bg-color="cyan"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="cyan"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="cyan"] {
  --wb-calendar-panel-surface: #cffafe;
  --wb-calendar-popover-surface: #cffafe;
}

.wb-calendar-appts-card[data-form-panel-bg-color="sky"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="sky"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="sky"] {
  --wb-calendar-panel-surface: #e0f2fe;
  --wb-calendar-popover-surface: #e0f2fe;
}

.wb-calendar-appts-card[data-form-panel-bg-color="blue"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="blue"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="blue"] {
  --wb-calendar-panel-surface: #dbeafe;
  --wb-calendar-popover-surface: #dbeafe;
}

.wb-calendar-appts-card[data-form-panel-bg-color="indigo"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="indigo"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="indigo"] {
  --wb-calendar-panel-surface: #e0e7ff;
  --wb-calendar-popover-surface: #e0e7ff;
}

.wb-calendar-appts-card[data-form-panel-bg-color="violet"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="violet"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="violet"] {
  --wb-calendar-panel-surface: #ede9fe;
  --wb-calendar-popover-surface: #ede9fe;
}

.wb-calendar-appts-card[data-form-panel-bg-color="purple"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="purple"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="purple"] {
  --wb-calendar-panel-surface: #f3e8ff;
  --wb-calendar-popover-surface: #f3e8ff;
}

.wb-calendar-appts-card[data-form-panel-bg-color="rose"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="rose"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="rose"] {
  --wb-calendar-panel-surface: #ffe4e6;
  --wb-calendar-popover-surface: #ffe4e6;
}

.wb-calendar-appts-card[data-form-panel-bg-color="slate"][data-form-text-color="default"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="slate"][data-form-text-color="default"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="slate"][data-form-text-color="default"],
.wb-calendar-appts-card[data-form-panel-bg-color="gray"][data-form-text-color="default"],
.wb-calendar-appts-calendar-wrap[data-form-panel-bg-color="gray"][data-form-text-color="default"],
.wb-calendar-appts-compact-panel[data-form-panel-bg-color="gray"][data-form-text-color="default"] {
  --wb-calendar-form-color: #fff;
}

.wb-calendar-appts-card[data-form-font-key="default"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="default"],
.wb-calendar-appts-compact-panel[data-form-font-key="default"] {
  --wb-calendar-form-font:
    ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="inter"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="inter"],
.wb-calendar-appts-compact-panel[data-form-font-key="inter"] {
  --wb-calendar-form-font: Inter, ui-sans-serif, system-ui, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="arial"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="arial"],
.wb-calendar-appts-compact-panel[data-form-font-key="arial"] {
  --wb-calendar-form-font: Arial, Helvetica, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="georgia"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="georgia"],
.wb-calendar-appts-compact-panel[data-form-font-key="georgia"] {
  --wb-calendar-form-font: Georgia, serif;
}

.wb-calendar-appts-card[data-form-font-key="times"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="times"],
.wb-calendar-appts-compact-panel[data-form-font-key="times"] {
  --wb-calendar-form-font: "Times New Roman", Times, serif;
}

.wb-calendar-appts-card[data-form-font-key="verdana"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="verdana"],
.wb-calendar-appts-compact-panel[data-form-font-key="verdana"] {
  --wb-calendar-form-font: Verdana, Geneva, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="tahoma"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="tahoma"],
.wb-calendar-appts-compact-panel[data-form-font-key="tahoma"] {
  --wb-calendar-form-font: Tahoma, Geneva, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="trebuchet"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="trebuchet"],
.wb-calendar-appts-compact-panel[data-form-font-key="trebuchet"] {
  --wb-calendar-form-font: "Trebuchet MS", sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="courier"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="courier"],
.wb-calendar-appts-compact-panel[data-form-font-key="courier"] {
  --wb-calendar-form-font: "Courier New", monospace;
}

.wb-calendar-appts-card[data-form-font-key="lucida"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="lucida"],
.wb-calendar-appts-compact-panel[data-form-font-key="lucida"] {
  --wb-calendar-form-font: "Lucida Console", Monaco, monospace;
}

.wb-calendar-appts-card[data-form-font-key="impact"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="impact"],
.wb-calendar-appts-compact-panel[data-form-font-key="impact"] {
  --wb-calendar-form-font: Impact, Haettenschweiler, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="palatino"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="palatino"],
.wb-calendar-appts-compact-panel[data-form-font-key="palatino"] {
  --wb-calendar-form-font: "Palatino Linotype", "Book Antiqua", Palatino, serif;
}

.wb-calendar-appts-card[data-form-font-key="garamond"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="garamond"],
.wb-calendar-appts-compact-panel[data-form-font-key="garamond"] {
  --wb-calendar-form-font: Garamond, serif;
}

.wb-calendar-appts-card[data-form-font-key="brush"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="brush"],
.wb-calendar-appts-compact-panel[data-form-font-key="brush"] {
  --wb-calendar-form-font: "Brush Script MT", cursive;
}

.wb-calendar-appts-card[data-form-font-key="segoe"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="segoe"],
.wb-calendar-appts-compact-panel[data-form-font-key="segoe"] {
  --wb-calendar-form-font: "Segoe UI", system-ui, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="roboto"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="roboto"],
.wb-calendar-appts-compact-panel[data-form-font-key="roboto"] {
  --wb-calendar-form-font: Roboto, Arial, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="open-sans"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="open-sans"],
.wb-calendar-appts-compact-panel[data-form-font-key="open-sans"] {
  --wb-calendar-form-font: "Open Sans", Arial, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="montserrat"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="montserrat"],
.wb-calendar-appts-compact-panel[data-form-font-key="montserrat"] {
  --wb-calendar-form-font: Montserrat, Arial, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="poppins"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="poppins"],
.wb-calendar-appts-compact-panel[data-form-font-key="poppins"] {
  --wb-calendar-form-font: Poppins, Arial, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="lato"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="lato"],
.wb-calendar-appts-compact-panel[data-form-font-key="lato"] {
  --wb-calendar-form-font: Lato, Arial, sans-serif;
}

.wb-calendar-appts-card[data-form-font-key="merriweather"],
.wb-calendar-appts-calendar-wrap[data-form-font-key="merriweather"],
.wb-calendar-appts-compact-panel[data-form-font-key="merriweather"] {
  --wb-calendar-form-font: Merriweather, Georgia, serif;
}

.wb-calendar-appts-card[data-form-text-size="xs"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="xs"],
.wb-calendar-appts-compact-panel[data-form-text-size="xs"] {
  --wb-calendar-form-size: 0.75rem;
}

.wb-calendar-appts-card[data-form-text-size="sm"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="sm"],
.wb-calendar-appts-compact-panel[data-form-text-size="sm"] {
  --wb-calendar-form-size: 0.875rem;
}

.wb-calendar-appts-card[data-form-text-size="base"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="base"],
.wb-calendar-appts-compact-panel[data-form-text-size="base"] {
  --wb-calendar-form-size: 1rem;
}

.wb-calendar-appts-card[data-form-text-size="lg"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="lg"],
.wb-calendar-appts-compact-panel[data-form-text-size="lg"] {
  --wb-calendar-form-size: 1.125rem;
}

.wb-calendar-appts-card[data-form-text-size="xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="xl"] {
  --wb-calendar-form-size: 1.25rem;
}

.wb-calendar-appts-card[data-form-text-size="2xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="2xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="2xl"] {
  --wb-calendar-form-size: 1.5rem;
}

.wb-calendar-appts-card[data-form-text-size="3xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="3xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="3xl"] {
  --wb-calendar-form-size: 1.875rem;
}

.wb-calendar-appts-card[data-form-text-size="4xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="4xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="4xl"] {
  --wb-calendar-form-size: 2.25rem;
}

.wb-calendar-appts-card[data-form-text-size="5xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="5xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="5xl"] {
  --wb-calendar-form-size: 3rem;
}

.wb-calendar-appts-card[data-form-text-size="6xl"],
.wb-calendar-appts-calendar-wrap[data-form-text-size="6xl"],
.wb-calendar-appts-compact-panel[data-form-text-size="6xl"] {
  --wb-calendar-form-size: 3.75rem;
}

.wb-calendar-appts-card[data-form-text-color="default"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="default"],
.wb-calendar-appts-compact-panel[data-form-text-color="default"] {
  --wb-calendar-form-color: var(--wb-calendar-form-style-color);
}

.wb-calendar-appts-card[data-form-text-color="white"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="white"],
.wb-calendar-appts-compact-panel[data-form-text-color="white"] {
  --wb-calendar-form-color: #ffffff;
}

.wb-calendar-appts-card[data-form-text-color="slate"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="slate"],
.wb-calendar-appts-compact-panel[data-form-text-color="slate"] {
  --wb-calendar-form-color: #0f172a;
}

.wb-calendar-appts-card[data-form-text-color="gray"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="gray"],
.wb-calendar-appts-compact-panel[data-form-text-color="gray"] {
  --wb-calendar-form-color: #374151;
}

.wb-calendar-appts-card[data-form-text-color="zinc"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="zinc"],
.wb-calendar-appts-compact-panel[data-form-text-color="zinc"] {
  --wb-calendar-form-color: #3f3f46;
}

.wb-calendar-appts-card[data-form-text-color="red"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="red"],
.wb-calendar-appts-compact-panel[data-form-text-color="red"] {
  --wb-calendar-form-color: #dc2626;
}

.wb-calendar-appts-card[data-form-text-color="orange"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="orange"],
.wb-calendar-appts-compact-panel[data-form-text-color="orange"] {
  --wb-calendar-form-color: #ea580c;
}

.wb-calendar-appts-card[data-form-text-color="amber"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="amber"],
.wb-calendar-appts-compact-panel[data-form-text-color="amber"] {
  --wb-calendar-form-color: #d97706;
}

.wb-calendar-appts-card[data-form-text-color="yellow"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="yellow"],
.wb-calendar-appts-compact-panel[data-form-text-color="yellow"] {
  --wb-calendar-form-color: #ca8a04;
}

.wb-calendar-appts-card[data-form-text-color="lime"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="lime"],
.wb-calendar-appts-compact-panel[data-form-text-color="lime"] {
  --wb-calendar-form-color: #65a30d;
}

.wb-calendar-appts-card[data-form-text-color="green"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="green"],
.wb-calendar-appts-compact-panel[data-form-text-color="green"] {
  --wb-calendar-form-color: #16a34a;
}

.wb-calendar-appts-card[data-form-text-color="emerald"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="emerald"],
.wb-calendar-appts-compact-panel[data-form-text-color="emerald"] {
  --wb-calendar-form-color: #059669;
}

.wb-calendar-appts-card[data-form-text-color="teal"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="teal"],
.wb-calendar-appts-compact-panel[data-form-text-color="teal"] {
  --wb-calendar-form-color: #0d9488;
}

.wb-calendar-appts-card[data-form-text-color="cyan"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="cyan"],
.wb-calendar-appts-compact-panel[data-form-text-color="cyan"] {
  --wb-calendar-form-color: #0891b2;
}

.wb-calendar-appts-card[data-form-text-color="sky"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="sky"],
.wb-calendar-appts-compact-panel[data-form-text-color="sky"] {
  --wb-calendar-form-color: #0284c7;
}

.wb-calendar-appts-card[data-form-text-color="blue"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="blue"],
.wb-calendar-appts-compact-panel[data-form-text-color="blue"] {
  --wb-calendar-form-color: #2563eb;
}

.wb-calendar-appts-card[data-form-text-color="indigo"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="indigo"],
.wb-calendar-appts-compact-panel[data-form-text-color="indigo"] {
  --wb-calendar-form-color: #4f46e5;
}

.wb-calendar-appts-card[data-form-text-color="violet"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="violet"],
.wb-calendar-appts-compact-panel[data-form-text-color="violet"] {
  --wb-calendar-form-color: #7c3aed;
}

.wb-calendar-appts-card[data-form-text-color="purple"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="purple"],
.wb-calendar-appts-compact-panel[data-form-text-color="purple"] {
  --wb-calendar-form-color: #9333ea;
}

.wb-calendar-appts-card[data-form-text-color="fuchsia"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="fuchsia"],
.wb-calendar-appts-compact-panel[data-form-text-color="fuchsia"] {
  --wb-calendar-form-color: #c026d3;
}

.wb-calendar-appts-card[data-form-text-color="pink"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="pink"],
.wb-calendar-appts-compact-panel[data-form-text-color="pink"] {
  --wb-calendar-form-color: #db2777;
}

.wb-calendar-appts-card[data-form-text-color="rose"],
.wb-calendar-appts-calendar-wrap[data-form-text-color="rose"],
.wb-calendar-appts-compact-panel[data-form-text-color="rose"] {
  --wb-calendar-form-color: #e11d48;
}

/* Explicit descendant projection prevents section-wide `* !important` color
   rules from taking over the operational Calendar form. Button text keeps its
   separate Website Builder button authority. */
.wb-calendar-appts-card
  :is(
    .wb-calendar-appts-form,
    label,
    span,
    p,
    input,
    select,
    textarea,
    .wb-calendar-appts-date-trigger,
    .wb-calendar-appts-date-popover,
    .wb-calendar-appts-month-nav,
    .wb-calendar-appts-calendar-day,
    .wb-calendar-appts-calendar-weekday
  ),
.wb-calendar-appts-calendar-wrap
  :is(
    .wb-calendar-appts-form,
    label,
    span,
    p,
    input,
    select,
    textarea,
    .wb-calendar-appts-date-trigger,
    .wb-calendar-appts-date-popover,
    .wb-calendar-appts-month-nav,
    .wb-calendar-appts-calendar-day,
    .wb-calendar-appts-calendar-weekday
  ),
.wb-calendar-appts-compact-panel
  :is(
    .wb-calendar-appts-form,
    label,
    span,
    p,
    input,
    select,
    textarea,
    .wb-calendar-appts-date-trigger,
    .wb-calendar-appts-date-popover,
    .wb-calendar-appts-month-nav,
    .wb-calendar-appts-calendar-day,
    .wb-calendar-appts-calendar-weekday
  ) {
  color: var(--wb-calendar-form-color) !important;
  font-family: var(--wb-calendar-form-font) !important;
}

.wb-calendar-appts-card .wb-public-btn,
.wb-calendar-appts-calendar-wrap .wb-public-btn,
.wb-calendar-appts-compact-panel .wb-public-btn {
  font-family: var(--wb-calendar-form-font) !important;
  font-size: var(--wb-calendar-form-size);
}

@media (max-width: 860px) {
  .wb-calendar-appts-card-layout,
  .wb-calendar-appts-calendar-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .wb-calendar-appts-compact-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "source action"
      "date time";
  }
}

@media (max-width: 560px) {
  .wb-calendar-appts-source-controls,
  .wb-calendar-appts-compact-row,
  .wb-calendar-appts-card .wb-calendar-appts-form,
  .wb-calendar-appts-card .wb-calendar-appts-customer-details {
    grid-template-columns: minmax(0, 1fr);
  }

  .wb-calendar-appts-compact-row {
    grid-template-areas:
      "action"
      "source"
      "date"
      "time";
  }

  .wb-calendar-appts-card .wb-calendar-appts-source-controls {
    grid-template-areas:
      "type"
      "provider"
      "detail";
  }

  .wb-calendar-appts-card
    .wb-calendar-appts-source-controls:has(
      [data-calendar-appts-provider-field][hidden]
    ) {
    grid-template-areas:
      "type"
      "detail";
  }
}
