.tpb-v4{
  --tpb-panel-bg:#fff;
  --tpb-panel-border:#e7e7e7;
  --tpb-text:#111;
  --tpb-muted:#666;
  --tpb-accent:#111;
  --tpb-accent-text:#fff;
  --tpb-input-bg:#fff;
  --tpb-input-border:#ddd;
  --tpb-disabled:#aaa;
  --tpb-limited:#d97706;
  --tpb-limited-text:#fff;
  --tpb-heading-size:32px;
  --tpb-body-size:16px;
  --tpb-max-width:100%;
  --tpb-padding:34px;
  --tpb-panel-radius:18px;
  --tpb-field-radius:8px;
  width:100%;
  max-width:var(--tpb-max-width);
  margin:40px 0;
  padding:var(--tpb-padding);
  border:1px solid var(--tpb-panel-border);
  border-radius:var(--tpb-panel-radius);
  background:var(--tpb-panel-bg);
  color:var(--tpb-text);
  box-sizing:border-box;
  box-shadow:0 12px 40px rgba(0,0,0,.06);
  font-family:inherit;
  font-size:var(--tpb-body-size);
}
.tpb-v4 *{box-sizing:border-box}
.tpb-v4 .tpb-head{margin-bottom:28px}
.tpb-v4 .tpb-eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.6;color:var(--tpb-muted)}
.tpb-v4 .tpb-head h2{margin:7px 0 8px;font-size:var(--tpb-heading-size);line-height:1.2;color:var(--tpb-text)}
.tpb-v4 .tpb-head p{margin:0;line-height:1.65;opacity:.72;color:var(--tpb-muted)}
.tpb-v4 .tpb-calendar{border:1px solid var(--tpb-panel-border);border-radius:14px;padding:18px}
.tpb-v4 .tpb-cal-top{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;text-align:center;margin-bottom:16px}
.tpb-v4 .tpb-cal-top button{border:0;background:transparent;color:var(--tpb-text);font-size:30px;cursor:pointer}
.tpb-v4 .tpb-week,.tpb-v4 .tpb-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.tpb-v4 .tpb-week{text-align:center;font-size:12px;opacity:.55;margin-bottom:8px}
.tpb-v4 .tpb-day{border:0;background:transparent;color:var(--tpb-text);border-radius:9px;padding:11px 3px;cursor:pointer;font:inherit}
.tpb-v4 .tpb-day.limited{background:var(--tpb-limited);color:var(--tpb-limited-text);font-weight:700}.tpb-v4 .tpb-day.limited:hover:not(:disabled){background:var(--tpb-limited);color:var(--tpb-limited-text);filter:brightness(.94)}
.tpb-v4 .tpb-day:hover:not(:disabled),.tpb-v4 .tpb-day.selected{background:var(--tpb-accent);color:var(--tpb-accent-text)}
.tpb-v4 .tpb-day.limited.selected{background:var(--tpb-accent);color:var(--tpb-accent-text);box-shadow:0 0 0 2px var(--tpb-limited) inset}
.tpb-v4 .tpb-day:disabled{opacity:.2;color:var(--tpb-disabled);cursor:not-allowed}
.tpb-v4 .tpb-blank{min-height:40px}
.tpb-v4 .tpb-times{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0}
.tpb-v4 .tpb-time{padding:10px 15px;border:1px solid var(--tpb-input-border);background:var(--tpb-input-bg);color:var(--tpb-text);border-radius:8px;cursor:pointer;font:inherit}
.tpb-v4 .tpb-time.selected,.tpb-v4 .tpb-time:hover{background:var(--tpb-accent);color:var(--tpb-accent-text);border-color:var(--tpb-accent)}
.tpb-v4 .tpb-empty{width:100%;padding:13px;border-radius:9px;background:#f7f7f7;color:var(--tpb-muted);opacity:.7}
.tpb-v4 .tpb-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}
.tpb-v4 .tpb-form-grid label,.tpb-v4 .tpb-duration-wrap label{font-weight:600;color:var(--tpb-text)}
.tpb-v4 .tpb-form-grid label.full{grid-column:1/-1}
.tpb-v4 .tpb-form-grid small{font-weight:400;opacity:.55}
.tpb-v4 .tpb-form-grid input,.tpb-v4 .tpb-form-grid select,.tpb-v4 .tpb-form-grid textarea,
.tpb-v4 .tpb-duration-wrap select,.tpb-v4 .tpb-duration-wrap input{
  display:block;width:100%;box-sizing:border-box;margin-top:7px;padding:12px 13px;border:1px solid var(--tpb-input-border);
  border-radius:var(--tpb-field-radius);background:var(--tpb-input-bg);color:var(--tpb-text);font:inherit;line-height:1.4;box-shadow:none
}
.tpb-v4 .tpb-form-grid textarea{resize:vertical}
.tpb-v4 .tpb-form-grid input:focus,.tpb-v4 .tpb-form-grid select:focus,.tpb-v4 .tpb-form-grid textarea:focus,
.tpb-v4 .tpb-duration-wrap select:focus,.tpb-v4 .tpb-duration-wrap input:focus{outline:2px solid rgba(17,17,17,.15);outline-offset:1px}
.tpb-v4 .tpb-duration-wrap{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin:18px 0 17px}
.tpb-v4 .tpb-other-duration[hidden]{display:none}
.tpb-v4 .tpb-submit{margin-top:22px;border:0;border-radius:9px;padding:14px 20px;background:var(--tpb-accent);color:var(--tpb-accent-text);font:inherit;font-weight:600;cursor:pointer}
.tpb-v4 .tpb-submit span{margin-left:8px}
.tpb-v4 .tpb-result{margin-top:14px;line-height:1.5}
.tpb-v4 .tpb-result.success{color:#187a45}
.tpb-v4 .tpb-result.error{color:#b42318}
.tpb-v4 .tpb-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important}
@media(max-width:650px){
  .tpb-v4{padding:20px;margin:20px 0}
  .tpb-v4 .tpb-head h2{font-size:calc(var(--tpb-heading-size) * .8125)}
  .tpb-v4 .tpb-form-grid{grid-template-columns:1fr}
  .tpb-v4 .tpb-form-grid label.full{grid-column:auto}
  .tpb-v4 .tpb-duration-wrap{grid-template-columns:1fr}
  .tpb-v4 .tpb-time{flex:1 0 calc(33.333% - 9px);text-align:center}
}

.tpb-v4 .tpb-shutdown{padding:28px 22px;border:1px solid var(--tpb-panel-border);border-radius:12px;background:#f7f7f7;color:var(--tpb-text);font-weight:600;text-align:center;}

.tpb-v4 .tpb-copyright{margin-top:26px;text-align:center;font-size:10px;line-height:1.4;letter-spacing:.08em;color:var(--tpb-text);opacity:.22;user-select:none;pointer-events:none;}

/* Unified live shutdown: keep one message, hide booking UI, and allow instant reopening. */
.tpb-v4 .tpb-shutdown[hidden]{display:none!important}
.tpb-v4.tpb-service-shutdown .tpb-head,
.tpb-v4.tpb-service-shutdown .tpb-form{display:none!important}
.tpb-v4.tpb-service-shutdown .tpb-shutdown{display:flex!important;align-items:center;justify-content:center;min-height:180px;width:100%;font-size:clamp(20px,2vw,32px);line-height:1.3;padding:clamp(28px,4vw,64px);overflow-wrap:anywhere}

/* Client confirmation page shown after a successful booking request. */
.tpb-v4 .tpb-confirmation[hidden]{display:none!important}
.tpb-v4 .tpb-confirmation{padding:clamp(8px,1vw,14px) 0 4px;text-align:center;outline:none}
.tpb-v4 .tpb-confirmation-icon{display:flex;align-items:center;justify-content:center;width:68px;height:68px;margin:0 auto 18px;border-radius:50%;background:var(--tpb-accent);color:var(--tpb-accent-text);font-size:34px;font-weight:700;line-height:1}
.tpb-v4 .tpb-confirmation-kicker{margin-bottom:8px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tpb-muted)}
.tpb-v4 .tpb-confirmation h2{margin:0 auto 12px;max-width:680px;font-size:clamp(28px,4vw,42px);line-height:1.15;color:var(--tpb-text)}
.tpb-v4 .tpb-confirmation-lead{max-width:680px;margin:0 auto 18px;color:var(--tpb-muted);line-height:1.65}
.tpb-v4 .tpb-confirmation-status{display:inline-flex;align-items:center;gap:8px;margin:0 auto 24px;padding:9px 14px;border:1px solid var(--tpb-panel-border);border-radius:999px;background:#f7f7f7;color:var(--tpb-text);font-size:13px;font-weight:700}
.tpb-v4 .tpb-confirmation-dot{width:8px;height:8px;border-radius:50%;background:#d99a22;box-shadow:0 0 0 4px rgba(217,154,34,.12)}
.tpb-v4 .tpb-confirmation-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 auto 18px;text-align:left}
.tpb-v4 .tpb-confirmation-details>div{min-width:0;padding:16px 17px;border:1px solid var(--tpb-panel-border);border-radius:12px;background:#fafafa}
.tpb-v4 .tpb-confirmation-details span{display:block;margin-bottom:5px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tpb-muted)}
.tpb-v4 .tpb-confirmation-details strong{display:block;overflow-wrap:anywhere;color:var(--tpb-text);font-size:15px;line-height:1.4}
.tpb-v4 .tpb-confirmation-email{display:flex;flex-direction:column;gap:4px;margin:0 auto 18px;padding:18px;border:1px solid #cbe8d6;border-radius:12px;background:#f1fbf5;text-align:left;color:#185c36}
.tpb-v4 .tpb-confirmation-email strong{font-size:15px}
.tpb-v4 .tpb-confirmation-email span{font-size:14px;line-height:1.55}
.tpb-v4 .tpb-confirmation-email.is-warning{border-color:#f0d7a3;background:#fff8e8;color:#795407}
.tpb-v4 .tpb-confirmation-note{max-width:680px;margin:0 auto 20px;color:var(--tpb-muted);font-size:13px;line-height:1.6}
.tpb-v4 .tpb-confirmation-again{border:1px solid var(--tpb-input-border);border-radius:9px;padding:12px 17px;background:var(--tpb-input-bg);color:var(--tpb-text);font:inherit;font-weight:600;cursor:pointer}
.tpb-v4 .tpb-confirmation-again:hover{border-color:var(--tpb-accent)}
.tpb-v4.tpb-service-shutdown .tpb-confirmation{display:none!important}
@media(max-width:650px){.tpb-v4 .tpb-confirmation-details{grid-template-columns:1fr}.tpb-v4 .tpb-confirmation h2{font-size:30px}}
.tpb-v4 .tpb-estimate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 0 22px;padding:16px 18px;border:1px solid var(--tpb-panel-border,#e7e7e7);border-radius:var(--tpb-field-radius,8px);background:rgba(0,0,0,.025)}
.tpb-v4 .tpb-estimate span{font-size:.82em;text-transform:uppercase;letter-spacing:.08em;color:var(--tpb-muted,#666);font-weight:700}.tpb-v4 .tpb-estimate strong{font-size:1.15em}.tpb-v4 .tpb-estimate small{flex-basis:100%;color:var(--tpb-muted,#666)}


/* v2.2.5 booking action: prominent estimate on the left; submit stays anchored on the right. */
.tpb-v4 .tpb-booking-action{
  display:grid;
  grid-template-columns:minmax(260px,340px) minmax(220px,auto);
  justify-content:end;
  align-items:stretch;
  gap:14px;
  margin-top:24px
}
.tpb-v4 .tpb-booking-action .tpb-estimate{
  grid-column:1;
  box-sizing:border-box;
  margin:0;
  padding:12px 18px;
  min-width:260px;
  max-width:340px;
  min-height:64px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  gap:2px;
  border:1px solid var(--tpb-panel-border,#e7e7e7);
  border-radius:10px;
  background:rgba(0,0,0,.035)
}
.tpb-v4 .tpb-booking-action .tpb-estimate span{
  font-size:11px;
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--tpb-muted,#666);
  font-weight:750
}
.tpb-v4 .tpb-booking-action .tpb-estimate strong{
  display:block;
  max-width:100%;
  font-size:24px;
  line-height:1.15;
  font-weight:750;
  text-align:left;
  overflow-wrap:anywhere
}
.tpb-v4 .tpb-booking-action .tpb-submit{
  grid-column:2;
  box-sizing:border-box;
  margin:0;
  min-width:220px;
  min-height:64px;
  white-space:nowrap;
  justify-self:end
}
@media(max-width:650px){
  .tpb-v4 .tpb-booking-action{grid-template-columns:1fr;justify-content:stretch}
  .tpb-v4 .tpb-booking-action .tpb-estimate{grid-column:1;width:100%;max-width:none;min-width:0}
  .tpb-v4 .tpb-booking-action .tpb-submit{grid-column:1;width:100%;min-width:0;justify-self:stretch}
}

/* v2.2.3 event selection: keep price invisible until a real event + duration are chosen. */
.tpb-v4 .tpb-estimate[hidden],.tpb-v4 .tpb-other-event[hidden]{display:none!important}
.tpb-v4 .tpb-submit:disabled{opacity:.48;cursor:not-allowed;filter:saturate(.6)}

/* v2.2.6 booking polish. */
.tpb-v4 .tpb-required-note{margin:14px 0 8px;text-align:right;font-size:12px;color:var(--tpb-muted)}
.tpb-v4 .tpb-required-note span,.tpb-v4 .tpb-required-mark{color:#b32d2e;font-weight:800}
.tpb-v4 .tpb-selected-summary{margin:22px 0 0;padding:13px 16px;border:1px solid var(--tpb-panel-border);border-radius:10px;background:#fafafa;color:var(--tpb-text)}
.tpb-v4 .tpb-selected-summary[hidden]{display:none!important}
.tpb-v4 .tpb-selected-summary span{display:block;margin-bottom:4px;font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--tpb-muted)}
.tpb-v4 .tpb-selected-summary strong{display:block;font-size:14px;line-height:1.45;overflow-wrap:anywhere}
.tpb-v4 .tpb-booking-action .tpb-estimate small{display:block;margin-top:5px;font-size:10.5px;line-height:1.3;color:var(--tpb-muted);font-weight:500;max-width:270px}
.tpb-v4 .tpb-booking-action .tpb-estimate.is-updating{animation:tpbEstimatePulse .34s ease both}
@keyframes tpbEstimatePulse{0%{transform:scale(.985);opacity:.72}55%{transform:scale(1.018);opacity:1}100%{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.tpb-v4 .tpb-booking-action .tpb-estimate.is-updating{animation:none}}
.tpb-v4 .tpb-start-again{display:block;margin:9px 0 0 auto;padding:2px 0;border:0;background:transparent;color:var(--tpb-muted);font:inherit;font-size:12px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tpb-v4 .tpb-start-again:hover{color:var(--tpb-text)}
@media(max-width:650px){.tpb-v4 .tpb-required-note{text-align:left}.tpb-v4 .tpb-start-again{margin-right:auto}}


/* v2.2.8 booking action refinement: preserve the established form style while
   borrowing the cleaner hierarchy from the confirmation mock-up. */
.tpb-v4 .tpb-head .tpb-price-note{
  margin-top:8px;
  font-size:12px;
  line-height:1.45;
  color:var(--tpb-muted,#666);
  opacity:.82
}
.tpb-v4 .tpb-booking-action{
  grid-template-columns:minmax(210px,280px) minmax(210px,260px);
  gap:12px;
  align-items:stretch
}
.tpb-v4 .tpb-booking-action .tpb-estimate{
  min-width:210px;
  max-width:280px;
  min-height:52px;
  padding:8px 15px;
  border-radius:9px
}
.tpb-v4 .tpb-booking-action .tpb-estimate span{
  font-size:10px;
  line-height:1.1
}
.tpb-v4 .tpb-booking-action .tpb-estimate strong{
  margin-top:2px;
  font-size:23px;
  line-height:1.05
}
.tpb-v4 .tpb-booking-action .tpb-submit{
  min-width:210px;
  min-height:52px;
  padding:10px 18px;
  border-radius:9px;
  margin:0
}
/* The price note moved to the heading; never allow old cached markup to create
   an overflowing third line in the compact action row. */
.tpb-v4 .tpb-booking-action .tpb-estimate small{display:none!important}
@media(max-width:650px){
  .tpb-v4 .tpb-booking-action .tpb-estimate,
  .tpb-v4 .tpb-booking-action .tpb-submit{min-height:50px}
}

/* Three-state availability legend: available, pending/limited, confirmed unavailable. */
.tpb-v4 .tpb-calendar-legend{display:flex;gap:14px;flex-wrap:wrap;margin:10px 2px 0;color:var(--tpb-muted);font-size:12px}.tpb-v4 .tpb-calendar-legend span{display:inline-flex;align-items:center;gap:6px}.tpb-v4 .tpb-calendar-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}.tpb-v4 .tpb-calendar-legend .is-available{background:var(--tpb-accent)}.tpb-v4 .tpb-calendar-legend .is-limited{background:var(--tpb-limited)}.tpb-v4 .tpb-calendar-legend .is-unavailable{background:var(--tpb-disabled);opacity:.55}

.tpb-confirmation-spam{display:block;margin-top:6px;font-size:12px;line-height:1.45;color:#6b7280;font-weight:500;}


/* v2.3.12 — optional booking discount code */
.tpb-v4 .tpb-discount{
  grid-column:1/-1;
  min-width:0;
}
.tpb-v4 .tpb-discount>label{
  display:block;
  font-weight:600;
  color:var(--tpb-text);
}
.tpb-v4 .tpb-discount>label small{
  font-weight:400;
  opacity:.55;
}
.tpb-v4 .tpb-discount-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:9px;
  align-items:stretch;
  margin-top:7px;
}
.tpb-v4 .tpb-discount-row input{
  width:100%;
  min-width:0;
  margin:0;
  padding:12px 13px;
  border:1px solid var(--tpb-input-border);
  border-radius:var(--tpb-field-radius);
  background:var(--tpb-input-bg);
  color:var(--tpb-text);
  font:inherit;
  text-transform:uppercase;
}
.tpb-v4 .tpb-discount-apply{
  border:1px solid var(--tpb-accent);
  border-radius:var(--tpb-field-radius);
  padding:10px 18px;
  background:var(--tpb-accent);
  color:var(--tpb-accent-text);
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.tpb-v4 .tpb-discount-apply:disabled{opacity:.6;cursor:wait}
.tpb-v4 .tpb-discount-status{
  min-height:18px;
  margin-top:6px;
  font-size:12px;
  line-height:1.4;
  color:var(--tpb-muted);
}
.tpb-v4 .tpb-discount-status.success{color:#187a45}
.tpb-v4 .tpb-discount-status.error{color:#b42318}
@media(max-width:480px){
  .tpb-v4 .tpb-discount-row{grid-template-columns:1fr}
  .tpb-v4 .tpb-discount-apply{width:100%}
}
