/*
 * WooCommerce — CFTV brand styling.
 * Loaded only on Woo views (see inc/woocommerce.php). Uses the same design
 * tokens as the rest of the theme: Karla body, Barlow Condensed headings,
 * primary #c54337, cirrus #bdc8d2 borders, graphite #1d292e text, 2px radius.
 */

/* ---- 1. General / typography ------------------------------------------- */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) {
  font-family: var(--font-body, "Karla", sans-serif);
  color: var(--color-body, #5f6f7c);
}

/* Headings inside the Woo content — NOT the page hero, whose white title
   (.page-hero__heading) also lives inside <main> on these pages. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) h1:not(.page-hero__heading),
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) h2:not(.page-hero__heading),
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) h3 {
  color: var(--color-graphite, #1d292e);
}

/* Keep the hero itself identical to every other page's hero. */
.woocommerce-page .page-hero .page-hero__heading,
.woocommerce-cart .page-hero .page-hero__heading,
.woocommerce-checkout .page-hero .page-hero__heading {
  color: #fff;
}

/* Hero already announces the page — hide Woo's duplicate page title. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-products-header {
  display: none;
}

/* Defense-in-depth for the vendor `.cart` collision (also fixed at source). */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) form.cart {
  position: static;
  transform: none;
}

/* ---- 2. Buttons ---------------------------------------------------------- */

/* Classic buttons AND block-components buttons (cart/checkout are Woo
   blocks). !important is needed to beat woocommerce.css's `.button.alt`
   specificity and wc-blocks' component tokens. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) a.button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) button.button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) input.button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .single_add_to_cart_button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .checkout-button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) #place_order,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wp-element-button {
  background: var(--color-primary, #c54337) !important;
  color: #fff !important;
  border: 0;
  border-radius: 2px;
  padding: 12px 26px;
  font-family: var(--font-body, "Karla", sans-serif);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  line-height: 1.4;
  cursor: pointer;
  box-shadow: none;
  transition: background 0.2s ease;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) a.button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) button.button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) input.button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .single_add_to_cart_button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .checkout-button:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) #place_order:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wp-element-button:hover {
  background: #a8362c !important;
  color: #fff !important;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .button:disabled,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .button.disabled,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button.disabled {
  background: var(--color-cirrus, #bdc8d2) !important;
  color: #fff !important;
  opacity: 1;
  cursor: not-allowed;
}

/* "Book Now" (bookings form) + cart "Update cart": pine in EVERY state, per
   client (QA 86b8cf7yd) — their disabled state was cirrus-on-white, which
   fails WCAG contrast. Pine #415e68 on white text passes; hover darkens. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button.disabled,
.woocommerce-cart table.cart td.actions button.button,
.woocommerce-cart table.cart td.actions button.button:disabled,
.woocommerce-cart table.cart td.actions button.button:disabled[disabled],
.woocommerce-cart table.cart td.actions button.button.disabled {
  background: var(--color-pine, #415e68) !important;
  color: #fff !important;
}
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form-button:hover:not(.disabled),
.woocommerce-cart table.cart td.actions button.button:hover:not(:disabled) {
  background: var(--color-dark-pine, #164154) !important;
}

/* ---- 3. Shop / archive grid --------------------------------------------- */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products {
  margin: 0;
  padding: 0;
}

/* Shortcode pages (Event Equipment etc.): breathing room between the page's
   intro text and the product grid (QA 86b8cf7yd item A1). Doubled class to
   out-specify the :is() margin reset above. */
.cftv-woo-content.cftv-woo-page ul.products {
  margin-top: 32px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product {
  background: #fff;
  border: 1px solid var(--color-fog, #dbdcdd);
  border-radius: 2px;
  padding: 0 0 20px;
  text-align: center;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
  overflow: hidden;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product:hover {
  box-shadow: 0 10px 30px rgba(29, 41, 46, 0.12);
  transform: translateY(-3px);
}

/* contain (not cover) so photos are never cropped inside the card frame
   (QA 86b8cf7yd item B2 — chair tops were being cut off). */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product a img {
  aspect-ratio: 4 / 3;
  width: 100%;
  object-fit: contain;
  background: #fff;
  padding: 10px;
  box-sizing: border-box;
  margin: 0 0 14px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--font-body, "Karla", sans-serif);
  font-size: 17px;
  font-weight: 700;
  color: var(--color-graphite, #1d292e);
  padding: 0 16px 4px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product a:hover .woocommerce-loop-product__title {
  color: var(--color-primary, #c54337);
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) ul.products li.product .price {
  color: var(--color-pine, #415e68);
  font-weight: 600;
  margin-bottom: 10px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-result-count {
  color: var(--color-body, #5f6f7c);
  padding-top: 6px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-ordering select {
  padding: 8px 12px;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
  color: var(--color-graphite, #1d292e);
  background: #fff;
}

/* Cross-sells grid (cart cross-sells): same card discipline as the classic shop grid. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .cross-sells li.product {
  border: 1px solid var(--color-fog, #dbdcdd);
  border-radius: 2px;
  padding-bottom: 20px;
  overflow: hidden;
}

/* ---- 4. Single product --------------------------------------------------- */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .product_title {
  font-family: var(--font-heading, "Barlow Condensed", sans-serif);
  font-size: 34px;
  font-weight: 600;
  margin-bottom: 6px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .posted_in {
  display: block;
  font-size: 14px;
  margin-bottom: 20px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .posted_in a {
  color: var(--color-pine, #415e68);
  text-decoration: underline;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .posted_in a:hover {
  color: var(--color-primary, #c54337);
}

/* Up-sells / related products must start BELOW the floated gallery + summary.
   Without the clear, a summary shorter than the gallery lets the "You may
   also like…" / "Related products" headings wrap up beside (or into) the
   summary column — the "inconsistent formatting" from QA 86b8cf7yd item B1. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .related,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .up-sells {
  clear: both;
  padding-top: 16px;
}

/* …and their headings need air above the card grid (client follow-up). */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .related > h2,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .up-sells > h2 {
  margin: 0 0 24px;
}

/* Short-description bullets were inheriting the vendor grey (#777 at 15px —
   fails WCAG contrast, QA 86b8cf7yd item B3): slightly larger + darker. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .woocommerce-product-details__short-description,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .woocommerce-product-details__short-description p,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .woocommerce-product-details__short-description li {
  font-size: 16px;
  line-height: 1.6;
  color: var(--color-body, #5f6f7c);
}

/* …and air between those bullets and the booking-form box (client follow-up). */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .woocommerce-product-details__short-description {
  margin-bottom: 20px;
}

/* Gallery: clean bordered stage + tidy thumbnail strip. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product div.images {
  border: 1px solid var(--color-fog, #dbdcdd);
  border-radius: 2px;
  overflow: hidden;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .flex-control-thumbs {
  display: flex;
  gap: 8px;
  margin: 8px;
  padding: 0;
  list-style: none;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .flex-control-thumbs li {
  flex: 0 0 calc(25% - 6px);
  margin: 0;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .flex-control-thumbs img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border: 2px solid transparent;
  border-radius: 2px;
  cursor: pointer;
  opacity: 0.7;
  transition: opacity 0.2s ease, border-color 0.2s ease;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .flex-control-thumbs img:hover,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product .flex-control-thumbs img.flex-active {
  opacity: 1;
  border-color: var(--color-primary, #c54337);
}

/* ---- 5. Bookings form ----------------------------------------------------- */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form {
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
  padding: 20px;
  margin-bottom: 16px;
  background: #f7f9fa;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form .form-field label,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form fieldset legend,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form label {
  color: var(--color-graphite, #1d292e);
  font-weight: 600;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form input,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form select {
  padding: 8px 12px;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
  background: #fff;
  color: var(--color-graphite, #1d292e);
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form input:focus,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-form select:focus {
  border-color: var(--color-dark-pine, #164154);
  outline: none;
}

/* Booking calendar availability colors (ported from the legacy theme's
   CFTV FIX #13). Legend: GREEN = open/available, ORANGE = partially booked
   (some slots taken), DARK GRAY = fully booked / not bookable. !important
   matches the plugin's own inline-style weight. */
.wc-bookings-date-picker .ui-datepicker td.bookable a,
.wc-bookings-date-picker .ui-datepicker td.bookable a:hover,
.wc-bookings-date-picker .ui-datepicker td.bookable a:focus {
  background-color: #2ecc71 !important;
  color: #fff !important;
}

.wc-bookings-date-picker .ui-datepicker td.bookable.ui-datepicker-current-day a {
  background-color: #27ae60 !important;
}

.wc-bookings-date-picker .ui-datepicker td.partial_booked a,
.wc-bookings-date-picker .ui-datepicker td.partial_booked a:hover,
.wc-bookings-date-picker .ui-datepicker td.partial_booked a:focus {
  background-color: #f39c12 !important;
  color: #fff !important;
}

.wc-bookings-date-picker .ui-datepicker td.partial_booked.ui-datepicker-current-day a {
  background-color: #e67e22 !important;
}

.wc-bookings-date-picker .ui-datepicker td.fully_booked span,
.wc-bookings-date-picker .ui-datepicker td.fully_booked a,
.wc-bookings-date-picker .ui-datepicker td.fully_booked:not(.not_bookable_by_rules) span,
.wc-bookings-date-picker .ui-datepicker td.fully_booked:not(.not_bookable_by_rules) a,
.wc-bookings-date-picker .ui-datepicker td.not_bookable span,
.wc-bookings-date-picker .ui-datepicker td.not_bookable a {
  background-color: #666666 !important;
  color: #fff !important;
}

/* Colour key under the booking calendar (ClickUp 86bbujnx5) — swatches use
   the exact FIX #13 colours above. Printed by cftv_booking_calendar_key(). */
.cftv-cal-key {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin: 10px 0 14px;
  font-family: var(--font-body);
  font-size: 13px;
  line-height: 1.4;
  color: var(--color-body, #4a4a4a);
}

.cftv-cal-key__item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
}

.cftv-cal-key__swatch {
  display: inline-block;
  width: 14px;
  height: 14px;
  border-radius: 3px;
  flex: 0 0 14px;
}

.cftv-cal-key__swatch--open {
  background: #2ecc71;
}

.cftv-cal-key__swatch--partial {
  background: #f39c12;
}

.cftv-cal-key__swatch--full {
  background: #666666;
}

/* Inline jQuery-UI datepicker: brand the header + selected day. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .ui-datepicker .ui-datepicker-header,
.ui-datepicker.ui-widget .ui-datepicker-header {
  background: var(--color-dark-pine, #164154);
  color: #fff;
  border: 0;
  border-radius: 2px 2px 0 0;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .ui-datepicker .ui-state-active,
.ui-datepicker.ui-widget .ui-state-active {
  background: var(--color-primary, #c54337);
  color: #fff;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .wc-bookings-booking-cost {
  background: #f2f5f7;
  border-left: 4px solid var(--color-primary, #c54337);
  padding: 12px 16px;
  margin: 14px 0;
  color: var(--color-graphite, #1d292e);
}

/* ---- 6. Tabs (Description) ------------------------------------------------ */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs {
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  border-bottom: 2px solid var(--color-fog, #dbdcdd);
  display: flex;
  gap: 4px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs li {
  margin: 0;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs li a {
  display: block;
  padding: 12px 22px;
  font-family: var(--font-heading, "Barlow Condensed", sans-serif);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--color-body, #5f6f7c);
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  text-decoration: none;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs li.active a,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs li a:hover {
  color: var(--color-primary, #c54337);
  border-bottom-color: var(--color-primary, #c54337);
}

/* ---- 7. Cart / checkout ---------------------------------------------------- */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table {
  border: 1px solid var(--color-fog, #dbdcdd);
  border-radius: 2px;
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table th {
  background: #f2f5f7;
  color: var(--color-graphite, #1d292e);
  font-weight: 700;
  padding: 12px 14px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table td {
  border-top: 1px solid var(--color-fog, #dbdcdd);
  padding: 12px 14px;
  vertical-align: middle;
}

/* Booking meta under cart/checkout line items ("Booking Date:", "Duration:"):
   normalize label + value onto ONE font/baseline — the label was rendering in
   the condensed heading face with a different line-height, so each line looked
   uneven / padded below (QA 86b8cf7yd item C2). Mirrors the mini-cart
   dl.variation treatment in main.css. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation {
  margin: 6px 0 0;
}
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dt,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dd {
  display: inline;
  float: none;
  margin: 0;
  padding: 0;
  font-family: var(--font-body, "Karla", sans-serif);
  font-size: 14px;
  line-height: 1.6;
  vertical-align: baseline;
}
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dt {
  font-weight: 700;
  color: var(--color-graphite, #1d292e);
}
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dd {
  color: var(--color-body, #5f6f7c);
}
/* line break between each label/value pair */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dd::after {
  content: "";
  display: block;
}
/* dd content arrives wrapped in <p> — keep it inline on the same baseline */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) table.shop_table dl.variation dd p {
  display: inline;
  margin: 0;
  font-size: inherit;
  line-height: inherit;
  color: inherit;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row input.input-text,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row textarea,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row select,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-cart .coupon input.input-text {
  box-sizing: border-box;
  padding: 11px 16px;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
  background: #fff;
  color: var(--color-graphite, #1d292e);
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row input.input-text:focus,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row textarea:focus,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row select:focus {
  border-color: var(--color-dark-pine, #164154);
  outline: none;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-checkout .form-row label {
  color: var(--color-graphite, #1d292e);
  font-weight: 600;
}

/* "Need anything else?" links above cart + checkout (86bbr98z4 item 2b) */
.cftv-cart-more {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 18px;
  margin: 0 0 24px;
  padding: 14px 18px;
  background: #f2f5f7;
  border-left: 4px solid var(--color-primary, #c54337);
}

.cftv-cart-more__label {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 600;
  color: var(--color-graphite, #1d292e);
}

.cftv-cart-more__list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.cftv-cart-more__list a {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-primary, #c54337);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.cftv-cart-more__list a:hover,
.cftv-cart-more__list a:focus-visible {
  color: var(--color-dusk, #3d3454);
}

/* ---- 8. Notices ------------------------------------------------------------ */

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-message,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-info,
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-error {
  border-top: 0;
  border-left: 4px solid var(--color-dark-pine, #164154);
  background: #f2f5f7;
  color: var(--color-graphite, #1d292e);
  padding: 14px 18px 14px 44px;
  border-radius: 2px;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-message {
  border-left-color: #2e7d32;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-message::before {
  color: #2e7d32;
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-info::before {
  color: var(--color-dark-pine, #164154);
}

:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-error {
  border-left-color: var(--color-primary, #c54337);
}

/* ---- 9. Small screens ------------------------------------------------------ */

@media (max-width: 768px) {
  :is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) .woocommerce-tabs ul.tabs {
    flex-wrap: wrap;
  }
}

/* ---- Cart / Checkout / My Account pages --------------------------------- */
/* These render via page.php; cftv_woo_wrap_page_content() adds this wrapper
   (.container handles the width, this handles the vertical rhythm). */
.cftv-woo-page {
  padding-top: 40px;
  padding-bottom: 60px;
}

/* ---- Classic cart page (shortcode [woocommerce_cart]) -------------------- */
/* The plugin lays this page out with floats; normalize with flex so the
   totals box, buttons, and coupon row can't overlap. */

/* Item table */
.woocommerce-cart table.cart {
  border: 1px solid var(--color-fog, #e5e9ec);
  margin-bottom: 32px;
}
.woocommerce-cart table.cart img {
  width: 72px;
  height: auto;
}
.woocommerce-cart table.cart td,
.woocommerce-cart table.cart th {
  padding: 14px 12px;
  vertical-align: middle;
}
.woocommerce-cart table.cart .product-remove .remove {
  color: var(--color-primary, #C54337) !important;
  font-size: 20px;
  background: none;
}
.woocommerce-cart table.cart .product-remove .remove:hover {
  color: #fff !important;
  background: var(--color-primary, #C54337);
}

/* Coupon / actions row */
.woocommerce-cart table.cart td.actions {
  padding: 16px 12px;
}
.woocommerce-cart table.cart td.actions .coupon {
  float: none;
  display: inline-flex;
  align-items: stretch;
  gap: 10px;
}
.woocommerce-cart table.cart td.actions .coupon .input-text {
  width: 200px;
  min-width: 0;
  padding: 10px 14px;
  font-size: 14px;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
}

/* Collaterals: cross-sells left, totals right — flex instead of floats */
.woocommerce-cart .cart-collaterals {
  display: flex;
  flex-wrap: wrap;
  gap: 40px;
  align-items: flex-start;
  justify-content: space-between;
}
.woocommerce-cart .cart-collaterals .cross-sells,
.woocommerce-cart .cart-collaterals .cart_totals {
  float: none;
  width: auto;
}
.woocommerce-cart .cart-collaterals .cross-sells {
  flex: 1 1 340px;
  max-width: 480px;
}
.woocommerce-cart .cart-collaterals .cart_totals {
  flex: 1 1 400px;
  max-width: 560px;
}
.woocommerce-cart .cart-collaterals h2 {
  float: none;
  font-size: 26px;
  line-height: 1.2;
  margin: 0 0 18px;
}
.woocommerce-cart .cart_totals table.shop_table {
  width: 100%;
  margin: 0 0 20px;
  border: 1px solid var(--color-fog, #e5e9ec);
  position: static;
}
.woocommerce-cart .cart_totals table.shop_table th,
.woocommerce-cart .cart_totals table.shop_table td {
  padding: 12px 14px;
  vertical-align: middle;
}

/* Proceed to checkout + legacy "Continue shopping" button: side by side,
   never overlapping */
.woocommerce-cart .wc-proceed-to-checkout {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 0;
}
.woocommerce-cart .wc-proceed-to-checkout .button,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
  float: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  margin: 0;
  font-size: 14px;
  text-align: center;
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
  flex: 1 1 auto;
}

/* Small screens: stack the two columns */
@media (max-width: 768px) {
  .woocommerce-cart .cart-collaterals .cross-sells,
  .woocommerce-cart .cart-collaterals .cart_totals {
    flex: 1 1 100%;
    max-width: none;
  }
  .woocommerce-cart table.cart td.actions .coupon {
    display: flex;
    width: 100%;
  }
  .woocommerce-cart table.cart td.actions .coupon .input-text {
    flex: 1 1 auto;
    width: auto;
  }
}

/* ---- Classic cart: size/alignment refinements ---------------------------- */
/* "Update cart" hidden per client (QA 86b8cf7yd round 2): booking carts have
   no quantity inputs, so the button never does anything. Also collapse the
   actions cell when the coupon form isn't rendered (coupons are off), so the
   table doesn't end in an empty strip — if coupons return, the row comes back
   with the coupon form only. */
.woocommerce-cart table.cart td.actions button[name="update_cart"] {
  display: none !important;
}
.woocommerce-cart table.cart td.actions:not(:has(.coupon)) {
  display: none;
}

/* Update Cart: Woo core's :disabled rule (huge specificity) forces
   padding .618em/opacity .5, shrinking it vs Apply Coupon — restore the
   brand button metrics in every state. */
.woocommerce-cart table.cart td.actions .button,
.woocommerce-cart table.cart td.actions button.button:disabled,
.woocommerce-cart table.cart td.actions button.button:disabled[disabled],
.woocommerce-cart table.cart td.actions button.button.disabled {
  padding: 12px 26px;
  font-size: 14px;
  line-height: 1.4;
  height: auto;
  opacity: 1;
  color: #fff;
}
/* Coupon input matches the buttons' height */
.woocommerce-cart table.cart td.actions .coupon .input-text {
  padding: 12px 14px;
  line-height: 1.4;
  margin: 0;
}

/* Totals buttons: flush with the table's left edge — kill any inherited
   indent on the container and the buttons themselves. */
.woocommerce-cart .cart-collaterals .cart_totals .wc-proceed-to-checkout {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 4px 0 0;
  margin: 0;
}
.woocommerce-cart .cart-collaterals .cart_totals .wc-proceed-to-checkout .button,
.woocommerce-cart .cart-collaterals .cart_totals .wc-proceed-to-checkout a.checkout-button {
  margin: 0 !important;
  float: none;
}

/* ---- Classic checkout page (shortcode [woocommerce_checkout]) ------------- */
/* Field skin matching the site's forms (same tokens as the job-submission
   form in inc/job-manager.php). */

/* Section headings (Billing details / Additional information / Your order) */
.woocommerce-checkout .woocommerce-billing-fields > h3,
.woocommerce-checkout .woocommerce-additional-fields > h3,
.woocommerce-checkout #order_review_heading {
  font-size: 26px;
  line-height: 1.2;
  margin: 0 0 18px;
}
.woocommerce-checkout #order_review_heading {
  margin-top: 40px;
}

/* Labels */
.woocommerce-checkout form .form-row label {
  color: var(--color-graphite, #1d292e);
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 4px;
}
.woocommerce-checkout form .form-row .required {
  color: var(--color-primary, #C54337);
  text-decoration: none;
}

/* Inputs / selects / textareas — one consistent look */
.woocommerce-checkout form .form-row input.input-text,
.woocommerce-checkout form .form-row select,
.woocommerce-checkout form .form-row textarea {
  box-sizing: border-box;
  width: 100%;
  padding: 11px 16px;
  font-family: inherit;
  font-size: 15px;
  line-height: 1.4;
  color: var(--color-graphite, #1d292e);
  background: #fff;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
  box-shadow: none;
  transition: border-color 0.2s ease;
}
.woocommerce-checkout form .form-row input.input-text:focus,
.woocommerce-checkout form .form-row select:focus,
.woocommerce-checkout form .form-row textarea:focus {
  border-color: var(--color-dark-pine, #164154);
  outline: none;
}
.woocommerce-checkout form .form-row ::placeholder {
  color: #8a959e;
  opacity: 1;
}
.woocommerce-checkout form .form-row textarea {
  min-height: 110px;
}
.woocommerce-checkout form .form-row {
  margin-bottom: 14px;
  padding: 0;
}

/* selectWoo (country / state dropdowns) — match the input chrome */
.woocommerce-checkout .select2-container .select2-selection--single {
  height: 44px;
  border: 1px solid var(--color-cirrus, #bdc8d2);
  border-radius: 2px;
}
.woocommerce-checkout .select2-container .select2-selection--single .select2-selection__rendered {
  line-height: 42px;
  padding-left: 16px;
  color: var(--color-graphite, #1d292e);
}
.woocommerce-checkout .select2-container .select2-selection--single .select2-selection__arrow {
  height: 42px;
  right: 8px;
}
.woocommerce-checkout .select2-container--focus .select2-selection--single,
.woocommerce-checkout .select2-container--open .select2-selection--single {
  border-color: var(--color-dark-pine, #164154);
}

/* Coupon toggle / info notices — brand the plugin blue */
.woocommerce-checkout .woocommerce-info,
.woocommerce-cart .woocommerce-info {
  border-top-color: var(--color-dark-pine, #164154);
  background: #f7f8f9;
  color: var(--color-graphite, #1d292e);
}
.woocommerce-checkout .woocommerce-info::before,
.woocommerce-cart .woocommerce-info::before {
  color: var(--color-dark-pine, #164154);
}
.woocommerce-checkout .woocommerce-info a,
.woocommerce-cart .woocommerce-info a {
  color: var(--color-primary, #C54337);
  font-weight: 600;
}

/* Order review table */
.woocommerce-checkout #order_review table.shop_table {
  width: 100%;
  border: 1px solid var(--color-fog, #e5e9ec);
  border-radius: 0;
  margin-bottom: 24px;
}
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td {
  padding: 14px 16px;
  vertical-align: middle;
}
.woocommerce-checkout #order_review table.shop_table tfoot th,
.woocommerce-checkout #order_review table.shop_table tfoot td {
  border-top: 1px solid var(--color-fog, #e5e9ec);
}

/* Payment / place order box */
.woocommerce-checkout #payment {
  background: #f7f8f9;
  border-radius: 2px;
}
.woocommerce-checkout #payment .place-order {
  padding: 20px;
}
.woocommerce-checkout .woocommerce-privacy-policy-text p {
  font-size: 14px;
  color: var(--color-body, #5f6f7c);
}

/* Mobile: single column */
@media (max-width: 768px) {
  .woocommerce-checkout .col2-set .col-1,
  .woocommerce-checkout .col2-set .col-2 {
    float: none;
    width: 100%;
  }
}

/* ---- Rental-zone "View Cart" button (86b8cf7yd R3 #4) --------------------- */
/* Pine so it reads as navigation next to the poppy action buttons. Rendered
   by cftv_rental_cart_button() on shortcode store pages + single products. */
.cftv-rental-cart {
  display: flex;
  justify-content: flex-end;
  margin: 0 0 24px;
}
.cftv-rental-cart__btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 22px;
  background: var(--color-pine, #415e68);
  color: #fff;
  border-radius: 2px;
  font-family: var(--font-body, "Karla", sans-serif);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  line-height: 1.4;
  text-decoration: none;
  transition: background 0.2s ease;
}
.cftv-rental-cart__btn:hover,
.cftv-rental-cart__btn:focus {
  background: #164154;
  color: #fff;
  text-decoration: none;
}
.cftv-rental-cart__count {
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary, #c54337);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  border-radius: 10px;
}
.cftv-rental-cart__count.is-empty {
  display: none;
}

/* Single product pages also get a "Back to Rentals" link opposite the View
   Cart button — both share the .cftv-rental-cart__btn look. */
.cftv-rental-cart--with-back {
  justify-content: space-between;
}

@media (max-width: 768px) {
  .cftv-rental-cart {
    justify-content: stretch;
  }
  .cftv-rental-cart__btn {
    width: 100%;
    justify-content: center;
  }
  .cftv-rental-cart--with-back {
    flex-direction: column;
    gap: 12px;
  }
}

/* ---- Single product: self-clear the floated gallery/summary ---------------- */
/* A product with no description and no related items renders nothing after
   the floated gallery + summary, so div.product collapses and the footer
   rides up over the content (seen on 100 Qt. Ice Coolers). Don't rely on
   tabs/related to clear the floats. */
:is(.cftv-woo-content, .woocommerce-cart .entry-content, .woocommerce-cart main, .woocommerce-checkout main, .woocommerce-page main) div.product::after {
  content: "";
  display: block;
  clear: both;
}
