
/* Booking-specific layout. Loaded after site.css so these rules always win. */
.booking-page .booking-shell{max-width:1380px!important}
.booking-workspace{display:grid!important;grid-template-columns:minmax(680px,1fr) 280px!important;gap:24px!important;align-items:start!important}
.booking-workspace-main{min-width:0!important}
.booking-pricing-compact{display:block!important;position:sticky!important;top:105px!important;border:1px solid #dddfe2!important;border-radius:17px!important;background:#fff!important;padding:19px!important;box-shadow:0 10px 28px rgba(14,17,22,.06)!important}
.booking-pricing-compact .eyebrow{margin:0 0 4px!important;color:#ff6418!important;font-size:12px!important}
.booking-pricing-compact h2{margin:0 0 14px!important;font-size:24px!important}
.compact-price-row{display:flex!important;justify-content:space-between!important;align-items:flex-start!important;gap:12px!important;padding:13px 0!important;border-top:1px solid #e7e8ea!important}
.compact-price-row>div:first-child strong,.compact-price-row>div:first-child span,.compact-price strong,.compact-price span{display:block!important}
.compact-price-row>div:first-child strong{font-size:15px!important;color:#1c2025!important}
.compact-price-row>div:first-child span{font-size:12px!important;color:#767a80!important;margin-top:2px!important}
.compact-price{text-align:right!important;white-space:nowrap!important}
.compact-price strong{font-size:17px!important;color:#bd430f!important}
.compact-price span{font-size:11px!important;color:#6d7177!important;margin-top:2px!important}
.compact-price-row.featured{margin:0 -7px!important;padding:13px 7px!important;border-radius:9px!important;background:#fff7ef!important;border-top-color:transparent!important}
.compact-price-explainer{margin:13px 0 0!important;padding-top:13px!important;border-top:1px solid #e7e8ea!important;font-size:12px!important;line-height:1.5!important;color:#5f646b!important}
.compact-price-note{margin:9px 0 0!important;font-size:11px!important;line-height:1.45!important;color:#7b7f85!important}

.booking-date-picker{display:block!important;margin-bottom:16px!important}
.booking-date-picker>.field-title{display:block!important;margin-bottom:9px!important}
.availability-calendar{display:block!important;border:1px solid #dadce0!important;border-radius:14px!important;background:#fff!important;padding:14px!important;max-width:610px!important}
.availability-calendar-head{display:grid!important;grid-template-columns:44px 1fr 44px!important;align-items:center!important;gap:8px!important;margin-bottom:9px!important}
.availability-calendar-head strong{text-align:center!important;font-size:17px!important}
.calendar-nav{width:44px!important;height:44px!important;border:1px solid #d8dadd!important;border-radius:10px!important;background:#f7f7f8!important;color:#20242a!important;font-size:25px!important;line-height:1!important;cursor:pointer!important}
.calendar-nav:disabled{opacity:.28!important;cursor:not-allowed!important}
.calendar-weekdays,.calendar-days{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:5px!important}
.calendar-weekdays span{text-align:center!important;padding:5px 0!important;color:#73777d!important;font-size:11px!important;font-weight:800!important;text-transform:uppercase!important}
.calendar-day{aspect-ratio:1/1!important;min-height:46px!important;border:1px solid #d9dce0!important;border-radius:9px!important;background:#fff!important;color:#25292f!important;font-weight:800!important;font-size:14px!important;cursor:pointer!important}
.calendar-day.available:hover{border-color:#df6a2e!important;background:#fff8f2!important}
.calendar-day.selected{background:#ff6418!important;border-color:#ff6418!important;color:#111!important;box-shadow:0 0 0 2px rgba(226,94,31,.16)!important}
.calendar-day.unavailable{background:#f0f1f2!important;border-color:#e4e5e7!important;color:#a2a5aa!important;text-decoration:line-through!important;cursor:not-allowed!important}
.calendar-blank{aspect-ratio:1/1!important}
.calendar-loading{grid-column:1/-1!important;padding:28px 10px!important;text-align:center!important;color:#686d73!important}
.calendar-loading.error{color:#9b3416!important}
.calendar-legend{display:flex!important;flex-wrap:wrap!important;gap:14px!important;margin-top:11px!important;font-size:11px!important;color:#6c7075!important}
.calendar-legend span{display:flex!important;align-items:center!important;gap:6px!important}
.legend-dot{display:inline-block!important;width:10px!important;height:10px!important;border-radius:3px!important;border:1px solid #d1d3d6!important}
.legend-dot.available{background:#fff!important;border-color:#db6b33!important}
.legend-dot.unavailable{background:#f0f1f2!important}

@media(max-width:1100px){
  .booking-workspace{grid-template-columns:1fr!important}
  .booking-pricing-compact{position:static!important;order:2!important}
}
@media(max-width:680px){
  .booking-pricing-compact{padding:17px!important}
  .availability-calendar{padding:10px!important}
  .calendar-weekdays,.calendar-days{gap:3px!important}
  .calendar-day{min-height:40px!important;border-radius:7px!important;font-size:13px!important}
  .calendar-weekdays span{font-size:9px!important}
}

/* v20 calendar loading/error state */
.calendar-loading.error{display:flex!important;grid-column:1/-1!important;flex-direction:column!important;align-items:center!important;gap:7px!important;padding:26px 14px!important}
.calendar-loading.error strong{color:#8c2f13!important;font-size:15px!important}
.calendar-loading.error span{color:#686d73!important;font-size:12px!important}
.calendar-retry{margin-top:7px!important;min-height:40px!important;padding:8px 16px!important}

/* v21: calendar renders immediately and checks only the visible month */
.calendar-day.pending{
  background:#fff!important;
  border-color:#e0e1e4!important;
  color:#555b62!important;
}
.calendar-day.calendar-unverified{
  border-style:dashed!important;
}
#calendar-month-label.checking::after{
  content:"  • checking";
  font-size:11px;
  font-weight:700;
  color:#8a8e94;
}


/* v23: date/time side-by-side on wide screens */
.booking-date-time-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1.45fr) minmax(250px,.8fr)!important;
  gap:22px!important;
  align-items:start!important;
}
.booking-time-picker{
  min-width:0!important;
}
.booking-time-picker>.field-title{
  display:block!important;
  margin-bottom:9px!important;
}
.booking-time-picker .slot-status{
  margin:0 0 12px!important;
}
.booking-time-picker .slot-list{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
}
.booking-time-picker .slot-choice{
  width:100%!important;
  min-height:72px!important;
}
@media(max-width:900px){
  .booking-date-time-layout{
    grid-template-columns:1fr!important;
  }
  .booking-time-picker .slot-list{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:600px){
  .booking-time-picker .slot-list{
    grid-template-columns:1fr!important;
  }
}


/* v24: smoother booking-step transitions */
.booking-wizard{
  position:relative;
  overflow:hidden;
}
.booking-panel{
  transform-origin:top center;
}
.booking-panel.booking-panel-entering{
  animation:bookingStepIn .28s cubic-bezier(.2,.72,.24,1) both;
}
.booking-panel.booking-panel-leaving{
  position:absolute;
  inset:0;
  width:100%;
  pointer-events:none;
  animation:bookingStepOut .2s ease both;
}
@keyframes bookingStepIn{
  from{
    opacity:0;
    transform:translateX(calc(var(--step-direction,1) * 22px)) translateY(4px);
  }
  to{
    opacity:1;
    transform:translateX(0) translateY(0);
  }
}
@keyframes bookingStepOut{
  from{
    opacity:1;
    transform:translateX(0);
  }
  to{
    opacity:0;
    transform:translateX(calc(var(--step-direction,1) * -16px));
  }
}
.progress-step.active{
  transform:translateY(-1px);
}
.slot-choice.selected{
  transform:translateY(-1px);
}


/* v25 guided, conversational booking flow */
.guided-progress{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin:0 0 16px;
  padding:14px 18px;
  border:1px solid #dedfe2;
  border-radius:14px;
  background:#fff;
}
.guided-progress-copy{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.guided-progress-copy span{
  font-size:12px;
  font-weight:900;
  color:#ff6418;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.guided-progress-copy strong{
  font-size:14px;
  color:#34383e;
}
.guided-progress-track{
  height:6px;
  border-radius:999px;
  overflow:hidden;
  background:#eceef0;
}
.guided-progress-track span{
  display:block;
  height:100%;
  width:20%;
  border-radius:inherit;
  background:#ff6418;
  transition:width .3s cubic-bezier(.2,.72,.24,1);
}

.guided-booking .booking-panel{
  min-height:0;
}
.guide-heading{
  margin-bottom:26px;
}
.guide-kicker{
  display:block;
  margin-bottom:6px;
  color:#c4450e;
  font-size:12px;
  line-height:1.2;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.11em;
}
.guide-heading h2{
  margin:0 0 8px;
  font-size:clamp(28px,3vw,38px);
  line-height:1.05;
}
.guide-heading p{
  max-width:690px;
  margin:0;
  color:#62676e;
  line-height:1.55;
}

.guided-service-options{
  margin-top:10px;
}
.guided-service-options label span{
  min-height:88px;
}
.guided-problem{
  display:block;
  margin-top:24px;
}
.guided-problem textarea{
  margin-top:8px;
}
.guided-problem>small{
  display:block;
  margin-top:7px;
  color:#777c82;
  font-size:12px;
}

.guided-contact-grid,
.guided-address-grid{
  max-width:760px;
}
.guided-review{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.guided-review-row{
  min-width:0;
  padding:16px 17px;
  border:1px solid #dedfe2;
  border-radius:13px;
  background:#fafafa;
}
.guided-review-row>span{
  display:block;
  margin-bottom:5px;
  color:#c4450e;
  font-size:11px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.guided-review-row>strong{
  display:block;
  margin-bottom:5px;
  color:#171a1e;
  font-size:16px;
}
.guided-review-row>p{
  margin:0;
  color:#62676e;
  font-size:13px;
  line-height:1.45;
}
.guided-captcha{
  display:flex;
  justify-content:flex-start;
  margin:20px 0;
  padding:18px;
  border:1px solid #dedfe2;
  border-radius:14px;
  background:#fafafa;
}
.human-heading{
  margin-bottom:12px;
}

@media(max-width:720px){
  .guided-progress-copy{
    align-items:flex-start;
    flex-direction:column;
    gap:2px;
  }
  .guided-review{
    grid-template-columns:1fr;
  }
}


/* v26: local 10-minute reservation conversation */
.slot-hold-chat{
  margin-top:14px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
}
.slot-hold-chat[hidden]{display:none!important}
.hold-message{
  display:flex;
  align-items:flex-start;
  gap:9px;
  max-width:100%;
  opacity:0;
  transform:translateY(8px);
  transition:opacity .28s ease,transform .28s ease;
}
.hold-message.show{
  opacity:1;
  transform:translateY(0);
}
.hold-avatar{
  flex:0 0 30px;
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#171b20;
  color:#fff;
  font-size:9px;
  font-weight:950;
  letter-spacing:.04em;
}
.hold-message p{
  margin:0;
  padding:9px 11px;
  border:1px solid #e0e2e5;
  border-radius:4px 12px 12px 12px;
  background:#f7f7f8;
  color:#373c42;
  font-size:12px;
  line-height:1.45;
}
.hold-countdown{
  margin-left:39px;
  min-height:16px;
  color:#767b81;
  font-size:10px;
  font-weight:750;
}
.slot-choice.reserving{
  position:relative;
  opacity:.72;
}
.slot-choice.reserving::after{
  content:"Reserving…";
  display:block;
  margin-top:3px;
  font-size:10px;
  color:#c4450e;
}
@media(prefers-reduced-motion:reduce){
  .hold-message{
    opacity:1!important;
    transform:none!important;
  }
}


/* v27: make temporary-reservation conversation easier to read */
.hold-message{
  gap:11px;
}
.hold-avatar{
  flex-basis:36px;
  width:36px;
  height:36px;
  font-size:11px;
}
.hold-message p{
  padding:12px 14px;
  font-size:15px;
  line-height:1.5;
  font-weight:700;
}
.hold-countdown{
  margin-left:47px;
  font-size:12px;
  font-weight:800;
}


/* v28 final booking confirmation */
.booking-success-panel{
  min-height:420px;
}
.booking-success-card{
  display:flex;
  align-items:flex-start;
  gap:18px;
  padding:24px;
  border:1px solid #d9e5dc;
  border-radius:18px;
  background:#f5fbf7;
}
.booking-success-check{
  flex:0 0 48px;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#1f7a45;
  color:#fff;
  font-size:26px;
  font-weight:900;
}
.booking-success-card h2{
  margin:0 0 7px;
  font-size:clamp(30px,3vw,42px);
}
.booking-success-card p{
  margin:0;
  color:#4d5d53;
  line-height:1.5;
}
.booking-success-info{
  margin-top:16px;
  padding:18px 20px;
  border:1px solid #e5d8c8;
  border-radius:14px;
  background:#fff9f2;
}
.booking-success-info strong{
  display:block;
  margin-bottom:5px;
  color:#6b3b16;
  font-size:16px;
}
.booking-success-info p{
  margin:0;
  color:#625b54;
  line-height:1.55;
}


/* v29: service-aware pricing sidebar */
.dynamic-pricing{
  overflow:hidden;
}
.pricing-service-panel[hidden]{
  display:none!important;
}
.pricing-service-panel.active{
  display:block;
}
.pricing-panel-enter{
  animation:pricingPanelIn .28s cubic-bezier(.2,.72,.24,1) both;
}
@keyframes pricingPanelIn{
  from{opacity:0;transform:translateY(8px)}
  to{opacity:1;transform:translateY(0)}
}
.pricing-placeholder{
  padding:18px;
  border:1px dashed #d9dce0;
  border-radius:13px;
  background:#fafafa;
}
.pricing-placeholder strong{
  display:block;
  margin-bottom:6px;
  color:#25292e;
  font-size:15px;
}
.pricing-placeholder p{
  margin:0;
  color:#686d73;
  font-size:13px;
  line-height:1.5;
}
.pricing-heading-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:15px 0 16px;
  border-bottom:1px solid #e4e5e7;
}
.pricing-service-label{
  display:block;
  margin-bottom:3px;
  color:#c4450e;
  font-size:12px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.pricing-main-rate{
  display:block;
  color:#1d2024;
  font-size:24px;
  line-height:1.1;
}
.pricing-minimum{
  max-width:130px;
  padding:6px 9px;
  border-radius:999px;
  background:#fff2e9;
  color:#9a3b10;
  font-size:10px;
  line-height:1.3;
  font-weight:900;
  text-align:center;
}
.pricing-detail-list{
  display:flex;
  flex-direction:column;
}
.pricing-detail{
  padding:14px 0;
  border-bottom:1px solid #ececef;
}
.pricing-detail:last-child{
  border-bottom:0;
  padding-bottom:2px;
}
.pricing-detail strong{
  display:block;
  margin-bottom:4px;
  color:#2f3338;
  font-size:13px;
}
.pricing-detail p{
  margin:0;
  color:#62676d;
  font-size:12px;
  line-height:1.55;
}
@media(max-width:900px){
  .pricing-heading-row{
    align-items:flex-start;
  }
}
@media(prefers-reduced-motion:reduce){
  .pricing-panel-enter{
    animation:none!important;
  }
}
