/* Local Booking CMS - Booking Advanced 4.0.61 */
.booking-shell,
.booking-wizard,
.lb-booking-wizard {
  --ba-primary: var(--primary, #f34438);
  --ba-ink: var(--ink, #171c31);
  --ba-soft: var(--soft, #fffaf1);
}

.lb-booking-wizard {
  position: relative;
  border-radius: 32px;
  padding: clamp(18px, 3vw, 36px);
  background: linear-gradient(145deg, rgba(255,255,255,.96), rgba(255,250,241,.94));
  box-shadow: 0 28px 80px rgba(15,23,42,.12);
  overflow: hidden;
}

.lb-booking-wizard:before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--ba-primary), transparent 84%), transparent 30%);
}

.booking-step,
.lb-booking-step {
  animation: baStepIn .28s ease both;
}

@keyframes baStepIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.booking-progress,
.lb-booking-progress {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 10px;
  margin-bottom: 24px;
}

.booking-progress .step,
.lb-booking-progress .step {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 12px;
  border-radius: 18px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(15,23,42,.08);
  font-weight: 700;
  color: color-mix(in srgb, var(--ba-ink), transparent 30%);
}

.booking-progress .step.is-active,
.lb-booking-progress .step.is-active {
  background: var(--ba-primary);
  color: #fff;
  box-shadow: 0 14px 32px color-mix(in srgb, var(--ba-primary), transparent 70%);
}

.booking-card-grid,
.ba-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.booking-choice-card,
.ba-choice-card {
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 24px;
  padding: 18px;
  background: #fff;
  cursor: pointer;
  transition: .2s ease;
}

.booking-choice-card:hover,
.ba-choice-card:hover,
.booking-choice-card.is-selected,
.ba-choice-card.is-selected {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--ba-primary), transparent 45%);
  box-shadow: 0 18px 40px rgba(15,23,42,.10);
}

.booking-date-grid,
.booking-time-grid,
.ba-date-grid,
.ba-time-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 10px;
}

.booking-date-btn,
.booking-time-btn,
.ba-date-btn,
.ba-time-btn {
  border: 1px solid rgba(15,23,42,.10);
  border-radius: 16px;
  padding: 14px 12px;
  background: #fff;
  text-align: center;
  font-weight: 800;
  cursor: pointer;
}

.booking-date-btn.is-selected,
.booking-time-btn.is-selected,
.ba-date-btn.is-selected,
.ba-time-btn.is-selected {
  background: var(--ba-primary);
  color: #fff;
  border-color: var(--ba-primary);
}

.booking-advanced-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.ba-field {
  display: grid;
  gap: 7px;
}
.ba-field span {
  font-weight: 800;
  color: var(--ba-ink);
}
.ba-field input,
.ba-field textarea {
  width: 100%;
  border: 1px solid rgba(15,23,42,.12);
  border-radius: 16px;
  padding: 13px 14px;
  background: #fff;
}
.ba-field textarea { min-height: 110px; }

@media (max-width: 760px) {
  .lb-booking-wizard { border-radius: 24px; padding: 16px; }
  .booking-advanced-fields { grid-template-columns: 1fr; }
  .booking-progress, .lb-booking-progress { grid-template-columns: 1fr 1fr; }
}

/* 4.0.62 - advanced booking integration */
.booking-privacy-check {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin: 18px 0 0;
  padding: 16px 18px;
  border-radius: 18px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(15,23,42,.10);
  font-weight: 650;
  color: var(--ba-ink, #171c31);
}
.booking-privacy-check input { margin-top: 4px; width: 18px; height: 18px; }
.booking-step.has-error {
  animation: bookingShake .35s ease both;
}
@keyframes bookingShake {
  0%,100% { transform: translateX(0); }
  25% { transform: translateX(-5px); }
  75% { transform: translateX(5px); }
}
.booking-slot[disabled],
.booking-date-btn[disabled],
.booking-time-btn[disabled] {
  opacity: .45;
  cursor: not-allowed;
}

/* Patch 4.1.64 - frontend booking custom fields polish */
.booking-advanced-fields.booking-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:6px;}
.booking-advanced-fields .ba-field{display:block;}
.booking-advanced-fields .ba-field>span{display:flex;align-items:center;gap:7px;margin-bottom:9px;color:var(--bk-ink,#17211c);font-size:.9rem;font-weight:950;}
.booking-advanced-fields input,.booking-advanced-fields select,.booking-advanced-fields textarea{width:100%;border:1.5px solid var(--bk-border,#e5e7eb);border-radius:18px;background:#fff;padding:15px 16px;color:var(--bk-ink,#17211c);font:inherit;font-weight:750;outline:none;box-shadow:0 10px 24px rgba(23,33,28,.05);transition:.2s ease;}
.booking-advanced-fields input:focus,.booking-advanced-fields select:focus,.booking-advanced-fields textarea:focus{border-color:var(--bk-primary,#8b5e34);box-shadow:0 0 0 5px color-mix(in srgb,var(--bk-primary,#8b5e34) 13%, transparent);}
.booking-privacy-check{display:flex;gap:10px;align-items:flex-start;margin-top:18px;padding:14px 16px;border-radius:18px;background:rgba(255,255,255,.72);border:1px solid var(--bk-border,#e5e7eb);font-weight:800;color:var(--bk-ink,#17211c);}
.booking-privacy-check input{margin-top:4px;width:18px;height:18px;}
@media(max-width:760px){.booking-advanced-fields.booking-form-grid{grid-template-columns:1fr;}.booking-advanced-fields input,.booking-advanced-fields select,.booking-advanced-fields textarea{font-size:16px;}}


/* Patch 4.1.65 - frontend booking validation and verify page polish */
.booking-advanced-fields label.has-field-error input,
.booking-advanced-fields label.has-field-error select,
.booking-advanced-fields label.has-field-error textarea,
.verify-code-field.has-field-error input,
.booking-advanced-fields input.is-invalid,
.booking-advanced-fields textarea.is-invalid,
.booking-advanced-fields select.is-invalid{
  border-color:#dc2626 !important;
  box-shadow:0 0 0 5px rgba(220,38,38,.12) !important;
}
.booking-field-error{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:8px;
  color:#b91c1c;
  font-size:.86rem;
  font-weight:900;
  line-height:1.35;
}
.booking-field-error .mdi{font-size:1rem;}
.booking-public-main{min-height:70vh;}
.booking-page-hero .container.narrow,
.booking-public-section .container.narrow{max-width:980px;margin-inline:auto;padding-inline:clamp(16px,4vw,32px);}
.booking-helper-icons{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;}
.booking-helper-icons span{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:rgba(255,255,255,.78);border:1px solid rgba(15,23,42,.08);box-shadow:0 10px 24px rgba(15,23,42,.06);font-weight:900;color:var(--bk-ink,#17211c);}
.verify-card{max-width:820px;margin:0 auto clamp(40px,7vw,80px);background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--bk-soft,#fff7ed) 58%,#fff));border:1px solid var(--bk-border,#e5e7eb);border-radius:32px;box-shadow:0 30px 90px rgba(15,23,42,.12);padding:clamp(24px,5vw,52px);}
.verify-card form{display:grid;gap:18px;}
.verify-code-field{display:grid;gap:10px;text-align:left;}
.verify-code-field>span{display:flex;align-items:center;gap:8px;font-weight:950;color:var(--bk-ink,#17211c);}
.verify-code-field input{width:100%;border:1.5px solid var(--bk-border,#e5e7eb);border-radius:20px;background:#fff;padding:16px 18px;font:inherit;font-weight:900;letter-spacing:.02em;outline:none;box-shadow:0 10px 24px rgba(23,33,28,.05);transition:.2s ease;}
.verify-code-field input:focus{border-color:var(--bk-primary,#8b5e34);box-shadow:0 0 0 5px color-mix(in srgb,var(--bk-primary,#8b5e34) 13%, transparent);}
.verify-result{margin-top:24px;padding:20px;border-radius:24px;text-align:left;border:1px solid var(--bk-border,#e5e7eb);background:#fff;}
.verify-result h3{display:flex;align-items:center;gap:9px;margin:0 0 8px;color:var(--bk-ink,#17211c);}
.verify-result-ok{border-color:rgba(22,163,74,.25);background:linear-gradient(180deg,rgba(240,253,244,.9),#fff);}
.verify-result-ko{border-color:rgba(220,38,38,.24);background:linear-gradient(180deg,rgba(254,242,242,.9),#fff);}
.verify-card .booking-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;}
.verify-card .booking-summary>div{padding:14px 16px;border-radius:18px;background:rgba(255,255,255,.86);border:1px solid rgba(15,23,42,.08);}
.verify-card .booking-summary span{display:block;color:var(--bk-muted,#6b7280);font-size:.82rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em;}
.verify-card .booking-summary strong{display:block;margin-top:5px;color:var(--bk-ink,#17211c);font-size:1rem;}
@media(max-width:760px){.booking-helper-icons{justify-content:flex-start}.verify-card .booking-summary{grid-template-columns:1fr}.booking-actions.booking-actions-center{display:grid;grid-template-columns:1fr;}}
