/* 01 Theme variables */
.btb-booking {
  --btb-primary: var(--e-global-color-primary, #094d52);
  --btb-secondary: var(--e-global-color-secondary, #d2d2d2);
  --btb-text: var(--e-global-color-text, #094d52);
  --btb-accent: var(--e-global-color-accent, #62c03a);
  --btb-accent-contrast: #fff;
  --btb-surface: #fff;
  --btb-surface-soft: var(--e-global-color-e89f067, #fffef0);
  --btb-muted: color-mix(in srgb, var(--btb-text) 62%, transparent);
  --btb-border: var(--e-global-color-3dfeab4, #f3f1e4);
  --btb-heading-font: var(--e-global-typography-primary-font-family, "Big Shoulders Display"), sans-serif;
  --btb-heading-weight: var(--e-global-typography-primary-font-weight, 700);
  --btb-body-font: var(--e-global-typography-text-font-family, "Pathway Extreme"), sans-serif;
  --btb-body-weight: var(--e-global-typography-text-font-weight, 400);
  --btb-button-font: var(--e-global-typography-accent-font-family, "Pathway Extreme"), sans-serif;
  --btb-button-weight: var(--e-global-typography-accent-font-weight, 600);
  --btb-radius: 15px;
  --btb-control-radius: 12px;
  --btb-control-height: 44px;
  --btb-gap: 24px;
  --btb-sticky-top: 24px;
  width: 100%;
  max-width: none;
  margin: 24px 0;
  color: var(--btb-text);
  font: var(--btb-body-weight) 15px/1.55 var(--btb-body-font);
}
.admin-bar .btb-booking { --btb-sticky-top: 56px; }

/* 02 Layout */
.btb-booking-layout { display: grid; grid-template-columns: minmax(0,2.25fr) minmax(300px,1fr); gap: var(--btb-gap); align-items: start; width: 100%; }
.btb-booking-main { overflow: hidden; border: 1px solid var(--btb-border); border-radius: var(--btb-radius); background: var(--btb-surface); }
.btb-error-summary,.btb-notice { padding: 14px 18px; border-left: 4px solid var(--btb-accent); background: var(--btb-surface-soft); }
.btb-status { min-height: 1.5em; }

/* 03 Step headers */
.btb-booking .btb-booking-step { min-width: 0; min-inline-size: 0; margin: 0; padding: 0; border: 0; border-bottom: 1px solid var(--btb-border); border-radius: 0; }
.btb-booking-step:last-child { border-bottom: 0; }
.btb-booking .btb-booking-step__legend { display: block; float: none; width: 100%; max-width: none; margin: 0; padding: 0; }
.btb-booking button.btb-step-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 64px; margin: 0; padding: 22px 28px; border: 0; border-radius: 0; background: transparent; color: var(--btb-text); text-align: left; cursor: pointer; }
.btb-booking button.btb-step-toggle:hover:not(:disabled) { background: color-mix(in srgb,var(--btb-accent) 5%,var(--btb-surface)); color: var(--btb-text); }
.btb-booking button.btb-step-toggle:disabled { background: transparent; color: var(--btb-muted); cursor: not-allowed; opacity: .68; }
.btb-step-content { box-sizing: border-box; overflow: hidden; padding: 0 28px 26px; }
.btb-step-content[hidden] { display: none; }
.btb-step-heading { display: flex; align-items: baseline; gap: 10px; }
.btb-booking-step__number { color: var(--btb-accent); font: 700 13px/1 var(--btb-body-font); letter-spacing: .12em; }
.btb-booking-step__title { margin: 0; color: var(--btb-primary); font: var(--btb-heading-weight) 19px/1.1 var(--btb-heading-font); letter-spacing: .035em; text-transform: uppercase; }
.btb-step-marker { display: grid; flex: 0 0 25px; place-items: center; width: 25px; height: 25px; border: 1px solid var(--btb-border); border-radius: 50%; color: var(--btb-primary); font-size: 15px; font-weight: 700; }
.btb-booking-step[data-state=active] .btb-step-toggle[aria-expanded=true] .btb-step-marker::before { content: "\2212"; }
.btb-booking-step[data-state=active] .btb-step-toggle[aria-expanded=false] .btb-step-marker::before { content: "+"; }
.btb-booking-step[data-state=completed] .btb-step-marker { border-color: var(--btb-accent); background: var(--btb-accent); color: var(--btb-accent-contrast); }
.btb-booking-step[data-state=completed] .btb-step-marker::before { content: "\2713"; }
.btb-booking-step[data-state=locked] .btb-step-marker::before { content: "\2022"; }
.btb-booking-step[data-state=completed] .btb-booking-step__title,.btb-booking-step[data-state=active] .btb-booking-step__title { color: var(--btb-primary); }
.btb-booking label,.btb-departure-label { display: block; margin: 0; color: var(--btb-text); font-weight: 600; font-size: 14px; }
.btb-booking input,.btb-booking select,.btb-booking button { font-family: inherit; }
.btb-booking input:not([type=checkbox]),.btb-booking select { width: 100%; height: var(--btb-control-height); min-height: var(--btb-control-height); padding: 0 13px; border: 1px solid var(--btb-border); border-radius: var(--btb-control-radius); background: var(--btb-surface); color: var(--btb-text); box-shadow: none; }
.btb-booking input[type=number] { -moz-appearance: textfield; appearance: textfield; }
.btb-booking input[type=number]::-webkit-inner-spin-button,.btb-booking input[type=number]::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.btb-booking :is(button,input,select):focus-visible { outline: 3px solid color-mix(in srgb,var(--btb-accent) 55%,transparent); outline-offset: 2px; }
.btb-tour-details { display: none; }

/* 04 Calendar */
.btb-calendar-nav { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.btb-booking .btb-calendar-nav button { display: grid; place-items: center; width: 40px; min-height: 40px; padding: 0; border: 1px solid var(--btb-border); border-radius: 10px; background: var(--btb-surface); color: var(--btb-primary); }
.btb-month-label { font-family: var(--btb-heading-font); font-size: 18px; font-weight: var(--btb-heading-weight); text-transform: capitalize; }
.btb-calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(38px,1fr)); gap: 7px; margin-top: 16px; }
.btb-weekday { padding: 4px 0; color: var(--btb-muted); font-size: 13px; font-weight: 600; text-align: center; }
.btb-booking button.btb-calendar-day { min-height: 40px; padding: 0; border: 1px solid var(--btb-border); border-radius: 10px; background: color-mix(in srgb,var(--btb-accent) 7%,var(--btb-surface)); color: var(--btb-text); cursor: pointer; }
.btb-booking button.btb-calendar-day:hover:not(:disabled) { border-color: var(--btb-accent); background: color-mix(in srgb,var(--btb-accent) 12%,var(--btb-surface)); color: var(--btb-text); }
.btb-booking button.btb-calendar-day[aria-selected=true] { border-color: var(--btb-accent); outline: 2px solid var(--btb-accent); background: var(--btb-accent); color: #fff; font-weight: 700; }
.btb-booking button.btb-calendar-day:disabled { background: var(--btb-surface-soft); color: var(--btb-muted); opacity: .55; cursor: not-allowed; }

/* 05 Tour cards */
.btb-tour-select { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.btb-tour-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 16px; }
.btb-tour-grid--locked { grid-template-columns: minmax(180px,280px); }
.btb-booking .btb-tour-card { position: relative; display: flex; flex-direction: column; width: 100%; max-width: none; min-height: 0; padding: 0; overflow: hidden; border: 1px solid var(--btb-border); border-radius: var(--btb-radius); background: var(--btb-surface); color: var(--btb-text); text-align: left; cursor: pointer; transition: border-color .2s,box-shadow .2s,transform .2s; }
.btb-booking .btb-tour-card:hover { border-color: var(--btb-accent); background: var(--btb-surface); color: var(--btb-text); transform: translateY(-2px); }
.btb-tour-card__image { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.btb-tour-card__body { display: grid; gap: 5px; padding: 14px; }
.btb-tour-card__body strong { font: var(--btb-heading-weight) 17px/1.15 var(--btb-heading-font); }
.btb-tour-card__body span { color: var(--btb-muted); font-size: 13px; line-height: 1.4; }
.btb-booking .btb-tour-card--selected { border-color: var(--btb-accent); box-shadow: inset 0 0 0 2px var(--btb-accent); background: color-mix(in srgb,var(--btb-accent) 5%,var(--btb-surface)); color: var(--btb-text); }
.btb-tour-card--selected::after { content: "\2713"; position: absolute; top: 10px; right: 10px; display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; background: var(--btb-accent); color: #fff; font-weight: 700; }
.btb-locked-tour { margin: 0; font: var(--btb-heading-weight) 18px/1.2 var(--btb-heading-font); }

/* 06 Departure & participants */
.btb-participants { display: grid; grid-template-columns: minmax(180px,1.5fr) repeat(3,minmax(105px,1fr)); gap: 16px; align-items: end; }
.btb-departure-fields label { margin: 0; }
.btb-departure-fields label select,.btb-participant-field > label > :is(input,select) { margin-top: 7px; }
.btb-time-pair { display: grid; grid-template-columns: 1fr auto 1fr; gap: 8px; align-items: end; }
.btb-departure-label { margin-bottom: 5px; }
.btb-departure-fields p { margin: 0 0 8px; color: var(--btb-muted); font-size: 13px; font-weight: 400; }
.btb-departure-fields .btb-departure-loading,.btb-departure-fields .btb-departure-error { margin: 0; padding: 12px 14px; border-left: 3px solid var(--btb-accent); background: var(--btb-surface-soft); color: var(--btb-text); }
.btb-departure-fields .btb-departure-error { border-left-color: #b32d2e; }
.btb-booking .description { margin: 8px 0 0; color: var(--btb-muted); font-size: 13px; }
.btb-guest-info { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 16px 0 0; color: var(--btb-muted); font-size: 13px; }
.btb-booking .btb-step-continue-block { text-align: right; margin-top: 18px;}
.btb-booking .btb-step-continue {min-height: 44px; padding: 9px 22px; font: var(--btb-button-weight) 14px/1 var(--btb-button-font); text-transform: uppercase; }
.btb-booking .btb-step-continue:hover {background: var(--btb-primary); color: #fff; border: 1px solid var(--btb-primary); }

/* 07 Quantity controls */
.btb-quantity { display: grid; grid-template-columns: 38px minmax(42px,1fr) 38px; margin-top: 7px; }
.btb-quantity :is(input,select) { min-width: 0; margin: 0; border-radius: 0; text-align: center; }
.btb-quantity select { padding-inline: 8px; }
.btb-booking button.btb-quantity__button { min-height: var(--btb-control-height); padding: 0; border: 1px solid var(--btb-accent); background: var(--btb-accent); color: var(--btb-accent-contrast); font-size: 20px; line-height: 1; cursor: pointer; }
.btb-booking button.btb-quantity__button:hover:not(:disabled),.btb-booking button.btb-quantity__button:focus-visible { border-color: var(--btb-accent); background: var(--btb-accent); color: var(--btb-accent-contrast); }
.btb-booking button.btb-quantity__button:disabled { border-color: var(--btb-border); background: var(--btb-surface-soft); color: var(--btb-muted); cursor: not-allowed; opacity: .72; }
.btb-quantity__button:first-child { border-radius: var(--btb-control-radius) 0 0 var(--btb-control-radius); border-right: 0; }
.btb-quantity__button:last-child { border-radius: 0 var(--btb-control-radius) var(--btb-control-radius) 0; border-left: 0; }

/* 08 Extras */
.btb-extra-grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
.btb-booking label.btb-extra-card { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 12px; margin: 0; padding: 14px 16px; border: 1px solid var(--btb-border); border-radius: var(--btb-control-radius); background: var(--btb-surface); cursor: pointer; transition: border-color .2s,background .2s; }
.btb-booking label.btb-extra-card:hover,.btb-booking label.btb-extra-card:has(input:checked) { border-color: var(--btb-accent); background: color-mix(in srgb,var(--btb-accent) 6%,var(--btb-surface)); }
.btb-extra-card input { width: 19px; height: 19px; margin: 0; accent-color: var(--btb-accent); }
.btb-extra-card__copy { display: grid; gap: 3px; }
.btb-extra-card__title { font-weight: 600; }
.btb-extra-card__description { color: var(--btb-muted); font-size: 13px; font-weight: 400; }
.btb-extra-card__price { color: var(--btb-primary); font-weight: 600; white-space: nowrap; }
.btb-extras-note { margin: 0 0 12px; color: var(--btb-muted); font-size: 13px; }
.btb-extras-actions {}
.btb-booking .btb-no-extras { min-height: 50px; padding: 10px 22px; border: 1px solid var(--btb-border); border-radius: 50px; background: var(--btb-surface); color: var(--btb-primary); font: var(--btb-button-weight) 15px/1 var(--btb-button-font); cursor: pointer; }

/* 09 Summary */
.btb-booking-summary { position: sticky; top: var(--btb-sticky-top); align-self: start; min-width: 0; }
.btb-booking-summary__inner { padding: 28px; border-radius: var(--btb-radius); background: var(--btb-primary); color: #fff; }
.btb-booking .btb-booking-summary__title { margin: 0; color: inherit; font: var(--btb-heading-weight) 28px/1.05 var(--btb-heading-font); letter-spacing: .025em; text-transform: uppercase; }
.btb-booking-summary__title::after { content: ""; display: block; width: 48px; height: 3px; margin: 13px 0 22px; border-radius: 2px; background: var(--btb-accent); }
.btb-booking-summary__details { display: grid; gap: 0; margin-bottom: 0; }
.btb-booking-summary__row { display: grid; grid-template-columns: 19px minmax(74px,.8fr) minmax(0,1.2fr); align-items: start; gap: 10px; padding: 12px 0; border-bottom: 1px solid color-mix(in srgb,currentColor 20%,transparent); }
.btb-booking-summary__icon { width: 18px; height: 18px; margin-top: 2px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; opacity: .82; }
.btb-booking-summary__label { opacity: .75; font-size: 13px; }
.btb-booking-summary__row strong { min-width: 0; font-size: 14px; line-height: 1.35; overflow-wrap: anywhere; text-align: right; }

/* 10 Pricing */
.btb-price { margin: 20px 0; padding: 20px 0; border: solid color-mix(in srgb,currentColor 22%,transparent); border-width: 0 0 1px; color: inherit; }
.btb-price h3 { margin: 0 0 14px; color: inherit; font: var(--btb-heading-weight) 22px/1.1 var(--btb-heading-font); }
.btb-price dl { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px 16px; margin: 0; }
.btb-price dt { font-size: 13px; font-weight: 500; opacity: .82; }
.btb-price dd { margin: 0; font-weight: 600; text-align: right; }
.btb-price-state,.btb-price-placeholder,.btb-price-loading { margin: 0; color: inherit; font-size: 13px; opacity: .76; }
.btb-payable-total { display: flex; justify-content: space-between; gap: 16px; margin-top: 18px; padding-top: 16px; border-top: 1px solid color-mix(in srgb,currentColor 22%,transparent); color: inherit; font: var(--btb-heading-weight) 29px/1.1 var(--btb-heading-font); }

/* 11 Payment */
.btb-booking .btb-payment { width: 100%; min-height: 50px; padding: 10px 22px; font: var(--btb-button-weight) 15px/1 var(--btb-button-font); letter-spacing: .035em; text-transform: uppercase; }
.btb-booking .btb-payment:hover:not(:disabled) { background: var(--btb-primary); color: #fff; border: 1px solid var(--btb-primary); }
.btb-extras-actions .btb-payment { max-width: 260px; }
.btb-payment[disabled] { cursor: not-allowed; opacity: .52; }
.btb-booking-button { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 8px 22px; border-radius: 50px; background: var(--btb-accent); color: #fff; font-family: var(--btb-button-font); font-weight: var(--btb-button-weight); }

/* 12 Responsive */
@media (max-width:1024px) {
  .btb-booking-layout { grid-template-columns: 1fr; }
  .btb-booking-summary { position: static; }
  .btb-tour-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .btb-participants { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .btb-departure-fields { grid-column: 1 / -1; }
}
@media (max-width:600px) {
  .btb-booking { margin: 16px 0; font-size: 14px; }
  .btb-booking button.btb-step-toggle { padding: 20px 18px; }
  .btb-step-content { padding: 0 18px 22px; }
  .btb-tour-grid { grid-template-columns: minmax(0,1fr); }
  .btb-participants { grid-template-columns: 1fr; }
  .btb-departure-fields { grid-column: auto; }
  .btb-calendar-grid { grid-template-columns: repeat(7,minmax(30px,1fr)); gap: 4px; }
  .btb-calendar-day { min-height: 36px; }
  .btb-extra-card { grid-template-columns: auto minmax(0,1fr); }
  .btb-extra-card__price { grid-column: 2; }
  .btb-booking-summary__inner { padding: 24px 20px; }
  .btb-payable-total { font-size: 26px; }
}
