.fft-booking {
  --fft-text: var(--contrast, #333333);
  --fft-accent: var(--accent, #707c73);
  --fft-light: var(--base-2, #f0efea);
  color: var(--fft-text);
  max-width: 100%;
}

.fft-booking *, .fft-booking *::before, .fft-booking *::after { box-sizing: border-box; }
.fft-section { margin: 0 0 1.5rem; padding: 1.5rem; background: #fff; }
.fft-section h3 { margin: -1.5rem -1.5rem 1.5rem; padding: 1rem 1.5rem; background: var(--fft-header, var(--fft-light)); font-family: Montserrat, sans-serif; font-size: clamp(1.15rem, 2.5vw, 1.5rem); text-transform: uppercase; }
.fft-booking label, .fft-booking legend { display: block; font-weight: 700; margin-bottom: .45rem; }
.fft-booking input[type="text"], .fft-booking input[type="email"], .fft-booking input[type="tel"], .fft-booking input[type="url"], .fft-booking input[type="date"], .fft-booking textarea { display: block; width: 100%; min-height: 44px; padding: .7rem .8rem; border: 1px solid #707c73; border-radius: 0; background: #fff; color: var(--fft-text); font: inherit; }
.fft-booking input:focus-visible, .fft-booking textarea:focus-visible, .fft-booking button:focus-visible { outline: 3px solid #254deb; outline-offset: 2px; }
.fft-booking input[type="date"] { cursor: pointer; }
.fft-two-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.fft-help { display: block; margin: -.2rem 0 .65rem; font-size: .92em; font-weight: 400; }
.fft-checkbox-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem 1rem; }
.fft-checkbox-grid label { font-weight: 400; }
.fft-consent { padding: 1rem 0; border-bottom: 1px solid #ddd; }
.fft-consent p { display: block; margin: 0 0 .8rem; }
.fft-consent label { display: block; margin: 0; font-weight: 700; }
.fft-slots { margin-top: 1rem; }
.fft-slots fieldset, .fft-booking fieldset { padding: 0; border: 0; }
.fft-slot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: .5rem; max-height: 19rem; overflow-y: auto; padding: .25rem; }

.fft-booking button, .fft-submit { appearance: none; border: 0; border-radius: 25px; background: var(--contrast-3); color: #fff; cursor: pointer; font: inherit; font-weight: 700; padding: .75rem 1.25rem; }

.fft-booking button:hover, .fft-booking button:focus, .fft-slot.is-selected { background: var(--fft-text); color: #fff; }

.fft-booking button:disabled { cursor: wait; opacity: .65; }
.fft-slot { border: 1px solid var(--fft-accent) !important; border-radius: 6px !important; background: #fff !important; color: var(--fft-text) !important; padding: .55rem !important; }
.fft-slot.is-selected { background: var(--fft-text) !important; color: #fff !important; }
.fft-submit { display: block; width: 100%; font-size: 1.05rem; }
.fft-submit-note { text-align: center; font-size: .92em; }
.fft-copy-row { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; margin-top: 1rem; }
.fft-copy-email { font-weight: 700; overflow-wrap: anywhere; }
.fft-copy-button { padding: .45rem .85rem !important; font-size: .9em !important; }
.fft-alert { margin: 1rem 0; padding: 1rem; border-left: 5px solid currentColor; }
.fft-success { background: #edf8ee; color: #245f2c; }
.fft-error, .fft-error-text { background: #fff0f0; color: #8a1f1f; }
.fft-warning { padding: 1rem; background: #fff7df; border-left: 5px solid #9b6d00; }
.fft-muted { color: #666; }
.fft-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.fft-summary { display: grid; grid-template-columns: max-content 1fr; gap: .5rem 1rem; }
.fft-summary dt { font-weight: 700; }
.fft-summary dd { margin: 0; }
.fft-manage-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.5rem 0; }
.fft-secondary { background: #666 !important; }
.fft-reschedule-form { max-width: 750px; padding: 1.5rem; background: var(--fft-light); }

@media (max-width: 650px) {
  .fft-two-columns, .fft-checkbox-grid { grid-template-columns: 1fr; }
  .fft-section { padding: 1rem; }
  .fft-section h3 { margin: -1rem -1rem 1rem; padding: 1rem; }
  .fft-slot-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fft-summary { grid-template-columns: 1fr; }
  .fft-summary dd { margin-bottom: .5rem; }
}
