.sfb-booking,
.sfb-booking * { box-sizing: border-box; }

.sfb-booking {
  --sfb-primary: #075eaa;
  --sfb-primary-dark: #064a86;
  --sfb-primary-soft: #eef7ff;
  --sfb-accent: #e9b12a;
  --sfb-text: #17212b;
  --sfb-muted: #64748b;
  --sfb-border: #dce7f1;
  --sfb-success: #138a51;
  --sfb-shadow: 0 18px 55px rgba(13, 61, 104, .09);
  max-width: 940px;
  margin: 34px auto;
  color: var(--sfb-text);
  font-family: inherit;
  line-height: 1.7;
}

.sfb-booking button,
.sfb-booking input,
.sfb-booking textarea,
.sfb-booking select { font-family: inherit; }

.sfb-booking__header {
  position: relative;
  margin-bottom: 24px;
  padding: 30px 28px;
  overflow: hidden;
  text-align: center;
  border: 1px solid #cfe1f0;
  border-radius: 24px;
  background:
    radial-gradient(circle at 8% 18%, rgba(233,177,42,.13) 0 70px, transparent 71px),
    radial-gradient(circle at 92% 82%, rgba(7,94,170,.10) 0 90px, transparent 91px),
    linear-gradient(135deg, #ffffff, #f4f9ff);
  box-shadow: var(--sfb-shadow);
}

.sfb-booking__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 13px;
  border-radius: 999px;
  color: var(--sfb-primary-dark);
  background: #fff;
  border: 1px solid #cfe1f0;
  font-size: 13px;
  font-weight: 800;
}

.sfb-booking__eyebrow::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sfb-accent);
  box-shadow: 0 0 0 4px rgba(233,177,42,.14);
}

.sfb-booking__header h2 {
  margin: 10px 0 6px;
  color: #123c67;
  font-size: clamp(26px, 4vw, 39px);
  line-height: 1.35;
  font-weight: 900;
}

.sfb-booking__header p {
  max-width: 670px;
  margin: 0 auto;
  color: var(--sfb-muted);
  font-size: 14px;
}

.sfb-booking__form { display: grid; gap: 17px; }

.sfb-booking__section {
  padding: 22px;
  border: 1px solid var(--sfb-border);
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 8px 28px rgba(15, 74, 122, .055);
}

.sfb-booking__section-title {
  display: flex;
  align-items: center;
  gap: 11px;
  margin-bottom: 18px;
  color: #173b5e;
  font-size: 18px;
}

.sfb-booking__section-title > span {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border-radius: 11px;
  color: #fff;
  background: linear-gradient(145deg, var(--sfb-primary), #1681d7);
  box-shadow: 0 7px 16px rgba(7,94,170,.18);
  font-size: 14px;
  font-weight: 900;
}

.sfb-service-picker { min-width: 0; margin: 0; padding: 0; border: 0; }
.sfb-service-picker legend { margin-bottom: 12px; color: var(--sfb-muted); font-size: 13px; font-weight: 600; }
.sfb-service-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }

.sfb-service-option {
  position: relative;
  display: grid;
  grid-template-columns: 24px 1fr;
  align-items: center;
  gap: 11px;
  min-height: 66px;
  padding: 13px 14px;
  overflow: hidden;
  border: 1px solid #d6e2ed;
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease;
}

.sfb-service-option:hover {
  border-color: #9fc7e9;
  background: #fbfdff;
  transform: translateY(-1px);
}

.sfb-service-option:has(input:checked) {
  border-color: var(--sfb-primary);
  background: linear-gradient(135deg, #f8fcff, var(--sfb-primary-soft));
  box-shadow: 0 0 0 2px rgba(7,94,170,.08), 0 8px 20px rgba(7,94,170,.07);
}

.sfb-service-option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.sfb-service-option__check {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border: 1.5px solid #b9cbdc;
  border-radius: 8px;
  color: transparent;
  background: #fff;
  font-size: 14px;
  font-weight: 900;
  transition: all .2s ease;
}

.sfb-service-option input:checked + .sfb-service-option__check {
  color: #fff;
  border-color: var(--sfb-primary);
  background: var(--sfb-primary);
  box-shadow: 0 5px 12px rgba(7,94,170,.20);
}

.sfb-service-option strong { color: #233f59; font-size: 14px; line-height: 1.55; }

.sfb-service-summary {
  margin: 13px 0 0;
  padding: 11px 14px;
  border: 1px solid #dceaf5;
  border-radius: 12px;
  color: var(--sfb-primary-dark);
  background: #f7fbff;
  font-size: 13px;
}
.sfb-service-summary strong { font-weight: 800; }

.sfb-calendar { max-width: 550px; margin: 0 auto; padding: 4px 0; }
.sfb-calendar__head { display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; margin-bottom: 13px; }
.sfb-calendar__title { text-align: center; color: #284966; font-size: 18px; }
.sfb-calendar__nav {
  width: 40px;
  height: 40px;
  border: 1px solid var(--sfb-border);
  border-radius: 11px;
  background: #fff;
  color: var(--sfb-primary);
  font-size: 27px;
  cursor: pointer;
  transition: .2s ease;
}
.sfb-calendar__nav:hover:not(:disabled) { color: #fff; border-color: var(--sfb-primary); background: var(--sfb-primary); }
.sfb-calendar__nav:disabled { opacity: .32; cursor: not-allowed; }
.sfb-calendar__weekdays,
.sfb-calendar__days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
.sfb-calendar__weekdays { margin-bottom: 7px; color: var(--sfb-muted); text-align: center; font-size: 12px; font-weight: 800; }
.sfb-calendar__day {
  aspect-ratio: 1;
  min-height: 44px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: #f7fafc;
  color: var(--sfb-text);
  font: inherit;
  cursor: pointer;
  transition: .18s ease;
}
.sfb-calendar__day:hover:not(:disabled) { border-color: var(--sfb-primary); color: var(--sfb-primary); background: #f7fbff; }
.sfb-calendar__day.is-today { border-color: #9ac7ed; box-shadow: inset 0 0 0 1px #e0effb; }
.sfb-calendar__day.is-selected { color: #fff; background: var(--sfb-primary); border-color: var(--sfb-primary); box-shadow: 0 7px 16px rgba(7,94,170,.18); font-weight: 800; }
.sfb-calendar__day:disabled { color: #b7c0c9; background: #fafafa; cursor: not-allowed; text-decoration: line-through; }
.sfb-calendar__empty { min-height: 44px; }

.sfb-shifts-intro { margin: -5px 0 14px; color: var(--sfb-muted); font-size: 13px; }
.sfb-shifts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; min-height: 76px; }
.sfb-shifts > p { grid-column: 1 / -1; align-self: center; margin: 0; padding: 13px 15px; border: 1px dashed #c9dae9; border-radius: 12px; color: var(--sfb-muted); background: #fbfdff; text-align: center; font-size: 13px; }
.sfb-shifts__empty { color: #8d4f13 !important; background: #fffaf1 !important; border-color: #ead5ae !important; }

.sfb-shift {
  position: relative;
  display: grid;
  grid-template-columns: 52px 1fr 24px;
  align-items: center;
  gap: 13px;
  min-height: 86px;
  padding: 14px 15px;
  border: 1px solid #d5e2ee;
  border-radius: 16px;
  color: var(--sfb-text);
  background: #fff;
  text-align: right;
  cursor: pointer;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease, background .2s ease;
}
.sfb-shift:hover { border-color: #93c1e7; background: #fbfdff; transform: translateY(-1px); }
.sfb-shift.is-selected { border-color: var(--sfb-primary); background: linear-gradient(135deg, #f9fcff, var(--sfb-primary-soft)); box-shadow: 0 0 0 2px rgba(7,94,170,.08), 0 10px 24px rgba(7,94,170,.09); }
.sfb-shift__icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 15px;
  color: #fff;
  background: linear-gradient(145deg, var(--sfb-primary), #1681d7);
  font-size: 25px;
  line-height: 1;
  box-shadow: 0 7px 16px rgba(7,94,170,.16);
}
.sfb-shift[data-shift="evening"] .sfb-shift__icon { background: linear-gradient(145deg, #173b6a, #315f98); }
.sfb-shift__content { display: grid; gap: 2px; }
.sfb-shift__content strong { color: #173b5e; font-size: 15px; }
.sfb-shift__content small { color: var(--sfb-muted); font-size: 13px; }
.sfb-shift__radio { width: 22px; height: 22px; border: 2px solid #c0cfdd; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 4px #fff; transition: .2s ease; }
.sfb-shift.is-selected .sfb-shift__radio { border-color: var(--sfb-primary); background: var(--sfb-primary); }

.sfb-booking__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.sfb-field { display: grid; gap: 7px; }
.sfb-field--wide { grid-column: 1 / -1; }
.sfb-field label { color: #334b61; font-size: 13px; font-weight: 800; }
.sfb-field label small { color: var(--sfb-muted); font-weight: 500; }
.sfb-field input,
.sfb-field select,
.sfb-field textarea {
  width: 100%;
  min-height: 49px;
  border: 1px solid #cbd9e6;
  border-radius: 12px;
  padding: 10px 13px;
  color: var(--sfb-text);
  background: #fff;
  font: inherit;
  transition: border-color .2s, box-shadow .2s;
}
.sfb-field textarea { min-height: 78px; resize: vertical; }
.sfb-field input:focus,
.sfb-field select:focus,
.sfb-field textarea:focus { outline: none; border-color: var(--sfb-primary); box-shadow: 0 0 0 3px rgba(7,94,170,.11); }

.sfb-booking__submit {
  width: 100%;
  min-height: 58px;
  border: 0;
  border-radius: 15px;
  color: #fff;
  background: linear-gradient(135deg, var(--sfb-primary), #0b71c5);
  box-shadow: 0 12px 25px rgba(7,94,170,.17);
  font: inherit;
  font-size: 17px;
  font-weight: 900;
  cursor: pointer;
  transition: transform .2s, box-shadow .2s, background .2s;
}
.sfb-booking__submit:hover { transform: translateY(-1px); box-shadow: 0 15px 30px rgba(7,94,170,.22); }
.sfb-booking__submit:disabled { opacity: .65; cursor: wait; transform: none; }
.sfb-booking__privacy { margin: -6px 0 0; color: var(--sfb-muted); text-align: center; font-size: 12px; }

.sfb-booking__notice { margin: 0 0 18px; padding: 13px 16px; border-radius: 12px; font-size: 13px; }
.sfb-booking__notice.is-error { color: #9f1c1c; background: #fff2f2; border: 1px solid #f3caca; }
.sfb-booking__notice.is-info { color: var(--sfb-primary-dark); background: var(--sfb-primary-soft); border: 1px solid #cce4f8; }

.sfb-booking__success { padding: 44px 24px; border: 1px solid #bce6ce; border-radius: 22px; background: linear-gradient(145deg, #f7fff9, #effcf5); text-align: center; box-shadow: 0 14px 36px rgba(19,138,81,.08); }
.sfb-booking__success-icon { display: grid; place-items: center; width: 66px; height: 66px; margin: 0 auto 15px; border-radius: 50%; color: #fff; background: var(--sfb-success); box-shadow: 0 9px 22px rgba(19,138,81,.20); font-size: 32px; }
.sfb-booking__success h3 { margin: 0 0 10px; color: #17623e; font-size: 26px; }
.sfb-booking__success p { margin: 7px 0; }

.sfb-honeypot { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(1px, 1px, 1px, 1px) !important; }
.sfb-loading::after { content: ''; display: inline-block; width: 13px; height: 13px; margin-right: 7px; border: 2px solid #b9d5eb; border-top-color: var(--sfb-primary); border-radius: 50%; animation: sfb-spin .7s linear infinite; vertical-align: -2px; }
@keyframes sfb-spin { to { transform: rotate(360deg); } }

@media (max-width: 680px) {
  .sfb-booking { margin: 20px auto; }
  .sfb-booking__header { padding: 24px 17px; border-radius: 19px; }
  .sfb-booking__header h2 { font-size: 26px; }
  .sfb-booking__section { padding: 17px; border-radius: 16px; }
  .sfb-service-options,
  .sfb-booking__grid { grid-template-columns: 1fr; }
  .sfb-field--wide { grid-column: auto; }
  .sfb-calendar__weekdays,
  .sfb-calendar__days { gap: 5px; }
  .sfb-calendar__day { min-height: 37px; border-radius: 9px; font-size: 13px; }
  .sfb-shifts { grid-template-columns: 1fr; }
  .sfb-shifts > p { grid-column: auto; }
  .sfb-shift { min-height: 80px; }
}

@media (max-width: 400px) {
  .sfb-booking__section { padding: 14px; }
  .sfb-booking__section-title { font-size: 16px; }
  .sfb-calendar__day { min-height: 34px; font-size: 12px; }
  .sfb-shift { grid-template-columns: 46px 1fr 20px; gap: 10px; padding: 12px; }
  .sfb-shift__icon { width: 46px; height: 46px; border-radius: 13px; }
}

.sfb-customer-portal{max-width:760px;margin-inline:auto}.sfb-portal-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.sfb-portal-summary p{display:grid;gap:6px;margin:0;padding:14px;border:1px solid #dbe4ec;border-radius:12px;background:#fff}.sfb-portal-summary strong{color:#334155}.sfb-portal-form{margin-top:22px;padding-top:18px;border-top:1px solid #e2e8f0}.sfb-portal-form h3{margin-top:0}.sfb-portal-form select{width:100%;min-height:46px}.sfb-portal-cancel{margin-top:14px;text-align:center}.sfb-portal-cancel button{border:0;background:transparent;color:#b42318;text-decoration:underline;cursor:pointer}.sfb-booking__notice--error{display:block;color:#991b1b;background:#fee2e2}.sfb-booking__notice--success{display:block;color:#166534;background:#dcfce7}@media(max-width:640px){.sfb-portal-summary{grid-template-columns:1fr}}
