/**
 * SwagMode Luxe - WooCommerce classic markup styling (cart, checkout, account).
 * Uses design tokens; restyles default WC output rather than overriding templates.
 */

.swm-wc{max-width:1440px;margin-inline:auto;
  padding:var(--swm-page-top) var(--swm-gutter) clamp(3rem,6vw,5rem)}
/* The fixed header is cleared by `body:not(.swm-has-hero) main{padding-top}` in
   base.css, and that longhand beats the shorthand above - so cart and checkout
   were getting the header's height and none of their own opening gap, leaving
   the title against the header edge. Ask for both, at a specificity that wins,
   and use the same clamp as .swm-plp and .swm-pdp-wrap. */
body:not(.swm-has-hero) main.swm-wc{
  padding-top:calc(var(--swm-hdr-offset,116px) + var(--swm-page-top))}
/* Matches the mobile top-gap trim in base.css; it lives here because this sheet
   loads second and would otherwise win at equal specificity. */
@media(max-width:767px){.swm-wc{padding-block-start:1.5rem}}
/* WooCommerce (block-theme) constrains these to the 760px contentSize, which made
   the cart/checkout content narrow with abrupt side padding. Let them fill .swm-wc. */
.woocommerce-account .wp-block-post-title,.woocommerce-account main .woocommerce,
.woocommerce-cart .wp-block-post-title,.woocommerce-cart main .woocommerce,
.woocommerce-checkout .wp-block-post-title,.woocommerce-checkout main .woocommerce{max-width:none!important}
/* Cart/track wrap their own centred .swm-container, so neutralise the inner one to
   avoid a double gutter (which pushed the summary column in with a big right margin). */
/* These containers sit inside main.swm-wc, which already opens the page. Left
   with their own top padding they stack two gaps and sit lower than every other
   template. */
.swm-wc .swm-container.swm-cart2,.swm-wc .swm-container.swm-track{
  max-width:none;margin-inline:0;padding-inline:0;padding-block-start:0}
.swm-wc .woocommerce{color:var(--swm-ink)}

/* Headings */
.swm-wc h1,.swm-wc h2,.swm-wc h3{font-family:var(--swm-serif);font-weight:400}
.swm-wc .swm-wc__title,.swm-wc h1.entry-title{font-size:clamp(1.75rem,4vw,2.75rem);margin:0 0 1.5rem}

/* Notices - themed flush bar, message left / action right, aligned. */
.woocommerce-message,.woocommerce-info,.woocommerce-error,.woocommerce-noreviews,
.woocommerce-store-notice,.wc-block-components-notice-banner{
  display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  border:0!important;border-left:3px solid var(--swm-flame)!important;border-radius:0!important;
  background:var(--swm-bone)!important;padding:1rem 1.25rem;list-style:none;margin:0 0 1.25rem;
  font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--swm-ink)!important;box-shadow:none!important}
.woocommerce-message,.wc-block-components-notice-banner.is-success{border-left-color:var(--swm-green)!important}
.woocommerce-error,.wc-block-components-notice-banner.is-error{border-left-color:var(--swm-oxblood)!important}
.woocommerce-message::before,.woocommerce-info::before,.woocommerce-error::before,
.wc-block-components-notice-banner svg{display:none!important}
/* The notice action is a text link, not a button - a boxed control inside a
   flush notice bar reads as a stray outline. */
.woocommerce-message a.button,.woocommerce-info a.button,.woocommerce-error a.button,
.woocommerce-message a.wc-forward,.woocommerce-info a.wc-forward,
.wc-block-components-notice-banner a{float:none!important;margin:0 0 0 auto!important;
  padding:0!important;min-height:0!important;background:transparent!important;border:0!important;
  border-bottom:1px solid transparent!important;border-radius:0!important;box-shadow:none!important;
  color:var(--swm-ink)!important;font-family:var(--swm-mono)!important;font-weight:400!important;
  font-size:.68rem!important;letter-spacing:.12em;text-transform:uppercase!important;
  text-decoration:none!important;transition:color var(--swm-dur) var(--swm-ease),
  border-color var(--swm-dur) var(--swm-ease)}
.woocommerce-message a.button::after,.woocommerce-info a.button::after,
.woocommerce-error a.button::after{display:none!important}
.woocommerce-message a.button:hover,.woocommerce-info a.button:hover,
.woocommerce-error a.button:hover,.woocommerce-message a.wc-forward:hover,
.wc-block-components-notice-banner a:hover{color:var(--swm-flame)!important;
  border-bottom-color:var(--swm-flame)!important;background:transparent!important}
/* Notices carry sentences, not labels. In the bar's uppercase mono an address
   like SWAGMODEOFFICIAL@GMAIL.COM is one unbreakable token wider than a phone,
   so it dropped to a line of its own and cut the sentence into three pieces.
   Sentence case, ordinary tracking, and a long address is allowed to break. */
.wc-block-components-notice-banner__content,
.woocommerce-error li,.woocommerce-message,.woocommerce-info{
  text-transform:none;letter-spacing:.01em;font-size:.82rem;line-height:1.65;
  overflow-wrap:anywhere}
.wc-block-components-notice-banner__content{margin:0}
/* The action inside a message stays a link and reads like one. */
.wc-block-components-notice-banner__content a{text-decoration:underline!important;
  text-decoration-thickness:1px;text-underline-offset:.22em;
  font-size:inherit!important;letter-spacing:inherit!important;text-transform:none!important}

/* Buttons */
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce #respond input#submit,.woocommerce .button,.wc-block-components-button{
  background:var(--swm-ink)!important;color:var(--swm-paper)!important;border:1px solid var(--swm-ink)!important;
  border-radius:4px!important;font-family:var(--swm-sans)!important;font-weight:600!important;font-size:.9rem!important;
  padding:.85rem 1.5rem!important;line-height:1!important;text-transform:none!important;transition:transform .2s var(--swm-ease)}
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,
.woocommerce .button:hover{transform:translateY(-1px);opacity:1}
.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce #place_order{background:var(--swm-ink)!important}
.woocommerce .button.wc-backward,.woocommerce a.button.wc-forward{background:transparent!important;color:var(--swm-ink)!important;border-color:var(--swm-ink)!important}

/* Form fields */
.woocommerce form .form-row,.swm-wc .form-row{margin:0 0 1rem;padding:0}
.woocommerce form .form-row label,.swm-wc label{font-size:.8rem;letter-spacing:.02em;color:var(--swm-charcoal);
  margin-bottom:.35rem;display:block}
.woocommerce .input-text,.woocommerce input[type="text"],.woocommerce input[type="email"],
.woocommerce input[type="tel"],.woocommerce input[type="password"],.woocommerce input[type="number"],
.woocommerce select,.woocommerce textarea,.select2-container .select2-selection{
  border:1px solid var(--swm-mist)!important;border-radius:4px!important;padding:.75rem .85rem!important;
  font-family:var(--swm-sans)!important;background:var(--swm-paper)!important;color:var(--swm-ink)!important;
  min-height:auto;font-size:.95rem}
.woocommerce .input-text:focus,.woocommerce select:focus,.woocommerce textarea:focus{
  outline:2px solid var(--swm-bronze);outline-offset:1px;border-color:var(--swm-bronze)!important}

/* The pincode checker is ours, not WooCommerce's - keep it on the underline
   treatment the contact and track-order forms use. The generic .woocommerce
   input rules above are more specific than the base stylesheet, so the override
   has to live here. */
.woocommerce .swm-delivery__row input[type="text"],
.woocommerce .swm-delivery__row input{border:0!important;border-bottom:1px solid var(--swm-ink)!important;
  border-radius:0!important;background:transparent!important;padding:.55rem 0!important;
  font-family:var(--swm-sans)!important;font-size:.95rem;color:var(--swm-ink)!important;
  font-variant-numeric:tabular-nums}
.woocommerce .swm-delivery__row input:focus{outline:none!important;
  border-bottom-color:var(--swm-flame)!important;box-shadow:none}
/* The Check action is a standard button - solid ink, flame on hover - kept clear
   of WooCommerce's own .button rules. */
.woocommerce .swm-delivery__row .swm-btn{flex:0 0 auto;padding:.85rem 1.5rem}
.select2-container--default .select2-selection--single{height:auto;padding:.35rem .2rem}
.select2-container--default .select2-selection--single .select2-selection__arrow{top:.6rem}

/* ---------- Cart ---------- */
.woocommerce-cart-form table.cart{width:100%;border:0;border-collapse:collapse;margin-bottom:0}
.woocommerce table.shop_table{border:1px solid var(--swm-mist);border-radius:6px;border-collapse:separate;border-spacing:0}
.woocommerce table.shop_table th{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--swm-stone);
  font-weight:600;padding:1rem;border-bottom:1px solid var(--swm-mist);text-align:left}
.woocommerce table.shop_table td{padding:1rem;border-top:1px solid var(--swm-mist);vertical-align:middle}
.woocommerce-cart table.cart img{width:72px;border-radius:4px;border:1px solid var(--swm-mist)}
.woocommerce-cart-form__cart-item .product-name a{font-family:var(--swm-serif);color:var(--swm-ink);text-decoration:none;font-size:1rem}
.woocommerce a.remove{color:var(--swm-oxblood)!important;font-weight:400;border:1px solid var(--swm-mist);
  width:24px;height:24px;line-height:22px;border-radius:50%}
.woocommerce a.remove:hover{background:var(--swm-oxblood)!important;color:#fff!important}
.woocommerce .quantity .qty{width:64px;text-align:center;border:1px solid var(--swm-mist);border-radius:4px;padding:.55rem .3rem}
.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{display:grid;gap:2rem;margin-top:2rem}
@media(min-width:900px){.woocommerce .cart-collaterals{grid-template-columns:1fr 380px;align-items:start}
  .woocommerce-cart .woocommerce{display:grid;grid-template-columns:1fr;gap:0}}
.woocommerce .cart-collaterals .cart_totals{float:none;width:100%}
.cart_totals h2{font-size:1.25rem;margin-bottom:1rem}
.cart_totals table{border:1px solid var(--swm-mist);border-radius:6px}
.woocommerce .cart-collaterals .cross-sells{margin-top:1rem}
.actions .coupon{display:flex;gap:.5rem;margin-bottom:1rem}
.actions .coupon .input-text{max-width:220px}
.wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;width:100%}
.cart-empty,.wc-empty-cart-message{font-family:var(--swm-serif);font-size:1.25rem;text-align:center;padding:2rem 0}
.return-to-shop{text-align:center}

/* ---------- Checkout ---------- */
.woocommerce-checkout .col2-set,.woocommerce-checkout #customer_details{display:grid;gap:2.5rem}
@media(min-width:960px){
  form.checkout.woocommerce-checkout{display:grid;grid-template-columns:1fr 420px;gap:3rem;align-items:start}
  form.checkout #customer_details{grid-column:1}
  form.checkout #order_review,form.checkout #order_review_heading{grid-column:2}
  form.checkout #order_review{position:sticky;top:calc(var(--swm-header-h) + 1rem)}
  .woocommerce-checkout #customer_details .col-1,.woocommerce-checkout #customer_details .col-2{width:100%;float:none}
}
#order_review_heading{font-family:var(--swm-serif);font-size:1.35rem;margin:0 0 1rem}
.woocommerce-checkout #payment{background:var(--swm-bone);border:1px solid var(--swm-mist);border-radius:6px}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid var(--swm-mist);padding:1rem}
.woocommerce-checkout #payment div.payment_box{background:var(--swm-paper);border:1px solid var(--swm-mist)}
.woocommerce-checkout #payment div.payment_box::before{border-bottom-color:var(--swm-paper)}
.woocommerce-checkout #payment .place-order{padding:1rem}
.woocommerce-checkout #place_order{width:100%}
.woocommerce-billing-fields h3,.woocommerce-shipping-fields h3,.woocommerce-additional-fields h3{
  font-size:1.35rem;margin:0 0 1.25rem}
.woocommerce table.shop_table.woocommerce-checkout-review-order-table{border-radius:6px}
.woocommerce-checkout-review-order-table .product-name{font-family:var(--swm-serif)}
.woocommerce-form-coupon-toggle .woocommerce-info{border-left-color:var(--swm-bronze)}

/* ---------- Account (editorial: themed header + numbered sidebar + content) ---------- */
.woocommerce-account .woocommerce{display:block}
.swm-account__head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  border-bottom:1px solid var(--swm-mist);padding-bottom:clamp(1rem,2vw,1.5rem);margin-bottom:clamp(1.75rem,3vw,2.75rem)}
.swm-account__k{display:block;font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--swm-flame);margin-bottom:.6rem}
.swm-account__title{font-family:var(--swm-display);text-transform:uppercase;line-height:.9;margin:0;font-size:clamp(2rem,5vw,3.5rem)}
.swm-account__hi{margin:0;font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--swm-stone)}
.swm-account__grid{display:grid;grid-template-columns:1fr;gap:clamp(1.75rem,4vw,3rem)}
/* The nav column takes the width its longest label needs rather than a fixed
   240px, so removing a tab (or renaming one) closes the gap instead of leaving
   it. max-content keeps the links on one line each. */
@media(min-width:820px){.swm-account__grid{grid-template-columns:max-content 1fr;gap:clamp(2.5rem,5vw,4.5rem);align-items:start}}
/* Numbered sidebar */
.swm-account__nav ol{list-style:none;margin:0;padding:0}
.swm-account__nav li{border-top:1px solid var(--swm-mist)}
.swm-account__nav li:last-child{border-bottom:1px solid var(--swm-mist)}
.swm-account__nav a{display:flex;align-items:baseline;gap:.85rem;padding:.95rem .1rem;text-decoration:none;
  font-family:var(--swm-display);text-transform:uppercase;font-size:1.1rem;line-height:1;color:var(--swm-ink);
  transition:color .25s var(--swm-ease)}
.swm-account__nav a em{font-family:var(--swm-mono);font-style:normal;font-size:.62rem;font-weight:300;
  letter-spacing:.12em;color:var(--swm-stone);flex:0 0 auto}
.swm-account__nav a:hover,.swm-account__nav li.is-active a{color:var(--swm-flame)}
@media(min-width:820px){.swm-account__nav{position:sticky;top:calc(var(--swm-header-h) + 1.5rem)}}
/* Nav - drop WooCommerce's default float + 30% width so the grid column sizes it. */
.woocommerce-account .woocommerce-MyAccount-navigation{width:auto!important;float:none!important}
/* Content - drop WooCommerce's default float + 68.5% width so it fills the grid. */
.woocommerce-account .woocommerce-MyAccount-content{min-width:0;width:auto!important;float:none!important}
.woocommerce-MyAccount-content{min-width:0}
.woocommerce-MyAccount-content h2,.woocommerce-MyAccount-content h3{font-family:var(--swm-display);
  text-transform:uppercase;font-size:clamp(1.25rem,2.5vw,1.75rem);margin:0 0 1rem}
.woocommerce-MyAccount-content p{line-height:1.7}
.woocommerce-MyAccount-content a:not(.button):not(.swm-btn){color:var(--swm-flame)}
.woocommerce-MyAccount-content mark{background:none;color:var(--swm-ink);font-weight:600}

/* Breathing room after the fixed header on the account screens. */
.woocommerce-account main.swm-wc--account{padding-top:calc(var(--swm-hdr-offset,116px) + var(--swm-page-top))}
/* Sign in / Create account - single centred card, screen-aware header above it. */
.swm-account__loginhead{margin-bottom:clamp(1.75rem,3vw,2.5rem);border-bottom:1px solid var(--swm-mist);
  padding-bottom:clamp(1rem,2vw,1.5rem)}
.swm-account__loginlead{max-width:54ch;color:var(--swm-charcoal);margin:1rem 0 0;line-height:1.6}
.swm-auth{display:flex;justify-content:center}
.swm-auth__card{width:100%;max-width:460px;border:1px solid var(--swm-mist);padding:clamp(1.75rem,3vw,2.5rem)}
.swm-auth__card h2{font-family:var(--swm-display);text-transform:uppercase;font-size:clamp(1.4rem,2.5vw,1.75rem);margin:0 0 1.5rem}
.swm-auth__card .form-row{margin:0 0 1.15rem;display:flex;flex-direction:column;gap:.4rem}
.swm-auth__card label{font-family:var(--swm-mono);font-weight:300;font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--swm-stone);margin:0}
.swm-auth__note{color:var(--swm-stone);font-size:.85rem;line-height:1.6;margin:0 0 1.15rem}
.swm-auth__names{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
@media(max-width:420px){.swm-auth__names{grid-template-columns:1fr}}
.swm-auth__actions{flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:.35rem}
.swm-auth__card .woocommerce-form-login__rememberme{font-family:var(--swm-mono);font-weight:300;font-size:.68rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--swm-stone);display:inline-flex;align-items:center;gap:.5rem;margin:0;order:2}
.swm-auth .lost_password{margin:1rem 0 0;font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}
.swm-auth .lost_password a{color:var(--swm-stone)}
.swm-auth .lost_password a:hover{color:var(--swm-flame)}
/* These read as plain text otherwise: uppercase mono in a muted grey, with
   nothing to say they can be clicked. An underline is the one signal every
   reader already knows. */
.swm-auth .lost_password a,
.swm-auth__switch a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.28em}
.swm-auth .lost_password a:hover,
.swm-auth__switch a:hover{text-decoration-thickness:2px}
.swm-auth__switch{margin:1.5rem 0 0;padding-top:1.25rem;border-top:1px solid var(--swm-mist);
  font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--swm-stone)}
.swm-auth__switch a{color:var(--swm-flame)}
.swm-auth__switch a:hover{color:var(--swm-ink)}
/* On a phone the actions row wraps, and because "remember me" is ordered after
   the button it landed underneath it - button, then checkbox, then the password
   link, three different left edges. Stacked deliberately instead: checkbox,
   full-width button, link, all flush with the fields above them. */
@media(max-width:560px){
  .swm-auth__actions{flex-direction:column!important;align-items:stretch;gap:1rem}
  .swm-auth__card .woocommerce-form-login__rememberme{order:0;align-self:flex-start}
  .woocommerce .swm-auth__card button.button.swm-auth__submit,
  .swm-auth__card button.button.swm-auth__submit{width:100%}
  .swm-auth .lost_password,
  .swm-auth__switch{text-align:left}
}
/* Auth + address buttons: solid ink -> flame on hover, matching the store CTAs.
   High specificity so they beat WooCommerce's default button styling. */
.woocommerce button.button.swm-auth__submit,
.woocommerce .woocommerce-Address a.button,
.woocommerce-address-fields ~ p button.button,
.woocommerce form.edit-account button.button,
.woocommerce form.woocommerce-EditAccountForm button.button,
.woocommerce .woocommerce-MyAccount-content form button.button{
  display:inline-flex!important;align-items:center;justify-content:center;
  font-family:var(--swm-mono)!important;font-weight:400!important;font-size:.6875rem!important;letter-spacing:.14em!important;text-transform:uppercase!important;
  padding:1rem 2rem!important;border-radius:0!important;border:1px solid var(--swm-ink)!important;
  background:var(--swm-ink)!important;color:var(--swm-paper)!important;transform:none!important;box-shadow:none!important;
  transition:background .3s var(--swm-ease),color .3s var(--swm-ease),border-color .3s var(--swm-ease)}
.woocommerce button.button.swm-auth__submit:hover,
.woocommerce .woocommerce-Address a.button:hover,
.woocommerce form.edit-account button.button:hover,
.woocommerce form.woocommerce-EditAccountForm button.button:hover,
.woocommerce .woocommerce-MyAccount-content form button.button:hover{
  background:var(--swm-flame)!important;color:var(--swm-ink)!important;border-color:var(--swm-flame)!important}

/* Orders / addresses / details */
.woocommerce-orders-table,.woocommerce-table--order-details{border:1px solid var(--swm-mist);border-radius:0;
  border-collapse:collapse;width:100%}
.woocommerce-orders-table th,.woocommerce-table--order-details th{font-family:var(--swm-mono);font-weight:300;
  font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--swm-stone);padding:.85rem 1rem;
  border-bottom:1px solid var(--swm-mist);text-align:left}
.woocommerce-orders-table td,.woocommerce-table--order-details td{padding:.85rem 1rem;border-top:1px solid var(--swm-mist);font-size:.9rem}
.woocommerce-MyAccount-content .woocommerce-Addresses{display:grid;gap:1.5rem}
@media(min-width:640px){.woocommerce-MyAccount-content .woocommerce-Addresses{grid-template-columns:1fr 1fr}}
/* WooCommerce clearfix ::before/::after become grid items and offset the address
   cards - remove them. */
.woocommerce-MyAccount-content .woocommerce-Addresses::before,
.woocommerce-MyAccount-content .woocommerce-Addresses::after{content:none;display:none}
.woocommerce .woocommerce-Address{border:1px solid var(--swm-mist);border-radius:0;padding:1.25rem}
/* Drop WooCommerce's default 48% width + float on the address columns so the grid
   controls their size. */
.woocommerce-account .woocommerce-Addresses .u-column1,
.woocommerce-account .woocommerce-Addresses .u-column2,
.woocommerce-account .woocommerce-Addresses .col-1,
.woocommerce-account .woocommerce-Addresses .col-2,
.woocommerce-account .woocommerce-Addresses .woocommerce-Address{width:auto!important;float:none!important;margin:0}
.woocommerce-Address-title h3{margin:0 0 .75rem}
address{font-style:normal;line-height:1.7}

/* Price colours */
.woocommerce .price,.woocommerce span.amount{font-variant-numeric:tabular-nums}
.woocommerce del{color:var(--swm-stone)}
.woocommerce ins{text-decoration:none;font-weight:600}

/* ===== Shopping cart page (theme layout, WC engine) ===== */
.swm-cart2{padding-block:var(--swm-page-top) clamp(1.5rem,4vw,3rem)}
.swm-cart2__head{display:flex;align-items:center;gap:1rem;margin-bottom:clamp(1.5rem,3vw,2.25rem)}
.swm-cart2__head h1{font-family:var(--swm-display);text-transform:uppercase;line-height:1;
  font-size:clamp(1.75rem,4vw,3rem);margin:0}
.swm-cart2__count{font-family:var(--swm-mono);font-weight:300;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--swm-stone);margin-left:auto}
.swm-cart2__grid{display:grid;grid-template-columns:1fr;gap:clamp(1.5rem,4vw,3rem);align-items:start}
@media(min-width:920px){.swm-cart2__grid{grid-template-columns:1fr 360px}}
.swm-cart2__items{display:flex;flex-direction:column}
.swm-cart2__item{display:grid;grid-template-columns:auto 96px 1fr;gap:1rem 1.25rem;align-items:start;
  padding:1.5rem 0;border-top:1px solid var(--swm-mist);transition:opacity .2s}
.swm-cart2__item:first-child{border-top:0}
.swm-cart2__item.is-unselected{opacity:.4}
/* Custom square checkbox (header select-all + per row) */
.swm-check{position:relative;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  width:22px;height:22px;flex:0 0 auto;margin-top:.3rem}
.swm-check input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.swm-check span{width:20px;height:20px;border:1.5px solid var(--swm-ink);display:inline-flex;align-items:center;
  justify-content:center;background:var(--swm-paper)}
.swm-check input:checked + span{background:var(--swm-ink)}
.swm-check input:checked + span::after{content:"";width:10px;height:6px;border-left:2px solid var(--swm-paper);
  border-bottom:2px solid var(--swm-paper);transform:rotate(-45deg) translateY(-1px)}
.swm-check input:focus-visible + span{outline:2px solid var(--swm-flame);outline-offset:2px}
.swm-cart2__all{margin-top:0}
.swm-cart2__thumb img{width:96px;height:auto;aspect-ratio:3/4;object-fit:cover;background:var(--swm-mist);
  display:block;border:1px solid var(--swm-mist)}
.swm-cart2__info{min-width:0}
.swm-cart2__top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.swm-cart2__name{font-family:var(--swm-display);text-transform:uppercase;line-height:1.02;
  font-size:clamp(1.05rem,1.8vw,1.35rem);margin:0}
.swm-cart2__name a{color:var(--swm-ink);text-decoration:none}
.swm-cart2__name a:hover{color:var(--swm-flame)}
.swm-cart2 a.swm-cart2__remove{color:var(--swm-stone)!important;font-size:1.35rem;line-height:1;text-decoration:none;
  width:auto;height:auto;border:0;background:none!important;border-radius:0}
.swm-cart2 a.swm-cart2__remove:hover{color:var(--swm-oxblood)!important;background:none!important}
.swm-cart2__vars{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}
.swm-cart2__var{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--swm-mist);
  padding:.4rem .8rem;font-family:var(--swm-mono);font-weight:300;font-size:.7rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--swm-ink)}
.swm-cart2__controls{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem 1.25rem;margin-top:.5rem}
.swm-cart2__qty .quantity{display:inline-flex;align-items:center;border:1px solid var(--swm-mist)}
.swm-cart2__qty input.qty{width:52px;text-align:center;border:0!important;padding:.5rem .25rem;background:transparent;
  font-variant-numeric:tabular-nums}
.swm-cart2__fav{background:none;border:0;padding:0 0 2px;cursor:pointer;font-family:var(--swm-mono);font-weight:300;
  font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--swm-stone);position:relative}
.swm-cart2__fav::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--swm-flame);
  transition:right .4s var(--swm-ease)}
.swm-cart2__fav:hover{color:var(--swm-ink)}
.swm-cart2__fav:hover::after{right:0}
.swm-cart2__price{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}
.swm-cart2__actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-top:1.5rem;padding-top:1.5rem;
  border-top:1px solid var(--swm-mist)}
.swm-cart2__coupon{display:flex;gap:.5rem;flex:1;min-width:220px}
.swm-cart2__coupon input{flex:1;padding:.7rem .8rem;border:1px solid var(--swm-mist);background:var(--swm-paper);
  font-family:var(--swm-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}
/* Order summary */
.swm-cart2__summary{border:1px solid var(--swm-mist);padding:clamp(1.25rem,2vw,1.75rem)}
@media(min-width:920px){.swm-cart2__summary{position:sticky;top:calc(var(--swm-header-h) + 1rem)}}
.swm-cart2__summaryhead{font-family:var(--swm-display);text-transform:uppercase;font-size:1.4rem;margin:0 0 1.25rem}
.swm-cart2__summary .cart_totals{width:100%!important;float:none!important}
.swm-cart2__summary .cart_totals h2{display:none}
.swm-cart2__summary table{width:100%;border:0!important;border-collapse:collapse}
.swm-cart2__summary table th{padding:.7rem 0;border:0;border-top:1px solid var(--swm-mist);text-align:left;
  font-family:var(--swm-mono);font-weight:300;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--swm-stone);background:transparent}
.swm-cart2__summary table td{padding:.7rem 0;border:0;border-top:1px solid var(--swm-mist);text-align:right;
  color:var(--swm-ink);font-size:.9rem;font-variant-numeric:tabular-nums;background:transparent}
.swm-cart2__summary table tr:first-child th,.swm-cart2__summary table tr:first-child td{border-top:0}
.swm-cart2__summary .order-total th,.swm-cart2__summary .order-total td{font-size:1rem;font-weight:700;color:var(--swm-ink)}
.swm-cart2__summary .wc-proceed-to-checkout{margin-top:1.25rem;padding:0}
.swm-cart2__summary .checkout-button{display:flex;align-items:center;justify-content:center;width:100%}
@media(max-width:520px){
  .swm-cart2__item{grid-template-columns:auto 72px 1fr}
  .swm-cart2__price{margin-left:0}
}
/* "You may also like" cross-sells: compact grid, small images (like the cart thumb). */
.swm-cart2 .cross-sells,.woocommerce-cart .cross-sells{margin-top:clamp(2rem,4vw,3rem);clear:both}
.swm-cart2 .cross-sells>h2,.woocommerce-cart .cross-sells>h2{font-family:var(--swm-mono)!important;font-weight:300;
  font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--swm-flame);margin:0 0 1.25rem}
.swm-cart2 .cross-sells ul.products,.woocommerce-cart .cross-sells ul.products{display:grid!important;
  grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:1.5rem 1.25rem;margin:0;padding:0}
/* WooCommerce's clearfix ::before/::after become grid items and steal the first
   cell (pushing the product to column 2). Remove them. */
.swm-cart2 .cross-sells ul.products::before,.swm-cart2 .cross-sells ul.products::after,
.woocommerce-cart .cross-sells ul.products::before,.woocommerce-cart .cross-sells ul.products::after{content:none;display:none}
.swm-cart2 .cross-sells ul.products li.product,.woocommerce-cart .cross-sells ul.products li.product{
  width:auto!important;margin:0!important;padding:0!important;float:none!important}
.swm-cart2 .cross-sells ul.products li.product img,.woocommerce-cart .cross-sells ul.products li.product img{
  width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;margin:0 0 .6rem;background:var(--swm-mist)}
.swm-cart2 .cross-sells ul.products li.product .button,.woocommerce-cart .cross-sells ul.products li.product .add_to_cart_button{display:none!important}
.swm-cart2 .cross-sells ul.products li.product .woocommerce-loop-product__title,
.woocommerce-cart .cross-sells ul.products li.product h2{font-family:var(--swm-serif);font-size:.95rem;padding:0;margin:0}

/* Checkout review-order: product thumbnail + title (thumbnail injected in PHP). */
.woocommerce-checkout-review-order-table .product-name{display:flex;align-items:center;gap:.85rem}
.swm-corev__media{flex:0 0 auto;line-height:0}
.swm-corev__media img{width:52px;height:auto;aspect-ratio:3/4;object-fit:cover;background:var(--swm-mist);border:1px solid var(--swm-mist)}

/* ===== Custom checkout (theme layout, WC engine) ===== */
.swm-wc--checkout .swm-page__title,.woocommerce-checkout h1.entry-title{font-family:var(--swm-display);text-transform:uppercase}
.swm-checkout-head{margin:0 0 2rem}
.swm-checkout-head .swm-label{display:block;color:var(--swm-stone);margin-bottom:.5rem}
.swm-checkout-head h2,.swm-checkout-head .swm-h{font-family:var(--swm-display);text-transform:uppercase;
  font-size:clamp(1.4rem,3vw,2rem);line-height:1;margin:0}
.woocommerce-checkout h3{font-family:var(--swm-display);text-transform:uppercase;font-size:1.2rem;letter-spacing:.01em}
.woocommerce form .form-row label,.woocommerce-checkout label{font-family:var(--swm-mono);font-weight:300;
  font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--swm-stone)}
.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea,
.woocommerce-checkout input.input-text,.woocommerce-checkout textarea,.select2-container .select2-selection{
  border:1px solid var(--swm-mist)!important;border-radius:0!important;background:var(--swm-paper);
  padding:.85rem .9rem;font-family:var(--swm-sans);font-size:.9rem}
.woocommerce form .form-row input.input-text:focus,.woocommerce-checkout input.input-text:focus{
  outline:none;border-color:var(--swm-ink)!important}
.woocommerce-checkout #order_review{border:1px solid var(--swm-mist);padding:1.5rem}
.woocommerce-checkout #order_review_heading{font-family:var(--swm-display);text-transform:uppercase;
  font-size:1.4rem;margin-bottom:1rem}
.woocommerce-checkout table.shop_table{border:0!important;border-radius:0}
.woocommerce-checkout table.shop_table th,.woocommerce-checkout table.shop_table td{
  border:0;border-top:1px solid var(--swm-mist);padding:.7rem 0;font-size:.9rem}
.woocommerce-checkout table.shop_table .order-total th,.woocommerce-checkout table.shop_table .order-total td{
  font-weight:700;font-size:1rem}
.woocommerce-checkout #payment{background:transparent!important;border:0!important;border-top:1px solid var(--swm-mist);
  border-radius:0;margin-top:1rem;padding-top:1rem}
.woocommerce-checkout #payment ul.payment_methods{border:0!important;padding:0!important;margin:0 0 1rem}
.woocommerce-checkout #payment div.payment_box{background:var(--swm-bone)!important;border:1px solid var(--swm-mist)!important;
  font-size:.85rem}
.woocommerce-checkout #payment .place-order{padding:0!important}
.woocommerce-checkout #place_order{display:flex;align-items:center;justify-content:center;width:100%;
  font-family:var(--swm-mono);font-weight:400;font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;
  padding:1.1rem 1.5rem;border-radius:0;border:1px solid var(--swm-ink);background:var(--swm-ink);color:var(--swm-paper);
  transition:background .3s var(--swm-ease),color .3s var(--swm-ease)}
.woocommerce-checkout #place_order:hover{background:var(--swm-flame);border-color:var(--swm-flame);color:var(--swm-ink)}
/* "Have a coupon?" / login toggles: themed flat bar (bone, flame left rule, mono)
   - overrides WooCommerce's default pale-blue info box. */
.woocommerce-checkout .woocommerce-info,
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info,
.woocommerce-checkout .woocommerce-form-login-toggle .woocommerce-info,
.woocommerce-checkout .wc-block-components-notice-banner,
.woocommerce-checkout .wc-block-components-notice-banner.is-info{
  background:var(--swm-bone)!important;border:0!important;border-left:3px solid var(--swm-flame)!important;
  border-radius:0!important;box-shadow:none!important;padding:1rem 1.25rem!important;margin:0 0 1.25rem!important;
  font-family:var(--swm-mono)!important;font-weight:300;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--swm-ink)}
.woocommerce-checkout .wc-block-components-notice-banner svg{display:none!important}
.woocommerce-checkout .woocommerce-info a,.woocommerce-checkout .wc-block-components-notice-banner a{color:var(--swm-flame);text-decoration:none}
.woocommerce-checkout .woocommerce-info a:hover,.woocommerce-checkout .wc-block-components-notice-banner a:hover{color:var(--swm-ink)}
/* The toggle link is floated right by WooCommerce, so on a narrow screen it
   drops to its own line hard against the right edge, away from the sentence it
   belongs to. Lay the bar out as a wrapping row instead: label then link,
   both starting at the left rule. */
.woocommerce-checkout .woocommerce-info,
.woocommerce-checkout .wc-block-components-notice-banner,
.woocommerce-checkout .wc-block-components-notice-banner__content{
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;
  gap:.4rem .9rem;text-align:left}
.woocommerce-checkout .wc-block-components-notice-banner__content{flex:1 1 auto;min-width:0}
.woocommerce-checkout .woocommerce-info a,
.woocommerce-checkout .wc-block-components-notice-banner a{float:none!important;margin:0!important;white-space:nowrap}

/* ===== Solid primary CTAs (full-width, flame on hover) =====
   Prefixed with .woocommerce so these beat `.woocommerce button.button.alt`
   (which sets background:ink!important) on hover - otherwise the hover kept a
   black background while flipping the text to ink, hiding the label. */
.woocommerce .swm-pdp__buy .single_add_to_cart_button,
.woocommerce .swm-cart2__summary .checkout-button,
.woocommerce-checkout #place_order{
  display:flex;align-items:center;justify-content:center;width:100%!important;
  font-family:var(--swm-mono)!important;font-weight:400;font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;
  padding:1.15rem 1.75rem!important;border-radius:0!important;border:1px solid var(--swm-ink)!important;
  background:var(--swm-ink)!important;color:var(--swm-paper)!important;cursor:pointer;
  transform:none!important;box-shadow:none!important;
  transition:background .3s var(--swm-ease),color .3s var(--swm-ease),border-color .3s var(--swm-ease)}
.woocommerce .swm-pdp__buy .single_add_to_cart_button:hover,
.woocommerce .swm-cart2__summary .checkout-button:hover,
.woocommerce-checkout #place_order:hover{
  background:var(--swm-flame)!important;border-color:var(--swm-flame)!important;color:var(--swm-ink)!important}
/* Beat .woocommerce a.button.wc-forward{background:transparent!important} on the
   checkout button (it out-specifies the shared CTA block above). */
.woocommerce .swm-cart2__summary a.checkout-button.button.wc-forward{
  background:var(--swm-ink)!important;color:var(--swm-paper)!important;border-color:var(--swm-ink)!important}
.woocommerce .swm-cart2__summary a.checkout-button.button.wc-forward:hover{
  background:var(--swm-flame)!important;color:var(--swm-ink)!important;border-color:var(--swm-flame)!important}

/* ===== Fully custom checkout layout (perfect left/right alignment) ===== */
.woocommerce-checkout .swm-wc--checkout{max-width:1440px}
.woocommerce-checkout form.checkout{display:grid;gap:clamp(1.5rem,3vw,3rem);grid-template-columns:1fr}
.woocommerce-checkout .col2-set,.woocommerce-checkout #customer_details{display:block;width:100%}
.woocommerce-checkout .col2-set .col-1,.woocommerce-checkout .col2-set .col-2{width:100%;float:none;margin:0 0 2rem;padding:0}
.woocommerce-checkout #order_review_heading{font-family:var(--swm-display);text-transform:uppercase;
  font-size:1.5rem;margin:0 0 1rem}
@media(min-width:960px){
  /* min-content top row keeps YOUR ORDER tight to its table (no tall gap under it). */
  .woocommerce-checkout form.checkout{grid-template-columns:1.15fr .85fr;grid-template-rows:min-content 1fr;
    align-items:start;column-gap:clamp(2rem,4vw,4rem)}
  .woocommerce-checkout #customer_details{grid-column:1;grid-row:1 / span 2}
  .woocommerce-checkout #order_review_heading{grid-column:2;grid-row:1;align-self:start}
  .woocommerce-checkout #order_review{grid-column:2;grid-row:2;align-self:start;position:sticky;top:calc(var(--swm-header-h) + 1rem)}
}
/* Fields: clean two-up grid for name pairs, full-width for the rest, no floats. */
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
.woocommerce-checkout .woocommerce-additional-fields__field-wrapper{display:grid;grid-template-columns:1fr 1fr;gap:0 1.1rem}
.woocommerce-checkout .form-row{grid-column:1 / -1;float:none!important;width:auto!important;margin:0 0 1.15rem;padding:0}
.woocommerce-checkout .form-row-first{grid-column:1}
.woocommerce-checkout .form-row-last{grid-column:2}
.woocommerce-checkout h3{font-family:var(--swm-display);text-transform:uppercase;font-size:1.25rem;margin:0 0 1.25rem}
.woocommerce-checkout .woocommerce-billing-fields>h3,.woocommerce-checkout #ship-to-different-address{
  padding-bottom:.75rem;border-bottom:1px solid var(--swm-mist)}
.woocommerce-checkout #ship-to-different-address label{font-family:var(--swm-display)!important;font-size:1.25rem;
  text-transform:uppercase;letter-spacing:0}
/* Order review card */
.woocommerce-checkout #order_review{border:1px solid var(--swm-mist);padding:clamp(1.25rem,2vw,1.75rem)}
.woocommerce-checkout #order_review .cart-subtotal td,.woocommerce-checkout #order_review .order-total td{text-align:right}
.woocommerce-checkout #order_review .product-name{font-family:var(--swm-sans);text-transform:none;font-weight:400}
.woocommerce-checkout #order_review .product-total{text-align:right;font-variant-numeric:tabular-nums}
.woocommerce-checkout .woocommerce-checkout-review-order-table thead th{font-family:var(--swm-mono);
  font-weight:300;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--swm-stone);
  padding-bottom:.75rem;border-bottom:1px solid var(--swm-mist)}

/* ===== PDP reviews ===== */
.swm-pdp__reviews{border-top:1px solid var(--swm-mist);padding-top:clamp(2rem,4vw,3rem);margin-top:clamp(2rem,4vw,3rem)}
.swm-pdp__reviews .swm-pdp__h{font-family:var(--swm-display);text-transform:uppercase;font-size:clamp(1.5rem,3vw,2.25rem);margin:0 0 1.5rem}
.woocommerce #reviews #comments ol.commentlist{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:1.5rem}
.woocommerce #reviews #comments li.review{border:1px solid var(--swm-mist);padding:1.25rem 1.5rem}
.woocommerce #reviews #comments li .comment-text{margin:0}
.woocommerce #reviews #comments li .meta{font-family:var(--swm-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--swm-stone)}
.woocommerce #reviews h3,#review_form_wrapper h3,.comment-reply-title{font-family:var(--swm-display);text-transform:uppercase;font-size:1.3rem;margin:0 0 1rem}
/* Rating dropdown: spaced, themed. */
.woocommerce #review_form .comment-form-rating{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin:0 0 1.25rem}
.woocommerce #review_form .comment-form-rating label{font-family:var(--swm-mono);font-weight:300;font-size:.7rem;
  letter-spacing:.12em;text-transform:uppercase;color:var(--swm-stone);margin:0}
.woocommerce #review_form #rating,.woocommerce p.comment-form-rating select{border:1px solid var(--swm-mist)!important;
  border-radius:0!important;padding:.75rem 2.75rem .75rem 1rem!important;font-family:var(--swm-sans);font-size:.9rem;
  min-width:180px;background-color:var(--swm-paper)!important;cursor:pointer;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%230C0C0D' stroke-width='1.5'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;background-position:right 1rem center!important}
.woocommerce #review_form .comment-form-comment label,.woocommerce #review_form .comment-form-author label,
.woocommerce #review_form .comment-form-email label{font-family:var(--swm-mono);font-weight:300;font-size:.68rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--swm-stone);display:block;margin-bottom:.4rem}
.woocommerce #review_form #respond input[type="submit"]{width:auto;min-width:180px}


/* ---- Quantity stepper (cart page + PDP) ----
   Matches the cart drawer's control. WooCommerce styles .qty with !important,
   so the overrides need the same weight. */
.woocommerce .swm-qtybox,.swm-qtybox{display:inline-flex!important;align-items:center;gap:.75rem;
  width:auto!important;max-width:none!important;float:none!important}
.woocommerce .swm-qtybox input.qty,.swm-qtybox input.qty{width:1.4rem!important;min-width:1.4rem;
  border:0!important;border-radius:0!important;background:transparent!important;padding:0!important;
  text-align:center;font-family:var(--swm-mono)!important;font-size:.85rem;color:var(--swm-ink)!important;
  font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.woocommerce .swm-qtybox input.qty::-webkit-outer-spin-button,
.woocommerce .swm-qtybox input.qty::-webkit-inner-spin-button,
.swm-qtybox input.qty::-webkit-outer-spin-button,
.swm-qtybox input.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.woocommerce .swm-qtybox input.qty:focus,.swm-qtybox input.qty:focus{outline:none!important;
  border-color:var(--swm-ink)!important;box-shadow:none!important}
.swm-qtybox__btn{width:1.75rem;height:1.75rem;flex:0 0 auto;display:inline-flex;align-items:center;
  justify-content:center;border:1px solid var(--swm-mist);background:transparent;cursor:pointer;
  font-family:var(--swm-mono);font-size:1rem;line-height:1;color:var(--swm-ink);padding:0;
  transition:border-color var(--swm-dur) var(--swm-ease),color var(--swm-dur) var(--swm-ease)}
.swm-qtybox__btn:hover{border-color:var(--swm-ink);color:var(--swm-flame)}
.swm-qtybox__btn:focus-visible{outline:2px solid var(--swm-flame);outline-offset:2px}


/* Clear-variations sits at the end of its row, not tucked against the last
   swatch where the selected-state brush overlaps it. */
/* One grid for the whole variations table, rows contributing their cells to it.
   A table sized each row's label cell on its own, so "Men's Size" and "Women's
   Size" pushed their values to different x positions; in one grid the label
   column is as wide as the longest label and every value row starts at the same
   place - however many attributes a product has. */
.woocommerce .swm-pdp__buy table.variations{display:grid;grid-template-columns:max-content 1fr;
  gap:.9rem 1.25rem;width:100%;margin:0 0 1.25rem}
.woocommerce .swm-pdp__buy table.variations tbody,
.woocommerce .swm-pdp__buy table.variations tr{display:contents}
.woocommerce .swm-pdp__buy table.variations th.label{width:auto;white-space:nowrap;
  padding:0;align-self:center;text-align:left}
.woocommerce .swm-pdp__buy table.variations tr td{display:flex!important;align-items:center;
  gap:.75rem;padding:0;min-width:0}
/* The swatches are built from the select and appended after it, which puts them
   after "Clear" in the DOM. Order them explicitly so the values read first and
   Clear stays at the end of the row where it belongs. */
.woocommerce .swm-pdp__buy table.variations .swm-swatches{flex:0 1 auto;order:-1}
.woocommerce .swm-pdp__buy table.variations .reset_variations{order:1;margin-left:auto!important}
/* The switch sits under the attribute's own label, so the label cell becomes a
   little stack: "Men's Size" with its scales beneath.
   Both cells align to the top and the label is given the swatch row's own line
   height, so the label text sits on the same line as the values whatever the
   cell ends up measuring - centring each cell independently made the label ride
   high, and by a different amount per scale as the row's height changed. */
/* Needs the `tr` too: the base rule for these cells carries it, and without it
   this loses on specificity and the values stay vertically centred - which put
   the label 10px high on some scales and level on others, depending purely on
   whether that scale's numbers wrapped the row onto a second line. */
.woocommerce .swm-pdp__buy table.variations tr td{flex-wrap:wrap;align-items:flex-start}
.woocommerce .swm-pdp__buy table.variations th.label{align-self:start;display:flex;
  flex-direction:column;align-items:flex-start;gap:.15rem}
.woocommerce .swm-pdp__buy table.variations th.label label{display:flex;align-items:center;
  min-height:2.3rem;margin:0}
.woocommerce .swm-pdp__buy table.variations th.label .swm-scaleswitch{margin:0}

/* Narrow: the label sits above its values, both hard left. Clear loses its
   auto margin too - on a wrapped row it was being pushed to the far right of
   the screen, away from the values it clears. Applies to every attribute row,
   colour as well as size. */
@media(max-width:640px){
  .woocommerce .swm-pdp__buy table.variations{grid-template-columns:1fr;gap:.4rem 0}
  .woocommerce .swm-pdp__buy table.variations th.label{padding-top:.5rem}
  .woocommerce .swm-pdp__buy table.variations tr td{flex-wrap:wrap}
}
.woocommerce .swm-pdp__buy .reset_variations{margin:0 0 0 auto!important;flex:0 0 auto;
  border-bottom:1px solid transparent;transition:color var(--swm-dur) var(--swm-ease),
  border-color var(--swm-dur) var(--swm-ease)}
.woocommerce .swm-pdp__buy .reset_variations:hover{color:var(--swm-flame);border-bottom-color:var(--swm-flame)}

/* Notice actions: text only, underlined, hard right. These need to outrank the
   generic .woocommerce a.button rules above, which share their specificity. */
.woocommerce .woocommerce-message a.button,.woocommerce .woocommerce-info a.button,
.woocommerce .woocommerce-error a.button,.woocommerce-message a.button,
.woocommerce-info a.button,.woocommerce-error a.button,
.woocommerce-message a.wc-forward,.woocommerce-info a.wc-forward{
  margin:0 0 0 auto!important;padding:0!important;min-height:0!important;background:none!important;
  border:0!important;border-bottom:1px solid currentColor!important;border-radius:0!important;
  box-shadow:none!important;color:var(--swm-ink)!important;font-family:var(--swm-mono)!important;
  font-weight:400!important;font-size:.68rem!important;letter-spacing:.12em;
  text-transform:uppercase!important;text-decoration:none!important;line-height:1.4}
.woocommerce .woocommerce-message a.button::after,.woocommerce-message a.button::after,
.woocommerce .woocommerce-info a.button::after,.woocommerce-info a.button::after{content:none!important}
.woocommerce .woocommerce-message a.button:hover,.woocommerce-message a.button:hover,
.woocommerce .woocommerce-info a.button:hover,.woocommerce-info a.button:hover,
.woocommerce-error a.button:hover{background:none!important;color:var(--swm-flame)!important}

/* WooCommerce gives notices tabindex="-1" and focuses them after a cart action,
   which made the global focus ring draw a black box round the whole bar. The
   focus is there for screen readers; the outline is just noise. */
.woocommerce-message:focus,.woocommerce-info:focus,.woocommerce-error:focus,
.woocommerce-message:focus-visible,.woocommerce-info:focus-visible,.woocommerce-error:focus-visible,
.woocommerce-notices-wrapper [tabindex="-1"]:focus,
.woocommerce-notices-wrapper [tabindex="-1"]:focus-visible{outline:none!important;box-shadow:none!important}

/* Inline notice links ("Undo?") read the same as the right-hand action. */
.woocommerce-message a:not(.button),.woocommerce-info a:not(.button),
.woocommerce-error a:not(.button){color:var(--swm-ink);font-family:var(--swm-mono);
  font-size:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:none;
  border-bottom:1px solid currentColor;transition:color var(--swm-dur) var(--swm-ease)}
.woocommerce-message a:not(.button):hover,.woocommerce-info a:not(.button):hover,
.woocommerce-error a:not(.button):hover{color:var(--swm-flame)}

/* Empty cart: the store's own button, with the flame hover. */
.woocommerce .return-to-shop .button,.woocommerce .wc-empty-cart-message + p .button,
.return-to-shop a.button{display:inline-flex!important;align-items:center;justify-content:center;
  padding:1rem 1.75rem!important;border:1px solid var(--swm-ink)!important;border-radius:0!important;
  background:var(--swm-ink)!important;color:var(--swm-paper)!important;
  font-family:var(--swm-mono)!important;font-weight:400!important;font-size:.6875rem!important;
  letter-spacing:.12em;text-transform:uppercase!important;line-height:1.3;
  transition:background-color var(--swm-dur) var(--swm-ease),color var(--swm-dur) var(--swm-ease),
  border-color var(--swm-dur) var(--swm-ease)}
.woocommerce .return-to-shop .button:hover,.return-to-shop a.button:hover{
  background:var(--swm-flame)!important;border-color:var(--swm-flame)!important;
  color:var(--swm-ink)!important}
.woocommerce .wc-empty-cart-message,.woocommerce .cart-empty{margin-bottom:1.5rem}

/* WooCommerce renders cart notices through the *block* notice banner, not the
   classic .woocommerce-message markup, so the action link needs targeting there
   too - and after the generic .woocommerce a.button rules, which otherwise win
   on source order. */
/* The content div holds a sentence, not a row of parts. As a flex container it
   turned every run of text and every <strong> inside the message into a flex
   item of its own, so the login error broke into four stacked pieces with a
   1rem gap between them - "Error:", then the sentence, then the username, then
   the rest. Normal flow by default; it becomes a row only when the notice
   really does carry an action link to push to the far right. */
.wc-block-components-notice-banner__content{display:block!important;width:100%;margin:0}
.wc-block-components-notice-banner__content:has(> a.button),
.wc-block-components-notice-banner__content:has(> a.wc-forward){
  display:flex!important;align-items:center;gap:1rem;flex-wrap:wrap}
.woocommerce .wc-block-components-notice-banner a.button,
.wc-block-components-notice-banner a.button,
.wc-block-components-notice-banner__content a.button,
.wc-block-components-notice-banner__content a.wc-forward{
  margin:0 0 0 auto!important;padding:0!important;min-height:0!important;background:none!important;
  border:0!important;border-bottom:1px solid currentColor!important;border-radius:0!important;
  box-shadow:none!important;outline:none!important;color:var(--swm-ink)!important;
  font-family:var(--swm-mono)!important;font-weight:400!important;font-size:.68rem!important;
  letter-spacing:.12em;text-transform:uppercase!important;text-decoration:none!important;
  line-height:1.4;transition:color var(--swm-dur) var(--swm-ease)}
.wc-block-components-notice-banner a.button::after,
.wc-block-components-notice-banner__content a.button::after{content:none!important}
.woocommerce .wc-block-components-notice-banner a.button:hover,
.wc-block-components-notice-banner a.button:hover,
.wc-block-components-notice-banner__content a.button:hover{background:none!important;
  color:var(--swm-flame)!important;border-bottom-color:var(--swm-flame)!important}


/* The stepper's buttons carry the border; the wrapper and the number do not.
   Both the PDP and the cart page wrap .quantity in a bordered box of their own,
   which is what put a second frame around the whole control. */
.woocommerce .swm-pdp__buy .quantity.swm-qtybox,
.woocommerce .swm-cart2__qty .quantity.swm-qtybox,
.swm-pdp__buy .quantity.swm-qtybox,
.swm-cart2__qty .quantity.swm-qtybox{border:0!important;padding:0!important;background:none!important}
.woocommerce .swm-qtybox input.qty,.swm-qtybox input.qty{border:0!important;box-shadow:none!important}

/* Clear sits left on a phone, under the values it clears rather than pushed to
   the far edge of the screen. Last in the file and matching the specificity of
   the two desktop rules that set its auto margin - a shorter selector earlier up
   lost to both and changed nothing. */
@media(max-width:640px){
  .woocommerce .swm-pdp__buy table.variations tr td .reset_variations{
    order:1;flex:0 0 auto;margin:.35rem auto 0 0!important}
}
