/*
Theme Name: 0044VAULT (Woostify Child)
Theme URI: https://0044vault.com
Description: Child theme of Woostify for 0044VAULT — a category-led, multi-brand London streetwear stockist. Monochrome palette, Inter Tight / Inter typography, sharp corners, hairline borders, UVU-style restraint.
Author: 0044VAULT
Author URI: https://0044vault.com
Template: woostify
Version: 0.1.1780377161
Text Domain: woostify-child
*/

/* =========================================================
   Design tokens — 0044VAULT (UVU-style)
   ========================================================= */
:root {
  /* Palette (strict monochrome) */
  --v-ink: #0A0A0A;          /* primary ink / buttons */
  --v-ink-2: #1F1F1F;        /* hairline / secondary ink */
  --v-mute: #9A9A9A;         /* muted captions, out-of-stock text */
  --v-paper: #FFFFFF;        /* paper */
  --v-cream: #F4F2EE;        /* alt section background */
  --v-line: rgba(10,10,10,0.08); /* hairline borders */

  /* Typography */
  --v-font-display: 'Inter Tight', 'Inter', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --v-font-body: 'Inter', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --v-tracking-caps: 0.04em;

  /* Spacing scale (8pt) */
  --v-s-1: 4px;
  --v-s-2: 8px;
  --v-s-3: 16px;
  --v-s-4: 24px;
  --v-s-5: 32px;
  --v-s-6: 48px;
  --v-s-7: 64px;
  --v-s-8: 96px;
  --v-s-9: 128px;
  --v-s-10: 160px;

  /* Structure */
  --v-container: 1440px;
  --v-radius: 0px; /* sharp corners everywhere */
}

/* =========================================================
   Base typography overrides — site-wide UVU feel
   ========================================================= */
body {
  font-family: var(--v-font-body);
  color: var(--v-ink);
  background: var(--v-paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6,
.woostify-nav-menu a,
.menu-item a,
.button,
.wp-element-button,
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
  font-family: var(--v-font-display);
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  font-weight: 500;
}

/* All buttons sharp, monochrome, full-bleed in product context */
.button,
.wp-element-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce #place_order {
  border-radius: var(--v-radius) !important;
  background: var(--v-ink) !important;
  color: var(--v-paper) !important;
  border: 1px solid var(--v-ink) !important;
  padding: 14px 22px !important;
  font-size: 13px !important;
  transition: background 0.18s ease, color 0.18s ease;
}
.button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce #place_order:hover {
  background: var(--v-paper) !important;
  color: var(--v-ink) !important;
}

/* Inputs */
input[type="text"], input[type="email"], input[type="password"],
input[type="search"], input[type="number"], input[type="tel"],
textarea, select {
  border-radius: var(--v-radius) !important;
  border: 1px solid var(--v-line) !important;
  background: var(--v-paper) !important;
  padding: 12px 14px !important;
  font-family: var(--v-font-body) !important;
  font-size: 14px !important;
  color: var(--v-ink) !important;
}

/* Kill rounded corners site-wide */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product img,
.woocommerce-product-gallery__image img,
.elementor-button,
.wc-block-grid__product-image img {
  border-radius: var(--v-radius) !important;
}

/* Product cards — UVU style: 4:5 imagery, image-only chrome, name + price + colour caption */
.woocommerce ul.products li.product {
  text-align: left;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--v-font-display);
  text-transform: uppercase;
  letter-spacing: var(--v-tracking-caps);
  font-weight: 500;
  font-size: 13px;
  margin: 16px 0 4px;
  color: var(--v-ink);
}
.woocommerce ul.products li.product .price {
  font-family: var(--v-font-display);
  text-transform: uppercase;
  letter-spacing: var(--v-tracking-caps);
  font-weight: 400;
  font-size: 13px;
  color: var(--v-ink);
}
.woocommerce ul.products li.product .price del { color: var(--v-mute); }

/* Force 4:5 product image aspect ratio */
.woocommerce ul.products li.product a img,
.woocommerce-loop-product__link img {
  aspect-ratio: 4 / 5;
  object-fit: cover;
  width: 100%;
  height: auto;
  display: block;
}

/* Out-of-stock card treatment */
.woocommerce ul.products li.product.outofstock a img {
  filter: grayscale(100%);
  opacity: 0.85;
}
.woocommerce span.onsale,
.woocommerce ul.products li.product .onsale {
  display: none;
}

/* Strip the Woostify badge for sale, replace with a sober out-of-stock label */
.woocommerce ul.products li.product.outofstock::before {
  content: 'OUT OF STOCK';
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  font-family: var(--v-font-display);
  font-size: 11px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  background: var(--v-paper);
  padding: 6px 10px;
  border: 1px solid var(--v-ink);
}
.woocommerce ul.products li.product { position: relative; }

/* Links: no underline by default, hairline underline on hover */
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }

/* =========================================================
   Layout: force full-width centred content (no sidebar)
   ========================================================= */
.woocommerce-page #primary,
.woocommerce-page .content-area,
.archive #primary,
.archive .content-area,
.page #primary,
.page .content-area,
.single-product #primary,
.single-product .content-area {
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Hide the empty sidebar entirely if anything tries to render it */
.woocommerce-page #secondary,
.archive #secondary,
.tax-product_brand #secondary,
.tax-product_cat #secondary,
.single-product #secondary {
  display: none !important;
}

/* Centred page container with sensible max-width and gutters */
.woocommerce-page .site-content > .container,
.archive .site-content > .container,
.page .site-content > .container,
.single .site-content > .container,
.site-content .col-full,
.woocommerce .col-full {
  max-width: 1440px !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: clamp(16px, 4vw, 48px) !important;
  padding-right: clamp(16px, 4vw, 48px) !important;
  box-sizing: border-box !important;
}

/* WooCommerce shop loop: 3-up desktop, 2-up mobile, generous gap */
.woocommerce ul.products,
.woocommerce-page ul.products {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 48px 24px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
  width: 100% !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
@media (max-width: 768px) {
  .woocommerce ul.products,
  .woocommerce-page ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 32px 16px !important;
  }
}

/* =========================================================
   Hide WooCommerce / Woostify card chrome that breaks the UVU feel
   ========================================================= */

/* =========================================================
   Hide ALL star rating elements on cards (ShopBuilder + WooCommerce + Woostify)
   ========================================================= */
.rtsb-star-rating,
.woocommerce .star-rating,
.woocommerce-page .star-rating,
.woocommerce .woocommerce-product-rating,
.woocommerce-product-rating,
.woocommerce ul.products li.product .star-rating,
.woocommerce ul.products li.product .rtsb-star-rating,
.woocommerce ul.products li.product .woocommerce-loop-rating,
.woocommerce ul.products li.product .woocommerce-review-link,
.product .star-rating,
.products .star-rating,
.woocommerce-loop-product__rating,
.woostify-product-rating {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* =========================================================
   Hide ALL out-of-stock badges Woostify / ShopBuilder render so only our overlay shows
   ========================================================= */
.woostify-out-of-stock-label,
.woostify-out-of-stock-label.position-left,
.woostify-out-of-stock-label.position-right,
.woocommerce ul.products li.product .woostify-out-of-stock-label,
.woocommerce ul.products li.product .out-of-stock-badge,
.woocommerce ul.products li.product .woostify-product-tag,
.woocommerce ul.products li.product .woocommerce-out-of-stock-badge,
.woocommerce ul.products li.product span.outofstock,
.woocommerce span.onsale.outofstock,
.woocommerce ul.products li.product .product-tag,
.woocommerce ul.products li.product .ribbon,
.rtsb-out-of-stock-label {
  display: none !important;
  visibility: hidden !important;
}

/* =========================================================
   Kill the hover-swap animation that hides the price
   Woostify wraps price + add-to-cart in .animated-meta and rotates/translates it on hover.
   We freeze it in the "price visible" state and hide the button entirely.
   ========================================================= */
.woocommerce ul.products li.product .product-loop-meta,
.woocommerce ul.products li.product .animated-meta {
  transform: none !important;
  transition: none !important;
  animation: none !important;
  perspective: none !important;
  transform-style: flat !important;
  height: auto !important;
  overflow: visible !important;
  opacity: 1 !important;
}
.woocommerce ul.products li.product:hover .product-loop-meta,
.woocommerce ul.products li.product:hover .animated-meta,
.woocommerce ul.products li.product:hover .price,
.woocommerce ul.products li.product:focus-within .product-loop-meta,
.woocommerce ul.products li.product:focus-within .animated-meta,
.woocommerce ul.products li.product:focus-within .price {
  transform: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  display: block !important;
}

/* Make sure the price is always visible */
.woocommerce ul.products li.product .price,
.woocommerce ul.products li.product .price * {
  display: inline-block !important;
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
  position: static !important;
}

/* =========================================================
   Hide every in-card action button / hover overlay
   ========================================================= */
.woocommerce ul.products li.product .product-loop-action,
.woocommerce ul.products li.product .loop-add-to-cart-btn,
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product a.button,
.woocommerce ul.products li.product .add_to_cart_button,
.woocommerce ul.products li.product .ajax_add_to_cart,
.woocommerce ul.products li.product .added_to_cart,
.woocommerce ul.products li.product .product_type_variable,
.woocommerce ul.products li.product .product_type_simple,
.woocommerce ul.products li.product .product_type_grouped,
.woocommerce ul.products li.product .product_type_external,
.woocommerce ul.products li.product .product-button-wrapper,
.woocommerce ul.products li.product .woocommerce-loop-add-to-cart,
.woocommerce ul.products li.product .woostify-add-to-cart,
.woocommerce ul.products li.product .woostify-product-action,
.woocommerce ul.products li.product .product-action,
.woocommerce ul.products li.product .product-info-hover,
.woocommerce ul.products li.product .product-action-vertical,
.woocommerce ul.products li.product .product-action-horizontal,
.woocommerce ul.products li.product .product-hover,
.woocommerce ul.products li.product .product-hover-inner,
.woocommerce ul.products li.product .product-extra,
.woocommerce ul.products li.product .product-extra-link,
.woocommerce ul.products li.product .quick-view,
.woocommerce ul.products li.product .quick-view-button,
.woocommerce ul.products li.product .yith-wcwl-add-to-wishlist,
.woocommerce ul.products li.product .compare,
.woocommerce ul.products li.product .product-compare,
.woocommerce ul.products li.product .quick-buy-now-button,
.woocommerce ul.products li.product .rtsb-action-buttons,
.woocommerce ul.products li.product .rtsb-product-action {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  height: 0 !important;
  width: 0 !important;
  position: absolute !important;
  left: -9999px !important;
}

/* Re-center text in product content block now that meta is just the price */
.woocommerce ul.products li.product .product-loop-content,
.woocommerce ul.products li.product .product-loop-content.text-center {
  text-align: left !important;
  padding: 16px 0 0 !important;
}

/* Product loop title spacing */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  margin: 0 0 6px !important;
  padding: 0 !important;
}
.woocommerce ul.products li.product .product-loop-meta {
  margin: 0 !important;
  padding: 0 !important;
}
.woocommerce ul.products li.product .animated-meta {
  display: block !important;
}

/* Tidy up "Showing all X results" + sort dropdown row */
.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count {
  font-family: var(--v-font-display);
  text-transform: uppercase;
  letter-spacing: var(--v-tracking-caps);
  font-size: 12px;
  color: var(--v-mute);
  margin-bottom: 32px;
}
.woocommerce .woocommerce-ordering select,
.woocommerce-page .woocommerce-ordering select {
  font-family: var(--v-font-display);
  text-transform: uppercase;
  letter-spacing: var(--v-tracking-caps);
  font-size: 12px;
  border: 1px solid var(--v-line) !important;
  background: transparent !important;
  padding: 10px 32px 10px 14px !important;
}
.woocommerce .woocommerce-ordering,
.woocommerce-page .woocommerce-ordering {
  margin-bottom: 32px !important;
}

/* Term / category / brand description block (above grid) - quiet styling */
.term-description,
.taxonomy-description,
.woocommerce-products-header__title.page-title {
  font-family: var(--v-font-body);
  font-size: 14px;
  color: var(--v-mute);
  max-width: 640px;
  margin: 32px 0 24px;
}

/* Strip Woostify product-card hover frames that add padding/borders */
.woocommerce ul.products li.product .woostify-product-inner,
.woocommerce ul.products li.product .woocommerce-LoopProduct-link {
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

/* Vertical rhythm on shop archive page */
.woocommerce.archive .site-content,
.woocommerce-page .site-content {
  padding-top: 32px;
  padding-bottom: 96px;
}

/* =========================================================
 * === VAULT CHROME (Step 2 — header, overlay, footer) ===
 * Slim monochrome header, slide-out shop overlay, sparse footer.
 * ========================================================= */

/* Skip link */
.vault-skip-link {
  position: absolute;
  left: -9999px;
  top: -9999px;
  z-index: 10000;
  background: var(--v-ink);
  color: var(--v-paper);
  padding: 12px 16px;
  font-family: var(--v-font-display);
  text-transform: uppercase;
  letter-spacing: var(--v-tracking-caps);
  font-size: 12px;
}
.vault-skip-link:focus {
  left: 16px;
  top: 16px;
}

/* Hide Woostify's leftover header/topbar shells in case anything still renders them */
body .site-header,
body #masthead.site-header,
body .topbar-section,
body .topbar-slider {
  display: none !important;
}

/* ---------- HEADER ---------- */
.vault-header {
  position: sticky;
  top: 0;
  left: 0;
  right: 0;
  z-index: 90;
  background: var(--v-paper);
  color: var(--v-ink);
  border-bottom: 1px solid transparent;
  transition: border-color 0.18s ease, background 0.18s ease;
}
.vault-header.is-scrolled {
  border-bottom-color: var(--v-line);
}
.vault-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  height: 64px;
  padding: 0 clamp(16px, 4vw, 48px);
  max-width: var(--v-container);
  margin: 0 auto;
  position: relative;
}
.vault-header__left,
.vault-header__right {
  display: flex;
  align-items: center;
  gap: 28px;
}
.vault-header__right { justify-content: flex-end; }
.vault-header__center { display: flex; justify-content: center; }

/* Header links — small all-caps text buttons */
.vault-link,
.vault-link--btn {
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
}
.vault-link:hover,
.vault-link--btn:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}

/* Wordmark */
.vault-wordmark { display: inline-flex; align-items: center; }
.vault-wordmark:hover { text-decoration: none; }
.vault-wordmark__text {
  font-family: var(--v-font-display);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: 18px;
  color: var(--v-ink);
  white-space: nowrap;
}

/* Country pill */
.vault-country-pill {
  display: inline-flex;
  align-items: center;
  font-family: var(--v-font-display);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  border: 1px solid var(--v-line);
  padding: 6px 10px;
  border-radius: 999px;
  white-space: nowrap;
}

/* Bag */
.vault-link--bag .vault-bag-count { color: var(--v-mute); margin-left: 2px; }

/* INFO dropdown */
.vault-info-dropdown { position: relative; }
.vault-info-dropdown__caret {
  display: inline-block;
  width: 0; height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 4px solid currentColor;
  margin-left: 2px;
  transform: translateY(1px);
  transition: transform 0.15s ease;
}
.vault-info-dropdown.is-open .vault-info-dropdown__caret {
  transform: translateY(1px) rotate(180deg);
}
.vault-info-dropdown__panel {
  position: absolute;
  top: calc(100% + 18px);
  left: -16px;
  min-width: 220px;
  background: var(--v-paper);
  border: 1px solid var(--v-line);
  padding: 12px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s linear 0.15s;
  z-index: 95;
}
.vault-info-dropdown.is-open .vault-info-dropdown__panel {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0s linear 0s;
}
.vault-info-dropdown__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.vault-info-dropdown__list li { margin: 0; padding: 0; }
.vault-info-dropdown__list a {
  display: block;
  padding: 10px 20px;
  font-family: var(--v-font-display);
  font-size: 12px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  text-decoration: none;
}
.vault-info-dropdown__list a:hover {
  background: var(--v-cream);
  text-decoration: none;
}

/* Mobile hamburger */
.vault-mobile-toggle {
  display: none;
  position: absolute;
  left: clamp(16px, 4vw, 48px);
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.vault-mobile-toggle span {
  display: block;
  width: 22px;
  height: 1px;
  background: var(--v-ink);
}

/* Responsive header */
@media (max-width: 960px) {
  .vault-header__left .vault-link--gallery,
  .vault-header__left .vault-info-dropdown,
  .vault-header__right .vault-country-pill {
    display: none;
  }
}
@media (max-width: 720px) {
  .vault-header__inner {
    height: 56px;
    grid-template-columns: 1fr auto 1fr;
  }
  .vault-header__left { visibility: hidden; pointer-events: none; }
  .vault-mobile-toggle { display: flex; }
  .vault-header__right .vault-link--account { display: none; }
  .vault-wordmark__text { font-size: 16px; }
}

/* ---------- SLIDE-OUT SHOP OVERLAY ---------- */
.vault-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  pointer-events: none;
  visibility: hidden;
}
.vault-overlay.is-open {
  pointer-events: auto;
  visibility: visible;
}
.vault-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 10, 10, 0);
  transition: background 0.3s ease;
  cursor: pointer;
}
.vault-overlay.is-open .vault-overlay__backdrop {
  background: rgba(10, 10, 10, 0.4);
}
.vault-overlay__panel {
  position: absolute;
  top: 0; bottom: 0; left: 0;
  width: min(560px, 92vw);
  background: var(--v-paper);
  color: var(--v-ink);
  border-right: 1px solid var(--v-line);
  transform: translateX(-100%);
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
  display: flex;
  flex-direction: column;
  outline: none;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.vault-overlay.is-open .vault-overlay__panel {
  transform: translateX(0);
}

.vault-overlay__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 32px;
  border-bottom: 1px solid var(--v-line);
  position: sticky;
  top: 0;
  background: var(--v-paper);
  z-index: 1;
}
.vault-overlay__eyebrow {
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-mute);
}
.vault-overlay__close {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  font-family: var(--v-font-display);
  font-size: 28px;
  line-height: 1;
  color: var(--v-ink);
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.vault-overlay__close:hover { color: var(--v-mute); }

.vault-overlay__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  padding: 8px 0;
  flex: 1;
}
.vault-overlay__col {
  padding: 24px 32px;
}
.vault-overlay__col + .vault-overlay__col {
  border-left: 1px solid var(--v-line);
}
.vault-overlay__heading {
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-mute);
  margin: 0 0 18px;
}
.vault-overlay__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.vault-overlay__list li { margin: 0; }
.vault-overlay__list a {
  display: block;
  padding: 8px 0;
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 18px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  text-decoration: none;
}
.vault-overlay__list a:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}
.vault-overlay__empty {
  font-family: var(--v-font-body);
  font-size: 13px;
  color: var(--v-mute);
}
.vault-overlay__foot {
  padding: 24px 32px 32px;
  border-top: 1px solid var(--v-line);
  background: var(--v-paper);
  position: sticky;
  bottom: 0;
}
.vault-overlay__shop-all {
  font-family: var(--v-font-display);
  font-size: 12px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
}

@media (max-width: 720px) {
  .vault-overlay__panel { width: 100vw; border-right: 0; }
  .vault-overlay__cols { grid-template-columns: 1fr; }
  .vault-overlay__col + .vault-overlay__col { border-left: 0; border-top: 1px solid var(--v-line); }
  .vault-overlay__head { padding: 18px 24px; }
  .vault-overlay__col { padding: 24px; }
  .vault-overlay__list a { font-size: 16px; }
}

/* Lock body scroll while overlay is open */
body.vault-overlay-open {
  overflow: hidden;
}

/* ---------- FOOTER ---------- */
.vault-footer {
  background: var(--v-paper);
  color: var(--v-ink);
  border-top: 1px solid var(--v-line);
  margin-top: 96px;
}
.vault-footer__inner {
  max-width: var(--v-container);
  margin: 0 auto;
  padding: 64px clamp(16px, 4vw, 48px) 48px;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 64px;
  align-items: start;
}
.vault-footer__newsletter-eyebrow {
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-mute);
  margin: 0 0 12px;
}
.vault-footer__newsletter-copy {
  font-family: var(--v-font-body);
  font-size: 15px;
  line-height: 1.55;
  color: var(--v-ink);
  max-width: 36ch;
  margin: 0 0 18px;
}
.vault-footer__newsletter-form {
  display: flex;
  align-items: center;
  border: 0;
  border-bottom: 1px solid var(--v-ink);
  max-width: 420px;
  padding: 0;
}
.vault-footer__newsletter-form input[type="email"] {
  flex: 1;
  border: 0 !important;
  background: transparent !important;
  padding: 12px 0 !important;
  font-family: var(--v-font-body) !important;
  font-size: 14px !important;
  color: var(--v-ink) !important;
  outline: none;
}
.vault-footer__newsletter-form input[type="email"]::placeholder {
  color: var(--v-mute);
}
.vault-footer__newsletter-form button {
  background: transparent !important;
  color: var(--v-ink) !important;
  border: 0 !important;
  padding: 12px 8px !important;
  font-size: 18px !important;
  cursor: pointer;
  letter-spacing: 0 !important;
}
.vault-footer__newsletter-form button:hover {
  background: transparent !important;
  color: var(--v-mute) !important;
}
.vault-footer__newsletter.is-submitted .vault-footer__newsletter-copy::after {
  content: ' — thanks, you’re on the list.';
  color: var(--v-mute);
}

.vault-footer__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
}
.vault-footer__heading {
  font-family: var(--v-font-display);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-mute);
  margin: 0 0 14px;
}
.vault-footer__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.vault-footer__list li { margin: 0; }
.vault-footer__list a {
  display: inline-block;
  padding: 6px 0;
  font-family: var(--v-font-display);
  font-size: 12px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  text-decoration: none;
}
.vault-footer__list a:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}

.vault-footer__bottom {
  border-top: 1px solid var(--v-line);
  padding: 20px clamp(16px, 4vw, 48px);
  max-width: var(--v-container);
  margin: 0 auto;
}
.vault-footer__bottom p {
  margin: 0;
  font-family: var(--v-font-display);
  font-size: 11px;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-mute);
}

@media (max-width: 720px) {
  .vault-footer { margin-top: 64px; }
  .vault-footer__inner {
    grid-template-columns: 1fr;
    gap: 48px;
    padding: 48px 24px 32px;
  }
  .vault-footer__cols { grid-template-columns: 1fr 1fr; gap: 24px; }
  .vault-footer__bottom { padding: 18px 24px; }
  .vault-footer__bottom p { font-size: 10px; }
}

/* ---------- A11y helper ---------- */
.vault-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  padding: 0 !important;
  margin: -1px !important;
}
/* =========================================================
 * === VAULT HOME V2 (Step 3 — hero, cat strip, manifesto) ===
 * Flat editorial home: hero + filterable grid + quiet manifesto.
 * ========================================================= */

/* Hide the default WP page title on the VAULT Home template (Woostify
   may print one above content depending on theme settings). */
.page-template-home-v2 .page-header,
.page-template-home-v2 .entry-title,
.page-template-home-v2 .woocommerce-products-header,
.page-template-home-v2 #content-area > h1.entry-title {
    display: none !important;
}

/* The home template renders its own <main>, so flatten Woostify's content wrappers. */
.page-template-home-v2 #primary,
.page-template-home-v2 .content-area,
.page-template-home-v2 .site-content,
.page-template-home-v2 article.page,
.page-template-home-v2 .entry-content {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}
.page-template-home-v2 .site-content > .container,
.page-template-home-v2 .col-full {
    max-width: 100% !important;
    padding: 0 !important;
}

.vault-home {
    display: block;
    color: var(--v-ink);
    background: var(--v-paper);
}

/* ---------- HERO ---------- */
.vault-home__hero {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    height: 80vh;
    min-height: 520px;
    overflow: hidden;
    background: var(--v-cream);
    position: relative;
}
.vault-home__hero-img,
.vault-home__hero-fallback {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.vault-home__hero-fallback {
    background: linear-gradient(180deg, var(--v-cream) 0%, #E8E5DF 100%);
}
@media (max-width: 720px) {
    .vault-home__hero { height: 70vh; min-height: 420px; }
}

/* ---------- CATEGORY STRIP ---------- */
.vault-home__commerce {
    max-width: var(--v-container);
    margin: 0 auto;
    padding: 56px clamp(16px, 4vw, 48px) 96px;
}
.vault-cat-strip {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 0 0 56px;
    border-bottom: 0;
}
.vault-cat-strip__link {
    background: none;
    border: 0;
    padding: 6px 0;
    cursor: pointer;
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    line-height: 1;
    transition: color 0.18s ease;
    border-bottom: 1px solid transparent;
}
.vault-cat-strip__link:hover {
    color: var(--v-ink);
    text-decoration: none;
}
.vault-cat-strip__link.is-active {
    color: var(--v-ink);
    border-bottom-color: var(--v-ink);
}
.vault-cat-strip__sep {
    color: var(--v-mute);
    font-family: var(--v-font-display);
    font-size: 13px;
    user-select: none;
}
@media (max-width: 720px) {
    .vault-home__commerce { padding: 32px 16px 64px; }
    .vault-cat-strip { gap: 10px; padding-bottom: 32px; }
    .vault-cat-strip__link { font-size: 12px; }
}

/* ---------- GRID FILTER STATE ---------- */
.vault-grid__wrap .products li.product.is-filtered-out {
    display: none !important;
}
.vault-grid__empty,
.vault-grid__empty-filter {
    text-align: center;
    font-family: var(--v-font-display);
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    padding: 80px 0;
    margin: 0;
}
.vault-grid__empty-filter[hidden] { display: none !important; }

/* The home grid lives in our custom container; re-confirm 3-up / 2-up. */
.vault-home .products {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 56px 24px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
@media (max-width: 768px) {
    .vault-home .products {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 32px 16px !important;
    }
}

/* ---------- MANIFESTO ---------- */
.vault-manifesto {
    background: var(--v-paper);
    border-top: 1px solid var(--v-line);
    padding: 96px clamp(16px, 4vw, 48px);
}
.vault-manifesto__inner {
    max-width: 720px;
    margin: 0 auto;
    text-align: center;
}
.vault-manifesto__lead {
    font-family: var(--v-font-display);
    text-transform: uppercase;
    letter-spacing: var(--v-tracking-caps);
    font-weight: 500;
    font-size: clamp(20px, 2.4vw, 28px);
    line-height: 1.25;
    color: var(--v-ink);
    margin: 0 0 18px;
}
.vault-manifesto__body p {
    font-family: var(--v-font-body);
    font-size: 16px;
    line-height: 1.6;
    color: var(--v-ink);
    margin: 0 0 16px;
}
.vault-manifesto__more {
    margin: 24px 0 0;
}
.vault-manifesto__more a {
    font-family: var(--v-font-display);
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-ink);
    border-bottom: 1px solid var(--v-ink);
    padding-bottom: 2px;
}
.vault-manifesto__more a:hover {
    color: var(--v-mute);
    border-bottom-color: var(--v-mute);
    text-decoration: none;
}
@media (max-width: 720px) {
    .vault-manifesto { padding: 64px 24px; }
    .vault-manifesto__lead { font-size: 18px; }
    .vault-manifesto__body p { font-size: 15px; }
}

/* On the home, we want zero margin-top on the footer because the manifesto
   already provides a generous block-end. */
.page-template-home-v2 .vault-footer {
    margin-top: 0;
}
/* =========================================================
 * === VAULT SHOP ARCHIVE (Step 4 — toolbar, filters, load more) ===
 * ========================================================= */

/* Hide WC + Woostify chrome on shop archives. */
.woocommerce.archive .woocommerce-breadcrumb,
.woocommerce-page.archive .woocommerce-breadcrumb,
.post-type-archive-product .woocommerce-breadcrumb,
.tax-product_cat .woocommerce-breadcrumb,
.woocommerce.archive .page-title,
.woocommerce.archive .term-description,
.woocommerce-page.archive .page-title,
.woocommerce-products-header,
.woocommerce-no-products-found,
.woocommerce-products-header__title,
.tax-product_cat .archive-header,
.tax-product_cat .page-header,
.post-type-archive-product .page-header,
.post-type-archive-product .archive-header,
.woocommerce.archive .archive-description,
.woocommerce.archive .taxonomy-description,
.tax-product_cat .taxonomy-description,
.post-type-archive-product .taxonomy-description {
    display: none !important;
}

/* Make sure Woostify's leftover sorting wrapper takes no space if it sneaks through. */
.woocommerce-page .woostify-sorting-wrapper:empty,
.woocommerce .woostify-sorting-wrapper:empty {
    display: none !important;
}

/* ---------- TOOLBAR ---------- */
.vault-shop-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    padding: 24px 0 40px;
    border-bottom: 1px solid var(--v-line);
    margin: 0 0 40px;
}
.vault-shop-toolbar .vault-cat-strip {
    justify-content: flex-start;
    padding: 0;
    flex: 1 1 auto;
    min-width: 0;
}
.vault-cat-strip a.vault-cat-strip__link { /* anchor variant for archive linking */
    text-decoration: none;
}

/* Filter row */
.vault-filter-row {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    margin: 0;
    padding: 0;
}

/* Individual filter (using <details>/<summary>) */
.vault-filter {
    position: relative;
}
.vault-filter[open] > .vault-filter__summary .vault-filter__caret {
    transform: rotate(180deg);
}
.vault-filter__summary {
    list-style: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-ink);
    padding: 6px 0;
    user-select: none;
}
.vault-filter__summary::-webkit-details-marker { display: none; }
.vault-filter__summary::marker { content: ''; }
.vault-filter__summary:hover { color: var(--v-mute); }
.vault-filter__caret {
    display: inline-block;
    width: 0; height: 0;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 4px solid currentColor;
    transform: translateY(1px);
    transition: transform 0.15s ease;
}
.vault-filter__count {
    font-size: 11px;
    color: var(--v-mute);
}

.vault-filter__panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 220px;
    background: var(--v-paper);
    border: 1px solid var(--v-line);
    padding: 12px 14px;
    z-index: 50;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.vault-filter__panel--grid {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px;
    min-width: 220px;
    max-width: 280px;
}
.vault-filter__opt {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-family: var(--v-font-display);
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-ink);
    padding: 6px 0;
}
.vault-filter__opt input[type="checkbox"],
.vault-filter__opt input[type="radio"] {
    accent-color: var(--v-ink);
    width: 14px;
    height: 14px;
    margin: 0;
}
.vault-filter__opt:hover { color: var(--v-mute); }

.vault-filter__opt--chip {
    border: 1px solid var(--v-line);
    padding: 6px 10px;
    min-width: 44px;
    justify-content: center;
}
.vault-filter__opt--chip input { display: none; }
.vault-filter__opt--chip:has(input:checked) {
    background: var(--v-ink);
    color: var(--v-paper);
    border-color: var(--v-ink);
}

.vault-filter__apply,
.vault-filter__clear {
    font-family: var(--v-font-display);
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    background: none;
    border: 0;
    padding: 6px 0;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 1px;
}
.vault-filter__apply:hover,
.vault-filter__clear:hover {
    color: var(--v-ink);
}

@media (max-width: 720px) {
    .vault-shop-toolbar {
        gap: 16px;
        padding: 16px 0 24px;
        margin-bottom: 24px;
    }
    .vault-shop-toolbar .vault-cat-strip {
        justify-content: flex-start;
        gap: 8px;
        flex-basis: 100%;
    }
    .vault-cat-strip__link { font-size: 11px; }
    .vault-filter-row { gap: 14px; }
    .vault-filter__panel { right: auto; left: 0; }
    .vault-filter--sort .vault-filter__panel { right: 0; left: auto; }
}

/* ---------- CARDS: COLOUR CAPTION ---------- */
.woocommerce ul.products li.product .vault-product-colour {
    margin: 4px 0 0 !important;
    padding: 0 !important;
    font-family: var(--v-font-body);
    font-size: 12px;
    letter-spacing: 0.02em;
    text-transform: lowercase;
    color: var(--v-mute);
    line-height: 1.3;
}

/* The card stack: image → title → price → colour. The colour is appended
   AFTER the meta block (which holds the price). Make sure the gap is tight. */
.woocommerce ul.products li.product .product-loop-content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
}
.woocommerce ul.products li.product .product-loop-content > * {
    width: 100%;
}

/* ---------- LOAD MORE ---------- */
.vault-load-more {
    text-align: center;
    padding: 56px 0 16px;
    margin: 0;
}
.vault-load-more__btn {
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-ink);
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--v-ink);
    padding: 8px 2px;
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
    transition: opacity 0.18s ease;
}
.vault-load-more__btn:hover {
    color: var(--v-ink);
    text-decoration: none;
    opacity: 0.55;
}
.vault-load-more.is-loading .vault-load-more__btn { opacity: 0.45; pointer-events: none; }
.vault-load-more.is-exhausted { display: none; }

/* ===== VAULT PDP STEP 5 BEGIN ===== */
/* =========================================================
 * === VAULT PDP (Step 5 — Single Product, ShopBuilder template) ===
 * Styles ShopBuilder's prebuilt PDP markup (.rtsb-*, .product-page-container,
 * .product-summary, .rtsb-term, .single_add_to_cart_button, etc.) into
 * UVU's restrained 60/40 PDP. No PHP renderer; CSS only.
 * ========================================================= */

/* ---- Hide chrome we don't want on PDP ---- */
.single-product .woocommerce-breadcrumb,
.single-product .woostify-single-product-page-builder,
.single-product .woostify-single-product-floating-bar,
.single-product .woostify-product-additional-info,
.single-product .quick-buy-now-button-wrap,
.single-product .vault-shop-toolbar,
.single-product .rtsb-notice,
.single-product .product-summary .rtsb-star-rating,
.single-product .woocommerce-product-rating,
.single-product .product-summary .product_meta {
    display: none !important;
}

/* WooCommerce default tabs — hide; description/info will live in
   the Elementor-built Accordion widget above. */
.single-product .woocommerce-tabs {
    display: none !important;
}

/* ---- Page container ---- */
.single-product .site-content {
    padding-top: 32px;
    padding-bottom: 96px;
}
.single-product .product-page-container {
    max-width: var(--v-container);
    margin: 0 auto;
    padding: 0 clamp(16px, 4vw, 48px);
    box-sizing: border-box;
}

/* ---- 60/40 split ----
 * The Elementor template wraps gallery (.product-gallery) and info
 * (.product-summary) in side-by-side columns. We enforce the 60/40
 * proportion + sticky info column at the CSS level so the same
 * design holds regardless of column structure tweaks. */
.single-product .product-page-container > .elementor-section .elementor-container,
.single-product .product-page-container > .elementor > .elementor-section .elementor-container {
    align-items: flex-start;
}
@media (min-width: 901px) {
    .single-product .product-summary {
        position: sticky;
        top: 88px;
        align-self: flex-start;
    }
}

/* ---- Gallery (left column) ---- */
.single-product .product-gallery,
.single-product .product-images,
.single-product .product-images-container {
    background: transparent;
    box-shadow: none;
    border: 0;
}
.single-product .product-images-container img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    border-radius: 0;
}
.single-product .product-thumbnail-images {
    margin-top: 8px;
}
.single-product .product-thumbnail-images img {
    aspect-ratio: 1 / 1;
    border-radius: 0;
}
.single-product.outofstock .product-images-container img {
    filter: grayscale(100%);
}

/* ---- Info column ---- UVU minimal scale: tiny title + price on one
   line, sentence-case body, tight rhythm. */
.single-product .product-summary {
    display: flex;
    flex-flow: row wrap;
    align-items: baseline;
    column-gap: 24px;
    row-gap: 18px;
    padding: 0;
}
/* Default every direct child to a full-row block. The title + price
   pair below explicitly opt out so they share row 1. */
.single-product .product-summary > * {
    width: 100%;
    margin: 0;
}

/* Title — small all-caps, sits left on row 1 */
.single-product .product-summary .product_title,
.single-product .product-summary h1.product_title,
.single-product .product-summary > .product_title,
.single-product .product-summary > h1.product_title,
.single-product div.product-summary h1.product_title,
body.single-product .product-summary h1.product_title {
    flex: 1 1 auto !important;
    width: auto !important;
    font-family: var(--v-font-display) !important;
    font-weight: 500 !important;
    font-size: 13px !important;
    letter-spacing: var(--v-tracking-caps) !important;
    text-transform: uppercase !important;
    color: var(--v-ink) !important;
    line-height: 1.2 !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Brand eyebrow / colour caption — generic Elementor heading/text widgets
   inside .product-summary. Editor sets data-vault-role attributes; we
   also style .product-summary .elementor-heading-title small markers. */
.single-product .product-summary .vault-pdp-brand,
.single-product .product-summary [data-vault-role="brand"] .elementor-heading-title {
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 11px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    margin: 0;
}
.single-product .product-summary .vault-pdp-colour,
.single-product .product-summary [data-vault-role="colour"] {
    font-family: var(--v-font-body);
    font-size: 13px;
    color: var(--v-mute);
    text-transform: lowercase;
    margin: 0;
}

/* Price — sits right on row 1, same scale as title */
.single-product .product-summary > .price,
.single-product .product-summary > p.price {
    flex: 0 0 auto;
    width: auto;
    text-align: right;
    margin: 0;
    padding: 0;
}
.single-product .product-summary .price,
.single-product .product-summary .price *,
.single-product .product-summary .woocommerce-Price-amount,
.single-product .product-summary .woocommerce-Price-amount bdi,
.single-product .product-summary .woocommerce-Price-currencySymbol {
    font-family: var(--v-font-display) !important;
    font-weight: 500 !important;
    font-size: 13px !important;
    letter-spacing: var(--v-tracking-caps) !important;
    color: var(--v-ink) !important;
    line-height: 1.2 !important;
}
.single-product .product-summary .price ins { text-decoration: none; }
.single-product .product-summary .price del { color: var(--v-mute); margin-right: 8px; }

/* Short description — sentence case, small body copy, sits below the
   title row in its own row. */
.single-product .product-summary .woocommerce-product-details__short-description,
.single-product .product-summary .woocommerce-product-details__short-description * {
    font-family: var(--v-font-body) !important;
    font-size: 13px !important;
    line-height: 1.55 !important;
    color: var(--v-ink) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 400 !important;
}
.single-product .product-summary .woocommerce-product-details__short-description {
    margin: 0;
}
.single-product .product-summary .woocommerce-product-details__short-description p {
    margin: 0 0 8px;
}
.single-product .product-summary .woocommerce-product-details__short-description p:last-child {
    margin-bottom: 0;
}
.single-product .product-summary .woocommerce-product-details__short-description ul,
.single-product .product-summary .woocommerce-product-details__short-description ol {
    margin: 0 0 8px;
    padding-left: 18px;
}
.single-product .product-summary .woocommerce-product-details__short-description li {
    margin: 0 0 4px;
}

/* ---- Variations form ---- */
.single-product .variations_form {
    margin: 0;
}
.single-product .variations_form .variations {
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 100%;
    border: 0;
    margin: 0;
    padding: 0;
}
.single-product .variations_form .variations tbody,
.single-product .variations_form .variations tr {
    display: contents;
}
.single-product .variations_form .variations .label,
.single-product .variations_form .variations th.label {
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 11px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    padding: 0 0 8px;
    text-align: left;
    background: transparent;
    border: 0;
}
.single-product .variations_form .variations .label label {
    margin: 0;
    color: inherit;
    font: inherit;
}
.single-product .variations_form .variations .value {
    padding: 0;
    background: transparent;
    border: 0;
}

/* Hide native <select>; ShopBuilder shows the .rtsb-terms-wrapper buttons. */
.single-product .variations_form select {
    display: none !important;
}
.single-product .variations_form .reset_variations {
    display: none !important;
}

/* ---- Chip buttons (rtsb-term) ---- UVU-style hairline pills.
   Markup is a div .rtsb-button-term wrapping a span .rtsb-term-span-button.
   We treat the OUTER div as the chip (border + padding + bg) and the INNER
   span as inert text only — otherwise we get a double-bordered "black band"
   look (which is what shipped on first pass). */
.single-product .rtsb-terms-wrapper,
.single-product .rtsb-terms-wrapper.button-variable-wrapper {
    display: flex !important;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.single-product .rtsb-term,
.single-product li.rtsb-term,
.single-product div.rtsb-term {
    list-style: none;
    margin: 0;
    padding: 0;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    line-height: 1 !important;
}

/* Feed ShopBuilder's CSS variables so the *baseline* chip sizing it
   computes already matches UVU—avoids fighting min-height defaults. */
.single-product .rtsb-terms-wrapper,
.single-product .rtsb-terms-wrapper.button-variable-wrapper {
    --details-page-attr-height: 44px;
    --details-page-attr-width: 64px;
    --variation-padding: 0 22px;
    --variation-attr-border-radius: 0;
}

/* OUTER chip = the interactive surface. Selector mirrors ShopBuilder's
   own .rtsb-terms-wrapper .rtsb-term.rtsb-button-term so we win on
   specificity, then !important on every prop. */
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.rtsb-tipsy {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    height: 44px !important;
    min-height: 44px !important;
    min-width: 64px !important;
    padding: 0 22px !important;
    box-sizing: border-box !important;
    border: 1px solid var(--v-line) !important;
    border-radius: 0 !important;
    background: var(--v-paper) !important;
    color: var(--v-ink) !important;
    font-family: var(--v-font-display) !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    letter-spacing: var(--v-tracking-caps) !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    text-align: center !important;
    cursor: pointer;
    user-select: none;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    box-shadow: none !important;
    outline: 0 !important;
}

/* INNER span = inert text only — strip ALL chrome. Specificity tuned
   to beat ShopBuilder's .rtsb-terms-wrapper .rtsb-term.rtsb-button-term
   .rtsb-term-span rule. */
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term .rtsb-term-span,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term .rtsb-term-span-button,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term .rtsb-term-span.rtsb-term-span-button {
    display: inline !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: inherit !important;
    font: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
    line-height: inherit !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    overflow: visible !important;
}

/* Hover */
.single-product .rtsb-term .rtsb-button-term:hover,
.single-product div.rtsb-button-term:hover {
    background: var(--v-paper) !important;
    color: var(--v-ink) !important;
    border-color: var(--v-ink) !important;
}

/* Selected — ShopBuilder applies .selected to the SAME element
   (.rtsb-term.rtsb-button-term.selected). Match that exactly. */
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.selected,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.rtsb-selected,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.rtsb-active,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.active {
    background: var(--v-ink) !important;
    color: var(--v-paper) !important;
    border-color: var(--v-ink) !important;
    box-shadow: none !important;
}
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.selected .rtsb-term-span,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.selected .rtsb-term-span-button,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.rtsb-selected .rtsb-term-span,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.active .rtsb-term-span {
    color: var(--v-paper) !important;
}
/* Selected hover stays filled — don't invert */
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.selected:hover,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.rtsb-selected:hover,
.single-product .rtsb-terms-wrapper .rtsb-term.rtsb-button-term.active:hover {
    background: var(--v-ink) !important;
    color: var(--v-paper) !important;
    border-color: var(--v-ink) !important;
}

/* OOS / unavailable — ShopBuilder marks these with rtsb-out-of-stock /
   rtsb-disabled / rtsb-unavailable depending on stock + combo state.
   Cover all three: paper bg, mute text, strike-through, no hover invert. */
.single-product .rtsb-term.rtsb-out-of-stock .rtsb-button-term,
.single-product .rtsb-term.rtsb-disabled .rtsb-button-term,
.single-product .rtsb-term.rtsb-unavailable .rtsb-button-term,
.single-product .rtsb-button-term.rtsb-out-of-stock,
.single-product .rtsb-button-term.rtsb-disabled,
.single-product .rtsb-button-term.rtsb-unavailable {
    background: var(--v-paper) !important;
    color: var(--v-mute) !important;
    border-color: var(--v-line) !important;
    text-decoration: line-through !important;
    cursor: not-allowed;
}
.single-product .rtsb-term.rtsb-out-of-stock .rtsb-button-term:hover,
.single-product .rtsb-term.rtsb-disabled .rtsb-button-term:hover,
.single-product .rtsb-term.rtsb-unavailable .rtsb-button-term:hover,
.single-product .rtsb-button-term.rtsb-out-of-stock:hover,
.single-product .rtsb-button-term.rtsb-disabled:hover,
.single-product .rtsb-button-term.rtsb-unavailable:hover {
    background: var(--v-paper) !important;
    color: var(--v-mute) !important;
    border-color: var(--v-line) !important;
}

/* ShopBuilder Tipsy tooltips on chips — the size text is already on
   the chip, so the speech-bubble tooltip is redundant noise. Kill it. */
.tipsy,
.tipsy.rtsb-vs-tooltip-button,
.tipsy.rtsb-vs-tooltip-image,
.tipsy.rtsb-vs-tooltip-text,
.tipsy-inner,
.tipsy-arrow,
body > .tipsy,
html > .tipsy {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Single variation messaging — the .single_variation div is what
   WooCommerce injects (variation price + availability) when a size is
   chosen. We already show the static price up top, and UVU never repeats
   it down here. Hide it so the ATC button doesn't shift down on selection. */
.single-product .single_variation_wrap {
    margin: 18px 0 0;
}
.single-product .single_variation,
.single-product .woocommerce-variation,
.single-product .woocommerce-variation-price,
.single-product .woocommerce-variation-availability,
.single-product .woocommerce-variation-description {
    display: none !important;
}

/* Quantity field — hide for clean UVU look (always 1 from PDP) */
.single-product .variations_form .quantity,
.single-product form.cart > .quantity,
.single-product .product-summary .quantity {
    display: none !important;
}

/* ---- Add to cart button ---- */
.single-product .single_add_to_cart_button,
.single-product .product-summary button.single_add_to_cart_button,
.single-product .product-group-btns .single_add_to_cart_button {
    width: 100% !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    padding: 18px 20px !important;
    background: var(--v-ink) !important;
    color: var(--v-paper) !important;
    border: 1px solid var(--v-ink) !important;
    border-radius: 0 !important;
    font-family: var(--v-font-display) !important;
    font-weight: 500 !important;
    font-size: 13px !important;
    letter-spacing: var(--v-tracking-caps) !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    box-shadow: none !important;
    transition: background 0.18s ease, color 0.18s ease;
    cursor: pointer;
}
.single-product .single_add_to_cart_button:hover {
    background: var(--v-paper) !important;
    color: var(--v-ink) !important;
}
.single-product .single_add_to_cart_button.disabled,
.single-product .single_add_to_cart_button:disabled,
.single-product .single_add_to_cart_button.wc-variation-selection-needed {
    background: var(--v-paper) !important;
    color: var(--v-ink) !important;
    border-color: var(--v-ink) !important;
    opacity: 1 !important;
    cursor: pointer;
}
.single-product .single_add_to_cart_button.wc-variation-is-unavailable {
    background: var(--v-paper) !important;
    color: var(--v-mute) !important;
    border-color: var(--v-line) !important;
    cursor: not-allowed;
}

/* Group-button stack (ShopBuilder may add Buy Now / Wishlist alongside) */
.single-product .product-group-btns {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 4px;
}
.single-product .product-group-btns > * {
    width: 100%;
}

/* WC notices on add-to-cart */
.single-product .woocommerce-notices-wrapper {
    margin: 0 0 16px;
}
.single-product .woocommerce-message,
.single-product .woocommerce-info,
.single-product .woocommerce-error {
    border-radius: 0 !important;
    border-left: 1px solid var(--v-ink) !important;
    background: var(--v-cream) !important;
    color: var(--v-ink) !important;
    font-family: var(--v-font-body);
    font-size: 13px;
    box-shadow: none !important;
}

/* ---- Related products row (uses standard shop-card markup) ---- */
.single-product .related.products,
.single-product .upsells.products,
.single-product .rtsb-related-products,
.single-product .rtsb-upsells-products {
    margin-top: 48px;
    padding-top: 24px;
    border-top: 0;
}
.single-product .related.products > h2,
.single-product .upsells.products > h2,
.single-product .rtsb-related-products .rtsb-section-title,
.single-product .rtsb-upsells-products .rtsb-section-title {
    font-family: var(--v-font-display);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: var(--v-tracking-caps);
    text-transform: uppercase;
    color: var(--v-mute);
    text-align: center;
    margin: 0 0 40px;
}
.single-product .related.products .products,
.single-product .upsells.products .products,
.single-product .rtsb-related-products .products {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 48px 24px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
@media (max-width: 900px) {
    .single-product .related.products .products,
    .single-product .upsells.products .products,
    .single-product .rtsb-related-products .products {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 32px 16px !important;
    }
    .single-product .related.products,
    .single-product .upsells.products,
    .single-product .rtsb-related-products {
        margin-top: 32px;
        padding-top: 16px;
    }
}

/* ---- Mobile stack ---- */
@media (max-width: 900px) {
    .single-product .product-summary {
        position: static !important;
        top: auto !important;
    }
    .single-product .product-page-container {
        padding: 0 16px;
    }
}
/* ===== VAULT PDP STEP 5 END ===== */

/* ===== VAULT PDP TRIAGE BEGIN ===== */
/* =========================================================
 * === VAULT PDP triage (post-Step 5 visual cleanup) ===
 * Kills bg leaks, hides Woostify breadcrumb + prev/next, Buy Now plugin,
 * photoswipe toggle. Forces 60/40 grid on inner .woostify-container.
 * ========================================================= */

/* 1) Force monochrome white background on every PDP wrapper. */
body.single-product,
.single-product #view,
.single-product #content.site-content,
.single-product .site-main,
.single-product #main.site-main,
.single-product .rtsb-vs-product,
.single-product .product-page-container,
.single-product .product-page-container > .woostify-container {
    background: var(--v-paper) !important;
}

/* 2) Hide Woostify default breadcrumb + product nav strip. */
.single-product .content-top,
.single-product .woostify-breadcrumb,
.single-product .woostify-product-navigation,
.single-product .product-nav-item,
.single-product nav.woostify-breadcrumb {
    display: none !important;
}

/* 3) Hide all variants of the Buy Now plugin button on PDP. */
.single-product .buy-now-button-wrap,
.single-product .buy-now-button,
.single-product .buy_now_button,
.single-product .buy-now-woo,
.single-product .quick-buy-now-button-wrap,
.single-product .quick-buy-now-button,
body.buy-now-woo .single-product .buy-now-button,
.single-product form.cart .buy-now-button {
    display: none !important;
}

/* 3.5) Hide gallery prev/next arrows + page dots. Woostify uses
   Flickity (.flickity-prev-next-button + .flickity-page-dots), not Slick. */
.single-product .flickity-prev-next-button,
.single-product .flickity-button,
.single-product .flickity-button.previous,
.single-product .flickity-button.next,
.single-product .flickity-page-dots,
.single-product .product-images .flickity-prev-next-button,
.single-product .product-images-container .flickity-prev-next-button,
.single-product .product-gallery .flickity-prev-next-button {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    width: 0 !important;
    height: 0 !important;
}

/* 4) Hide photoswipe expand-button overlay + empty thumbnail strip. */
.single-product .photoswipe-toggle-button,
.single-product .product-group-btns .photoswipe-toggle-button,
.single-product .product-group-btns:empty,
.single-product .product-thumbnail-images:empty,
.single-product .pswp {
    display: none !important;
}

/* 5) Convert the inner .woostify-container into the 60/40 grid that
 *    actually drives the desktop layout. The outer .product-page-container
 *    already caps width at 1440px and supplies edge padding; the inner
 *    container just needs to lay out gallery + summary side-by-side. */
.single-product .product-page-container .woostify-container {
    max-width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
    gap: clamp(32px, 5vw, 80px);
    align-items: flex-start;
}
@media (max-width: 900px) {
    .single-product .product-page-container .woostify-container {
        grid-template-columns: 1fr;
        gap: 32px;
    }
}

/* 6) Gallery fills its grid cell, info column too. */
.single-product .product-page-container .product-gallery,
.single-product .product-page-container .product-summary {
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 0;
}

/* 7) Gallery image: always fill 100% of its cell at 4:5 ratio. */
.single-product .product-images,
.single-product .product-images-container,
.single-product .product-images-container .image-item,
.single-product .product-images-container figure {
    width: 100%;
    margin: 0;
    background: var(--v-cream);
}
.single-product .product-images-container a {
    display: block;
    width: 100%;
}
.single-product .product-images-container img,
.single-product .product-images-container svg {
    display: block;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4 / 5;
    object-fit: cover;
}
/* ===== VAULT PDP TRIAGE END ===== */

/* ===== VAULT CART STEP 6 BEGIN =====
 * Slide-in bag drawer (rendered in wp_footer, see inc/cart-drawer.php)
 * + full /cart/ page restyle on the classic [woocommerce_cart] shortcode.
 */

/* ---------- Bag drawer (right slide-in) ---------- */
.vault-bag-backdrop{position:fixed;inset:0;background:rgba(10,10,10,.45);z-index:1000;opacity:0;transition:opacity .25s ease;pointer-events:none}
.vault-bag-backdrop.is-open{opacity:1;pointer-events:auto}
.vault-bag-drawer{position:fixed;top:0;right:0;width:440px;max-width:100vw;height:100vh;height:100dvh;background:#fff;z-index:1001;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);font-family:"Inter Tight","Inter",system-ui,sans-serif;color:var(--vault-ink,#0A0A0A)}
.vault-bag-drawer.is-open{transform:translateX(0)}
body.vault-bag-open{overflow:hidden}
@media (max-width:480px){.vault-bag-drawer{width:100vw}}

/* Drawer head */
.vault-bag-drawer__head{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;border-bottom:1px solid rgba(10,10,10,.08);flex:0 0 auto}
.vault-bag-drawer__title{font-family:"Inter Tight",sans-serif;font-weight:500;font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.vault-bag-drawer__count{font-weight:500;margin-left:2px}
.vault-bag-drawer__close{background:none;border:0;padding:0;width:28px;height:28px;font-size:26px;line-height:1;cursor:pointer;color:var(--vault-ink,#0A0A0A);display:flex;align-items:center;justify-content:center}
.vault-bag-drawer__close:hover{opacity:.65}

/* Drawer body */
.vault-bag-drawer__body{flex:1 1 auto;overflow-y:auto;padding:0 24px}
.vault-bag-drawer .woocommerce-mini-cart.cart_list,
.vault-bag-drawer ul.product_list_widget{list-style:none;margin:0;padding:0}

.vault-bag-drawer li.mini_cart_item,
.vault-bag-drawer li.woocommerce-mini-cart-item{position:relative;display:grid;grid-template-columns:72px 1fr auto;gap:14px;padding:20px 32px 20px 0;border-bottom:1px solid rgba(10,10,10,.08);list-style:none;font-family:"Inter Tight",sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;line-height:1.45;color:var(--vault-ink,#0A0A0A)}
.vault-bag-drawer li.mini_cart_item:last-child{border-bottom:0}
.vault-bag-drawer li.mini_cart_item > a:not(.remove){display:contents;color:inherit;text-decoration:none}
.vault-bag-drawer li.mini_cart_item img{grid-column:1;width:72px;height:90px;object-fit:cover;background:var(--vault-cream,#F4F2EE);display:block;margin:0;border-radius:0}

.vault-bag-drawer .quantity{grid-column:3;align-self:start;text-align:right;white-space:nowrap;font-family:"Inter Tight",sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;padding-top:2px;color:var(--vault-ink,#0A0A0A)}
.vault-bag-drawer .quantity .amount{font-weight:500}

/* Remove link as "Remove" caption beneath the quantity */
.vault-bag-drawer a.remove,
.vault-bag-drawer a.remove_from_cart_button{position:absolute !important;top:46px;right:0;background:none !important;border:0;padding:0;width:auto;height:auto;color:var(--vault-mute,#9A9A9A) !important;font-size:0 !important;line-height:1;text-decoration:none}
.vault-bag-drawer a.remove::after,
.vault-bag-drawer a.remove_from_cart_button::after{content:"Remove";font-family:"Inter Tight",sans-serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;text-decoration:underline;text-underline-offset:3px}
.vault-bag-drawer a.remove:hover,
.vault-bag-drawer a.remove_from_cart_button:hover{color:var(--vault-ink,#0A0A0A) !important}

/* Variation attributes (size, colour) */
.vault-bag-drawer dl.variation{grid-column:2;margin:4px 0 0;padding:0;font-family:"Inter Tight",sans-serif;font-size:11px;font-weight:400;letter-spacing:.04em;color:var(--vault-mute,#9A9A9A);text-transform:uppercase;display:flex;flex-wrap:wrap;gap:0 10px;align-self:start}
.vault-bag-drawer dl.variation dt{margin:0;font-weight:500}
.vault-bag-drawer dl.variation dd{margin:0;padding:0}
.vault-bag-drawer dl.variation dd p{margin:0}

/* Hide WC's native total + buttons — our footer renders its own */
.vault-bag-drawer .woocommerce-mini-cart__total,
.vault-bag-drawer .woocommerce-mini-cart__buttons{display:none}

/* Empty state */
.vault-bag-drawer .woocommerce-mini-cart__empty-message{margin:48px 0;padding:0;text-align:center;font-family:"Inter Tight",sans-serif;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-mute,#9A9A9A)}

/* Drawer foot */
.vault-bag-drawer__foot{border-top:1px solid rgba(10,10,10,.08);padding:20px 24px 24px;flex:0 0 auto;background:#fff}
.vault-bag-drawer__subtotal{display:flex;justify-content:space-between;align-items:baseline;font-family:"Inter Tight",sans-serif;font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px}
.vault-bag-drawer__subtotal-amount{font-weight:500}
.vault-bag-drawer__checkout{display:block;width:100%;padding:18px 16px;background:var(--vault-ink,#0A0A0A);color:#fff;text-align:center;text-decoration:none;text-transform:uppercase;letter-spacing:.06em;font-family:"Inter Tight",sans-serif;font-weight:500;font-size:13px;border-radius:0;border:0}
.vault-bag-drawer__checkout:hover{background:var(--vault-ink-2,#1F1F1F);color:#fff}
.vault-bag-drawer__view-cart{display:block;margin-top:12px;text-align:center;text-decoration:underline;text-underline-offset:3px;font-family:"Inter Tight",sans-serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-mute,#9A9A9A)}
.vault-bag-drawer__view-cart:hover{color:var(--vault-ink,#0A0A0A)}

/* Hide drawer on the /cart/ page itself */
body.woocommerce-cart .vault-bag-drawer,
body.woocommerce-cart .vault-bag-backdrop{display:none !important}

/* ---------- /cart/ page (classic shortcode markup) ---------- */
body.woocommerce-cart .site-main,
body.woocommerce-cart .woostify-container,
body.woocommerce-cart #primary,
body.woocommerce-cart .entry-content{background:#fff !important}
body.woocommerce-cart .entry-header,
body.woocommerce-cart .page-header,
body.woocommerce-cart .woostify-breadcrumb,
body.woocommerce-cart .wc-breadcrumb,
body.woocommerce-cart .woostify-product-navigation{display:none}
body.woocommerce-cart article.page > .entry-content,
body.woocommerce-cart #post-8 .entry-content{max-width:1280px;margin:40px auto 80px;padding:0 24px}
body.woocommerce-cart .entry-content::before{content:"Bag";display:block;font-family:"Inter Tight",sans-serif;font-weight:500;font-size:22px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid rgba(10,10,10,.08)}

/* Two-column grid: items left, totals right */
body.woocommerce-cart .woocommerce{display:grid;grid-template-columns:1fr 360px;gap:64px;align-items:start}
@media (max-width:900px){body.woocommerce-cart .woocommerce{grid-template-columns:1fr;gap:32px}}
body.woocommerce-cart .woocommerce-notices-wrapper{grid-column:1 / -1}
body.woocommerce-cart form.woocommerce-cart-form{grid-column:1;margin:0}
body.woocommerce-cart .cart-collaterals{grid-column:2;width:100%;max-width:none;float:none;margin:0}
@media (max-width:900px){body.woocommerce-cart .cart-collaterals{grid-column:1}}

/* Strip shop_table chrome */
body.woocommerce-cart table.shop_table.cart{border:0;border-collapse:collapse;border-spacing:0;background:transparent;width:100%;margin:0}
body.woocommerce-cart table.shop_table.cart th,
body.woocommerce-cart table.shop_table.cart td{background:transparent;border:0;padding:20px 12px;font-family:"Inter Tight",sans-serif;font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-ink,#0A0A0A);vertical-align:middle}
body.woocommerce-cart table.shop_table.cart thead th{border-bottom:1px solid rgba(10,10,10,.08);font-weight:500}
body.woocommerce-cart tr.cart_item{border-bottom:1px solid rgba(10,10,10,.08)}

/* Cells */
body.woocommerce-cart .product-remove{width:32px;padding-left:0 !important}
body.woocommerce-cart .product-remove a.remove{background:none !important;color:var(--vault-mute,#9A9A9A) !important;font-size:22px !important;width:auto !important;height:auto !important;line-height:1}
body.woocommerce-cart .product-remove a.remove:hover{color:var(--vault-ink,#0A0A0A) !important}
body.woocommerce-cart .product-thumbnail{width:100px}
body.woocommerce-cart .product-thumbnail img{width:80px;height:100px;object-fit:cover;background:var(--vault-cream,#F4F2EE);border-radius:0;display:block}
body.woocommerce-cart .product-name a{color:var(--vault-ink,#0A0A0A);text-decoration:none;font-weight:500}
body.woocommerce-cart .product-name a:hover{text-decoration:underline;text-underline-offset:4px}
body.woocommerce-cart .product-name dl.variation{margin:6px 0 0;color:var(--vault-mute,#9A9A9A);font-size:11px;font-weight:400}
body.woocommerce-cart .product-name dl.variation dt,
body.woocommerce-cart .product-name dl.variation dd{display:inline;margin:0 6px 0 0}
body.woocommerce-cart .product-price,
body.woocommerce-cart .product-subtotal{white-space:nowrap}
body.woocommerce-cart .product-subtotal{font-weight:500}

/* Quantity stepper (Woostify injects .product-qty[data-qty="minus|plus"] spans around input.qty) */
body.woocommerce-cart .product-quantity{text-align:center}
body.woocommerce-cart .product-quantity .quantity{display:inline-flex;align-items:stretch;border:1px solid rgba(10,10,10,.15);border-radius:0 !important;padding:0;background:#fff;overflow:hidden;line-height:1;height:40px}
body.woocommerce-cart .product-quantity .quantity .product-qty{display:inline-flex;align-items:center;justify-content:center;width:36px;height:38px;cursor:pointer;color:var(--vault-ink,#0A0A0A);user-select:none;background:#fff;border:0;transition:background .15s ease,color .15s ease}
body.woocommerce-cart .product-quantity .quantity .product-qty:hover{background:var(--vault-ink,#0A0A0A);color:#fff}
body.woocommerce-cart .product-quantity .quantity .product-qty svg{width:12px;height:12px;display:block;fill:currentColor;color:inherit}
body.woocommerce-cart .product-quantity .quantity .product-qty[data-qty="minus"]{border-right:1px solid rgba(10,10,10,.12)}
body.woocommerce-cart .product-quantity .quantity .product-qty[data-qty="plus"]{border-left:1px solid rgba(10,10,10,.12)}
body.woocommerce-cart .product-quantity input.qty{width:48px;height:38px;background:#fff !important;border:0 !important;outline:0;box-shadow:none !important;text-align:center;font-family:"Inter Tight",sans-serif;font-size:13px;font-weight:500;border-radius:0 !important;padding:0;margin:0 !important;color:var(--vault-ink,#0A0A0A);-moz-appearance:textfield;appearance:textfield}
body.woocommerce-cart .product-quantity input.qty::-webkit-outer-spin-button,
body.woocommerce-cart .product-quantity input.qty::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}
body.woocommerce-cart .product-quantity input.qty:focus{background:#fff !important;outline:0;box-shadow:none !important}

/* Actions row (coupon + update) - centered as one balanced group */
body.woocommerce-cart tr td.actions{border-bottom:0 !important;padding-top:28px !important;padding-bottom:0 !important;text-align:center}
body.woocommerce-cart tr td.actions .coupon{display:inline-flex;gap:8px;align-items:center;margin:0;flex-wrap:wrap;vertical-align:middle}
body.woocommerce-cart tr td.actions .coupon label{display:none}
body.woocommerce-cart tr td.actions input.input-text{height:44px;border:1px solid rgba(10,10,10,.15);background:#fff;border-radius:0;padding:0 14px;font-family:"Inter Tight",sans-serif;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--vault-ink,#0A0A0A);min-width:220px;box-sizing:border-box;vertical-align:middle}
body.woocommerce-cart tr td.actions button[name="apply_coupon"],
body.woocommerce-cart tr td.actions button[name="update_cart"]{height:44px;padding:0 18px;background:transparent !important;color:var(--vault-ink,#0A0A0A) !important;border:1px solid var(--vault-ink,#0A0A0A);border-radius:0 !important;font-family:"Inter Tight",sans-serif;font-weight:500;font-size:12px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;filter:none !important;box-sizing:border-box;vertical-align:middle;display:inline-flex;align-items:center;justify-content:center;line-height:1;margin:0}
body.woocommerce-cart tr td.actions button[name="apply_coupon"]:hover{background:var(--vault-ink,#0A0A0A) !important;color:#fff !important}
body.woocommerce-cart tr td.actions button[name="update_cart"]{margin-left:16px;background:var(--vault-ink,#0A0A0A) !important;color:#fff !important}
body.woocommerce-cart tr td.actions button[name="update_cart"]:hover{background:var(--vault-ink-2,#1F1F1F) !important}
body.woocommerce-cart tr td.actions button[name="update_cart"][disabled],
body.woocommerce-cart tr td.actions button[name="update_cart"]:disabled{opacity:.55;cursor:not-allowed}
@media (max-width:600px){
  body.woocommerce-cart tr td.actions .coupon{display:flex;flex-direction:column;width:100%;gap:8px}
  body.woocommerce-cart tr td.actions .coupon input.input-text{width:100%;min-width:0}
  body.woocommerce-cart tr td.actions button[name="apply_coupon"],
  body.woocommerce-cart tr td.actions button[name="update_cart"]{width:100%}
  body.woocommerce-cart tr td.actions button[name="update_cart"]{margin:12px 0 0}
}

/* Cart totals card */
body.woocommerce-cart .cart_totals{border:1px solid rgba(10,10,10,.08);padding:28px}
body.woocommerce-cart .cart_totals h2{font-family:"Inter Tight",sans-serif;font-weight:500;font-size:14px;letter-spacing:.06em;text-transform:uppercase;margin:0 0 20px;color:var(--vault-ink,#0A0A0A);padding-bottom:16px;border-bottom:1px solid rgba(10,10,10,.08)}
body.woocommerce-cart .cart_totals table{width:100%;border:0;border-collapse:collapse;background:transparent;margin:0}
body.woocommerce-cart .cart_totals table th,
body.woocommerce-cart .cart_totals table td{border:0;background:transparent;padding:10px 0;font-family:"Inter Tight",sans-serif;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-ink,#0A0A0A);vertical-align:top}
body.woocommerce-cart .cart_totals table th{font-weight:500;width:45%;text-align:left}
body.woocommerce-cart .cart_totals table td{text-align:right}
body.woocommerce-cart .cart_totals .order-total{border-top:1px solid rgba(10,10,10,.08)}
body.woocommerce-cart .cart_totals .order-total th,
body.woocommerce-cart .cart_totals .order-total td{padding-top:16px;font-size:13px}
body.woocommerce-cart .cart_totals .order-total .amount{font-weight:500}

/* Shipping calculator + methods */
body.woocommerce-cart .cart_totals .woocommerce-shipping-totals td{font-weight:400}
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods{margin:0;padding:0;list-style:none;font-family:"Inter Tight",sans-serif;font-size:12px;letter-spacing:.04em;text-transform:uppercase}
body.woocommerce-cart .cart_totals .shipping-calculator-button{color:var(--vault-ink,#0A0A0A);text-decoration:underline;text-underline-offset:3px}

/* Proceed to checkout button */
body.woocommerce-cart .wc-proceed-to-checkout{padding:24px 0 0;margin:0}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button{display:block;width:100%;padding:18px 16px;background:var(--vault-ink,#0A0A0A) !important;color:#fff !important;text-align:center;text-decoration:none;text-transform:uppercase;letter-spacing:.06em;font-family:"Inter Tight",sans-serif;font-weight:500;font-size:13px;border-radius:0 !important;border:0 !important;filter:none !important}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover{background:var(--vault-ink-2,#1F1F1F) !important}

/* Hide cross-sells — UVU cart has none */
body.woocommerce-cart .cross-sells{display:none}

/* Restyle WC notices to the hairline aesthetic */
body.woocommerce-cart .woocommerce-message,
body.woocommerce-cart .woocommerce-info,
body.woocommerce-cart .woocommerce-error{background:var(--vault-cream,#F4F2EE) !important;color:var(--vault-ink,#0A0A0A) !important;border:0 !important;border-left:1px solid var(--vault-ink,#0A0A0A) !important;border-radius:0 !important;padding:16px 20px !important;font-family:"Inter Tight",sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;margin:0 0 24px;list-style:none}
body.woocommerce-cart .woocommerce-message::before,
body.woocommerce-cart .woocommerce-info::before,
body.woocommerce-cart .woocommerce-error::before{display:none}
body.woocommerce-cart .woocommerce-message a.button,
body.woocommerce-cart .woocommerce-info a.button{background:transparent !important;color:var(--vault-ink,#0A0A0A) !important;border:1px solid var(--vault-ink,#0A0A0A) !important;border-radius:0 !important;padding:6px 14px !important;font-size:11px !important;letter-spacing:.06em;text-transform:uppercase;filter:none !important;margin-left:12px}

/* Empty cart state */
body.woocommerce-cart .cart-empty.woocommerce-info{text-align:center;border:0 !important;border-left:0 !important;background:transparent !important;font-family:"Inter Tight",sans-serif;font-size:14px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-mute,#9A9A9A);padding:64px 0 !important;margin:0 !important}
body.woocommerce-cart .return-to-shop{text-align:center;margin:0 0 64px}
body.woocommerce-cart .return-to-shop .button{background:var(--vault-ink,#0A0A0A) !important;color:#fff !important;border-radius:0 !important;padding:16px 28px !important;font-family:"Inter Tight",sans-serif;font-size:12px !important;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;border:0 !important;filter:none !important}
body.woocommerce-cart .return-to-shop .button:hover{background:var(--vault-ink-2,#1F1F1F) !important}

/* When cart is empty, drop the two-column grid so the message centers */
body.woocommerce-cart .woocommerce:has(.cart-empty){display:block}

/* ===== VAULT CART STEP 6 END ===== */

/* ===== VAULT CART TRIAGE BEGIN =====
 * Royal Elementor Addons overrides the WC mini-cart template with its own
 * .wpr-woo-mini-cart markup (image / name-and-quantity / remove). The base
 * drawer CSS targets vanilla WC. These rules layer on top so the drawer
 * matches UVU regardless of which template is active.
 */

/* Drop the grid declared in the base block; relayout for WPR DOM */
.vault-bag-drawer li.mini_cart_item,
.vault-bag-drawer li.woocommerce-mini-cart-item{
  display:grid;
  grid-template-columns:72px 1fr auto;
  grid-template-rows:auto auto;
  column-gap:14px;row-gap:4px;
  align-items:start;
  padding:20px 0;
  position:relative;
}

/* WPR markup placement */
.vault-bag-drawer .wpr-mini-cart-image{grid-column:1;grid-row:1 / span 2}
.vault-bag-drawer .wpr-mini-cart-image a{display:block}
.vault-bag-drawer .wpr-mini-cart-image img{width:72px;height:90px;object-fit:cover;background:var(--vault-cream,#F4F2EE);display:block;margin:0;border-radius:0}

.vault-bag-drawer .wpr-mini-cart-name-and-quantity{display:contents}
.vault-bag-drawer .wpr-mini-cart-product-name{grid-column:2;grid-row:1;min-width:0;padding-right:8px}
.vault-bag-drawer .wpr-mini-cart-product-name a{color:var(--vault-ink,#0A0A0A);text-decoration:none;display:block}
.vault-bag-drawer .wpr-mini-cart-name,
.vault-bag-drawer .wpr-mini-cart-product-name a{font-family:"Inter Tight",sans-serif;font-weight:500;font-size:12px;letter-spacing:.04em;text-transform:uppercase;line-height:1.45;color:var(--vault-ink,#0A0A0A)}

.vault-bag-drawer .wpr-mini-cart-quantity{grid-column:3;grid-row:1;justify-self:end;text-align:right;white-space:nowrap;padding-top:0}
.vault-bag-drawer .wpr-mini-cart-quantity .quantity{font-family:"Inter Tight",sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;color:var(--vault-ink,#0A0A0A);text-transform:none}

.vault-bag-drawer .wpr-mini-cart-remove{grid-column:3;grid-row:2;justify-self:end}
.vault-bag-drawer .wpr-mini-cart-remove a.remove,
.vault-bag-drawer .wpr-mini-cart-remove a.wpr-remove-item-from-mini-cart{position:static !important;top:auto;right:auto;display:inline-flex;align-items:center;gap:0;background:none !important;border:0;padding:0;width:auto;height:auto;color:var(--vault-mute,#9A9A9A) !important;font-size:0 !important;line-height:1;text-decoration:none}
.vault-bag-drawer .wpr-mini-cart-remove a.remove .woostify-svg-icon,
.vault-bag-drawer .wpr-mini-cart-remove a.remove svg{display:none !important}
.vault-bag-drawer .wpr-mini-cart-remove a.remove::after,
.vault-bag-drawer .wpr-mini-cart-remove a.wpr-remove-item-from-mini-cart::after{content:"Remove";font-family:"Inter Tight",sans-serif;font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--vault-mute,#9A9A9A);text-decoration:underline;text-underline-offset:3px}
.vault-bag-drawer .wpr-mini-cart-remove a.remove:hover::after,
.vault-bag-drawer .wpr-mini-cart-remove a.wpr-remove-item-from-mini-cart:hover::after{color:var(--vault-ink,#0A0A0A)}

/* WPR separator between items duplicates our hairline — hide it */
.vault-bag-drawer .wpr-mini-cart-separator{display:none}

/* Each item already gets a bottom hairline from the row border via .mini_cart_item;
   add explicit border to win against WPR's own rules */
.vault-bag-drawer li.mini_cart_item{border-bottom:1px solid rgba(10,10,10,.08) !important;list-style:none !important}
.vault-bag-drawer li.mini_cart_item:last-child{border-bottom:0 !important}

/* WPR also outputs its own total/buttons under wpr classes — hide them too */
.vault-bag-drawer .wpr-mini-cart-total,
.vault-bag-drawer .wpr-mini-cart-buttons,
.vault-bag-drawer p.woocommerce-mini-cart__total,
.vault-bag-drawer p.woocommerce-mini-cart__buttons{display:none !important}

/* ===== VAULT CART TRIAGE END ===== */

/* ===== VAULT CART TRIAGE 2 BEGIN =====
 * Round-2 polish + drawer-doesn't-appear bugfix:
 *   - Hide Woostify's #shop-cart-sidebar AND #woostify-overlay entirely
 *     (the latter is what produced the dark backdrop with no drawer).
 *   - Lift drawer z-index above Woostify's 200 layer.
 *   - Force open state with !important so nothing can hide it.
 *   - Smaller product title font in drawer line items.
 *   - Extra bottom padding on the drawer foot (safe-area aware).
 */

/* Kill Woostify's native side cart + its global overlay */
#shop-cart-sidebar,
#shop-cart-sidebar + .cart-sidebar-overlay,
.cart-sidebar-overlay,
#close-cart-sidebar-btn,
#woostify-overlay{display:none !important;visibility:hidden !important;opacity:0 !important;pointer-events:none !important}
html.cart-sidebar-open{overflow:auto !important}
html.cart-sidebar-open #woostify-overlay,
.cart-sidebar-open #woostify-overlay{display:none !important;opacity:0 !important;visibility:hidden !important}

/* Lift our drawer above everything Woostify owns */
.vault-bag-backdrop{z-index:99998 !important}
.vault-bag-drawer{z-index:99999 !important}

/* Force drawer open state to win against any inherited transforms */
.vault-bag-drawer.is-open{
  transform:translateX(0) !important;
  visibility:visible !important;
  pointer-events:auto !important;
  opacity:1 !important;
}
.vault-bag-backdrop.is-open{
  opacity:1 !important;
  pointer-events:auto !important;
}

/* Smaller product title in drawer items */
.vault-bag-drawer .wpr-mini-cart-name,
.vault-bag-drawer .wpr-mini-cart-product-name a,
.vault-bag-drawer li.mini_cart_item > a:not(.remove){
  font-size:11px !important;
  line-height:1.4 !important;
}

/* Drawer foot — extra bottom padding + safe-area inset for mobile */
.vault-bag-drawer__foot{
  padding-bottom:32px;
  padding-bottom:calc(env(safe-area-inset-bottom, 0px) + 32px);
}

/* More vertical breathing room between PROCEED TO CHECKOUT and View cart */
.vault-bag-drawer__view-cart{
  margin-top:18px;
  padding:6px 0;
}

/* Kill Woostify parent's `.remove_from_cart_button:hover{transform:rotate(90deg)}` rule
   that rotates our REMOVE caption 90deg on hover inside any
   .widget_shopping_cart_content (mini cart + drawer + WPR mini-cart). */
.widget_shopping_cart_content .remove_from_cart_button,
.widget_shopping_cart_content .remove_from_cart_button:hover,
.widget_shopping_cart_content a.remove,
.widget_shopping_cart_content a.remove:hover,
.vault-bag-drawer a.remove,
.vault-bag-drawer a.remove:hover,
.vault-bag-drawer a.remove_from_cart_button,
.vault-bag-drawer a.remove_from_cart_button:hover,
.vault-bag-drawer .wpr-mini-cart-remove a,
.vault-bag-drawer .wpr-mini-cart-remove a:hover{transform:none !important;writing-mode:horizontal-tb !important}

/* ===== VAULT CART TRIAGE 2 END ===== */

/* ===== VAULT CART TRIAGE 3 BEGIN =====
 * UVU-style line item layout (small thumb left, name + variation + qty x price
 * stacked right, REMOVE pinned top-right). Replaces the previous grid attempt
 * that was letting the WPR image stretch full-width inside the drawer.
 * Force-mode: !important everywhere because both Woostify parent + WPR
 * frontend.css hit the same selectors.
 */

.vault-bag-drawer ul.cart_list,
.vault-bag-drawer ul.product_list_widget,
.vault-bag-drawer ul.wpr-woo-mini-cart,
.vault-bag-drawer ul.woocommerce-mini-cart{
  list-style:none !important;
  margin:0 !important;
  padding:0 !important;
  display:block !important;
}

.vault-bag-drawer li.mini_cart_item,
.vault-bag-drawer li.woocommerce-mini-cart-item{
  position:relative !important;
  display:flex !important;
  flex-direction:row !important;
  align-items:flex-start !important;
  gap:14px !important;
  padding:18px 0 !important;
  margin:0 !important;
  border-bottom:1px solid rgba(10,10,10,.08) !important;
  list-style:none !important;
}
.vault-bag-drawer li.mini_cart_item:last-child,
.vault-bag-drawer li.woocommerce-mini-cart-item:last-child{border-bottom:0 !important}

/* Reset any stray <a> wrapping the whole row in vanilla WC mini-cart */
.vault-bag-drawer li.mini_cart_item > a:not(.remove):not(.remove_from_cart_button){
  display:contents !important;
  color:inherit !important;
  text-decoration:none !important;
}

/* --- IMAGE COLUMN: fixed 70x88 --- */
.vault-bag-drawer .wpr-mini-cart-image{
  flex:0 0 70px !important;
  width:70px !important;
  max-width:70px !important;
  display:block !important;
  position:static !important;
  margin:0 !important;
  padding:0 !important;
  grid-column:auto !important;
  grid-row:auto !important;
}
.vault-bag-drawer .wpr-mini-cart-image a{display:block !important;width:70px !important;height:88px !important;line-height:0 !important}
.vault-bag-drawer .wpr-mini-cart-image img,
.vault-bag-drawer li.mini_cart_item img,
.vault-bag-drawer li.woocommerce-mini-cart-item img{
  width:70px !important;
  height:88px !important;
  max-width:70px !important;
  min-width:0 !important;
  object-fit:cover !important;
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:var(--vault-cream,#F4F2EE) !important;
  float:none !important;
  position:static !important;
}

/* --- INFO COLUMN: name + variation + qty x price stacked --- */
.vault-bag-drawer .wpr-mini-cart-name-and-quantity{
  flex:1 1 auto !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:stretch !important;
  gap:4px !important;
  min-width:0 !important;
  padding-right:70px !important; /* room for the absolute REMOVE link */
  position:static !important;
  grid-column:auto !important;
  grid-row:auto !important;
}

.vault-bag-drawer .wpr-mini-cart-product-name{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  grid-column:auto !important;
  grid-row:auto !important;
  justify-self:auto !important;
}
.vault-bag-drawer .wpr-mini-cart-product-name a,
.vault-bag-drawer .wpr-mini-cart-name,
.vault-bag-drawer li.mini_cart_item > a:not(.remove):not(.remove_from_cart_button){
  display:block !important;
  font-family:"Inter Tight",sans-serif !important;
  font-weight:500 !important;
  font-size:11px !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  line-height:1.4 !important;
  color:var(--vault-ink,#0A0A0A) !important;
  text-decoration:none !important;
  white-space:normal !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

/* Variation list (size, colour) sits just under the title */
.vault-bag-drawer dl.variation{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  font-family:"Inter",sans-serif !important;
  font-size:11px !important;
  letter-spacing:.02em !important;
  color:var(--vault-mute,#9A9A9A) !important;
  text-transform:uppercase !important;
  grid-template-columns:none !important;
}
.vault-bag-drawer dl.variation dt,
.vault-bag-drawer dl.variation dd{
  display:inline !important;
  margin:0 !important;
  padding:0 !important;
  font-weight:400 !important;
  color:inherit !important;
}
.vault-bag-drawer dl.variation dt{margin-right:4px !important}
.vault-bag-drawer dl.variation dt::after{content:":"}
.vault-bag-drawer dl.variation dd p{display:inline !important;margin:0 !important}
.vault-bag-drawer dl.variation dd::after{content:"\A";white-space:pre}

/* qty x price line */
.vault-bag-drawer .wpr-mini-cart-quantity{
  display:block !important;
  position:static !important;
  margin:0 !important;
  padding:0 !important;
  text-align:left !important;
  justify-self:auto !important;
  white-space:nowrap !important;
  grid-column:auto !important;
  grid-row:auto !important;
}
.vault-bag-drawer .wpr-mini-cart-quantity .quantity,
.vault-bag-drawer .quantity{
  font-family:"Inter Tight",sans-serif !important;
  font-size:11px !important;
  font-weight:500 !important;
  letter-spacing:.04em !important;
  color:var(--vault-ink,#0A0A0A) !important;
  text-transform:none !important;
  white-space:nowrap !important;
}

/* --- REMOVE: pinned top-right of the row --- */
.vault-bag-drawer .wpr-mini-cart-remove,
.vault-bag-drawer li.mini_cart_item > .remove,
.vault-bag-drawer li.mini_cart_item > a.remove,
.vault-bag-drawer li.mini_cart_item > a.remove_from_cart_button{
  position:absolute !important;
  top:18px !important;
  right:0 !important;
  margin:0 !important;
  padding:0 !important;
  width:auto !important;
  height:auto !important;
  grid-column:auto !important;
  grid-row:auto !important;
  justify-self:auto !important;
}
.vault-bag-drawer .wpr-mini-cart-remove a.remove,
.vault-bag-drawer .wpr-mini-cart-remove a.wpr-remove-item-from-mini-cart,
.vault-bag-drawer a.remove,
.vault-bag-drawer a.remove_from_cart_button{
  position:static !important;
  top:auto !important;
  right:auto !important;
  display:inline-block !important;
  background:none !important;
  border:0 !important;
  padding:0 !important;
  margin:0 !important;
  width:auto !important;
  height:auto !important;
  line-height:1 !important;
  font-size:0 !important;
  color:var(--vault-mute,#9A9A9A) !important;
  text-decoration:none !important;
  text-indent:0 !important;
  transform:none !important;
  writing-mode:horizontal-tb !important;
}
.vault-bag-drawer a.remove svg,
.vault-bag-drawer a.remove .woostify-svg-icon,
.vault-bag-drawer a.remove_from_cart_button svg,
.vault-bag-drawer a.remove_from_cart_button .woostify-svg-icon{display:none !important}
.vault-bag-drawer a.remove::after,
.vault-bag-drawer a.remove_from_cart_button::after{
  content:"Remove" !important;
  font-family:"Inter Tight",sans-serif !important;
  font-weight:500 !important;
  font-size:11px !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  text-decoration:underline !important;
  text-underline-offset:3px !important;
  color:var(--vault-mute,#9A9A9A) !important;
  display:inline-block !important;
  line-height:1 !important;
}
.vault-bag-drawer a.remove:hover::after,
.vault-bag-drawer a.remove_from_cart_button:hover::after{color:var(--vault-ink,#0A0A0A) !important}

/* Hide WPR's duplicate totals/buttons block — we render our own foot */
.vault-bag-drawer .wpr-mini-cart-total,
.vault-bag-drawer .wpr-mini-cart-buttons,
.vault-bag-drawer .wpr-mini-cart-separator,
.vault-bag-drawer .woocommerce-mini-cart__total,
.vault-bag-drawer .woocommerce-mini-cart__buttons{display:none !important}

/* ===== VAULT CART TRIAGE 3 END ===== */

/* ===== VAULT CART TRIAGE 4 BEGIN =====
 * /cart/ page lockdown: force flex layout on `.woocommerce` (grid-auto-flow
 * was placing the ShopBuilder `.rtsb-notice` div in the wrong cell which
 * collapsed `.cart_totals` to ~30px and made the H2 / Proceed button render
 * one letter per line). Also unwind every Woostify width / float / flex
 * rule on the totals card and its children.
 */

body.woocommerce-cart .woocommerce{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:wrap !important;
  align-items:flex-start !important;
  gap:64px !important;
  grid-template-columns:none !important;
}
body.woocommerce-cart .woocommerce > .rtsb-notice,
body.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper{
  flex:1 1 100% !important;
  width:100% !important;
  min-width:0 !important;
  order:0 !important;
  margin:0 !important;
}
body.woocommerce-cart .woocommerce > form.woocommerce-cart-form{
  flex:1 1 0 !important;
  min-width:0 !important;
  width:auto !important;
  margin:0 !important;
  order:1 !important;
  float:none !important;
}
body.woocommerce-cart .woocommerce > .cart-collaterals{
  flex:0 0 360px !important;
  width:360px !important;
  max-width:360px !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  float:none !important;
  order:2 !important;
}
@media (max-width:900px){
  body.woocommerce-cart .woocommerce{flex-direction:column !important;gap:32px !important}
  body.woocommerce-cart .woocommerce > .cart-collaterals{flex:1 1 100% !important;width:100% !important;max-width:100% !important}
}

/* Cart totals box: pure block, full width, normal text flow */
body.woocommerce-cart .cart-collaterals .cart_totals{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  float:none !important;
  margin:0 !important;
  padding:28px !important;
  border:1px solid rgba(10,10,10,.08) !important;
  background:transparent !important;
  box-sizing:border-box !important;
  writing-mode:horizontal-tb !important;
  word-break:normal !important;
  white-space:normal !important;
}

/* Heading: full width, horizontal text flow */
body.woocommerce-cart .cart_totals h2{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0 0 20px !important;
  padding:0 0 16px !important;
  border:0 !important;
  border-bottom:1px solid rgba(10,10,10,.08) !important;
  font-family:"Inter Tight",sans-serif !important;
  font-weight:500 !important;
  font-size:14px !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  color:var(--vault-ink,#0A0A0A) !important;
  text-align:left !important;
  white-space:nowrap !important;
  word-break:keep-all !important;
  writing-mode:horizontal-tb !important;
  text-orientation:mixed !important;
  float:none !important;
  line-height:1.3 !important;
}

/* Totals table */
body.woocommerce-cart .cart_totals table.shop_table{
  display:table !important;
  width:100% !important;
  border:0 !important;
  border-collapse:collapse !important;
  margin:0 !important;
  background:transparent !important;
}
body.woocommerce-cart .cart_totals .shop_table tr{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  justify-content:space-between !important;
  align-items:center !important;
  width:100% !important;
  border:0 !important;
  border-bottom:1px solid rgba(10,10,10,.08) !important;
}
body.woocommerce-cart .cart_totals .shop_table tr:last-child{border-bottom:0 !important}
body.woocommerce-cart .cart_totals .shop_table th,
body.woocommerce-cart .cart_totals .shop_table td{
  display:block !important;
  flex:0 1 auto !important;
  width:auto !important;
  border:0 !important;
  padding:14px 0 !important;
  background:transparent !important;
  font-family:"Inter Tight",sans-serif !important;
  font-size:12px !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  color:var(--vault-ink,#0A0A0A) !important;
  white-space:nowrap !important;
  text-align:left !important;
}
body.woocommerce-cart .cart_totals .shop_table td{text-align:right !important}
body.woocommerce-cart .cart_totals .order-total th,
body.woocommerce-cart .cart_totals .order-total td{font-size:13px !important;font-weight:600 !important}

/* Proceed-to-checkout wrapper + button */
body.woocommerce-cart .cart_totals .wc-proceed-to-checkout{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  padding:24px 0 0 !important;
  margin:0 !important;
  float:none !important;
  position:static !important;
  writing-mode:horizontal-tb !important;
}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
body.woocommerce-cart .wc-proceed-to-checkout .button{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  padding:18px 16px !important;
  margin:0 !important;
  position:static !important;
  bottom:auto !important;
  left:auto !important;
  right:auto !important;
  background:var(--vault-ink,#0A0A0A) !important;
  color:#fff !important;
  border:0 !important;
  border-radius:0 !important;
  font-family:"Inter Tight",sans-serif !important;
  font-weight:500 !important;
  font-size:13px !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  text-align:center !important;
  text-decoration:none !important;
  white-space:nowrap !important;
  word-break:keep-all !important;
  writing-mode:horizontal-tb !important;
  text-orientation:mixed !important;
  line-height:1.2 !important;
  float:none !important;
  box-shadow:none !important;
}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover,
body.woocommerce-cart .wc-proceed-to-checkout .button:hover{background:var(--vault-ink-2,#1F1F1F) !important;color:#fff !important}

/* Hide cross-sells (UVU has none) */
body.woocommerce-cart .cart-collaterals .cross-sells{display:none !important}

/* ===== VAULT CART TRIAGE 4 END ===== */

/* ===== VAULT ACCOUNT KILL BEGIN ===== */
/* Accounts disabled - hide every Woostify/WC account UI remnant. */
.sidebar-account,
.sidebar-menu-bottom .sidebar-account,
.my-account-login,
.my-account-login-link,
.tools-icon.my-account,
.site-tools .my-account,
.mobile-my-account,
.woocommerce-MyAccount-navigation,
.woostify-mini-cart .my-account-login,
.woocommerce-form-login,
.woocommerce-form-register,
#customer_login,
form.checkout_coupon ~ form.woocommerce-form-login,
.woocommerce-info.woocommerce-account-login-info { display: none !important; }
/* ===== VAULT ACCOUNT KILL END ===== */

/* ===== VAULT HEADER UVU-SLIM BEGIN ===== */
/* Full-bleed, thin UVU-style header. Overrides earlier .vault-header rules. */
.vault-header__inner {
  max-width: none;
  height: 40px;
  padding: 0 18px;
}
.vault-header__left,
.vault-header__right { gap: 18px; }
.vault-link,
.vault-link--btn { font-size: 11px; letter-spacing: 0.06em; }
.vault-wordmark__text { font-size: 13px; letter-spacing: 0.08em; font-weight: 600; }
.vault-country-pill { font-size: 11px; padding: 4px 10px; }
.vault-link--bag .vault-bag-count { font-size: 11px; }
/* Dropdown panel reseats closer to the new shorter header. */
.vault-info-dropdown__panel { top: calc(100% + 6px); }
/* Tighten the mini hamburger so it lines up with the new height. */
@media (max-width: 720px) {
  .vault-header__inner { height: 40px; padding: 0 14px; }
  .vault-wordmark__text { font-size: 13px; }
}
/* ===== VAULT HEADER UVU-SLIM END ===== */

/* ===== VAULT GRID UVU-WIDE BEGIN ===== */
/* Full-bleed, 4-up UVU-style product grids. Applies to /, /shop/ and /product-category/*. */

/* 1) HOME commerce container goes edge-to-edge with tight padding. */
.vault-home__commerce {
  max-width: none;
  padding: 56px 16px 96px;
}

/* 2) SHOP + CATEGORY archive containers go edge-to-edge. */
.woocommerce.archive .woostify-container,
.woocommerce-page .woostify-container,
body.post-type-archive-product .woostify-container,
body.tax-product_cat .woostify-container,
body.tax-product_brand .woostify-container {
  max-width: none !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}

/* 3) The product grids themselves — 4-up on desktop, 3-up tablet, 2-up mobile. */
.woocommerce ul.products,
.woocommerce-page ul.products,
.vault-home .products {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 56px 16px !important;
}
@media (max-width: 1200px) {
  .woocommerce ul.products,
  .woocommerce-page ul.products,
  .vault-home .products {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 48px 16px !important;
  }
}
@media (max-width: 768px) {
  .woocommerce ul.products,
  .woocommerce-page ul.products,
  .vault-home .products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 32px 12px !important;
  }
}

/* 4) Card text scales down a touch so 4-up reads clean at smaller cell widths. */
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 12px !important; }
.woocommerce ul.products li.product .price { font-size: 12px !important; }
.woocommerce ul.products li.product .vault-product-colour { font-size: 11px !important; }

/* 5) Tighten the shop archive top-row + load more padding to match the new edge feel. */
.vault-load-more { padding: 72px 0 32px; }
/* ===== VAULT GRID UVU-WIDE END ===== */

/* ===== VAULT WORDMARK IMG BEGIN ===== */
.vault-wordmark { line-height: 0; }
.vault-wordmark__img {
  display: block;
  height: 20px;
  width: auto;
  max-width: 220px;
  object-fit: contain;
}
@media (max-width: 720px) {
  .vault-wordmark__img { height: 18px; max-width: 180px; }
}
/* ===== VAULT WORDMARK IMG END ===== */

/* ===== VAULT HOME FULL-BLEED BEGIN ===== */
body.page-template-home-v2 .woostify-container,
body.page-template-home-v2 #primary,
body.page-template-home-v2 .content-area,
body.page-template-home-v2 #main.site-main,
body.page-template-home-v2 .site-content {
  max-width: none !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  float: none !important;
}
body.page-template-home-v2 .vault-home__commerce {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 56px 16px 96px !important;
  box-sizing: border-box !important;
}
body.page-template-home-v2 .vault-home__commerce .vault-grid__wrap {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
}
@media (max-width: 768px) {
  body.page-template-home-v2 .vault-home__commerce {
    padding: 32px 12px 64px !important;
  }
}
/* ===== VAULT HOME FULL-BLEED END ===== */

/* ===== VAULT CARD IMAGE LOCK BEGIN ===== */
/* Force every product card image area to a strict 4:5 box, regardless of whether the
   product has a hover-swap image, a real photo, or an SVG placeholder. Image fills via
   object-fit: cover. */
.products li.product .product-loop-image-wrapper,
.woocommerce ul.products li.product .product-loop-image-wrapper {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  aspect-ratio: 4 / 5 !important;
  overflow: hidden !important;
  background: var(--v-cream, #F4F2EE);
  margin: 0 !important;
  padding: 0 !important;
}
.products li.product .product-loop-image-wrapper > a,
.woocommerce ul.products li.product .product-loop-image-wrapper > a,
.products li.product .product-loop-image-wrapper .woocommerce-LoopProduct-link,
.woocommerce ul.products li.product .product-loop-image-wrapper .woocommerce-LoopProduct-link {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
}
.products li.product .product-loop-image-wrapper img,
.woocommerce ul.products li.product .product-loop-image-wrapper img,
.products li.product .product-loop-image-wrapper .product-loop-image,
.woocommerce ul.products li.product .product-loop-image-wrapper .product-loop-image {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
  object-position: center !important;
  display: block !important;
  aspect-ratio: auto !important;
}
.products li.product .product-loop-image-wrapper .product-loop-hover-image,
.woocommerce ul.products li.product .product-loop-image-wrapper .product-loop-hover-image {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  z-index: 1 !important;
}
.products li.product .product-loop-image-wrapper .product-loop-image {
  z-index: 2 !important;
  transition: opacity 0.3s ease;
}
.products li.product:hover .product-loop-image-wrapper .product-loop-image {
  opacity: 0;
}
/* ===== VAULT CARD IMAGE LOCK END ===== */

/* ===== VAULT PRODUCT CARD COMPACT BEGIN ===== */
/* Tight loop card caption — stacked name / price / colour, all small caps, no grid trickery on <li>. */
.products li.product,
.woocommerce ul.products li.product {
  display: block !important;
  position: relative !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
}
.products li.product .product-loop-wrapper,
.woocommerce ul.products li.product .product-loop-wrapper {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
.products li.product .product-loop-content,
.woocommerce ul.products li.product .product-loop-content {
  display: block !important;
  text-align: left !important;
  padding: 10px 0 0 !important;
  margin: 0 !important;
  width: 100% !important;
}
.products li.product .product-loop-meta,
.woocommerce ul.products li.product .product-loop-meta,
.products li.product .animated-meta,
.woocommerce ul.products li.product .animated-meta {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  width: 100% !important;
}
.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--v-font-display) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: var(--v-tracking-caps) !important;
  text-transform: uppercase !important;
  color: var(--v-ink) !important;
  margin: 0 0 4px !important;
  padding: 0 !important;
  line-height: 1.4 !important;
}
.products li.product .price,
.woocommerce ul.products li.product .price {
  font-family: var(--v-font-display) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: var(--v-tracking-caps) !important;
  text-transform: uppercase !important;
  color: var(--v-ink) !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.4 !important;
  display: block !important;
  position: static !important;
  transform: none !important;
}
.products li.product .vault-product-colour,
.woocommerce ul.products li.product .vault-product-colour {
  font-family: var(--v-font-body) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  text-transform: capitalize !important;
  color: var(--v-mute) !important;
  margin: 4px 0 0 !important;
  padding: 0 !important;
  line-height: 1.4 !important;
  display: block !important;
}
/* ===== VAULT PRODUCT CARD COMPACT END ===== */

/* ===== VAULT SHOP OVERLAY TYPE BEGIN ===== */
/* Mega menu / slide-out overlay typography + head bar match the header (40px tall, 11px type). */
.vault-overlay__head {
  height: 40px;
  min-height: 40px;
  padding: 0 18px;
  box-sizing: border-box;
}
.vault-overlay__close {
  width: 24px;
  height: 24px;
  font-size: 20px;
  margin-right: -4px;
}
.vault-overlay__list a {
  font-size: 11px !important;
  letter-spacing: 0.06em;
  padding: 6px 0;
  line-height: 1.2;
}
.vault-overlay__heading {
  font-size: 11px !important;
  letter-spacing: 0.06em;
}
.vault-overlay__eyebrow,
.vault-overlay__shop-all {
  font-size: 11px !important;
  letter-spacing: 0.06em;
}
@media (max-width: 768px) {
  .vault-overlay__head { height: 40px; min-height: 40px; padding: 0 14px; }
  .vault-overlay__list a { font-size: 11px !important; }
}
/* ===== VAULT SHOP OVERLAY TYPE END ===== */

/* ===== VAULT BAG DRAWER TYPE BEGIN ===== */
/* Mini-cart drawer top bar matches the site header (40px tall, 11px type). */
.vault-bag-drawer__head {
  height: 40px;
  min-height: 40px;
  padding: 0 18px;
  box-sizing: border-box;
}
.vault-bag-drawer__title {
  font-size: 11px !important;
  letter-spacing: 0.06em;
  line-height: 1;
}
.vault-bag-drawer__close {
  width: 24px;
  height: 24px;
  font-size: 20px;
  margin-right: -4px;
}
.vault-bag-drawer__body {
  padding: 0 18px;
}
.vault-bag-drawer__foot {
  padding: 16px 18px 24px;
}
.vault-bag-drawer__subtotal {
  font-size: 11px !important;
  letter-spacing: 0.06em;
}
.vault-bag-drawer__checkout {
  font-size: 11px !important;
  letter-spacing: 0.06em;
  padding: 14px 16px;
}
.vault-bag-drawer__view-cart {
  font-size: 11px !important;
  letter-spacing: 0.06em;
}
/* ===== VAULT BAG DRAWER TYPE END ===== */

/* ===== VAULT POLICY PAGES TYPE BEGIN ===== */
/* Editorial layout for Gutenberg-block pages (Shipping, Returns, Terms, Privacy, About, Contact). */
body.page-template-default article.page {
  max-width: 720px;
  margin: 0 auto;
  padding: 64px 18px 96px;
  font-family: var(--v-font-body), 'Inter', system-ui, sans-serif;
  color: var(--v-ink);
}
body.page-template-default article.page > * + * { margin-top: 18px; }
body.page-template-default article.page > h2 + * { margin-top: 10px; }
body.page-template-default article.page p,
body.page-template-default article.page li {
  font-family: var(--v-font-body), 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  font-weight: 400;
  letter-spacing: 0;
  color: var(--v-ink);
  margin: 0;
}
body.page-template-default article.page h2,
body.page-template-default article.page h2.wp-block-heading {
  font-family: var(--v-font-display), 'Inter Tight', sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--v-ink);
  margin: 36px 0 0;
  line-height: 1.2;
}
body.page-template-default article.page h2:first-child,
body.page-template-default article.page > *:first-child { margin-top: 0; }
body.page-template-default article.page h3 {
  font-family: var(--v-font-display), 'Inter Tight', sans-serif;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--v-mute);
  margin: 24px 0 0;
}
body.page-template-default article.page ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
body.page-template-default article.page ul li {
  padding: 6px 0;
  border-bottom: 1px solid var(--v-line);
}
body.page-template-default article.page ul li:last-child { border-bottom: 0; }
body.page-template-default article.page a {
  color: var(--v-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
body.page-template-default article.page a:hover { color: var(--v-mute); }
body.page-template-default article.page strong { font-weight: 500; letter-spacing: 0.04em; }
@media (max-width: 768px) {
  body.page-template-default article.page { padding: 40px 18px 64px; }
  body.page-template-default article.page h2,
  body.page-template-default article.page h2.wp-block-heading { font-size: 11px; margin-top: 28px; }
  body.page-template-default article.page p,
  body.page-template-default article.page li { font-size: 14px; }
}
/* ===== VAULT POLICY PAGES TYPE END ===== */

/* ===== VAULT TYPE UNIFY BEGIN ===== */
/* Unify the whole site on the header's type system:
   Inter Tight, weight 500, header-scale sizes for UI/headings,
   readable 14px sentence-case body. Everything not explicitly
   excluded (wordmark, OUT-OF-STOCK chip, etc.) inherits this. */

:root {
  --v-font-body: 'Inter Tight', 'Inter', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --v-type-size-ui: 11px;
  --v-type-size-ui-md: 12px;
  --v-type-size-ui-lg: 13px;
  --v-type-size-body: 14px;
  --v-type-line-body: 1.5;
}

/* Cast a wide net so Elementor / Woostify / WC / ShopBuilder all inherit Inter Tight. */
body,
input, textarea, select, button,
p, li, a, span, label, em, strong, small, blockquote, address, cite, dt, dd,
.elementor-widget-container,
.elementor-widget-text-editor, .elementor-widget-text-editor *,
.elementor-widget-heading, .elementor-widget-heading *,
.elementor-button-text,
.woocommerce, .woocommerce *,
.woostify-container, .woostify-container *,
.entry-content, .entry-content * {
  font-family: var(--v-font-display) !important;
}

body {
  font-size: var(--v-type-size-body);
  line-height: var(--v-type-line-body);
  font-weight: 500;
  letter-spacing: 0.01em;
  text-transform: none;
}

/* Sentence-case readable body copy. */
p, li, dd, dt,
.entry-content p, .entry-content li,
.elementor-widget-text-editor,
.elementor-widget-text-editor *,
.woocommerce-product-details__short-description,
.woocommerce-product-details__short-description * {
  font-family: var(--v-font-display) !important;
  font-size: var(--v-type-size-body) !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
  line-height: 1.5 !important;
}

/* Headings — all-caps, weight 500, header tracking. */
h1, h2, h3, h4, h5, h6,
.elementor-heading-title,
.woocommerce-products-header__title,
.product_title,
.entry-title {
  font-family: var(--v-font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  line-height: 1.15 !important;
  margin: 0 0 12px;
}
h1, .product_title, .entry-title, .woocommerce-products-header__title { font-size: 22px !important; }
h2 { font-size: 18px !important; }
h3 { font-size: 16px !important; }
h4 { font-size: 14px !important; }
h5 { font-size: 13px !important; }
h6 { font-size: 12px !important; }

/* Links + buttons + nav — header micro scale, +0.06em tracking. */
a, button, .button, .wp-element-button,
.elementor-button, .elementor-button-text,
.woocommerce a.button, .woocommerce button.button,
.woocommerce input.button, .woocommerce #respond input#submit,
.woocommerce #place_order,
.single_add_to_cart_button,
nav a, .menu-item a {
  font-family: var(--v-font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
}
.button, .wp-element-button,
.elementor-button, .single_add_to_cart_button,
.woocommerce a.button, .woocommerce button.button,
.woocommerce input.button, .woocommerce #respond input#submit,
.woocommerce #place_order {
  font-size: var(--v-type-size-ui-lg) !important;
}

/* Inline body links: keep sentence-case so paragraphs stay readable. */
p a, li a, .entry-content a, .woocommerce-product-details__short-description a {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-size: inherit !important;
}

/* Form fields — Inter Tight at 13px, sentence-case so users can read what they typed. */
input[type="text"], input[type="email"], input[type="password"],
input[type="search"], input[type="number"], input[type="tel"],
input[type="url"], input[type="date"], textarea, select {
  font-family: var(--v-font-display) !important;
  font-size: var(--v-type-size-ui-lg) !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
}
::placeholder {
  font-family: var(--v-font-display) !important;
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-weight: 500 !important;
}
label, .woocommerce form .form-row label {
  font-family: var(--v-font-display) !important;
  font-size: var(--v-type-size-ui) !important;
  font-weight: 500 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
}

/* Prices everywhere stay UI-scale. */
.woocommerce-Price-amount, .price, .amount,
.cart-subtotal, .order-total, .woocommerce-Price-currencySymbol {
  font-family: var(--v-font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0.04em !important;
  font-size: var(--v-type-size-ui-lg) !important;
}

/* Product card text — header family + tracking. */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .price,
.vault-product-colour {
  font-family: var(--v-font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
}

/* Tables (cart, order summary, account). */
table, table th, table td,
.woocommerce table, .woocommerce table th, .woocommerce table td,
.shop_table, .shop_table th, .shop_table td {
  font-family: var(--v-font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0.04em !important;
  font-size: var(--v-type-size-ui-lg) !important;
  text-transform: none !important;
}
.shop_table th, .woocommerce table th {
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  font-size: var(--v-type-size-ui) !important;
}

/* Preserved exceptions — keep their existing spec. */
.vault-wordmark__text { font-weight: 600 !important; letter-spacing: 0.08em !important; }
.vault-link, .vault-link--btn,
.vault-country-pill,
.vault-link--bag .vault-bag-count { font-weight: 500 !important; }
/* OUT OF STOCK chip uses its own size — leave alone. */
.woocommerce ul.products li.product.outofstock::before { font-size: 11px !important; letter-spacing: 0.06em !important; }
/* ===== VAULT TYPE UNIFY END ===== */

/* ===== VAULT FOOTER ADDRESS BEGIN ===== */
.vault-footer__address {
  font-style: normal;
  font-family: var(--v-font-display);
  font-size: 12px;
  line-height: 1.9;
  letter-spacing: var(--v-tracking-caps);
  text-transform: uppercase;
  color: var(--v-ink);
  margin: 0;
}
.vault-footer__address br { line-height: inherit; }
/* Make the cols row stretch to fit the new column at desktop widths */
@media (min-width: 721px) {
  .vault-footer__cols { grid-template-columns: 1fr 1fr; gap: 64px; }
}
/* ===== VAULT FOOTER ADDRESS END ===== */
