.cmsbbk-booking {
  --cmsbbk-border: #d8dee6;
  --cmsbbk-text: #17202a;
  --cmsbbk-muted: #5f6b7a;
  --cmsbbk-accent: #1f7a5c;
  --cmsbbk-accent-dark: #15543f;
  --cmsbbk-free-bg: #d9ffc8;
  --cmsbbk-busy-bg: #ffb7b7;
  --cmsbbk-toolbar: #f0f0f0;
  color: var(--cmsbbk-text);
  max-width: 920px;
}

.cmsbbk-booking * {
  box-sizing: border-box;
}

.cmsbbk-form {
  display: grid;
  gap: 16px;
}

.cmsbbk-location-row {
  max-width: 456px;
}

.cmsbbk-calendar-shell {
  display: flex;
  gap: 28px;
  align-items: flex-start;
  flex-wrap: wrap;
  color: #0b5f47;
}

.cmsbbk-calendar-board {
  width: min(100%, 456px);
  border: 1px solid var(--cmsbbk-border);
  background: #fff;
  padding: 10px;
}

.cmsbbk-toolbar {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 42px;
  gap: 8px;
  background: var(--cmsbbk-toolbar);
  padding: 10px;
  margin: -10px -10px 10px;
}

.cmsbbk-month-field {
  border: 1px solid var(--cmsbbk-accent);
  background: #fff;
  color: var(--cmsbbk-accent-dark);
  min-height: 36px;
  display: flex;
  align-items: center;
  padding: 0 14px;
  font-size: 20px;
}

.cmsbbk-month-nav {
  border: 0;
  background: #b8c0c7;
  color: #fff;
  min-height: 36px;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}

.cmsbbk-month-nav:hover,
.cmsbbk-month-nav:focus {
  background: var(--cmsbbk-accent);
}

.cmsbbk-month__weekdays,
.cmsbbk-month__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 2px;
}

.cmsbbk-month__weekdays span {
  text-align: center;
  font-weight: 700;
  padding: 8px 0;
}

.cmsbbk-day {
  aspect-ratio: 1 / 1;
  display: block;
  position: relative;
  border: 0;
  background: var(--cmsbbk-free-bg);
  color: #05714f;
  min-width: 0;
  padding: 0;
  font: inherit;
  text-align: left;
}

button.cmsbbk-day {
  cursor: pointer;
}

button.cmsbbk-day:hover,
button.cmsbbk-day:focus,
.cmsbbk-day--selected {
  outline: 2px solid var(--cmsbbk-accent);
  outline-offset: -2px;
}

.cmsbbk-day--busy {
  background: var(--cmsbbk-busy-bg);
  color: #7a1f1f;
}

.cmsbbk-day--blank {
  background: #f2f2f2;
}

.cmsbbk-day__number {
  position: absolute;
  top: 8px;
  left: 8px;
  font-size: 14px;
}

.cmsbbk-legend {
  border: 1px solid var(--cmsbbk-border);
  padding: 10px;
  min-width: 150px;
  background: #fff;
}

.cmsbbk-legend__item {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
}

.cmsbbk-legend__item:last-child {
  margin-bottom: 0;
}

.cmsbbk-legend__swatch {
  width: 28px;
  height: 28px;
  display: inline-block;
}

.cmsbbk-legend__swatch--free {
  background: var(--cmsbbk-free-bg);
}

.cmsbbk-legend__swatch--busy {
  background: var(--cmsbbk-busy-bg);
}

.cmsbbk-month--loading {
  opacity: .55;
}

.cmsbbk-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.cmsbbk-form label {
  display: grid;
  gap: 6px;
  font-weight: 600;
}

.cmsbbk-form input,
.cmsbbk-form select,
.cmsbbk-form textarea {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--cmsbbk-border);
  border-radius: 6px;
  padding: 9px 11px;
  font: inherit;
  background: #fff;
  color: var(--cmsbbk-text);
}

.cmsbbk-form textarea {
  min-height: 100px;
  resize: vertical;
}

.cmsbbk-consent {
  align-items: start;
  grid-template-columns: 20px minmax(0, 1fr);
  font-weight: 400;
}

.cmsbbk-consent input {
  min-height: 20px;
}

.cmsbbk-summary,
.cmsbbk-message,
.cmsbbk-notice {
  border: 1px solid var(--cmsbbk-border);
  border-radius: 6px;
  padding: 11px 13px;
  background: #f8fafc;
  color: var(--cmsbbk-muted);
}

.cmsbbk-message:empty {
  display: none;
}

.cmsbbk-form > button,
.cmsbbk-form button[type="submit"] {
  width: fit-content;
  min-height: 44px;
  border: 0;
  border-radius: 6px;
  padding: 10px 18px;
  background: var(--cmsbbk-accent);
  color: #fff;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.cmsbbk-form > button:hover,
.cmsbbk-form > button:focus,
.cmsbbk-form button[type="submit"]:hover,
.cmsbbk-form button[type="submit"]:focus {
  background: var(--cmsbbk-accent-dark);
}

.cmsbbk-form > button:disabled,
.cmsbbk-form button[type="submit"]:disabled {
  cursor: wait;
  opacity: .7;
}

.cmsbbk-payment-link {
  display: inline-flex;
  margin-top: 8px;
  color: var(--cmsbbk-accent-dark);
  font-weight: 700;
}

.cmsbbk-captcha {
  border: 1px solid var(--cmsbbk-border);
  border-radius: 6px;
  padding: 12px;
  background: #fff;
}

.cmsbbk-captcha--math {
  max-width: 320px;
}

@media (max-width: 760px) {
  .cmsbbk-calendar-board,
  .cmsbbk-legend {
    width: 100%;
  }

  .cmsbbk-calendar-board {
    padding: 6px;
  }

  .cmsbbk-toolbar {
    margin: -6px -6px 8px;
    padding: 8px;
    grid-template-columns: 36px minmax(0, 1fr) 36px;
  }

  .cmsbbk-month-field {
    font-size: 16px;
    min-height: 32px;
  }

  .cmsbbk-day__number {
    top: 5px;
    left: 5px;
    font-size: 12px;
  }

  .cmsbbk-grid {
    grid-template-columns: 1fr;
  }

  .cmsbbk-form > button,
  .cmsbbk-form button[type="submit"] {
    width: 100%;
  }
}
