/* Phase 17 — additive commerce, checkout, archive and service-booking corrections. */

/* The product purchase panel must remain in normal document flow. */
body.single-product.wa-product-detail-v2 div.product .summary,
body.single-product .wa-product-detail-v2 div.product .summary,
body.single-product div.product .summary,
body.single-product div.product .entry-summary {
  position: relative !important;
  inset: auto !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  left: auto !important;
  align-self: start !important;
  transform: none !important;
}

/* Five WooCommerce products across, including Related Products. */
body.woocommerce .related.products ul.products,
body.woocommerce .upsells.products ul.products,
body.woocommerce-page .related.products ul.products,
body.woocommerce-page .upsells.products ul.products {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 18px !important;
}
body.woocommerce .related.products ul.products::before,
body.woocommerce .related.products ul.products::after,
body.woocommerce .upsells.products ul.products::before,
body.woocommerce .upsells.products ul.products::after {
  display: none !important;
}
body.woocommerce .related.products ul.products li.product,
body.woocommerce .upsells.products ul.products li.product,
body.woocommerce-page .related.products ul.products li.product,
body.woocommerce-page .upsells.products ul.products li.product {
  float: none !important;
  width: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
}

/* Five service cards and five enhanced directory cards across. */
.wa-service-grid,
.wa-listing-grid-v2 {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 16px !important;
  align-items: stretch !important;
}
.wa-service-grid > *,
.wa-listing-grid-v2 > * {
  min-width: 0 !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
}

/* Service photography must fill the complete media block. */
.wa-service-card__media {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 4 / 3 !important;
  overflow: hidden !important;
  background: #eee8e1 !important;
}
.wa-service-card__media > img,
.wa-service-card__media picture,
.wa-service-card__media picture > img,
.wa-service-card__media .wp-post-image {
  display: block !important;
  width: 100% !important;
  min-width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  min-height: 100% !important;
  margin: 0 !important;
  object-fit: cover !important;
  object-position: center !important;
}
.wa-service-card__placeholder {
  display: grid !important;
  place-items: center !important;
  width: 100% !important;
  height: 100% !important;
}

/* Magazine adverts can be accumulated before checkout. */
.wa-mag-added-actions {
  display: grid;
  gap: 7px;
  margin-top: 11px;
  padding: 13px;
  border: 1px solid rgba(215, 64, 51, .28);
  border-radius: 10px;
  background: #fff8f5;
}
.wa-mag-added-actions > strong { color: #17171a; font-size: 13px; }
.wa-mag-added-actions > span { color: #68646a; font-size: 11px; line-height: 1.45; }
.wa-mag-added-actions > div { display: flex; gap: 8px; flex-wrap: wrap; }

/* Immediate visual confirmation when any floating/header basket count changes. */
.wa-cart-count-pop { animation: waPhase17CartCountPop .36s ease; }
@keyframes waPhase17CartCountPop {
  0% { transform: scale(.78); }
  55% { transform: scale(1.18); }
  100% { transform: scale(1); }
}

/* Remove only the duplicate cart control positively identified on the right. */
.wa-hide-duplicate-floating-cart { display: none !important; }

/*
 * Basket page: keep it centred inside the site's normal 1380px content width.
 * Both the classic WooCommerce basket and the Cart block are covered.
 */
body.woocommerce-cart .wa-content-wrap > .wa-container {
  width: min(calc(100% - 42px), 1380px) !important;
  max-width: 1380px !important;
  margin-inline: auto !important;
  padding-inline: 0 !important;
  overflow: visible !important;
}
body.woocommerce-cart .wa-content-wrap > .wa-container > .woocommerce,
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart-collaterals,
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-cart .wc-block-cart,
body.woocommerce-cart .wc-block-components-sidebar-layout {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin-inline: 0 !important;
  box-sizing: border-box !important;
}
body.woocommerce-cart .wp-block-woocommerce-cart.alignwide,
body.woocommerce-cart .wp-block-woocommerce-cart.alignfull,
body.woocommerce-cart .wc-block-cart.alignwide,
body.woocommerce-cart .wc-block-cart.alignfull {
  left: auto !important;
  right: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.woocommerce-cart .wc-block-components-sidebar-layout {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(310px, 390px) !important;
  align-items: start !important;
  gap: clamp(24px, 3vw, 46px) !important;
}
body.woocommerce-cart .wc-block-components-main,
body.woocommerce-cart .wc-block-cart__main,
body.woocommerce-cart .wc-block-components-sidebar,
body.woocommerce-cart .wc-block-cart__sidebar,
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart_totals {
  width: auto !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  box-sizing: border-box !important;
}
body.woocommerce-cart .wc-block-components-main,
body.woocommerce-cart .wc-block-cart__main {
  padding-right: 0 !important;
}
body.woocommerce-cart .wc-block-components-sidebar,
body.woocommerce-cart .wc-block-cart__sidebar {
  margin-left: 0 !important;
}
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .wc-block-cart-items,
body.woocommerce-cart table.shop_table {
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch;
}
body.woocommerce-cart .wc-block-cart-items,
body.woocommerce-cart table.shop_table {
  width: 100% !important;
  max-width: 100% !important;
  table-layout: auto !important;
}
body.woocommerce-cart .wc-block-cart-item__product,
body.woocommerce-cart .product-name {
  min-width: 0 !important;
  overflow-wrap: anywhere;
}
body.woocommerce-cart .wc-block-components-totals-wrapper,
body.woocommerce-cart .wc-block-cart__totals-title {
  box-sizing: border-box !important;
}
body.woocommerce-cart .cart-collaterals {
  display: flex !important;
  justify-content: flex-end !important;
  min-width: 0 !important;
}
body.woocommerce-cart .cart-collaterals .cart_totals {
  float: none !important;
  width: min(100%, 430px) !important;
}

/*
 * Checkout province/state controls: match the height and radius of the other
 * fields and leave enough room for the dropdown arrow.
 */
body.woocommerce-checkout #billing_state_field select,
body.woocommerce-checkout #shipping_state_field select,
body.woocommerce-checkout select#billing_state,
body.woocommerce-checkout select#shipping_state,
body.woocommerce-checkout .wc-block-components-address-form__state select,
body.woocommerce-checkout .wc-block-components-select-control select,
body.woocommerce-checkout .wc-block-components-select-control__input,
body.woocommerce-checkout .wc-block-components-combobox-control input,
body.woocommerce-checkout .components-combobox-control__input {
  display: block !important;
  width: 100% !important;
  min-height: 52px !important;
  height: 52px !important;
  padding: 13px 44px 13px 13px !important;
  border: 1px solid #d8d3cc !important;
  border-radius: 8px !important;
  background-color: #fff !important;
  line-height: 24px !important;
  box-sizing: border-box !important;
  overflow: visible !important;
  box-shadow: none !important;
}
body.woocommerce-checkout #billing_state_field .select2-container,
body.woocommerce-checkout #shipping_state_field .select2-container {
  display: block !important;
  width: 100% !important;
  min-height: 52px !important;
}
body.woocommerce-checkout #billing_state_field .select2-selection--single,
body.woocommerce-checkout #shipping_state_field .select2-selection--single {
  min-height: 52px !important;
  height: 52px !important;
  padding: 0 42px 0 13px !important;
  border: 1px solid #d8d3cc !important;
  border-radius: 8px !important;
  background: #fff !important;
  box-sizing: border-box !important;
}
body.woocommerce-checkout #billing_state_field .select2-selection__rendered,
body.woocommerce-checkout #shipping_state_field .select2-selection__rendered {
  height: 50px !important;
  padding: 13px 0 !important;
  line-height: 24px !important;
  box-sizing: border-box !important;
}
body.woocommerce-checkout #billing_state_field .select2-selection__arrow,
body.woocommerce-checkout #shipping_state_field .select2-selection__arrow {
  top: 0 !important;
  right: 10px !important;
  width: 26px !important;
  height: 50px !important;
}
body.woocommerce-checkout .wc-block-components-select-control,
body.woocommerce-checkout .wc-block-components-combobox,
body.woocommerce-checkout .wc-block-components-address-form__state {
  min-height: 52px !important;
  overflow: visible !important;
}
body.woocommerce-checkout .wc-block-components-select-control__label,
body.woocommerce-checkout .wc-block-components-combobox-control label {
  z-index: 2;
}

/* Service booking: replace the squeezed inline calendar with a compact trigger. */
body.wa-service-booking-product .wa-booking-picker-trigger {
  position: relative;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  min-width: 48px;
  min-height: 48px;
  margin: 4px 0 14px;
  padding: 0;
  border: 1px solid rgba(215, 64, 51, .36);
  border-radius: 50%;
  background: #fff8f5;
  color: #fff;
  box-shadow: 0 8px 24px rgba(23, 23, 26, .09);
  cursor: pointer;
  overflow: visible;
}
body.wa-service-booking-product .wa-booking-picker-trigger:hover,
body.wa-service-booking-product .wa-booking-picker-trigger:focus-visible {
  border-color: #d74033;
  outline: none;
  box-shadow: 0 0 0 3px rgba(215, 64, 51, .12), 0 9px 26px rgba(23, 23, 26, .1);
}
body.wa-service-booking-product .wa-booking-picker-trigger::after {
  content: attr(data-label);
  position: absolute;
  z-index: 10;
  left: calc(100% + 10px);
  top: 50%;
  width: max-content;
  max-width: 220px;
  padding: 7px 9px;
  border-radius: 7px;
  background: #17171a;
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translate(4px, -50%);
  transition: opacity .16s ease, transform .16s ease;
}
body.wa-service-booking-product .wa-booking-picker-trigger:hover::after,
body.wa-service-booking-product .wa-booking-picker-trigger:focus-visible::after {
  opacity: 1;
  transform: translate(0, -50%);
}
body.wa-service-booking-product .wa-booking-picker-trigger__icon {
  position: relative;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #d74033;
  color: #fff;
  animation: waPhase17BookingPulse 1.65s ease-in-out infinite;
}
body.wa-service-booking-product .wa-booking-picker-trigger__icon svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
body.wa-service-booking-product .wa-booking-picker-trigger.has-selection {
  border-color: rgba(31, 126, 69, .38);
  background: #f3fbf6;
}
body.wa-service-booking-product .wa-booking-picker-trigger.has-selection .wa-booking-picker-trigger__icon {
  background: #1f7e45;
  animation: none;
}
@keyframes waPhase17BookingPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(215, 64, 51, .36); transform: scale(1); }
  50% { box-shadow: 0 0 0 9px rgba(215, 64, 51, 0); transform: scale(1.04); }
}

body.wa-service-booking-product.wa-booking-overlay-open,
html.wa-booking-overlay-open {
  overflow: hidden !important;
}
body.wa-service-booking-product .wa-booking-picker-overlay[hidden] {
  display: none !important;
}
body.wa-service-booking-product .wa-booking-picker-overlay {
  position: fixed !important;
  z-index: 2147483000 !important;
  inset: 0 !important;
  display: grid !important;
  place-items: center !important;
  padding: clamp(14px, 3vw, 34px) !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product .wa-booking-picker-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: 0;
  background: rgba(15, 14, 17, .72);
  backdrop-filter: blur(4px);
  cursor: default;
}
body.wa-service-booking-product .wa-booking-picker-panel {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  width: min(760px, 100%);
  max-height: min(88vh, 900px);
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 30px 90px rgba(0, 0, 0, .34);
}
body.wa-service-booking-product .wa-booking-picker-head,
body.wa-service-booking-product .wa-booking-picker-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 15px 18px;
  background: #fff;
}
body.wa-service-booking-product .wa-booking-picker-head {
  border-bottom: 1px solid #ece7e1;
}
body.wa-service-booking-product .wa-booking-picker-foot {
  justify-content: flex-end;
  border-top: 1px solid #ece7e1;
}
body.wa-service-booking-product .wa-booking-picker-title {
  display: grid;
  gap: 2px;
}
body.wa-service-booking-product .wa-booking-picker-title strong {
  color: #17171a;
  font-size: 16px;
  line-height: 1.25;
}
body.wa-service-booking-product .wa-booking-picker-title small {
  color: #706a65;
  font-size: 11px;
  line-height: 1.35;
}
body.wa-service-booking-product .wa-booking-picker-close {
  display: grid;
  place-items: center;
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid #ded8d1;
  border-radius: 50%;
  background: #fff;
  color: #17171a;
  font-size: 23px;
  line-height: 1;
}
body.wa-service-booking-product .wa-booking-picker-content {
  min-width: 0;
  overflow: auto;
  padding: clamp(16px, 3vw, 28px);
  background: #faf8f5;
  -webkit-overflow-scrolling: touch;
}
body.wa-service-booking-product .wa-booking-picker-done {
  min-height: 44px;
  padding: 10px 18px;
  border: 0;
  border-radius: 8px;
  background: #d74033;
  color: #fff;
  font-weight: 800;
}

/* Make the complete WooCommerce Bookings interface legible in the overlay. */
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-booking-form,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-date-picker,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-date-picker .picker,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker table {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-booking-form {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  float: none !important;
}
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-booking-form > * {
  max-width: 100% !important;
}
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-date-picker {
  margin: 0 0 18px !important;
  padding: 0 !important;
  border: 0 !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker {
  margin: 0 !important;
  padding: 12px !important;
  border: 1px solid #ded8d1 !important;
  border-radius: 12px !important;
  background: #fff !important;
  font-size: 14px !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-header {
  display: grid !important;
  grid-template-columns: 42px minmax(0, 1fr) 42px !important;
  align-items: center !important;
  gap: 8px !important;
  min-height: 44px !important;
  padding: 0 0 10px !important;
  border: 0 !important;
  background: transparent !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-title {
  grid-column: 2;
  margin: 0 !important;
  color: #17171a !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  text-align: center !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next {
  position: static !important;
  display: grid !important;
  place-items: center !important;
  width: 42px !important;
  height: 42px !important;
  border: 1px solid #e2ddd7 !important;
  border-radius: 8px !important;
  background: #fff !important;
  cursor: pointer !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev { grid-column: 1; grid-row: 1; }
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next { grid-column: 3; grid-row: 1; }
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar {
  border-collapse: separate !important;
  border-spacing: 4px !important;
  table-layout: fixed !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar th {
  padding: 8px 2px !important;
  color: #716b65 !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  text-align: center !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td {
  width: 14.285% !important;
  height: 46px !important;
  padding: 0 !important;
  border: 0 !important;
  text-align: center !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td a,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td span {
  display: grid !important;
  place-items: center !important;
  width: 100% !important;
  min-height: 42px !important;
  padding: 0 !important;
  border: 1px solid #ece7e1 !important;
  border-radius: 8px !important;
  background: #fff !important;
  color: #252327 !important;
  line-height: 1 !important;
  text-align: center !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.bookable a,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.ui-datepicker-current-day a,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.ui-datepicker-current-day span {
  border-color: #1f7e45 !important;
  background: #1f7e45 !important;
  color: #fff !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.ui-state-disabled span,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.not_bookable span {
  background: #f0ede9 !important;
  color: #99928a !important;
  opacity: .72 !important;
}
body.wa-service-booking-product .wa-booking-picker-content fieldset,
body.wa-service-booking-product .wa-booking-picker-content .form-field,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-start-time-container,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-end-time-container {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product .wa-booking-picker-content input,
body.wa-service-booking-product .wa-booking-picker-content select {
  min-height: 46px !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-date-picker-date-fields {
  display: none !important;
}
body.wa-service-booking-product .wa-booking-picker-content .block-picker,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-start-time-container,
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-end-time-container {
  margin-top: 16px !important;
}
body.wa-service-booking-product .wa-booking-picker-content .block-picker {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)) !important;
  gap: 8px !important;
  padding: 0 !important;
}
body.wa-service-booking-product .wa-booking-picker-content .block-picker li {
  width: auto !important;
  margin: 0 !important;
  list-style: none !important;
}
body.wa-service-booking-product .wa-booking-picker-content .block-picker a {
  display: grid !important;
  place-items: center !important;
  min-height: 42px !important;
  padding: 8px !important;
  border: 1px solid #ddd7d0 !important;
  border-radius: 8px !important;
  background: #fff !important;
  color: #252327 !important;
  text-decoration: none !important;
}
body.wa-service-booking-product .wa-booking-picker-content .block-picker a.selected,
body.wa-service-booking-product .wa-booking-picker-content .block-picker a:hover {
  border-color: #d74033 !important;
  background: #fff3ef !important;
  color: #9d261e !important;
}

@media (max-width: 1280px) {
  .wa-service-grid,
  .wa-listing-grid-v2,
  body.woocommerce .related.products ul.products,
  body.woocommerce .upsells.products ul.products,
  body.woocommerce-page .related.products ul.products,
  body.woocommerce-page .upsells.products ul.products {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 1020px) {
  body.woocommerce-cart .wc-block-components-sidebar-layout {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}
@media (max-width: 820px) {
  .wa-service-grid,
  .wa-listing-grid-v2,
  body.woocommerce .related.products ul.products,
  body.woocommerce .upsells.products ul.products,
  body.woocommerce-page .related.products ul.products,
  body.woocommerce-page .upsells.products ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  body.woocommerce-cart .wa-content-wrap > .wa-container {
    width: min(calc(100% - 26px), 1380px) !important;
  }
  body.wa-service-booking-product .wa-booking-picker-overlay {
    padding: 10px !important;
  }
  body.wa-service-booking-product .wa-booking-picker-panel {
    width: 100%;
    max-height: 94vh;
    border-radius: 13px;
  }
  body.wa-service-booking-product .wa-booking-picker-content {
    padding: 14px;
  }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker {
    padding: 8px !important;
  }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar {
    border-spacing: 2px !important;
  }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td {
    height: 42px !important;
  }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td a,
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td span {
    min-height: 38px !important;
  }
}
@media (max-width: 520px) {
  .wa-service-grid,
  .wa-listing-grid-v2,
  body.woocommerce .related.products ul.products,
  body.woocommerce .upsells.products ul.products,
  body.woocommerce-page .related.products ul.products,
  body.woocommerce-page .upsells.products ul.products {
    grid-template-columns: 1fr !important;
  }
  body.wa-service-booking-product .wa-booking-picker-head,
  body.wa-service-booking-product .wa-booking-picker-foot {
    padding: 12px 13px;
  }
}

/* --------------------------------------------------------------------------
 * Phase 18 — unified commerce, booking, account and dashboard experience
 * -------------------------------------------------------------------------- */

/* Service booking trigger sits on the same action row as Book now. */
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row {
  display: grid !important;
  grid-template-columns: 52px minmax(0, 1fr) !important;
  gap: 10px !important;
  align-items: stretch !important;
  width: 100% !important;
  margin: 12px 0 16px !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .wa-booking-picker-trigger {
  width: 52px !important;
  min-width: 52px !important;
  height: 52px !important;
  min-height: 52px !important;
  margin: 0 !important;
  border-radius: 10px !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 52px !important;
  margin: 0 !important;
}
body.wa-service-booking-product .wa-booking-picker-trigger::after {
  left: 0 !important;
  top: calc(100% + 8px) !important;
  transform: translateY(-4px) !important;
}
body.wa-service-booking-product .wa-booking-picker-trigger:hover::after,
body.wa-service-booking-product .wa-booking-picker-trigger:focus-visible::after {
  transform: translateY(0) !important;
}

/* Keep the dialog within the real visible viewport and its controls visible. */
body.wa-service-booking-product .wa-booking-picker-overlay {
  position: fixed !important;
  z-index: 2147483600 !important;
  inset: 0 !important;
  width: 100vw !important;
  height: 100dvh !important;
  min-height: 100vh !important;
  padding: clamp(10px, 2vw, 24px) !important;
  box-sizing: border-box !important;
  isolation: isolate !important;
}
body.wa-service-booking-product .wa-booking-picker-panel {
  width: min(700px, calc(100vw - 28px)) !important;
  height: auto !important;
  max-height: calc(100dvh - 28px) !important;
  grid-template-rows: auto minmax(0, 1fr) auto !important;
  overflow: hidden !important;
}
body.wa-service-booking-product .wa-booking-picker-head,
body.wa-service-booking-product .wa-booking-picker-foot {
  position: relative !important;
  z-index: 5 !important;
  flex: 0 0 auto !important;
}
body.wa-service-booking-product .wa-booking-picker-content {
  max-height: none !important;
  min-height: 0 !important;
  overflow: auto !important;
  overscroll-behavior: contain !important;
  padding: clamp(12px, 2.2vw, 22px) !important;
}
body.wa-service-booking-product .wa-booking-picker-status {
  display: block;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-left: 3px solid #d74033;
  border-radius: 7px;
  background: #fff;
  color: #4f4a46;
  font-size: 12px;
  line-height: 1.45;
}
body.wa-service-booking-product .wa-booking-picker-done:disabled {
  opacity: .48 !important;
  cursor: not-allowed !important;
}
body.wa-service-booking-product.wa-booking-overlay-open .woocommerce-product-gallery__trigger,
body.wa-service-booking-product.wa-booking-overlay-open [class*="gallery__trigger"],
body.wa-service-booking-product.wa-booking-overlay-open [class*="product-gallery"] [aria-label*="zoom" i],
body.wa-service-booking-product.wa-booking-overlay-open [class*="product-gallery"] [aria-label*="search" i] {
  display: none !important;
}

/* Restore visible previous/next arrows inside the date-picker controls. */
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev span,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next span {
  display: none !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev::before,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next::before {
  display: block !important;
  color: #17171a !important;
  font: 800 20px/1 Arial, sans-serif !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev::before { content: "‹" !important; }
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next::before { content: "›" !important; }
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.ui-datepicker-current-day a,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td.ui-datepicker-current-day span {
  outline: 3px solid rgba(215,64,51,.22) !important;
  outline-offset: 1px !important;
  border-color: #d74033 !important;
  background: #d74033 !important;
}

/* Public service metadata is drawn from the Services Studio, not Uncategorized. */
body.wa-service-booking-product .wa-service-quick-meta a {
  color: inherit !important;
  font-weight: 800 !important;
  text-decoration: none !important;
}

/* Checkout progress pills are real navigation links where navigation is safe. */
.wa-checkout-steps a,
.wa-checkout-steps span {
  display: inline-flex !important;
  align-items: center !important;
  min-height: 30px !important;
  padding: 7px 11px !important;
  border: 1px solid var(--wa-light, #ddd7d0) !important;
  border-radius: 999px !important;
  background: #fff !important;
  color: #17171a !important;
  font: 700 10px/1.2 var(--wa-font-mono, "Roboto Mono", monospace) !important;
  text-decoration: none !important;
  box-sizing: border-box !important;
}
.wa-checkout-steps a:hover { border-color: #d74033 !important; color: #a92b22 !important; }
.wa-checkout-steps .is-current {
  border-color: #17171a !important;
  background: #17171a !important;
  color: #fff !important;
}
.wa-checkout-steps .is-done { border-color: #d74033 !important; }
.wa-cart-head { margin: clamp(18px,3vw,42px) 0 24px !important; }
.wa-cart-head > div h2 { margin: 5px 0 0 !important; font: 400 clamp(42px,6vw,78px)/.88 var(--wa-font-display, "Bebas Neue", sans-serif) !important; text-transform: uppercase; }

/* Cart page now follows the same card-based layout as checkout. */
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart_totals,
body.woocommerce-cart .wc-block-cart__main,
body.woocommerce-cart .wc-block-cart__sidebar,
body.woocommerce-cart .wc-block-components-sidebar-layout > * {
  border: 1px solid #e2ddd7 !important;
  border-radius: 13px !important;
  background: #fff !important;
  box-shadow: 0 8px 28px rgba(23,23,26,.035) !important;
}
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart_totals,
body.woocommerce-cart .wc-block-cart__main,
body.woocommerce-cart .wc-block-cart__sidebar {
  padding: clamp(18px,2.5vw,30px) !important;
}
body.woocommerce-cart table.shop_table {
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* A themed empty basket replaces the stock WooCommerce empty state. */
.wa-empty-cart-hero {
  display: grid;
  justify-items: center;
  max-width: 850px;
  margin: 14px auto 46px;
  padding: clamp(34px,6vw,72px) clamp(22px,5vw,64px);
  border: 1px solid #e2ddd7;
  border-radius: 16px;
  background: radial-gradient(circle at 50% 0, #fff 0, #fff 34%, #f8f4ef 100%);
  text-align: center;
  box-shadow: 0 16px 46px rgba(23,23,26,.045);
}
.wa-empty-cart-hero__icon {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  margin-bottom: 18px;
  border-radius: 50%;
  background: #17171a;
  color: #fff;
}
.wa-empty-cart-hero__icon svg { width: 30px; height: 30px; fill: none; stroke: currentColor; }
.wa-empty-cart-hero h1 { max-width: 720px; margin: 8px 0 13px; font: 400 clamp(44px,6vw,78px)/.92 var(--wa-font-display, "Bebas Neue", sans-serif); text-transform: uppercase; }
.wa-empty-cart-hero p { max-width: 590px; margin: 0 0 22px; color: #6f6964; font-size: 15px; line-height: 1.65; }

/* Ten-product personalised carousel, using the same WooCommerce/shop cards. */
.wa-product-recommendations { width: 100%; margin: clamp(38px,6vw,76px) 0; }
.wa-product-recommendations__head { display: flex; justify-content: space-between; align-items: end; gap: 20px; margin-bottom: 18px; }
.wa-product-recommendations__head h2 { margin: 5px 0 0; font-size: clamp(28px,3vw,42px); }
.wa-product-recommendations__head p { max-width: 680px; margin: 7px 0 0; color: #746e68; }
.wa-carousel-controls { display: flex; gap: 8px; }
.wa-carousel-controls button {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid #dcd6cf;
  border-radius: 50%;
  background: #fff;
  color: #17171a;
  font-size: 18px;
  cursor: pointer;
}
.wa-product-carousel { overflow: hidden; }
.wa-product-carousel .wa-product-carousel__track {
  display: grid !important;
  grid-auto-flow: column !important;
  grid-auto-columns: calc((100% - 72px) / 5) !important;
  grid-template-columns: none !important;
  gap: 18px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 2px 1px 14px !important;
  overflow-x: auto !important;
  overscroll-behavior-inline: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: thin;
}
.wa-product-carousel .wa-product-carousel__track::before,
.wa-product-carousel .wa-product-carousel__track::after { display: none !important; }
.wa-product-carousel .wa-product-carousel__track > li.product {
  float: none !important;
  width: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  scroll-snap-align: start;
}

/* Product loops: 5 wide screens, 4 laptops, 2 mobile. */
body.woocommerce ul.products,
body.woocommerce-page ul.products,
.wa-service-grid,
.wa-listing-grid-v2 {
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}

/* Custom account pages and social login buttons. */
body.page-id-login .wa-content-wrap,
body.page-id-register .wa-content-wrap,
body:has(.wa-social-auth) .wa-content-wrap { background: #f7f3ee; }
.wa-social-auth,
body:has(.wa-social-auth) .wa-auth-card {
  width: min(100%, 720px) !important;
  max-width: 720px !important;
  margin-inline: auto !important;
}
.wa-social-auth {
  margin: clamp(28px,5vw,60px) auto 0;
  padding: clamp(24px,4vw,38px) clamp(20px,4vw,38px) 0;
  border: 1px solid #e1dbd4;
  border-bottom: 0;
  border-radius: 15px 15px 0 0;
  background: #fff;
  text-align: center;
}
.wa-social-auth + .wa-auth-card {
  margin-top: 0 !important;
  border-top: 0 !important;
  border-radius: 0 0 15px 15px !important;
}
.wa-social-auth__head h2 { margin: 6px 0 8px; font: 400 clamp(40px,5vw,62px)/.9 var(--wa-font-display, "Bebas Neue", sans-serif); text-transform: uppercase; }
.wa-social-auth__head p { max-width: 540px; margin: 0 auto 20px; color: #706a65; }
.wa-social-auth__label { color: #d74033; font: 800 10px/1 var(--wa-font-mono, monospace); letter-spacing: .12em; text-transform: uppercase; }
.wa-social-auth__buttons { display: grid !important; grid-template-columns: repeat(2, minmax(0,1fr)) !important; gap: 10px !important; }
.wa-social-auth__button {
  display: flex !important;
  align-items: center !important;
  gap: 11px !important;
  min-height: 56px !important;
  padding: 11px 14px !important;
  border: 1px solid #dcd6cf !important;
  border-radius: 9px !important;
  background: #fff !important;
  color: #17171a !important;
  text-align: left !important;
  text-decoration: none !important;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.wa-social-auth__button:hover { transform: translateY(-1px); border-color: #d74033 !important; box-shadow: 0 8px 20px rgba(23,23,26,.07); }
.wa-social-auth__icon { display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: 8px; background: #f5f1ec; }
.wa-social-auth__icon svg { width: 22px; height: 22px; }
.wa-social-auth__button-copy { display: grid; gap: 2px; }
.wa-social-auth__button-copy strong { font: 800 12px/1.2 var(--wa-font-body, Montserrat, sans-serif); }
.wa-social-auth__button-copy small { color: #817a74; font-size: 9px; }
.wa-auth-divider { display: flex; align-items: center; gap: 12px; margin: 22px 0 0; color: #918a84; font: 700 9px var(--wa-font-mono, monospace); text-transform: uppercase; letter-spacing: .08em; }
.wa-auth-divider::before,.wa-auth-divider::after { content: ""; height: 1px; flex: 1; background: #e4ded7; }
body:has(.wa-social-auth) .wa-form input,
body:has(.wa-social-auth) .wa-form select { min-height: 52px; font-family: var(--wa-font-body, Montserrat, sans-serif); }

/* Dashboard panels use the whole available workspace. */
.wa-dashboard-main .wa-preference-card {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: clamp(22px,3vw,38px) !important;
  box-sizing: border-box !important;
}
.wa-dashboard-main .wa-preference-card fieldset { max-width: none !important; }
.wa-catalogue-mapping--phase18 {
  width: 100% !important;
  max-width: 1180px !important;
  margin: 28px 0 0 !important;
  box-sizing: border-box !important;
}
.wa-catalogue-mapping--phase18 select { max-width: 100% !important; }
.wa-catalogue-mapping--phase18 .wa-catalogue-map-list > label {
  display: grid !important;
  grid-template-columns: minmax(230px,.8fr) minmax(320px,1.2fr) !important;
  gap: 20px !important;
  align-items: center !important;
}

/* Working full service calendar. */
.wa-service-calendar-workspace { width: 100%; }
.wa-calendar-toolbar { display: grid; grid-template-columns: 44px minmax(0,1fr) 44px; align-items: center; gap: 12px; margin: 22px 0 14px; }
.wa-calendar-toolbar h3 { margin: 0; text-align: center; font-size: clamp(26px,3vw,38px); }
.wa-calendar-nav { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #ddd7d0; border-radius: 50%; background: #fff; color: #17171a; text-decoration: none; }
.wa-service-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0,1fr));
  gap: 7px;
  padding: clamp(12px,2vw,20px);
  border: 1px solid #e0dad3;
  border-radius: 14px;
  background: #fff;
}
.wa-service-calendar__weekday { padding: 7px 4px; color: #77706a; font: 800 10px var(--wa-font-mono, monospace); text-align: center; text-transform: uppercase; }
.wa-service-calendar__day { position: relative; display: grid; align-content: start; gap: 5px; min-height: 118px; padding: 10px; border: 1px solid #ebe6e0; border-radius: 9px; background: #faf8f5; overflow: hidden; }
.wa-service-calendar__day.is-empty { visibility: hidden; }
.wa-service-calendar__day.is-today { border-color: #d74033; box-shadow: inset 0 0 0 1px #d74033; }
.wa-service-calendar__day.has-bookings { background: #fff; }
.wa-service-calendar__date { font-weight: 900; }
.wa-service-calendar__count { color: #d74033; font-size: 9px; font-weight: 800; text-transform: uppercase; }
.wa-service-calendar__event { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 5px; padding: 5px 6px; border-radius: 5px; background: #f5e9e6; color: #3f3634; font-size: 9px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.wa-calendar-upcoming { margin-top: 22px; }

/* Admin settings page. */
.wa18-admin-card { max-width: 1050px; margin-top: 18px; padding: 24px 28px; border: 1px solid #dcdcde; border-radius: 10px; background: #fff; }
.wa18-admin-card h2 { margin-top: 28px; padding-top: 20px; border-top: 1px solid #eee; }
.wa18-admin-card h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }

@media (max-width: 1400px) {
  body.woocommerce ul.products,
  body.woocommerce-page ul.products,
  .wa-service-grid,
  .wa-listing-grid-v2 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  .wa-product-carousel .wa-product-carousel__track { grid-auto-columns: calc((100% - 54px) / 4) !important; }
}
@media (max-width: 900px) {
  .wa-checkout-head,.wa-product-recommendations__head { align-items: flex-start !important; flex-direction: column !important; }
  .wa-catalogue-mapping--phase18 .wa-catalogue-map-list > label { grid-template-columns: 1fr !important; gap: 8px !important; }
  .wa-service-calendar { overflow-x: auto; grid-template-columns: repeat(7, minmax(105px,1fr)); }
  .wa-service-calendar__day { min-height: 104px; }
}
@media (max-width: 700px) {
  body.woocommerce ul.products,
  body.woocommerce-page ul.products,
  .wa-service-grid,
  .wa-listing-grid-v2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .wa-product-carousel .wa-product-carousel__track { grid-auto-columns: calc((100% - 12px) / 2) !important; gap: 12px !important; }
  .wa-social-auth__buttons { grid-template-columns: 1fr 1fr !important; }
  .wa-social-auth__button { min-height: 52px !important; padding: 9px !important; }
  .wa-social-auth__button-copy small { display: none; }
  body.wa-service-booking-product .wa-booking-picker-overlay { padding: 6px !important; }
  body.wa-service-booking-product .wa-booking-picker-panel { width: calc(100vw - 12px) !important; max-height: calc(100dvh - 12px) !important; border-radius: 11px !important; }
  body.wa-service-booking-product .wa-booking-picker-title small { display: none; }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td { height: 38px !important; }
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td a,
  body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-calendar td span { min-height: 34px !important; }
}

/* --------------------------------------------------------------------------
 * Phase 18.1 — final responsive and universal-control safeguards
 * -------------------------------------------------------------------------- */

/* Shared backend-controlled design tokens. */
.wa-container {
  width: min(calc(100% - 48px), var(--wa-global-width, 1380px)) !important;
  max-width: none !important;
  margin-inline: auto !important;
}
body .wa-btn,
body .button,
body .woocommerce a.button,
body .woocommerce button.button,
body .woocommerce input.button {
  border-radius: var(--wa-global-button-radius, 8px) !important;
}
body .wa-panel,
body .wa-card,
body .wa-auth-card,
body .wa-preference-card,
body .wa-product-card,
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart_totals,
body.woocommerce-checkout .wa-checkout-card,
body.woocommerce-checkout .woocommerce-checkout-review-order {
  border-radius: var(--wa-global-card-radius, 12px) !important;
}

/* Page-specific editor controls. */
body.wa-page-width-narrow .wa-content-wrap > .wa-container {
  width: min(calc(100% - 48px), 920px) !important;
}
body.wa-page-width-full .wa-content-wrap > .wa-container {
  width: calc(100% - 48px) !important;
  max-width: none !important;
}
body.wa-page-bg-paper .wa-content-wrap { background: #f7f3ee !important; }
body.wa-page-bg-white .wa-content-wrap { background: #fff !important; }
body.wa-page-bg-dark .wa-content-wrap { background: #17171a !important; color: #fff !important; }
body.wa-page-bg-dark .wa-content-wrap h1,
body.wa-page-bg-dark .wa-content-wrap h2,
body.wa-page-bg-dark .wa-content-wrap h3,
body.wa-page-bg-dark .wa-content-wrap p,
body.wa-page-bg-dark .wa-content-wrap a:not(.wa-btn) { color: inherit !important; }
body.wa-hide-page-header .wa-page-header { display: none !important; }

/* Always use the custom Whereabouts auth screen, never the stock UsersWP card. */
body.wa-custom-auth-page .wa-content-wrap {
  min-height: calc(100vh - 170px);
  padding-block: clamp(34px, 6vw, 82px) !important;
  background: #f7f3ee !important;
}
body.wa-custom-auth-page .wa-content-wrap > .wa-container {
  width: min(calc(100% - 40px), 820px) !important;
}
body.wa-custom-auth-page .wa-page-header { display: none !important; }
.wa-auth-workspace {
  width: 100%;
  max-width: 760px;
  margin-inline: auto;
  font-family: var(--wa-font-body, Montserrat, sans-serif);
}
.wa-auth-workspace > .wa-answer { margin-bottom: 18px; }
.wa-auth-workspace .wa-social-auth,
.wa-auth-workspace .wa-auth-card {
  width: 100% !important;
  max-width: none !important;
  margin-inline: 0 !important;
  box-sizing: border-box !important;
}
.wa-auth-workspace .wa-social-auth__buttons {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
}
.wa-auth-workspace .wa-social-auth__button {
  justify-content: flex-start !important;
  width: 100% !important;
  min-width: 0 !important;
}
.wa-auth-workspace .wa-form label,
.wa-auth-workspace .wa-form input,
.wa-auth-workspace .wa-form select,
.wa-auth-workspace .wa-form button,
.wa-auth-workspace .wa-form a {
  font-family: var(--wa-font-body, Montserrat, sans-serif) !important;
}

/* Service booking trigger and Book now are one aligned control row. */
body.wa-service-booking-product form.cart.wa-booking-actions-ready {
  display: block !important;
  width: 100% !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row {
  display: grid !important;
  grid-template-columns: 54px minmax(0, 1fr) !important;
  align-items: stretch !important;
  gap: 10px !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 14px 0 18px !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row > * {
  align-self: stretch !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row .wa-booking-picker-trigger,
body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row .single_add_to_cart_button {
  display: grid !important;
  place-items: center !important;
  min-height: 54px !important;
  height: 54px !important;
  margin: 0 !important;
  box-sizing: border-box !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row .single_add_to_cart_button[style*="display: none"] {
  display: grid !important;
}

/* Date-picker arrows live entirely inside their bordered buttons. */
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next {
  position: relative !important;
  inset: auto !important;
  overflow: hidden !important;
  text-indent: 0 !important;
}
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-prev::before,
body.wa-service-booking-product .wa-booking-picker-content .ui-datepicker-next::before {
  position: static !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  transform: none !important;
  text-align: center !important;
}
body.wa-service-booking-product .wa-booking-picker-content .wc-bookings-booking-form-button,
body.wa-service-booking-product .wa-booking-picker-content > .single_add_to_cart_button {
  display: none !important;
}

/* Cart and checkout share the same controlled width and visual rhythm. */
body.woocommerce-cart .wa-content-wrap > .wa-container,
body.woocommerce-checkout .wa-content-wrap > .wa-container {
  width: min(calc(100% - 48px), var(--wa-global-width, 1380px)) !important;
  max-width: none !important;
}
body.woocommerce-cart .wa-checkout-head,
body.woocommerce-checkout .wa-checkout-head {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  gap: 24px !important;
}
body.woocommerce-cart .wa-checkout-steps,
body.woocommerce-checkout .wa-checkout-steps {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: flex-end !important;
  gap: 8px !important;
}

/* Category mapping is inserted inside and exactly follows the dashboard workspace. */
.wa-dashboard-main > .wa-catalogue-mapping--phase18,
.wa-dashboard-main .wa-catalogue-mapping--phase18 {
  width: 100% !important;
  max-width: none !important;
  margin: 26px 0 0 !important;
}
.wa-catalogue-mapping--phase18 .wa-catalogue-map-list,
.wa-catalogue-mapping--phase18 .wa-catalogue-default,
.wa-catalogue-mapping--phase18 .wa-inline-actions {
  width: 100% !important;
  max-width: none !important;
}

/* Subscription preferences use the complete dashboard workspace. */
.wa-dashboard-shell .wa-dashboard-main form.wa-auth-card.wa-preference-card,
.wa-dashboard-shell .wa-dashboard-main .wa-preference-card {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  margin: 18px 0 0 !important;
}
.wa-dashboard-shell .wa-dashboard-main .wa-preference-card > * {
  max-width: none !important;
}

/* Specificity-safe product grid contract: five desktop, four laptop, two mobile. */
body.woocommerce ul.products,
body.woocommerce-page ul.products,
body.woocommerce .related.products ul.products,
body.woocommerce .upsells.products ul.products,
body.woocommerce-page .related.products ul.products,
body.woocommerce-page .upsells.products ul.products,
body.woocommerce-cart .wa-product-recommendations ul.products {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 18px !important;
}
.wa-product-carousel .wa-product-carousel__track {
  display: grid !important;
  grid-template-columns: none !important;
}

@media (max-width: 1400px) {
  body.woocommerce ul.products,
  body.woocommerce-page ul.products,
  body.woocommerce .related.products ul.products,
  body.woocommerce .upsells.products ul.products,
  body.woocommerce-page .related.products ul.products,
  body.woocommerce-page .upsells.products ul.products,
  body.woocommerce-cart .wa-product-recommendations ul.products {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  }
  .wa-product-carousel .wa-product-carousel__track {
    grid-template-columns: none !important;
  }
}

@media (max-width: 760px) {
  .wa-container,
  body.woocommerce-cart .wa-content-wrap > .wa-container,
  body.woocommerce-checkout .wa-content-wrap > .wa-container,
  body.wa-page-width-narrow .wa-content-wrap > .wa-container,
  body.wa-page-width-full .wa-content-wrap > .wa-container {
    width: min(calc(100% - 28px), var(--wa-global-width, 1380px)) !important;
  }
  body.woocommerce-cart .wa-checkout-head,
  body.woocommerce-checkout .wa-checkout-head {
    align-items: flex-start !important;
    flex-direction: column !important;
  }
  body.woocommerce-cart .wa-checkout-steps,
  body.woocommerce-checkout .wa-checkout-steps { justify-content: flex-start !important; }
  body.woocommerce ul.products,
  body.woocommerce-page ul.products,
  body.woocommerce .related.products ul.products,
  body.woocommerce .upsells.products ul.products,
  body.woocommerce-page .related.products ul.products,
  body.woocommerce-page .upsells.products ul.products,
  body.woocommerce-cart .wa-product-recommendations ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px !important;
  }
  .wa-product-carousel .wa-product-carousel__track {
    grid-template-columns: none !important;
  }
  .wa-auth-workspace .wa-social-auth__buttons {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .wa-auth-workspace .wa-social-auth__button-copy strong { font-size: 10px !important; }
  .wa-auth-workspace .wa-social-auth__icon { flex-basis: 30px !important; width: 30px !important; height: 30px !important; }
}

@media (max-width: 520px) {
  body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row {
    grid-template-columns: 50px minmax(0, 1fr) !important;
  }
  body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row .wa-booking-picker-trigger,
  body.wa-service-booking-product form.cart.wa-booking-actions-ready > .wa-booking-action-row .single_add_to_cart_button {
    min-height: 50px !important;
    height: 50px !important;
  }
  .wa-social-auth { padding-inline: 14px !important; }
  .wa-auth-workspace .wa-social-auth__button { gap: 7px !important; padding-inline: 8px !important; }
}


/* Phase 19: reliability and visual-control corrections. */
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  white-space: nowrap !important;
  line-height: 1 !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button > *,
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button svg,
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button i {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  vertical-align: middle !important;
}
body.wa-service-booking-product form.cart.wa-booking-actions-ready .wa-booking-action-row .single_add_to_cart_button::before {
  display: inline-block !important;
  position: static !important;
  margin: 0 7px 0 0 !important;
  vertical-align: middle !important;
}
html.wa-booking-overlay-open,
body.wa-booking-overlay-open { overflow: hidden !important; }
body.wa-booking-overlay-open #wpadminbar,
body.wa-booking-overlay-open #masthead,
body.wa-booking-overlay-open .site-header,
body.wa-booking-overlay-open .site-header-wrap,
body.wa-booking-overlay-open .kadence-sticky-header,
body.wa-booking-overlay-open .header-sticky,
body.wa-booking-overlay-open [class*="sticky-header"] {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
body.wa-service-booking-product .wa-booking-picker-overlay {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483647 !important;
  isolation: isolate !important;
}
body.wa-service-booking-product .wa-booking-picker-panel {
  max-height: min(92dvh, 860px) !important;
  margin: max(12px, env(safe-area-inset-top)) auto max(12px, env(safe-area-inset-bottom)) !important;
}
.wa-product-carousel .wa-product-carousel__track,
.wa-product-carousel .wa-product-carousel__track > li,
.wa-product-carousel .wa-product-carousel__track > li.product {
  list-style: none !important;
  border-left: 0 !important;
  border-right: 0 !important;
  background-image: none !important;
}
.wa-product-carousel .wa-product-carousel__track > li:empty { display: none !important; }
body.wa-custom-auth-page .wa-auth-workspace {
  width: min(100%, 760px) !important;
  max-width: 760px !important;
  margin-inline: auto !important;
  box-sizing: border-box !important;
}
body.wa-custom-auth-page .wa-auth-workspace > .wa-social-auth,
body.wa-custom-auth-page .wa-auth-workspace > form.wa-auth-card,
body.wa-custom-auth-page .wa-auth-workspace > .wa-auth-card {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box !important;
}
body.woocommerce .wa-product-carousel ul.products.wa-product-carousel__track,
body.woocommerce-page .wa-product-carousel ul.products.wa-product-carousel__track,
body.woocommerce-cart .wa-product-recommendations .wa-product-carousel ul.products.wa-product-carousel__track {
  grid-template-columns: none !important;
  grid-auto-flow: column !important;
  grid-auto-columns: calc((100% - 72px) / 5) !important;
}
@media (max-width: 1180px) {
  body.woocommerce .wa-product-carousel ul.products.wa-product-carousel__track,
  body.woocommerce-page .wa-product-carousel ul.products.wa-product-carousel__track,
  body.woocommerce-cart .wa-product-recommendations .wa-product-carousel ul.products.wa-product-carousel__track {
    grid-auto-columns: calc((100% - 54px) / 4) !important;
  }
}
@media (max-width: 760px) {
  body.woocommerce .wa-product-carousel ul.products.wa-product-carousel__track,
  body.woocommerce-page .wa-product-carousel ul.products.wa-product-carousel__track,
  body.woocommerce-cart .wa-product-recommendations .wa-product-carousel ul.products.wa-product-carousel__track {
    grid-auto-columns: calc((100% - 12px) / 2) !important;
  }
}


/* Phase 20: keep WooCommerce Bookings inside its native cart form while the
 * dialog escapes theme stacking contexts. This preserves date-picker setup. */
body.wa-booking-overlay-open .wa-booking-overlay-ancestor {
  transform: none !important;
  filter: none !important;
  perspective: none !important;
  contain: none !important;
  isolation: auto !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  z-index: auto !important;
}
body.wa-service-booking-product .wa-booking-picker-backdrop {
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: rgba(15, 14, 17, .72) !important;
  box-shadow: none !important;
  color: transparent !important;
  font-size: 0 !important;
  line-height: 0 !important;
  opacity: 1 !important;
}
body.wa-service-booking-product .wa-booking-picker-overlay {
  z-index: 2147483647 !important;
}
