/* ═══════════════════════════════════════════════════════
   WooCommerce
   Covers both the classic shortcode cart/checkout and the newer
   block-based ones, plus shop and single-product screens.
   ═══════════════════════════════════════════════════════ */
body .jmw-woo{--wc-gap:clamp(18px,2.4vw,32px)}
body .jmw-woo a{color:var(--a)}
body .jmw-woo h2, body .jmw-woo h3{margin-bottom:14px}

/* Buttons — Woo's own classes, matched to the theme's */
body .jmw-woo .button, body .jmw-woo button.button, body .jmw-woo input.button
body .jmw-woo a.button, body .jmw-woo .wc-block-components-button
body .jmw-woo #place_order, .woocommerce-message .button, .woocommerce-info .button{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--ui);font-size:14px;font-weight:700;letter-spacing:.01em;
  padding:13px 22px;border-radius:2px;border:1px solid var(--a);
  background:var(--a);color:var(--a-fg);cursor:pointer;line-height:1.2;
  transition:filter .2s;text-decoration:none}
body .jmw-woo .button:hover, body .jmw-woo button.button:hover, body .jmw-woo a.button:hover
body .jmw-woo .wc-block-components-button:hover, body .jmw-woo #place_order:hover{filter:brightness(1.08)}
body .jmw-woo .button.alt, body .jmw-woo .checkout-button{background:var(--a);border-color:var(--a)}
body .jmw-woo .wc-block-components-button__text{color:inherit}

/* Product grid */
body .jmw-woo ul.products{list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:var(--wc-gap)}
body .jmw-woo ul.products li.product{margin:0;text-align:left}
body .jmw-woo ul.products li.product a img{width:100%;height:auto;margin-bottom:14px;
  background:var(--surface)}
body .jmw-woo ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--display);font-size:20px;font-weight:700;color:var(--head);
  margin:0 0 6px;padding:0}
body .jmw-woo ul.products li.product .price{font-family:var(--ui);font-size:15px;
  font-weight:600;color:var(--a);display:block;margin-bottom:12px}
body .jmw-woo ul.products li.product .price del{opacity:.5;margin-right:6px}
body .jmw-woo .woocommerce-result-count{font-family:var(--ui);font-size:13.5px;color:var(--dim)}
body .jmw-woo .woocommerce-ordering select{font-family:var(--ui);font-size:14px;
  padding:9px 12px;border:1px solid var(--line);border-radius:2px;background:none;color:var(--fg)}

/* Single product */
body .jmw-woo .woocommerce-product-gallery{margin-bottom:24px}
body .jmw-woo div.product .product_title{font-family:var(--display);color:var(--head);
  font-size:clamp(28px,3.4vw,44px);margin-bottom:12px}
body .jmw-woo div.product p.price, body .jmw-woo div.product span.price{
  font-family:var(--ui);font-size:clamp(24px,2.6vw,32px);font-weight:700;color:var(--a)}
body .jmw-woo .woocommerce-variation-price .price{font-size:24px}
body .jmw-woo table.variations{border:0;margin-bottom:18px;width:100%}
body .jmw-woo table.variations td, body .jmw-woo table.variations th{border:0;padding:8px 0;vertical-align:middle}
body .jmw-woo table.variations label{font-family:var(--ui);font-size:12px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
body .jmw-woo table.variations select{font-family:var(--ui);font-size:15px;padding:11px 14px;
  border:1px solid var(--line);border-radius:2px;background:none;color:var(--fg);width:100%;max-width:320px}
body .jmw-woo .woocommerce-tabs ul.tabs{list-style:none;display:flex;gap:20px;padding:0;
  margin:36px 0 18px;border-bottom:1px solid var(--hair)}
body .jmw-woo .woocommerce-tabs ul.tabs li a{font-family:var(--ui);font-size:14px;font-weight:600;
  color:var(--dim);display:block;padding:0 0 12px}
body .jmw-woo .woocommerce-tabs ul.tabs li.active a{color:var(--head);box-shadow:inset 0 -2px 0 var(--a)}

/* Quantity */
body .jmw-woo .quantity input.qty{width:70px;font-family:var(--ui);font-size:15px;
  padding:12px 10px;border:1px solid var(--line);border-radius:2px;background:none;
  color:var(--fg);text-align:center}

/* Cart and checkout tables */
body .jmw-woo table.shop_table{width:100%;border-collapse:collapse;border:0;margin-bottom:26px}
body .jmw-woo table.shop_table th{font-family:var(--ui);font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim);text-align:left;
  padding:0 12px 12px 0;border-bottom:1px solid var(--line)}
body .jmw-woo table.shop_table td{padding:18px 12px 18px 0;border-bottom:1px solid var(--hair);
  vertical-align:middle;font-family:var(--ui);font-size:15px}
body .jmw-woo table.shop_table img{width:74px;height:auto;background:var(--surface)}
body .jmw-woo table.shop_table .product-name a{font-weight:600;color:var(--head)}
body .jmw-woo table.shop_table .product-name a:hover{color:var(--a)}
body .jmw-woo .cart_item .product-price, body .jmw-woo .cart_item .product-subtotal{color:var(--a);font-weight:600}
body .jmw-woo a.remove{display:inline-grid;place-items:center;width:24px;height:24px;
  border:1px solid var(--line);border-radius:50%;color:var(--dim);font-size:15px;
  line-height:1;text-decoration:none}
body .jmw-woo a.remove:hover{border-color:var(--a);color:var(--a)}
body .jmw-woo .cart-collaterals{margin-top:8px}
body .jmw-woo .cart_totals h2{font-family:var(--display);font-size:24px}
body .jmw-woo .cart_totals table th{border-bottom:1px solid var(--hair);padding:14px 12px 14px 0}
body .jmw-woo .order-total .amount{font-size:22px;color:var(--head);font-weight:700}
body .jmw-woo .wc-proceed-to-checkout{margin-top:18px}
body .jmw-woo .wc-proceed-to-checkout .button{width:100%;padding:16px}

/* Checkout form */
body .jmw-woo .woocommerce-billing-fields h3, body .jmw-woo #order_review_heading{
  font-family:var(--display);font-size:24px;margin:26px 0 16px}
body .jmw-woo .form-row{display:block;margin-bottom:16px;padding:0}
body .jmw-woo .form-row label{display:block;font-family:var(--ui);font-size:12px;
  font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:7px}
body .jmw-woo .form-row input.input-text, body .jmw-woo .form-row textarea
body .jmw-woo .form-row .select2-container .select2-selection
body .jmw-woo .form-row select{
  width:100%;font-family:var(--ui);font-size:15.5px;padding:13px 14px;
  border:1px solid var(--line);border-radius:2px;background:rgba(33,30,25,.03);
  color:var(--fg);line-height:1.4;height:auto}
body .jmw-woo .form-row input.input-text:focus, body .jmw-woo .form-row textarea:focus
body .jmw-woo .form-row select:focus{outline:none;border-color:var(--a)}
body .jmw-woo #customer_details{display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
body .jmw-woo .woocommerce-checkout-review-order{margin-top:12px}
body .jmw-woo #payment{background:var(--surface);padding:22px;border:1px solid var(--hair);border-radius:2px}
body .jmw-woo #payment ul.payment_methods{list-style:none;margin:0 0 18px;padding:0 0 18px;
  border-bottom:1px solid var(--hair)}
body .jmw-woo #payment ul.payment_methods li{margin-bottom:10px;font-family:var(--ui);font-size:15px}
body .jmw-woo #payment .place-order{margin:0}
body .jmw-woo #place_order{width:100%;padding:16px;font-size:15px}

/* Notices */
body .jmw-woo .woocommerce-message, body .jmw-woo .woocommerce-info, body .jmw-woo .woocommerce-error
body .woocommerce-message,body .woocommerce-info,body .woocommerce-error{
  list-style:none;font-family:var(--ui);font-size:14.5px;line-height:1.6;
  padding:15px 18px;margin:0 0 24px;border:1px solid var(--line);
  border-left-width:3px;border-radius:2px;background:rgba(224,166,90,.08);
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding-left:18px!important;text-indent:0!important;min-height:0}
body .jmw-woo .woocommerce-message, .woocommerce-message{border-left-color:var(--a)}
body .jmw-woo .woocommerce-error, .woocommerce-error{border-left-color:#C4562E;background:rgba(196,86,46,.08)}
body .jmw-woo .woocommerce-message .button{margin-left:auto;padding:9px 15px;font-size:13px}

/* Empty cart */
body .jmw-woo .cart-empty{font-family:var(--display);font-size:clamp(22px,2.4vw,30px);
  color:var(--head);margin-bottom:16px}
body .jmw-woo .return-to-shop{margin-top:20px}

/* Block-based cart and checkout (WooCommerce 8+ default) */
body .jmw-woo .wc-block-components-title, body .jmw-woo .wp-block-woocommerce-cart h2{
  font-family:var(--display);color:var(--head)}
body .jmw-woo .wc-block-components-product-name{font-family:var(--ui);font-weight:600;color:var(--head)}
body .jmw-woo .wc-block-components-product-price__value
body .jmw-woo .wc-block-components-totals-item__value{font-family:var(--ui);color:var(--a);font-weight:600}
body .jmw-woo .wc-block-components-text-input input
body .jmw-woo .wc-block-components-textarea
body .jmw-woo .wc-block-components-select__container{
  font-family:var(--ui);border:1px solid var(--line);border-radius:2px;
  background:rgba(33,30,25,.03);color:var(--fg)}
body .jmw-woo .wc-block-components-text-input label{font-family:var(--ui);color:var(--dim)}
body .jmw-woo .wc-block-cart-items__row{border-bottom:1px solid var(--hair)}
body .jmw-woo .wc-block-components-sidebar, body .jmw-woo .wc-block-components-order-summary{
  background:var(--surface);padding:20px;border-radius:2px}

@media (max-width:1080px){
  body .jmw-woo ul.products{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:680px){
  body .jmw-woo ul.products{grid-template-columns:1fr}
  body .jmw-woo #customer_details{grid-template-columns:1fr;gap:0}
  body .jmw-woo table.shop_table thead{display:none}
  body .jmw-woo table.shop_table tr{display:block;border-bottom:1px solid var(--line);padding:14px 0}
  body .jmw-woo table.shop_table td{display:flex;justify-content:space-between;gap:14px;
    border:0;padding:6px 0;text-align:right}
  body .jmw-woo table.shop_table td::before{content:attr(data-title);font-size:11.5px;
    letter-spacing:.12em;text-transform:uppercase;color:var(--dim);text-align:left}
  body .jmw-woo table.shop_table td.product-remove::before{content:""}
  body .jmw-woo table.shop_table img{width:56px}
}

/* ═══════════════════════════════════════════════════════
   Block-based Cart and Checkout
   WooCommerce 8+ ships these as blocks with entirely different markup from
   the classic shortcodes, so they need their own rules.
   ═══════════════════════════════════════════════════════ */
body .wp-block-woocommerce-cart,
body .wp-block-woocommerce-checkout{font-family:var(--ui);color:var(--fg)}

/* The block wrappers carry their own max-width and padding, which inset the
   cart and checkout well inside the theme container. The container already
   handles the gutter, so strip theirs. */
body .wp-block-woocommerce-cart,
body .wp-block-woocommerce-checkout,
body .wp-block-woocommerce-empty-cart-block,
body .wp-block-woocommerce-filled-cart-block,
body .wc-block-cart,
body .wc-block-checkout{
  max-width:none!important;width:100%!important;
  margin-left:0!important;margin-right:0!important;
  padding-left:0!important;padding-right:0!important}
body .wc-block-cart__main,body .wc-block-checkout__main{padding-left:0!important}
body .wc-block-components-sidebar-layout.has-sidebar{padding:0!important}

/* Layout
   WooCommerce switches these to two columns using an is-large class its own
   script adds after measuring the container. That is unreliable inside a
   themed wrapper, so the columns are declared here instead. */
body .wc-block-cart,body .wc-block-checkout{margin:0}
body .wc-block-components-sidebar-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);
  gap:clamp(24px,3.5vw,56px);align-items:start}
body .wc-block-components-main,
body .wc-block-checkout__main,
body .wc-block-cart__main{
  max-width:none!important;width:auto!important;padding-right:0!important;float:none!important}
body .wc-block-components-sidebar,
body .wc-block-checkout__sidebar,
body .wc-block-cart__sidebar{
  max-width:none!important;width:auto!important;padding-left:0!important;float:none!important;
  background:var(--surface);padding:clamp(20px,2.4vw,28px);
  border:1px solid var(--hair);border-radius:2px;align-self:start;position:sticky;top:96px}
@media (max-width:900px){
  body .wc-block-components-sidebar-layout{grid-template-columns:1fr;gap:26px}
  body .wc-block-components-sidebar,
  body .wc-block-checkout__sidebar,
  body .wc-block-cart__sidebar{position:static;order:2}
  body .wc-block-components-main,
  body .wc-block-checkout__main,
  body .wc-block-cart__main{order:1}
}

/* Headings and labels */
body .wc-block-components-title,
body .wp-block-woocommerce-cart h1,body .wp-block-woocommerce-cart h2,
body .wp-block-woocommerce-checkout h2,
body .wc-block-components-checkout-step__title{
  font-family:var(--display)!important;color:var(--head)!important;
  font-size:clamp(20px,2vw,26px)!important;font-weight:700;letter-spacing:-.01em;margin-bottom:12px}
body .wc-block-cart__totals-title,body .wc-block-components-totals-wrapper .wc-block-components-title{
  font-family:var(--ui)!important;font-size:11.5px!important;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim)!important}
body .wc-block-components-checkout-step__description{color:var(--dim);font-size:14.5px}

/* Cart line items */
body .wc-block-cart-items{border:0}
body .wc-block-cart-items__row,body .wc-block-cart-items thead th{
  border-bottom:1px solid var(--hair)}
body .wc-block-cart-items thead th{font-family:var(--ui);font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim);padding-bottom:12px}
body .wc-block-cart-item__image img{width:84px;height:auto;background:var(--surface);border-radius:2px}
body .wc-block-components-product-name{font-family:var(--ui)!important;font-size:16px!important;
  font-weight:700!important;color:var(--head)!important;text-decoration:none;line-height:1.35}
body .wc-block-components-product-name:hover{color:var(--a)!important}
body .wc-block-components-product-metadata{font-family:var(--ui);font-size:13px;color:var(--dim);margin-top:4px}
body .wc-block-components-product-metadata__description p{margin:0}

/* Prices — reset the oversized display sizes the theme uses elsewhere */
body .wc-block-components-product-price,
body .wc-block-components-product-price__value,
body .wc-block-cart-item__total-price-and-sale-badge-wrapper,
body .wc-block-components-formatted-money-amount{
  font-family:var(--ui)!important;font-size:15px!important;font-weight:600!important;
  color:var(--a)!important;letter-spacing:0!important;line-height:1.4!important}
body .wc-block-cart-item__total .wc-block-components-formatted-money-amount{font-size:16px!important}

/* Quantity stepper and remove */
body .wc-block-components-quantity-selector{border:1px solid var(--line);border-radius:2px;
  background:none;max-width:120px}
body .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input{
  font-family:var(--ui);font-size:14px;color:var(--fg);background:none}
body .wc-block-components-quantity-selector__button{color:var(--dim);font-size:16px}
body .wc-block-components-quantity-selector__button:hover{color:var(--a)}
body .wc-block-cart-item__remove-link{font-family:var(--ui);font-size:12.5px;color:var(--dim);
  text-decoration:underline}
body .wc-block-cart-item__remove-link:hover{color:var(--a)}

/* Totals */
body .wc-block-components-totals-item{font-family:var(--ui);font-size:14.5px;color:var(--fg);
  padding:10px 0}
body .wc-block-components-totals-item__label{color:var(--dim)}
body .wc-block-components-totals-item__value{color:var(--head);font-weight:600}
body .wc-block-components-totals-footer-item{border-top:1px solid var(--line);padding-top:14px}
body .wc-block-components-totals-footer-item .wc-block-components-totals-item__label{
  font-family:var(--display);font-size:17px;color:var(--head)}
body .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-family:var(--ui)!important;font-size:24px!important;font-weight:700!important;color:var(--head)!important}
body .wc-block-components-panel__button{font-family:var(--ui);font-size:14px;color:var(--fg)}
body .wc-block-components-panel__button:hover{color:var(--a)}

/* Buttons — the big dark "Proceed to Checkout" and "Place Order" */
body .wc-block-components-button:not(.is-link),
body .wc-block-cart__submit-button,
body .wc-block-components-checkout-place-order-button{
  background:var(--a)!important;color:var(--a-fg)!important;border:1px solid var(--a)!important;
  border-radius:2px!important;font-family:var(--ui)!important;font-weight:700!important;
  font-size:15px!important;letter-spacing:.01em;padding:16px 24px!important;
  box-shadow:none!important;transition:filter .2s}
body .wc-block-components-button:not(.is-link):hover{filter:brightness(1.08)}
body .wc-block-components-button__text{color:inherit!important}
body .wc-block-components-button.is-link{color:var(--a)!important;text-decoration:underline}

/* Checkout form fields */
body .wc-block-components-text-input input,
body .wc-block-components-textarea,
body .wc-block-components-combobox-control input,
body .wc-block-components-select .wc-block-components-select__container{
  font-family:var(--ui)!important;font-size:15.5px!important;color:var(--fg)!important;
  background:rgba(33,30,25,.03)!important;border:1px solid var(--line)!important;
  border-radius:2px!important;padding:14px!important;height:auto!important;box-shadow:none!important}
body .wc-block-components-text-input.is-active input,
body .wc-block-components-text-input input:focus{border-color:var(--a)!important;outline:none}
body .wc-block-components-text-input label,
body .wc-block-components-select label{font-family:var(--ui)!important;color:var(--dim)!important}
body .wc-block-components-checkout-step{border:0;padding-left:0;margin-bottom:26px}
body .wc-block-components-checkout-step__container{padding-left:0}
body .wc-block-components-checkout-step__heading{margin-bottom:6px}
body .wc-block-components-checkbox__label,body .wc-block-components-radio-control__label{
  font-family:var(--ui);font-size:14.5px;color:var(--fg)}
body .wc-block-components-order-summary__content{border-top:1px solid var(--hair)}
body .wc-block-components-order-summary-item{border-bottom:1px solid var(--hair);padding:14px 0}
body .wc-block-components-notice-banner{font-family:var(--ui);border-radius:2px}

/* Empty cart */
body .wp-block-woocommerce-empty-cart-block h2{font-family:var(--display);color:var(--head)}

@media (max-width:780px){
  body .wc-block-cart-item__image img{width:64px}
  /* The block cart's table header is meaningless once rows stack. */
  body .wc-block-cart-items__header{display:none}
  body .wc-block-cart-items__row{display:grid;grid-template-columns:64px minmax(0,1fr);
    gap:0 14px;padding:16px 0;align-items:start}
  body .wc-block-cart-item__image{grid-row:span 2}
  body .wc-block-cart-item__total{grid-column:2;text-align:left;margin-top:8px}
  body .wc-block-components-product-name{font-size:15px!important}
  body .wc-block-components-quantity-selector{max-width:104px}
  body .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-size:21px!important}
}
@media (max-width:600px){
  body .wc-block-components-sidebar,
  body .wc-block-checkout__sidebar,
  body .wc-block-cart__sidebar{padding:18px 16px}
  body .wc-block-components-text-input input,
  body .wc-block-components-textarea,
  body .wc-block-components-combobox-control input{padding:12px!important;font-size:16px!important}
  body .wc-block-components-button:not(.is-link),
  body .wc-block-cart__submit-button,
  body .wc-block-components-checkout-place-order-button{width:100%;padding:15px 18px!important}
  /* Checkout puts first/last name side by side; too tight on a phone. */
  body .wc-block-components-address-form .wc-block-components-text-input{width:100%!important}
}

/* ═══════════════════════════════════════════════════════
   Single product
   WooCommerce lays these out with floats and percentage widths. Those are
   reset first, then rebuilt as grid so the page matches the rest of the site.
   ═══════════════════════════════════════════════════════ */
body.single-product div.product{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(24px,4vw,64px);align-items:start}
body.single-product div.product::before,
body.single-product div.product::after{display:none}
body.single-product div.product div.images,
body.single-product div.product div.summary,
body.single-product div.product .woocommerce-product-gallery{
  width:auto!important;float:none!important;margin:0!important}
body.single-product div.product .woocommerce-tabs,
body.single-product div.product .related,
body.single-product div.product .up-sells,
body.single-product div.product .woocommerce-product-details__short-description{
  grid-column:1 / -1}

/* Gallery */
body .woocommerce-product-gallery{background:var(--surface);position:relative}
body .woocommerce-product-gallery img{width:100%;height:auto;display:block}
body .woocommerce-product-gallery__trigger{
  background:rgba(20,18,16,.72)!important;color:#F5EFE5!important;border-radius:50%;
  width:38px;height:38px;display:grid!important;place-items:center;
  top:14px!important;right:14px!important;font-size:0;text-indent:0!important}
body .woocommerce-product-gallery__trigger::after{content:"⤢";font-size:16px;line-height:1}
body .flex-control-thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;
  margin:8px 0 0;padding:0;list-style:none}
body .flex-control-thumbs li{width:auto!important;margin:0!important;float:none!important}

/* Summary column */
body.single-product div.product .product_title{margin-bottom:10px}
body.single-product div.product .woocommerce-product-rating{margin-bottom:14px}
body.single-product div.product .woocommerce-product-details__short-description{
  color:var(--dim);font-size:16px;max-width:52ch;margin-bottom:20px}
body.single-product div.product p.price{margin-bottom:20px;padding-bottom:18px;
  border-bottom:1px solid var(--hair)}

/* Variation rows */
body table.variations{margin:0 0 20px}
body table.variations,body table.variations tbody{display:block;width:100%}
body table.variations tr{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr);
  gap:0 18px;align-items:center;padding:12px 0;border-bottom:1px solid var(--hair)}
body table.variations tr:first-child{border-top:1px solid var(--hair)}
body table.variations th.label,body table.variations td.value{
  padding:0!important;display:block;text-align:left!important}
body table.variations th.label label{margin:0;line-height:1.3}
body table.variations select{max-width:none;width:100%}
@media (max-width:520px){
  body table.variations tr{grid-template-columns:1fr;gap:7px}
}
body .reset_variations{font-family:var(--ui);font-size:13px;color:var(--dim);
  display:inline-block;margin-top:8px}
body .reset_variations:hover{color:var(--a)}
body .woocommerce-variation-price{margin:16px 0}
body .woocommerce-variation-price .price{font-size:28px!important}

/* Quantity and add to cart, on one line */
body form.cart{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 0}
body form.variations_form.cart{display:block}
body form.variations_form .woocommerce-variation-add-to-cart{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap}
body form.cart .quantity{margin:0}
body form.cart .quantity input.qty{height:50px;width:76px}
body form.cart button.single_add_to_cart_button{height:50px;padding:0 30px;font-size:15px}
body button.single_add_to_cart_button.disabled,
body button.single_add_to_cart_button:disabled{
  background:var(--surface)!important;color:var(--dim)!important;
  border-color:var(--line)!important;cursor:not-allowed;opacity:1!important}

/* Meta line */
body .product_meta{margin-top:22px;padding-top:18px;border-top:1px solid var(--hair);
  font-family:var(--ui);font-size:13px;color:var(--dim);display:grid;gap:6px}
body .product_meta > span{display:block}
body .product_meta a{color:var(--a)}

/* Tabs */
body .woocommerce-tabs{margin-top:clamp(34px,4.5vw,64px);padding-top:clamp(24px,3vw,40px);
  border-top:1px solid var(--hair)}
body .woocommerce-tabs ul.tabs{margin:0 0 24px;padding:0;border-bottom:1px solid var(--hair);
  display:flex;gap:26px;flex-wrap:wrap}
body .woocommerce-tabs ul.tabs::before{display:none}
body .woocommerce-tabs ul.tabs li{background:none!important;border:0!important;
  border-radius:0!important;margin:0!important;padding:0!important}
body .woocommerce-tabs ul.tabs li::before,body .woocommerce-tabs ul.tabs li::after{display:none!important}
body .woocommerce-tabs ul.tabs li a{font-family:var(--ui)!important;font-size:14px!important;
  font-weight:600;color:var(--dim)!important;padding:0 0 14px!important;display:block}
body .woocommerce-tabs ul.tabs li.active a{color:var(--head)!important;
  box-shadow:inset 0 -2px 0 var(--a)}
body .woocommerce-tabs .panel > h2:first-child{display:none}
body .woocommerce-tabs .panel{max-width:72ch;color:var(--fg);font-size:16.5px;line-height:1.7}
body .woocommerce-tabs table.shop_attributes th{text-transform:none;letter-spacing:0;
  font-size:14px;width:180px}

/* Related and upsell grids — float reset first */
body .related,body .up-sells{margin-top:clamp(34px,4.5vw,64px);
  padding-top:clamp(24px,3vw,40px);border-top:1px solid var(--hair)}
body .related > h2,body .up-sells > h2{font-family:var(--display);color:var(--head);
  font-size:clamp(22px,2.4vw,30px);margin-bottom:22px}
body ul.products{margin:0!important;padding:0!important;list-style:none;
  display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(14px,1.8vw,26px)}
body ul.products::before,body ul.products::after{display:none!important}
body ul.products li.product{
  width:auto!important;float:none!important;clear:none!important;
  margin:0!important;padding:0!important;min-width:0}
body ul.products li.product a.woocommerce-LoopProduct-link{display:block}
body ul.products li.product img{margin:0 0 12px!important;background:var(--surface)}
body ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--display)!important;font-size:17px!important;font-weight:700!important;
  color:var(--head)!important;margin:0 0 5px!important;padding:0!important;line-height:1.25}
body ul.products li.product .price{font-family:var(--ui)!important;font-size:13.5px!important;
  font-weight:600;color:var(--a)!important;margin-bottom:12px;display:block;line-height:1.4}
body ul.products li.product .button{padding:10px 16px;font-size:13px;margin-top:0}
body ul.products li.product .onsale{background:var(--a);color:var(--a-fg);border-radius:2px;
  font-family:var(--ui);font-size:11px;padding:4px 9px;min-height:0;line-height:1.4;
  top:10px;right:10px;left:auto;margin:0}

@media (max-width:1080px){
  body ul.products{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:900px){
  body.single-product div.product{grid-template-columns:1fr}
}
@media (max-width:680px){
  body ul.products{grid-template-columns:repeat(2,minmax(0,1fr))}
  body form.cart button.single_add_to_cart_button{flex:1 1 auto}
}
@media (max-width:420px){
  body ul.products{grid-template-columns:1fr}
}

/* ═══════════════════════════════════════════════════════
   Notices and button states
   WooCommerce pins a tick icon absolutely inside notices and keeps its own
   purple on button hover. Both are overridden here.
   ═══════════════════════════════════════════════════════ */
body .woocommerce-message::before,
body .woocommerce-info::before,
body .woocommerce-error::before{display:none!important}

body .woocommerce-message,
body .woocommerce-info,
body .woocommerce-error{
  padding:15px 18px!important;text-indent:0!important;min-height:0!important;
  line-height:1.5;display:flex;align-items:center;gap:14px;flex-wrap:wrap}

/* Any Woo button, wherever it sits — including inside notices, which render
   outside the themed wrapper. */
body a.button,body button.button,body input.button,
body .woocommerce-message .button,body .woocommerce-info .button,
body a.added_to_cart,body .button.alt{
  background:var(--a)!important;color:var(--a-fg)!important;
  border:1px solid var(--a)!important;border-radius:2px!important;
  font-family:var(--ui)!important;font-weight:700!important;font-size:13.5px!important;
  padding:11px 18px!important;text-decoration:none!important;box-shadow:none!important}

body a.button:hover,body button.button:hover,body input.button:hover,
body .woocommerce-message .button:hover,body .woocommerce-info .button:hover,
body a.added_to_cart:hover,body .button.alt:hover,
body .jmw-woo .button:hover,body .jmw-woo #place_order:hover{
  background:var(--a)!important;color:var(--a-fg)!important;
  border-color:var(--a)!important;filter:brightness(1.1)}

/* The add-to-cart button is bigger than a notice button. */
body form.cart button.single_add_to_cart_button{font-size:15px!important;padding:0 30px!important}
body button.single_add_to_cart_button.disabled,
body button.single_add_to_cart_button:disabled{
  background:var(--surface)!important;color:var(--dim)!important;
  border-color:var(--line)!important;filter:none!important}

/* ═══════════════════════════════════════════════════════
   Block checkout field spacing
   These use floating labels that sit inside the input. Overriding the padding
   earlier left no room for the label above the value, so the two collided.
   ═══════════════════════════════════════════════════════ */
body .wc-block-components-text-input,
body .wc-block-components-country-input,
body .wc-block-components-state-input,
body .wc-blocks-components-select{
  margin-bottom:16px!important;padding-top:0!important}

/* Room at the top of the field for the floated label. */
body .wc-block-components-text-input input[type="text"],
body .wc-block-components-text-input input[type="email"],
body .wc-block-components-text-input input[type="tel"],
body .wc-block-components-text-input input[type="number"],
body .wc-block-components-combobox-control input,
body .wc-blocks-components-select .wc-blocks-components-select__select{
  padding:26px 14px 10px!important;min-height:58px!important;line-height:1.3!important}

/* Resting label, vertically centred. */
body .wc-block-components-text-input label,
body .wc-blocks-components-select__label{
  left:14px!important;top:18px!important;line-height:1.2!important;
  font-size:15px!important;color:var(--dim)!important;
  transition:transform .15s ease,font-size .15s ease}

/* Floated label, once the field has focus or a value. */
body .wc-block-components-text-input.is-active label,
body .wc-block-components-text-input input:focus + label,
body .wc-blocks-components-select__label{
  transform:translateY(-11px) scale(.78)!important;
  transform-origin:left top;font-size:15px!important}

/* Selects always show their label floated, so they need the same offset. */
body .wc-blocks-components-select .wc-blocks-components-select__container{
  min-height:58px!important;padding:0!important}
body .wc-blocks-components-select__label{top:16px!important}

/* Two-up rows need a gap between the columns. */
body .wc-block-components-address-form{display:grid;gap:0 16px}
body .wc-block-components-address-form .wc-block-components-text-input{margin-bottom:16px!important}

/* Section spacing */
body .wc-block-components-checkout-step{margin-bottom:34px!important}
body .wc-block-components-checkout-step__heading{margin-bottom:14px!important}
