/* ==========================================================================
   Meridian — WooCommerce layer.
   Maps WooCommerce's own markup (widgets, forms, notices, cart, checkout,
   account) onto the Meridian tokens and components in base.css.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Buttons WooCommerce prints itself
   -------------------------------------------------------------------------- */
.woocommerce :is(a.button, button.button, input.button, #respond input#submit),
.woocommerce-page :is(a.button, button.button, input.button),
.wc-block-components-button:not(.is-link),
.wp-element-button.wc-block-components-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 44px;
  padding: 0.6875rem 1.25rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-card);
  color: var(--color-text);
  font-family: var(--font-heading);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.2;
  text-shadow: none;
  transition: filter var(--motion-fast), background-color var(--motion-fast);
}
.woocommerce :is(a.button, button.button, input.button):hover { background: var(--color-subtle); color: var(--color-text); }

.woocommerce :is(a.button.alt, button.button.alt, input.button.alt, #respond input#submit.alt),
.woocommerce :is(.single_add_to_cart_button, .checkout-button, #place_order),
.wc-block-components-button:not(.is-link):not(.outlined),
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
  background: var(--color-button) !important;
  border-color: var(--color-button) !important;
  color: var(--color-button-text) !important;
}
.woocommerce :is(a.button.alt, button.button.alt, .single_add_to_cart_button):hover { filter: brightness(0.92); }
.woocommerce :is(button.button, a.button).disabled,
.woocommerce :is(button.button, a.button):disabled { opacity: 0.5; cursor: not-allowed; }

/* AJAX add-to-cart states on product cards */
.product-card .ajax_add_to_cart.loading { position: relative; color: transparent !important; pointer-events: none; }
.product-card .ajax_add_to_cart.loading::after {
  content: ""; position: absolute; inset: 0; margin: auto;
  width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid currentColor; border-color: var(--color-button-text) transparent var(--color-button-text) transparent;
  animation: meridian-spin 0.7s linear infinite;
}
.product-card .ajax_add_to_cart.added::before { content: "✓"; margin-right: 0.35rem; }
.product-card .added_to_cart { display: none; }
@keyframes meridian-spin { to { transform: rotate(360deg); } }

/* --------------------------------------------------------------------------
   Prices WooCommerce renders (variable ranges, cart, mini widgets)
   -------------------------------------------------------------------------- */
.price--wc { font-family: var(--font-heading); font-weight: 700; color: var(--color-text); }
.price--wc del { color: var(--color-text-muted); font-weight: 400; font-size: 0.85em; opacity: 1; }
.price--wc ins { text-decoration: none; color: var(--color-sale); }
.price .woocommerce-price-suffix { font-size: 0.75em; font-weight: 400; color: var(--color-text-muted); margin-left: 0.25rem; }
.woocommerce-variation-price .price { font-family: var(--font-heading); font-size: 1.25rem; font-weight: 700; color: var(--color-text); }
.woocommerce-variation-price .price ins { text-decoration: none; color: var(--color-sale); }

/* --------------------------------------------------------------------------
   Notices
   -------------------------------------------------------------------------- */
.woocommerce-notices-wrapper:empty { display: none; }
:is(.woocommerce-message, .woocommerce-info, .woocommerce-error, .wc-block-components-notice-banner) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin: 0 0 var(--space-4) !important;
  padding: 0.875rem 1rem !important;
  list-style: none;
  background: var(--color-card) !important;
  border: var(--card-border) !important;
  border-left: 4px solid var(--color-primary) !important;
  border-radius: var(--radius-sm);
  color: var(--color-text) !important;
  font-size: 0.9063rem;
  box-shadow: var(--shadow-sm);
}
:is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before { display: none !important; }
.woocommerce-message { border-left-color: var(--color-success) !important; }
.woocommerce-error { border-left-color: var(--color-sale) !important; flex-direction: column; align-items: flex-start; }
:is(.woocommerce-message, .woocommerce-info) .button { order: 2; min-height: 36px !important; padding: 0.4rem 0.85rem !important; }

/* --------------------------------------------------------------------------
   Shop: toolbar, sub-category chips, filters
   -------------------------------------------------------------------------- */
.meridian-wc { padding-bottom: var(--space-6); }
.woocommerce-result-count { margin: 0; font-size: 0.875rem; color: var(--color-text-muted); }
.woocommerce-ordering { margin: 0; }
.woocommerce-ordering select { min-height: 40px; width: auto; min-width: 190px; font-size: 0.875rem; }
.mobile-filter-bar .woocommerce-ordering { flex: 1; }
.mobile-filter-bar .woocommerce-ordering select { width: 100%; min-width: 0; min-height: 44px; }

.subcat-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: calc(var(--space-3) * -1) 0 var(--space-5); }
.subcat-chips .pill { gap: 0.25rem; }

.facet[data-collapsed] > :not(.facet__summary) { display: none; }
.facet[data-collapsed] > .facet__summary svg { transform: none; }
.facet > .facet__summary { margin: 0; }
.facet > .facet__summary svg { transform: rotate(180deg); }
.facet > :not(.facet__summary) { padding-bottom: 0.875rem; }
.facet > ul, .facet > form > ul { max-height: 300px; overflow-y: auto; }

/* Category / layered-nav / rating lists → checkbox rows */
.facet ul li { margin: 0; }
.facet :is(.product-categories, .woocommerce-widget-layered-nav-list, .wc-layered-nav-rating) a,
.facet .woocommerce-widget-layered-nav-list__item > a {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  min-height: 34px;
  padding: 0.25rem 0;
  font-size: 0.9063rem;
}
.facet .woocommerce-widget-layered-nav-list__item > a::before,
.facet .wc-layered-nav-rating > a::before {
  content: "";
  flex: none;
  width: 18px; height: 18px;
  border: 1.5px solid var(--color-border-strong);
  border-radius: 4px;
  background: var(--color-card);
}
.facet .woocommerce-widget-layered-nav-list__item--chosen > a::before,
.facet .wc-layered-nav-rating.chosen > a::before {
  background: var(--color-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E") center / 13px no-repeat;
  border-color: var(--color-primary);
}
.facet .count, .facet .woocommerce-widget-layered-nav-list__item .count { color: var(--color-text-muted); font-size: 0.8125rem; }
.facet .product-categories .children { padding-left: 0.875rem; border-left: 1px solid var(--color-border); margin-left: 0.25rem; }
.facet .product-categories .current-cat > a { color: var(--color-primary); font-weight: 600; }
.facet .product-categories li { display: block; }
.facet .product-categories li > a { display: inline-flex; min-height: 32px; }
.facet .product-categories .count { margin-left: 0.25rem; }
.facet .star-rating { font-size: 0.8125rem; }

/* Price slider */
.facet .price_slider_wrapper { padding-top: 0.5rem; }
.facet .price_slider_wrapper .ui-widget-content { background: var(--color-border); border-radius: 999px; height: 4px; margin: 0.5rem 0.4rem 1.25rem; }
.facet .price_slider_wrapper .ui-slider-range { background: var(--color-primary); }
.facet .price_slider_wrapper .ui-slider-handle {
  top: -7px; width: 18px; height: 18px; border-radius: 50%;
  background: var(--color-card); border: 2px solid var(--color-primary); box-shadow: var(--shadow-sm);
}
.facet .price_slider_amount { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem; font-size: 0.8125rem; text-align: left; }
.facet .price_slider_amount .price_label { order: -1; flex: 1 1 100%; color: var(--color-text-muted); }
.facet .price_slider_amount .button { min-height: 36px !important; padding: 0.4rem 0.9rem !important; font-size: 0.8438rem !important; background: var(--color-button) !important; color: var(--color-button-text) !important; border-color: var(--color-button) !important; }
.facet .price_slider_amount input[type="text"] { display: none; }

/* Drop-down layered nav */
.facet .woocommerce-widget-layered-nav-dropdown .button { margin-top: 0.5rem; }
.facet select { min-height: 40px; }

/* Active filters (Woo "Active filters" widget) → Meridian pills */
.active-filters-wrap ul { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: var(--space-4); }
.active-filters-wrap li a {
  display: inline-flex; align-items: center; gap: 0.4rem;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  background: var(--color-primary-fade);
  color: var(--color-primary);
  font-size: 0.8125rem;
  font-weight: 500;
}
.active-filters-wrap li a::after { content: "×"; font-size: 1rem; line-height: 1; }
.active-filters-wrap li a::before { display: none !important; }

/* Pagination from Woo/paginate_links */
.pagination .page-numbers.current,
.pagination [aria-current="page"] { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.pagination svg { width: 16px; height: 16px; }

/* --------------------------------------------------------------------------
   Product page
   -------------------------------------------------------------------------- */
.woocommerce div.product.meridian-product { margin-bottom: 0; }
.meridian-product .product-layout { padding-top: var(--space-2); }
.meridian-product .gallery__thumb { cursor: pointer; }
.meridian-product .gallery__slide img { width: auto; height: auto; }
.meridian-product .product-info > * { margin: 0; }
.meridian-product .woocommerce-product-details__short-description { color: var(--color-text-muted); font-size: 0.9375rem; }
.meridian-product .woocommerce-product-details__short-description ul { list-style: disc; padding-left: 1.2rem; }
.meridian-product .price-wrap .price { margin: 0; }
.meridian-product .stock-wrap { margin: 0; }

/* Add-to-cart form */
.woocommerce div.product.meridian-product form.cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0.625rem; margin: 0; }
.woocommerce div.product.meridian-product form.cart::before,
.woocommerce div.product.meridian-product form.cart::after { display: none; }
.woocommerce div.product.meridian-product form.cart div.quantity { float: none; margin: 0; }
.woocommerce div.product.meridian-product form.cart .button { float: none; flex: 1 1 200px; min-height: 52px; font-size: 1rem; }
.woocommerce div.product.meridian-product form.cart.variations_form,
.woocommerce div.product.meridian-product form.cart.grouped_form { display: block; }
.woocommerce .quantity.qty .qty { width: 3.4em; min-height: 0; height: 42px; border: 0; border-radius: 0; text-align: center; padding: 0; box-shadow: none; -moz-appearance: textfield; }
.woocommerce .quantity.qty .qty::-webkit-inner-spin-button,
.woocommerce .quantity.qty .qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.qty .qty__btn { flex: none; }
.single_variation_wrap .woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; gap: 0.625rem; }
.single_variation_wrap .woocommerce-variation { margin-bottom: 0.75rem; }
.single_variation_wrap .woocommerce-variation:empty { display: none; }

/* Variations */
.woocommerce div.product.meridian-product form.cart table.variations { margin: 0 0 var(--space-3); border: 0; }
table.variations, table.variations tbody, table.variations tr, table.variations th, table.variations td { display: block; width: 100%; padding: 0 !important; border: 0; background: none; }
table.variations tr { margin-bottom: var(--space-3); }
table.variations th.label { margin-bottom: 0.45rem; font-size: 0.875rem; font-weight: 600; text-align: left; line-height: 1.3; }
table.variations td.value { position: relative; }
table.variations .reset_variations { display: inline-block; margin-top: 0.5rem; font-size: 0.8125rem; color: var(--color-text-muted); text-decoration: underline; }
.variant-pill { border: 0; background: none; padding: 0; font: inherit; color: inherit; }
.variant-pill[aria-checked="true"] span { border-color: var(--color-primary); background: var(--color-primary-fade); color: var(--color-primary); font-weight: 600; box-shadow: inset 0 0 0 1px var(--color-primary); }
.variant-pill:disabled span { opacity: 0.4; text-decoration: line-through; cursor: not-allowed; }
.variant-pill:focus-visible span { outline: 2px solid var(--color-primary); outline-offset: 2px; }

/* Grouped products */
.woocommerce div.product form.cart .group_table td { padding: 0.5rem 0.5rem 0.5rem 0; vertical-align: middle; border-bottom: 1px solid var(--color-border); }

/* Accordions content */
.product-accordions { margin-top: var(--space-2); }
.product-accordions .accordion:last-child { border-bottom: 1px solid var(--color-border); }
.product-accordions .accordion__panel > h2:empty { display: none; }
.woocommerce table.shop_attributes { border: 0; margin: 0; font-size: 0.875rem; }
.woocommerce table.shop_attributes tr { border-bottom: 1px solid var(--color-border); }
.woocommerce table.shop_attributes tr:last-child { border-bottom: 0; }
.woocommerce table.shop_attributes th { width: 40%; padding: 0.6rem 1rem 0.6rem 0; border: 0; background: none; color: var(--color-text-muted); font-weight: 600; text-align: left; vertical-align: top; }
.woocommerce table.shop_attributes td { padding: 0.6rem 0; border: 0; background: none; font-style: normal; }
.woocommerce table.shop_attributes td p { padding: 0; margin: 0; }
.woocommerce table.shop_attributes tr:nth-child(even) :is(th, td) { background: none; }

/* Reviews */
.woocommerce #reviews #comments h2, .woocommerce-Reviews-title { font-size: 1rem; margin-bottom: var(--space-3); }
.woocommerce #reviews #comments ol.commentlist { padding: 0; margin: 0 0 var(--space-4); }
.woocommerce #reviews #comments ol.commentlist li { margin: 0 0 var(--space-3); }
.woocommerce #reviews #comments ol.commentlist li .comment-text { margin-left: 52px; border: var(--card-border); border-radius: var(--radius-sm); padding: 0.875rem 1rem 0.25rem; }
.woocommerce #reviews #comments ol.commentlist li img.avatar { width: 40px; border: 0; padding: 0; border-radius: 50%; background: none; }
.woocommerce .star-rating span::before, .woocommerce p.stars a { color: var(--color-accent); }
.woocommerce #review_form #respond textarea { min-height: 110px; }
.woocommerce #review_form #respond .form-submit input { background: var(--color-button); color: var(--color-button-text); border-color: var(--color-button); }

/* Sticky buy price */
.sticky-buy .price { font-size: 0.875rem; }

/* --------------------------------------------------------------------------
   Cart drawer
   -------------------------------------------------------------------------- */
#CartDrawer .widget_shopping_cart_content { display: flex; flex-direction: column; height: 100%; min-height: 0; }
#CartDrawer[aria-busy="true"] .drawer__body,
#CartDrawer[aria-busy="true"] .drawer__footer { opacity: 0.55; pointer-events: none; transition: opacity var(--motion-fast); }
#CartDrawer .cart-line__img { width: 84px; height: 84px; }
#CartDrawer .cart-line a.remove { width: auto; height: auto; font-size: 0.75rem; font-weight: 400; line-height: 1.4; color: var(--color-text-muted) !important; background: none !important; border-radius: 0; text-indent: 0; display: inline; }
#CartDrawer .cart-line a.remove:hover { color: var(--color-sale) !important; }
#CartDrawer .cart-line__variant dl { margin: 0.2rem 0 0; display: grid; grid-template-columns: auto 1fr; gap: 0 0.35rem; }
#CartDrawer .cart-line__variant dd, #CartDrawer .cart-line__variant dt { margin: 0; }
#CartDrawer .cart-line__variant dd p { margin: 0; }
#CartDrawer .empty-state { margin-top: var(--space-5); }
#CartDrawer .empty-state svg { width: 46px; height: 46px; }
.blockUI.blockOverlay { background: var(--color-card) !important; }

/* --------------------------------------------------------------------------
   Forms (checkout, account, reviews)
   -------------------------------------------------------------------------- */
.woocommerce form .form-row { padding: 0; margin: 0 0 var(--space-3); }
.woocommerce form .form-row label { display: block; font-size: 0.8125rem; font-weight: 600; margin-bottom: 0.35rem; line-height: 1.4; }
.woocommerce form .form-row .required { color: var(--color-sale); text-decoration: none; }
.woocommerce form .form-row :is(input.input-text, textarea, select) { line-height: 1.4; }
.woocommerce form .form-row.woocommerce-invalid :is(input.input-text, select) { border-color: var(--color-sale); }
.woocommerce form .form-row.woocommerce-validated :is(input.input-text, select) { border-color: var(--color-success); }
.select2-container .select2-selection--single { height: 44px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); }
.select2-container .select2-selection--single .select2-selection__rendered { line-height: 42px; padding-left: 0.875rem; }
.select2-container .select2-selection--single .select2-selection__arrow { height: 42px; }
.woocommerce form.login, .woocommerce form.register, .woocommerce form.checkout_coupon, .woocommerce form.lost_reset_password {
  border: var(--card-border) !important;
  border-radius: var(--radius) !important;
  background: var(--color-card);
  padding: var(--space-5) !important;
  margin: 0 0 var(--space-5) !important;
}
.woocommerce form .password-input { display: block; }
.woocommerce input[type="checkbox"], .woocommerce input[type="radio"] { width: 18px; height: 18px; min-height: 0; accent-color: var(--color-primary); -webkit-appearance: auto; appearance: auto; vertical-align: middle; }
.woocommerce .col2-set { gap: var(--space-5); }

/* --------------------------------------------------------------------------
   Classic cart & checkout
   -------------------------------------------------------------------------- */
.woocommerce table.shop_table { border: var(--card-border); border-radius: var(--radius); background: var(--color-card); border-collapse: separate; overflow: hidden; }
.woocommerce table.shop_table :is(th, td) { padding: 0.875rem 1rem; border-top-color: var(--color-border); }
.woocommerce table.shop_table th { font-family: var(--font-heading); font-size: 0.8125rem; font-weight: 700; color: var(--color-text-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.woocommerce table.shop_table img { width: 64px; border-radius: var(--radius-sm); border: 1px solid var(--color-border); background: #fff; }
.woocommerce a.remove { color: var(--color-text-muted) !important; }
.woocommerce a.remove:hover { background: var(--color-sale); color: #fff !important; }
.woocommerce .cart-collaterals .cart_totals, .woocommerce-checkout-review-order {
  background: var(--color-card);
  border: var(--card-border);
  border-radius: var(--radius);
  padding: var(--space-4);
}
.woocommerce .cart-collaterals .cart_totals table.shop_table { border: 0; }
.woocommerce .coupon .input-text { width: auto !important; min-width: 160px; }
#add_payment_method #payment, .woocommerce-cart #payment, .woocommerce-checkout #payment { background: var(--color-subtle); border-radius: var(--radius); }
.woocommerce-checkout #payment div.payment_box { background: var(--color-card); color: var(--color-text); }
.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--color-card); }
.woocommerce-checkout h3 { font-size: 1.125rem; }

/* Cart / checkout blocks pick up the theme fonts & colours */
.wc-block-cart, .wc-block-checkout { font-family: var(--font-body); }
.wc-block-components-totals-wrapper, .wc-block-components-panel { border-color: var(--color-border) !important; }
.wc-block-components-text-input input, .wc-block-components-combobox .wc-block-components-combobox-control input { border-radius: var(--radius-sm) !important; }
.wc-block-components-product-badge { border-radius: 999px; }
.wc-block-components-sidebar-layout .wc-block-components-main { padding-right: var(--space-5); }

/* --------------------------------------------------------------------------
   My account
   -------------------------------------------------------------------------- */
@media (min-width: 769px) {
  .woocommerce-account .woocommerce { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--space-5); align-items: start; }
  .woocommerce-account .woocommerce::before, .woocommerce-account .woocommerce::after { display: none; }
  .woocommerce-account .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
  .woocommerce-account .woocommerce-MyAccount-navigation,
  .woocommerce-account .woocommerce-MyAccount-content { float: none; width: auto; }
  .woocommerce-account:not(.logged-in) .woocommerce { display: block; }
}
.woocommerce-MyAccount-navigation ul { background: var(--color-card); border: var(--card-border); border-radius: var(--radius); padding: 0.5rem; }
.woocommerce-MyAccount-navigation a { display: block; padding: 0.6rem 0.75rem; border-radius: var(--radius-sm); font-size: 0.9063rem; font-weight: 500; }
.woocommerce-MyAccount-navigation a:hover,
.woocommerce-MyAccount-navigation .is-active a { background: var(--color-subtle); color: var(--color-primary); }
.woocommerce-MyAccount-content { background: var(--color-card); border: var(--card-border); border-radius: var(--radius); padding: var(--space-5); }
.woocommerce-account:not(.logged-in) .u-columns { gap: var(--space-5); }

/* --------------------------------------------------------------------------
   Small things
   -------------------------------------------------------------------------- */
.woocommerce .star-rating { color: var(--color-accent); }
.woocommerce span.onsale { display: none; }
.woocommerce-store-notice, p.demo_store { background: var(--color-primary); }
.drawer-utility a { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.5rem 0; font-size: 0.9063rem; }
.drawer-utility svg { width: 16px; height: 16px; }
.header__logo-img { display: block; }
.newsletter__shortcode input[type="email"] { min-height: 46px; }
