/* ============================================================
   RWiz Cart 0004 - External CSS Consolidated Baseline
   Version: v10.0.17
   Purpose: Keep RWiz/UX cart presentation CSS outside the PHP runtime.

   Recommended server path for external-file deployment:
   wp-content/rwiz-snippets/0004/rwiz-0004-cart-checkout-v10.0.17.css

   Interim manual option:
   Preferred: load from the external file path above. Interim manual option: paste this full file into Flatsome > Advanced > Custom CSS.

   Ownership boundary:
   - UX Builder owns page layout and card placement.
   - This CSS styles RWiz frame helper classes and RWiz shortcode output.
   - PHP should own logic, shortcode rendering and AJAX only.
   ============================================================ */

/* ============================================================
   SECTION 001 - UX Builder frame helper classes
   Source: current Flatsome Custom CSS supplied by user.
   Scope: Visual frame helpers and cart utility button rounding.
   ============================================================ */

/* ============================================================
   RWiz Cart v10.0.0 - Frame-only visual helper classes
   Purpose: Visualise primary / nested primary / nested secondary
   Scope: Frames only. No movement, no hiding, no functional changes.
   ============================================================ */

:root {
  --rwiz-frame-blue: #1685d9;
  --rwiz-frame-blue-soft: rgba(22, 133, 217, 0.55);
  --rwiz-frame-grey: rgba(31, 51, 71, 0.18);
  --rwiz-frame-bg: #ffffff;

  /* Consistent radius */
  --rwiz-frame-radius-primary: 6px;
  --rwiz-frame-radius-inner: 6px;
  --rwiz-frame-radius-cart-totals-frame: 6px;
  --rwiz-frame-radius-cart-item-frame: 6px;
  --rwiz-frame-radius-button: 6px;

  --rwiz-frame-padding-primary: 10px;
  --rwiz-frame-padding-inner: 10px;
  --rwiz-frame-padding-table-item: 5px;
  --rwiz-frame-padding-table-action-y: 2.5px;
  --rwiz-frame-table-product-item-gap: 5px;
  --rwiz-frame-gap: 10px;

  /* Booster / cart utility buttons */
  --rwiz-frame-cart-button-height: 36px;
  --rwiz-frame-cart-button-padding-x: 14px;
}

/* 0. Cart table row spacing */
.shop_table.shop_table_responsive {
  border-collapse: separate !important;
  border-spacing: 0 var(--rwiz-frame-table-product-item-gap) !important;
}

/* 1. Primary card: outer blue rounded frame */
.rwiz-primary-card {
  border: 1px solid var(--rwiz-frame-blue-soft);
  border-radius: var(--rwiz-frame-radius-primary);
  background: var(--rwiz-frame-bg);
  padding: var(--rwiz-frame-padding-primary);
  margin-bottom: var(--rwiz-frame-gap);
  box-sizing: border-box;
}

/* 2. Primary-in-primary card: blue rounded frame inside another primary card */
.rwiz-primary-in-primary-card {
  border: 1px solid var(--rwiz-frame-blue-soft);
  border-radius: var(--rwiz-frame-radius-inner);
  background: var(--rwiz-frame-bg);
  padding: var(--rwiz-frame-padding-inner);
  margin-bottom: var(--rwiz-frame-gap);
  box-sizing: border-box;
}

/* 3. Secondary-in-primary card: grey rounded frame inside a primary card */
.rwiz-secondary-in-primary-card {
  border: 1px solid var(--rwiz-frame-grey);
  border-radius: var(--rwiz-frame-radius-inner);
  background: var(--rwiz-frame-bg);
  padding: var(--rwiz-frame-padding-inner);
  margin-bottom: var(--rwiz-frame-gap);
  box-sizing: border-box;
}

/* 3.1. Secondary frame for the cart table header only */
.shop_table.shop_table_responsive > thead {
  outline: 1px solid var(--rwiz-frame-grey);
  outline-offset: -1px;
  border-radius: var(--rwiz-frame-radius-cart-item-frame);
  background: var(--rwiz-frame-bg);
  border-bottom: 0 !important;
  box-sizing: border-box;
}

/* 3.1.1. Hide theme/table line beneath the cart table header */
.shop_table.shop_table_responsive > thead > tr,
.shop_table.shop_table_responsive > thead > tr > th {
  border-bottom: 0 !important;
}

/* 3.1.2. Padding inside the cart table header */
.shop_table.shop_table_responsive > thead > tr > th {
  padding: var(--rwiz-frame-padding-table-item);
  box-sizing: border-box;
}

/* 3.2. Secondary frame for cart item rows only */
.shop_table.shop_table_responsive .woocommerce-cart-form__cart-item.cart_item {
  outline: 1px solid var(--rwiz-frame-grey);
  outline-offset: -1px;
  border-radius: var(--rwiz-frame-radius-cart-item-frame);
  background: var(--rwiz-frame-bg);
  box-sizing: border-box;
}

/* 3.2.1. Padding inside cart item rows */
.shop_table.shop_table_responsive .woocommerce-cart-form__cart-item.cart_item > td {
  padding: var(--rwiz-frame-padding-table-item);
  background: var(--rwiz-frame-bg);
  box-sizing: border-box;
}

/* 3.3. Update Cart action row: reduce space above and below button by 50% */
.shop_table.shop_table_responsive .rwiz-cart-items-actions {
  padding-top: var(--rwiz-frame-padding-table-action-y) !important;
  padding-bottom: var(--rwiz-frame-padding-table-action-y) !important;
  padding-left: var(--rwiz-frame-padding-table-item) !important;
  padding-right: var(--rwiz-frame-padding-table-item) !important;
  line-height: normal;
  box-sizing: border-box;
}

/* 3.3.1. Keep the Update Cart button itself compact */
.shop_table.shop_table_responsive .rwiz-cart-items-actions .button {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* 3.3.2. Booster Empty Cart button: match Continue Shopping button sizing/radius */
input[type="submit"].button[name="wcj_empty_cart"] {
  min-height: var(--rwiz-frame-cart-button-height);
  height: var(--rwiz-frame-cart-button-height);
  padding: 0 var(--rwiz-frame-cart-button-padding-x) !important;
  border-radius: var(--rwiz-frame-radius-button) !important;
  line-height: var(--rwiz-frame-cart-button-height);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  vertical-align: middle;
}

/* 3.4. Cart totals frame radius only */
.cart_totals,
.cart_totals .shop_table,
.rwiz-cart-totals,
.rwiz-cart-component-totals {
  border-radius: var(--rwiz-frame-radius-cart-totals-frame);
}

/* 4. Buttons: apply consistent rounded corners */
.button,
button,
input[type="button"],
input[type="submit"],
input[type="reset"],
a.button {
  border-radius: var(--rwiz-frame-radius-button);
}

/* Avoid extra spacing after the last nested frame in a parent card */
.rwiz-primary-card > .rwiz-primary-in-primary-card:last-child,
.rwiz-primary-card > .rwiz-secondary-in-primary-card:last-child,
.rwiz-primary-in-primary-card > .rwiz-secondary-in-primary-card:last-child {
  margin-bottom: 0;
}


/* ============================================================
   SECTION 002 - RWiz shortcode/internal component styling
   Source: v10.0.17 external CSS separation, originally moved from runtime inline CSS.
   Scope: RWiz shortcode wrappers, internal toggles, empty-cart state.
   ============================================================ */

.rwiz-cart-coupon-toggle,
.rwiz-cart-delivery-calculator-toggle {
	width: 100%;
}
.rwiz-cart-coupon-toggle-header,
.rwiz-cart-delivery-calculator-toggle-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	min-height: 34px;
}
.rwiz-cart-coupon-toggle-copy,
.rwiz-cart-delivery-calculator-toggle-copy {
	min-width: 0;
}
.rwiz-cart-coupon-toggle-title,
.rwiz-cart-delivery-calculator-toggle-title {
	font-weight: 700;
	line-height: 1.2;
	color: #0a5ea8;
}
.rwiz-cart-coupon-toggle-subtitle,
.rwiz-cart-delivery-calculator-toggle-subtitle {
	margin-top: 2px;
	font-size: 12px;
	line-height: 1.25;
	color: #555;
}
.rwiz-cart-coupon-toggle-control,
.rwiz-cart-delivery-calculator-toggle-control {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 74px;
	padding: 0;
	border: 0;
	background: transparent;
	color: #0a5ea8;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	white-space: nowrap;
	box-shadow: none;
	appearance: none;
}
.rwiz-cart-coupon-toggle-control:hover,
.rwiz-cart-coupon-toggle-control:focus,
.rwiz-cart-delivery-calculator-toggle-control:hover,
.rwiz-cart-delivery-calculator-toggle-control:focus {
	background: transparent;
	border-color: transparent;
	color: #075eaF;
	outline: none;
}
.rwiz-cart-coupon-toggle-control:focus-visible,
.rwiz-cart-delivery-calculator-toggle-control:focus-visible {
	outline: 2px solid rgba(10, 116, 217, 0.35);
	outline-offset: 2px;
}
.rwiz-cart-coupon-toggle-icon,
.rwiz-cart-delivery-calculator-toggle-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border: 1px solid #0a74d9;
	border-radius: 999px;
	background: #0a74d9;
	color: #fff;
	font-size: 16px;
	line-height: 1;
}
.rwiz-cart-coupon-toggle-control:hover .rwiz-cart-coupon-toggle-icon,
.rwiz-cart-coupon-toggle-control:focus .rwiz-cart-coupon-toggle-icon,
.rwiz-cart-delivery-calculator-toggle-control:hover .rwiz-cart-delivery-calculator-toggle-icon,
.rwiz-cart-delivery-calculator-toggle-control:focus .rwiz-cart-delivery-calculator-toggle-icon {
	background: #075eaF;
	border-color: #075eaF;
	color: #fff;
}
.rwiz-cart-coupon-toggle-text-hide,
.rwiz-cart-coupon-toggle-icon-hide,
.rwiz-cart-coupon-toggle.is-expanded .rwiz-cart-coupon-toggle-text-show,
.rwiz-cart-coupon-toggle.is-expanded .rwiz-cart-coupon-toggle-icon-show,
.rwiz-cart-delivery-calculator-toggle-text-hide,
.rwiz-cart-delivery-calculator-toggle-icon-hide,
.rwiz-cart-delivery-calculator-toggle.is-expanded .rwiz-cart-delivery-calculator-toggle-text-show,
.rwiz-cart-delivery-calculator-toggle.is-expanded .rwiz-cart-delivery-calculator-toggle-icon-show {
	display: none;
}
.rwiz-cart-coupon-toggle.is-expanded .rwiz-cart-coupon-toggle-text-hide,
.rwiz-cart-coupon-toggle.is-expanded .rwiz-cart-coupon-toggle-icon-hide,
.rwiz-cart-delivery-calculator-toggle.is-expanded .rwiz-cart-delivery-calculator-toggle-text-hide,
.rwiz-cart-delivery-calculator-toggle.is-expanded .rwiz-cart-delivery-calculator-toggle-icon-hide {
	display: inline;
}
html.rwiz-004-js .rwiz-cart-coupon-toggle:not(.is-expanded) .rwiz-cart-coupon-toggle-body,
html.rwiz-004-js .rwiz-cart-delivery-calculator-toggle:not(.is-expanded) .rwiz-cart-delivery-calculator-toggle-body {
	display: none;
}
.rwiz-cart-coupon-toggle-body,
.rwiz-cart-delivery-calculator-toggle-body {
	margin-top: 8px;
}
.rwiz-cart-delivery-calculator-toggle .woocommerce-shipping-calculator > .shipping-calculator-button {
	display: none !important;
	pointer-events: none;
}
.rwiz-cart-delivery-calculator-toggle .woocommerce-shipping-calculator > .shipping-calculator-form {
	display: block !important;
	margin-top: 0;
}
html.rwiz-004-js .rwiz-cart-delivery-calculator-toggle:not(.is-expanded) .woocommerce-shipping-calculator > .shipping-calculator-form {
	display: none !important;
}
.rwiz-cart-delivery-calculator-toggle.is-expanded .woocommerce-shipping-calculator > .shipping-calculator-form {
	display: block !important;
}
.rwiz-cart-coupon-form-row {
	display: flex;
	align-items: stretch;
	gap: 8px;
	margin: 0;
}
.rwiz-cart-coupon-form-row .input-text {
	flex: 1 1 auto;
	min-width: 0;
}
.rwiz-cart-coupon-form-row .button {
	flex: 0 0 auto;
	white-space: nowrap;
}
.rwiz-cart-applied-coupons {
	display: grid;
	gap: 6px;
	margin: 0 0 8px 0;
}
.rwiz-cart-applied-coupon {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	font-size: 13px;
	line-height: 1.25;
}
.rwiz-cart-applied-coupon-code {
	font-weight: 700;
}


/* Shortcode-internal content styling. Scope is limited to RWiz shortcode wrappers only. */
.rwiz-cart-component {
	width: 100%;
	box-sizing: border-box;
}
.rwiz-cart-component *,
.rwiz-cart-component *::before,
.rwiz-cart-component *::after {
	box-sizing: border-box;
}
.rwiz-cart-component-notices .woocommerce-notices-wrapper,
.rwiz-cart-notices-slot {
	margin: 0;
}
.rwiz-cart-component-notices .woocommerce-message,
.rwiz-cart-component-notices .woocommerce-info,
.rwiz-cart-component-notices .woocommerce-error {
	margin: 0 0 8px 0;
	padding-top: 9px;
	padding-bottom: 9px;
	line-height: 1.35;
}
.rwiz-cart-free-shipping-progress {
	display: grid;
	gap: 7px;
	font-weight: 700;
	line-height: 1.25;
	color: #0a5ea8;
}
.rwiz-cart-free-shipping-main {
	font-size: 14px;
}
.rwiz-cart-free-shipping-track {
	height: 7px;
	width: 100%;
	overflow: hidden;
	border-radius: 999px;
	background: rgba(10, 116, 217, 0.12);
}
.rwiz-cart-free-shipping-track span {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: #0a74d9;
}
.rwiz-cart-free-shipping-notice,
.rwiz-cart-delivery-destination,
.rwiz-cart-estimated-delivery,
.rwiz-cart-delivery-options-message,
.rwiz-paynowpaylateroffers-empty {
	font-size: 13px;
	line-height: 1.35;
	color: #4b5563;
}
.rwiz-cart-summary-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	width: 100%;
	line-height: 1.25;
}
.rwiz-cart-summary-row.is-empty {
	display: none;
}
.rwiz-cart-empty-state {
	display: grid;
	gap: 10px;
	align-items: start;
	padding: 6px 0 2px 0;
	line-height: 1.35;
}
.rwiz-cart-empty-message {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	color: #1f3347;
}
.rwiz-cart-empty-action {
	margin: 0;
}
.rwiz-cart-empty-continue-button.button,
.rwiz-cart-empty-continue-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 34px;
	padding: 8px 14px;
	border-radius: 8px;
	line-height: 1.2;
	font-weight: 700;
}
.rwiz-cart-summary-label {
	font-size: 13px;
	font-weight: 700;
	color: #1f3347;
}
.rwiz-cart-summary-value {
	font-size: 14px;
	font-weight: 700;
	color: #0a5ea8;
	text-align: right;
}
.rwiz-cart-summary-row-total .rwiz-cart-summary-label,
.rwiz-cart-summary-row-total .rwiz-cart-summary-value {
	font-size: 15px;
	color: #0a5ea8;
}
.rwiz-cart-component-items .shop_table,
.rwiz-cart-component-items .rwiz-cart-items-table {
	width: 100%;
	margin: 0;
}
.rwiz-cart-component-items .shop_table th,
.rwiz-cart-component-items .shop_table td {
	vertical-align: middle;
	line-height: 1.3;
}
.rwiz-cart-component-items .product-name a {
	font-weight: 700;
	color: #0a5ea8;
}
.rwiz-cart-component-items .quantity input.qty {
	min-height: 34px;
	border-radius: 10px;
}
.rwiz-cart-component-items .button,
.rwiz-cart-coupon-form-row .button,
.rwiz-cart-delivery-calculator-toggle .button {
	border-radius: 10px;
}
.rwiz-cart-component-delivery-options .woocommerce-delivery-options,
.rwiz-cart-delivery-options-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 8px;
}
.rwiz-cart-component-delivery-options .woocommerce-delivery-options li,
.rwiz-cart-delivery-option-row {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 0;
	padding: 7px 0;
	line-height: 1.3;
}
.rwiz-cart-component-delivery-options .shipping_method {
	flex: 0 0 auto;
	margin-top: 2px;
}
.rwiz-cart-component-delivery-options label {
	flex: 1 1 auto;
	margin: 0;
	font-weight: 600;
	color: #1f3347;
}
.rwiz-cart-component-delivery-destination .rwiz-cart-delivery-destination::before {
	content: 'Delivery destination: ';
	font-weight: 700;
	color: #1f3347;
}
.rwiz-cart-component-estimated-delivery .rwiz-cart-estimated-delivery strong,
.rwiz-cart-component-estimated-delivery .rwiz-cart-estimated-delivery b {
	color: #1f3347;
}
.rwiz-cart-component-paynowpaylateroffers .rwiz-paynowpaylater-offer {
	margin: 0 0 8px 0;
}
.rwiz-cart-component-paynowpaylateroffers .rwiz-paynowpaylater-offer:last-child {
	margin-bottom: 0;
}

@media (max-width: 549px) {
	.rwiz-cart-coupon-toggle-header,
	.rwiz-cart-delivery-calculator-toggle-header {
		align-items: flex-start;
	}
	.rwiz-cart-coupon-form-row {
		flex-direction: column;
	}
	.rwiz-cart-coupon-form-row .button {
		width: auto;
		align-self: flex-start;
	}
	.rwiz-cart-summary-row {
		align-items: flex-start;
	}
	.rwiz-cart-component-delivery-options .woocommerce-delivery-options li,
	.rwiz-cart-delivery-option-row {
		align-items: flex-start;
	}
}


/* ============================================================
   SECTION 003 - Empty-cart UX marker aliases
   Use rwiz-hide-when-cart-empty for any UX element that must disappear
   when the cart is empty. Use rwiz-cart-right-panel as a clearer optional
   alias for the right-hand cart panel if preferred.
   ============================================================ */

body.rwiz-cart-is-empty .rwiz-hide-when-cart-empty,
body.rwiz-cart-is-empty .rwiz-cart-right-panel {
  display: none !important;
}

body.rwiz-cart-is-not-empty .rwiz-show-when-cart-empty {
  display: none !important;
}


/* ============================================================
   SECTION 004 - Empty-cart left-panel centering
   Purpose: When the cart is empty and the right panel is hidden,
   centre the UX-owned left panel horizontally without moving elements
   in PHP. Add rwiz-cart-left-panel to the UX Builder LeftPanel column.
   ============================================================ */

body.rwiz-cart-is-empty .rwiz-cart-left-panel {
  float: none !important;
  clear: both !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

body.rwiz-cart-is-empty .rwiz-cart-left-panel .rwiz-cart-empty-state {
  justify-items: center;
  text-align: center;
}

body.rwiz-cart-is-empty .rwiz-cart-left-panel .rwiz-cart-empty-action {
  text-align: center;
}
