/** Shopify CDN: Minification failed

Line 1556:36 Unexpected "*"

**/
/* Bowsers custom font aliases to prevent Klaviyo font collision */
@font-face {
  font-family: 'BowsersPoppins';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('Poppins-Bold.ttf') format('truetype');
}

@font-face {
  font-family: 'BowsersPoppins';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('Poppins-Bold.ttf') format('truetype');
}

@font-face {
  font-family: 'BowsersPoppinsSemi';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('Poppins-SemiBold.ttf') format('truetype');
}
@media (min-width: 1000px) {
  .rendor-image .product-gallery__carousel {
    display: flex;
    flex-wrap: wrap;
  }
  .product-gallery__media.snap-center {
    width: calc(50% - 30px);
    overflow: hidden;
  }
  .product-gallery__media.snap-center img {
    width: 100%;
    height: auto;
    object-fit: cover;
    object-position: center;
    display: block;
  }  
  /* .rendor-image[data-image-count="3"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="5"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="6"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="6"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="7"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="7"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="7"] .product-gallery__media.snap-center:nth-child(8),
  .rendor-image[data-image-count="8"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="8"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="9"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="9"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="9"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="10"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="10"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="10"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="10"] .product-gallery__media.snap-center:nth-child(11),
  .rendor-image[data-image-count="11"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="11"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="11"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="12"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="12"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="12"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="12"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="13"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="13"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="13"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="13"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="13"] .product-gallery__media.snap-center:nth-child(14),
  .rendor-image[data-image-count="14"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="14"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="14"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="14"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="15"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="15"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="15"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="15"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="15"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="16"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="16"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="16"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="16"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="16"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="17"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="17"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="17"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="17"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="17"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="18"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="18"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="18"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="18"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="18"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="19"] .product-gallery__media.snap-center:nth-child(19),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(4),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(7),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(10),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(13),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(16),
  .rendor-image[data-image-count="20"] .product-gallery__media.snap-center:nth-child(19){
    width: calc(100% - 30px)!important;
    max-width: 100%!important;
    aspect-ratio: 16/9;
  }  */
  .rendor-image .product-gallery[product-image-count="1"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="3"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="4"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="4"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="5"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="5"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="5"] .product-gallery__media:nth-child(5 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="6"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="6"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="7"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="7"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="7"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="8"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="8"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="8"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="8"] .product-gallery__media:nth-child(8 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="9"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="9"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="9"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="10"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="10"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="10"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="10"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="11"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="11"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="11"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="11"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="11"] .product-gallery__media:nth-child(11 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="12"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="12"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="12"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="12"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="13"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="13"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="13"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="13"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="13"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="14"] .product-gallery__media:nth-child(14 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="15"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="15"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="15"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="15"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="15"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="16"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="17"] .product-gallery__media:nth-child(17 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="18"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="19"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="20"] .product-gallery__media:nth-child(20 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="21"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="22"] .product-gallery__media:nth-child(22 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="23"] .product-gallery__media:nth-child(21 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(1 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(4 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(7 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(10 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(13 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(16 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(19 of .gallery-image),
  .rendor-image .product-gallery[product-image-count="24"] .product-gallery__media:nth-child(22 of .gallery-image) {
    width: calc(100% - 30px)!important;
    max-width: 100%!important;
    aspect-ratio: 16/9;
  }

  .product-gallery__media.snap-center.first-image.variant-image {
    display: block !important;
  }
  .product-gallery__media.variant-image {
    display: none;
  }
  product-rerender .product {display: flex;}
  product-rerender .product .rendor-image {width: 65%}
  product-rerender .product .product-info  {width: 35%}
  product-rerender .product .product-info .product-info--variant-changes-details {margin-bottom: 0}
}
@media screen and (max-width: 767px) {
  .product-gallery__image-list .product-gallery__carousel .product-gallery__media {
    height: 300px;
    min-height: 300px;
    max-height: 300px;
    overflow: hidden;
  }
  .product-gallery__image-list .product-gallery__carousel .product-gallery__media img {
    height: 100%;
    overflow: hidden;
    object-fit: cover;
  }
}
@media (max-width: 500px) {
  .header__secondary-nav {
    gap: 0.625rem 5px;
  }
}
/*
 * ---- V9B: keep hamburger/logo/search/cart on one row at 320-355px (Part 4) ----
 * .header lays out primary-nav/logo/secondary-nav as a grid with symmetric
 * minmax(0,1fr) side columns (kept equal so the logo stays optically centered). At
 * 320px each side column only gets 45px, but search+cart together need 61px
 * (28+28+5), so they wrap onto a second row and header height jumps from ~63px to
 * ~98px. Trimming column-gap and side padding (not the shared --container-gutter,
 * so nothing else on the page is affected) frees enough room for both columns to
 * reach ~65px without touching icon size, logo width, or the symmetric layout.
 * 360px and up already have enough natural room and are unaffected.
 */
@media (max-width: 355px) {
  .header {
    column-gap: 8px;
    padding-inline-start: 12px;
    padding-inline-end: 12px;
  }
}
/*
 * ---- V10B: close the 999px navigation-breakpoint collision ----
 * theme.css's @media (max-width:999px) rule for .md-max\:hidden silently fails
 * to match at exactly 999px (sub-pixel/scrollbar rounding puts the browser's
 * evaluated width a hair outside the boundary), so every .md-max\:hidden element
 * inside the header stays visible instead of hidden: the desktop primary-nav ul
 * (normally display:contents, unconditional in theme.css, wins the tie), the
 * dealer-login link, and the country/locale selector. That's what produces the
 * duplicate nav row, the oversized header, and the header-attributable overflow
 * at 999px. Restating display:none for these elements with a fractional upper
 * bound absorbs the rounding gap without touching .md-max\:hidden's behavior at
 * >=1000px, .contents' behavior anywhere else, or any element outside .header.
 */
@media (max-width: 999.98px) {
  .header .md-max\:hidden {
    display: none !important;
  }
}

/* Product page variant swatch hover */
.block_wrap_pdp_info,
.swatch-items--wrapper {position: relative;}
#variant-popup {
  position: absolute;
  top: 100%; /* below swatch */
  left: 0;
  transform: translateX(calc(-1 * var(--swatch-offset, 0px)));
  width: 100%; /* expands relative to product-card */
  opacity: 0;
  visibility: hidden;
  transition: all 0.25s ease;
  z-index: 10;
  pointer-events: none;
  background:#fff; 
  font-size:13px; 
  line-height:1.45;
  color:#111;
  border:1px solid #ddd; 
  border-radius:10px; 
  padding:10px 12px;
  box-shadow:0 8px 20px rgba(0,0,0,.18);
}
#closeSwatchBlock:hover {opacity: 1;}
#variant-popup #vp-img {
  width:100%;
  height:150px;
  object-fit:cover;
  margin-bottom:8px;
}
#variant-popup #vp-title {
  font-size: 1.2rem;
  font-weight:700;
  margin-bottom:6px;
}
#variant-popup #vp-desc {
  margin-top:6px;
}
.swatch-items--wrapper:hover #variant-popup {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
span.show-hover-triangle {
  display: none;
  position: absolute;
  height: 0;
  width: 0;
  bottom: -10px;
  left: 50%;
  transform: translateX(-50%);
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid #fff;
}  
.swatch-items--wrapper:hover span.show-hover-triangle {
  display: block;
  z-index: 11;
}
.variant-picker__option-info legend {font-weight: 600}
.product-info__block-item .variant-picker__option-values input:checked+.swatch-items--wrapper label.color-swatch {border: #33373c solid 2px !important;}

@media screen and (max-width: 767px) {
  #variant-popup #vp-img {
    height: 100px;
  }
}

/* Product story styles */
.product-content-below-main .image-with-text video {width: 100%}
@media screen and (min-width: 700px) {
  .product-content-below-main .image-with-text.image-with-text--reverse video {order: 999}
}

/* Lifestyle carousel (theme native scroll-carousel + arrows) */
.lifestyle-carousel-block { position: relative; }
.lifestyle-carousel-items {
  margin: 0;
  padding: 0;
  list-style: none;
}
/* Horizontal carousel layout: flex row + scroll (scroll-area has overflow: auto hidden) */
.lifestyle-carousel-container .lifestyle-carousel-items.lifestyle-carousel-items--native {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 32px;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.lifestyle-carousel-items.lifestyle-carousel-items--native .lifestyle-carousel-item {
  flex: 0 0 auto;
  width: 100%;
  min-width: 100%;
  box-sizing: border-box;
}
@media screen and (min-width: 1400px) {
  .lifestyle-carousel-items.lifestyle-carousel-items--native .lifestyle-carousel-item {
    min-width: calc((100% - 32px) / 2);
    width: calc((100% - 32px) / 2);
  }
}
.lifestyle-carousel-items .lifestyle-carousel-item img {
  aspect-ratio: 930/524;
  object-fit: cover;
  width: 100%;
  height: auto;
}
.lifestyle-carousel-items .lifestyle-carousel-item-wrapper {
  position: relative;
}
.lifestyle-carousel-items .lifestyle_carousel-caption {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(0, 0, 0, 0.4);
  color: white;
  font-weight: 600;
  font-size: 16px;
  text-align: center;
  padding: 1rem;
}

/* Bowsers difference */
h2.bowsers-difference-heading {
  font-size: 3rem;
  padding-bottom: 3rem;
}
.bowsers-difference-container {
  display: flex;
  gap: 1.25rem;
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  margin: 0;
  padding: 0;
  list-style: none
}
.bowsers-difference-container .bowsers-difference-item {
  width: 33.33%;
  max-width: 33.33%;
  padding: 2.5rem 1.25rem;
}
.bowsers-difference-container .bowsers-difference-item img {
  width: 5.5rem;
  height: auto;
  aspect-ratio: 1 / 1;
  margin-bottom: 1.5rem;
}
.bowsers-difference-container .bowsers-difference-item h3 {
  font-size: 2.5rem;
  line-height: 3rem;
  padding-bottom: .5rem;
}
.bowsers-difference-container .bowsers-difference-item p {
  font-size: 1.375rem;
}
@media screen and (max-width: 767px) {
  .bowsers-difference-container::-webkit-scrollbar {
    display: none;
  }  
  .bowsers-difference-container .bowsers-difference-item {
    width: 100%;
    max-width: 100%;
    min-width: 75%;
    padding: 2rem 1.25rem;
  }
  h2.bowsers-difference-heading {font-size: 2rem}
  .bowsers-difference-container .bowsers-difference-item img {width: 5rem;}
  .bowsers-difference-container .bowsers-difference-item h3 {
    font-size: 2rem;
    padding-bottom: 1.5rem;
    line-height: 1.2;
  }
  .bowsers-difference-container .bowsers-difference-item p {font-size: 1.125rem;}
}

/* Recommended for you */
.shopify-section--related-products .section-header h2 {
  font-size: 40px;
  padding-bottom: 20px;
}
.shopify-section--related-products .floating-controls-container .product-list {
  justify-content: flex-start!important;
}

/* Universal padding for Rich Text sections when “Remove vertical spacing” is ON */
.shopify-section--rich-text .color-scheme:not(.section-spacing) {
  padding-top: 32px !important;
  padding-bottom: 24px !important;
}

/* Optional: tighter spacing between headline and subline inside Rich Text */
.shopify-section--rich-text .prose .h1 {
  margin-bottom: 8px;
}

/* Mobile adjustment */
@media (max-width: 749px){
  .shopify-section--rich-text .color-scheme:not(.section-spacing) {
    padding-top: 20px !important;
    padding-bottom: 16px !important;
  }
  /* Bowsers difference: mobile headline height reserve (2 lines) 
     Added: 2025-12-18 (Connor) */
  .bowsers-difference-container .bowsers-difference-item > h3 {
    min-height: calc(2rem * 1.2 * 2); /* font-size 2rem, line-height 1.2, 2 lines */
  }
}
/* ===========================
   Bowsers difference: align body copy across pillar cards
   Fix: reserve 2-line headline space + eliminate rich text margin collapse
   Added: 2025-12-18 (Connor)
   =========================== */

/* Reserve consistent headline block height */
.bowsers-difference-container .bowsers-difference-item > h3 {
  margin: 0; /* remove default H3 margins that vary by browser */
  min-height: 6rem; /* desktop: 2 lines x your desktop line-height (3rem) */
  padding-bottom: .5rem; /* keep your existing spacing intention */
}

/* Prevent paragraph margin collapse and normalize spacing */
.bowsers-difference-container .bowsers-difference-item .metafield-rich_text_field {
  display: flow-root; /* stops margin-collapsing with child <p> */
}

.bowsers-difference-container .bowsers-difference-item .metafield-rich_text_field > p {
  margin: 0; /* remove default p margins so spacing is consistent */
}

/* Optional: hide the empty first paragraph Shopify outputs */
.bowsers-difference-container .bowsers-difference-item .metafield-rich_text_field > p:empty {
  display: none;
}
/* ===========================
   Bowsers difference: vertically center 1-line headlines within the 2-line reserve
   Note: makes single-line headings sit nicer next to 2-line headings
   Added: 2025-12-18 (Connor)
   =========================== */
.bowsers-difference-container .bowsers-difference-item > h3 {
  display: flex;
  align-items: center; /* vertical centering inside the reserved min-height */
}


/* ===========================
   Bowsers Custom: Mega Menu Chevrons
   =========================== */

.mega-menu__header-link {
  position: relative;
  display: inline-block !important;
  padding-right: 18px;
  white-space: nowrap;
  text-decoration: none;
}

.mega-menu__header-link::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  width: 12px;
  height: 12px;
  transform: translate(0,-50%);
  background: currentColor;
  transition: transform 0.18s ease, background-color 0.18s ease;
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center / contain no-repeat;
          mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center / contain no-repeat;
}

.mm-hover > .mega-menu__header-link::after,
.mega-menu__header-link.mm-hover::after {
  transform: translate(3px,-50%);
  background: #BCA89E;
}

@media (max-width: 999px) {
  .mega-menu__header-link { padding-right: 0; }
  .mega-menu__header-link::after { display: none !important; }
}
/* ===========================
   Bowsers Custom CSS
   Mega Menu Typography
   =========================== */

/* 1) Headers: Poppins Bold, 15–16px, slight letter spacing */
.mega-menu li > a.mega-menu__header-link {
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 700;
  font-size: 16px;          /* switch to 15px if you prefer tighter */
  letter-spacing: 0.4px;
  line-height: 1.25;
  color: #343739;           /* Charcoal */
  text-transform: none;
}

/* If the theme’s h6 class is fighting you, keep these two lines */
.mega-menu li > a.mega-menu__header-link.h6 {
  font-size: 16px !important;
  font-weight: 700 !important;
}

/* 2) Subcategories: Inter Regular or Medium, 14px, muted color */
.mega-menu .mega-menu__linklist.unstyled-list a:not(.mega-menu__header-link),
.mega-menu .v-stack.gap-2\.5.unstyled-list a:not(.mega-menu__header-link),
.mega-menu .v-stack.gap-2\.5.unstyled-list .link-faded {
  font-family: 'Inter', sans-serif;
  font-weight: 500;         /* change to 500 if you want a touch more presence */
  font-size: 14px;
  line-height: 1.35;
  color: #6F6F6F;           /* muted grey */
  text-decoration: none;
}
.mega-menu .mega-menu__linklist.unstyled-list a:not(.mega-menu__header-link):hover,
.mega-menu .v-stack.gap-2\.5.unstyled-list a:not(.mega-menu__header-link):hover,
.mega-menu .v-stack.gap-2\.5.unstyled-list .link-faded:hover {
  color: #343739;
}
/* 3) All Products header row: same style as other headers + chevron */
.mega-menu__all-products-top {
  margin: 0 0 6px 0;
  padding: 0;
}

.mega-menu__all-products-top .mega-menu__header-link {
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.4px;
  line-height: 1.25;
  color: #343739;
  text-transform: none;
  position: relative;
}

.mega-menu__all-products-top .mega-menu__header-link::after {
  content: '›';
  margin-left: 6px;
  font-size: 14px;
  vertical-align: middle;
}

/* Hide "… View All" subcategories on desktop, show on mobile */
@media (min-width: 1000px) {
  .mega-menu [data-view-all-sub="true"] {
    display: none !important;
  }
}
/* ===========================
   Bowsers Mega Menu promo background
   Connor added for promo column styling
   =========================== */

.mega-menu__promo.promo-bg {
  background-color: #F5F3F0; /* Classic Linen */
  /* If you prefer Pale Stone use #EDEBE8 */
  height: 100%;
}

.promo-bg__inner {
  padding: 20px;           /* breathing room around the image/text */
  height: 100%;
  display: flex;
  align-items: center;     /* center vertically */
  justify-content: center; /* center horizontally */
}

/* Ensure both columns stretch to equal height */
.mega-menu {
  align-items: stretch;
}

/* Keep images neat inside the promo column */
.mega-menu__promo.promo-bg .media,
.mega-menu__promo.promo-bg picture,
.mega-menu__promo.promo-bg img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Desktop only spacing tune-up if needed */
@media (min-width: 1000px) {
  .mega-menu__promo.promo-bg .promo-bg__inner {
    padding: 28px;
  }
}

/* Connor edit: visually underline promo subheader text */
.mega-menu__promo .smallcaps.text-xs.text-subdued {
  text-decoration: underline;
  cursor: pointer;
}

.mega-menu__promo .smallcaps.text-xs.text-subdued:hover {
  opacity: 0.85;
}

/* ===========================
   Bowsers Editorial Mega Menu — Shop grid + About split
   V5A visual refinement pass
   =========================== */
.mega-menu-shop,
.mega-menu-about {
  display: grid;
  gap: var(--mega-menu-gap, 2.5rem);
  align-items: stretch;
  width: 100%;
}

.mega-menu-shop {
  grid-template-columns: 65fr 35fr;
  /*
   * Row-gap decoupled from --mega-menu-gap (which still drives the column-gap between the category grid and
   * the fabric card, unchanged) so the browse-row-to-grid transition has its own fixed rhythm instead of
   * inheriting the wider gap meant for the grid/card split.
   */
  row-gap: 3.125rem;
}

.mega-menu-shop--full {
  grid-template-columns: 1fr;
}

.mega-menu-about {
  grid-template-columns: 45fr 55fr;
}

.mega-menu-about--full {
  grid-template-columns: 1fr;
}

/* ---- Shop category grid ---- */

.mega-menu-shop__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(2, auto);
  column-gap: 2.5rem;
  row-gap: 1.5rem;
}

.mega-menu-shop__cell {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 0;
}

.mega-menu-shop__heading-row {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  text-decoration: none;
  color: rgb(var(--text-color));
}

.mega-menu-shop__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 36px;
  width: 36px;
  color: rgb(var(--text-color));
  opacity: 0.82;
  transition: opacity 200ms ease;
}

.mega-menu-shop__icon svg {
  display: block;
}

.mega-menu-shop__heading-group {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}

.mega-menu-shop__heading-text {
  opacity: 0.9;
  transition: opacity 200ms ease;
}

.mega-menu-shop__chevron {
  display: inline-flex;
  flex: 0 0 auto;
  opacity: 0.5;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-shop__heading-row:hover .mega-menu-shop__icon,
.mega-menu-shop__heading-row:focus-visible .mega-menu-shop__icon {
  opacity: 1;
}

.mega-menu-shop__heading-row:hover .mega-menu-shop__heading-text,
.mega-menu-shop__heading-row:focus-visible .mega-menu-shop__heading-text {
  opacity: 1;
}

.mega-menu-shop__heading-row:hover .mega-menu-shop__chevron,
.mega-menu-shop__heading-row:focus-visible .mega-menu-shop__chevron {
  transform: translateX(4px);
  opacity: 0.85;
}

.mega-menu-shop__heading-row:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: 3px;
  border-radius: 2px;
}

.mega-menu-shop__links {
  flex: 1 1 auto;
}

.mega-menu-shop__link {
  text-decoration: none;
  transition: color 200ms ease;
}

.mega-menu-shop__link:hover,
.mega-menu-shop__link:focus-visible {
  text-decoration: underline;
}

.mega-menu-shop__link:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: 2px;
  border-radius: 2px;
}

/* ---- Shop browse row: flat children with no sub-links, above the category grid ---- */

.mega-menu-shop__browse {
  grid-column: 1 / -1;
}

.mega-menu-shop__browse-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2.5rem;
  /* Matches the .mega-menu padding-block-start above the row, so the row reads as an even band. */
  padding-bottom: 2.5rem;
}

.mega-menu-shop__browse-link {
  flex: 0 0 auto;
}

.mega-menu-shop__divider {
  height: 1px;
  background-color: rgb(var(--border-color));
  /* Spacing below the divider now comes solely from .mega-menu-shop's row-gap; no separate margin here. */
  margin-bottom: 0;
}

/* ---- About heritage card: full-image editorial card (V6B) ---- */

/*
 * Mirrors the Shop fabric card's structural pattern (image + layered overlay + overlaid copy inside one
 * clickable element) but is defined independently under its own class names, so the two cards can be tuned
 * separately without coupling Shop and About together.
 */
.mega-menu-about__panel {
  position: relative;
}

.mega-menu-about__card {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 6px;
  background-color: #ece6dc;
  color: #ffffff;
  text-decoration: none;
  transform: translateY(0);
  transition: transform 250ms ease;
}

.mega-menu-about__card-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: var(--card-object-position, 50% 50%);
  transform: scale(1);
  transition: transform 250ms ease;
}

.mega-menu-about__card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top right,
    rgba(18, 13, 8, 0.82) 0%,
    rgba(18, 13, 8, 0.55) 22%,
    rgba(18, 13, 8, 0.18) 45%,
    rgba(18, 13, 8, 0) 65%
  );
}

.mega-menu-about__card-content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 40px 36px 36px;
  max-width: 380px;
}

.mega-menu-about__card-heading {
  margin: 0;
  color: #ffffff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}

.mega-menu-about__card-body {
  margin: 0.5rem 0 0;
  color: rgba(255, 255, 255, 0.9);
  max-width: 32ch;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}

.mega-menu-about__card-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin-top: 0.625rem;
  width: fit-content;
  font-weight: 600;
  color: #ffffff;
}

.mega-menu-about__card-cta-chevron {
  display: inline-flex;
  opacity: 0.75;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-about__card:hover,
.mega-menu-about__card:focus-visible {
  transform: translateY(-2px);
}

.mega-menu-about__card:hover .mega-menu-about__card-image,
.mega-menu-about__card:focus-visible .mega-menu-about__card-image {
  transform: scale(1.015);
}

.mega-menu-about__card:hover .mega-menu-about__card-cta-chevron,
.mega-menu-about__card:focus-visible .mega-menu-about__card-cta-chevron {
  transform: translateX(4px);
  opacity: 1;
}

.mega-menu-about__card:focus-visible {
  outline: 2px solid #ffffff;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .mega-menu-about__card,
  .mega-menu-about__card-image,
  .mega-menu-about__card-cta-chevron {
    transition: none;
  }

  .mega-menu-about__card:hover,
  .mega-menu-about__card:focus-visible {
    transform: none;
  }

  .mega-menu-about__card:hover .mega-menu-about__card-image,
  .mega-menu-about__card:focus-visible .mega-menu-about__card-image {
    transform: none;
  }

  .mega-menu-about__card:hover .mega-menu-about__card-cta-chevron,
  .mega-menu-about__card:focus-visible .mega-menu-about__card-cta-chevron {
    transform: none;
  }
}

/* ---- About brand navigation: two labeled groups of descriptive rows (V6B) ---- */

.mega-menu-about__nav {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2.5rem;
  height: 100%;
}

.mega-menu-about__group-label {
  margin: 0 0 0.875rem;
  font-family: var(--heading-font-family);
  font-weight: var(--heading-font-weight);
  font-size: 0.75rem;
  letter-spacing: var(--heading-letter-spacing);
  text-transform: uppercase;
  color: rgb(var(--text-color));
  opacity: 0.7;
}

.mega-menu-about__group-list {
  display: flex;
  flex-direction: column;
}

.mega-menu-about__row + .mega-menu-about__row {
  border-top: 1px solid rgba(var(--text-color), 0.08);
}

.mega-menu-about__row-link {
  display: block;
  padding: 0.875rem 0.5rem;
  text-decoration: none;
  color: rgb(var(--text-color));
}

.mega-menu-about__row-head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.mega-menu-about__row-title {
  opacity: 0.92;
  transition: opacity 200ms ease;
}

.mega-menu-about__row-chevron {
  display: inline-flex;
  flex: 0 0 auto;
  opacity: 0.5;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-about__row-desc {
  display: block;
  margin-top: 0.25rem;
  max-width: 40ch;
  transition: color 200ms ease;
}

.mega-menu-about__row-link:hover .mega-menu-about__row-title,
.mega-menu-about__row-link:focus-visible .mega-menu-about__row-title {
  opacity: 1;
}

.mega-menu-about__row-link:hover .mega-menu-about__row-desc,
.mega-menu-about__row-link:focus-visible .mega-menu-about__row-desc {
  color: rgb(var(--text-color) / 0.85);
}

.mega-menu-about__row-link:hover .mega-menu-about__row-chevron,
.mega-menu-about__row-link:focus-visible .mega-menu-about__row-chevron {
  transform: translateX(4px);
  opacity: 0.85;
}

.mega-menu-about__row-link:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: -2px;
}

@media (prefers-reduced-motion: reduce) {
  .mega-menu-about__row-chevron {
    transition: none;
  }

  .mega-menu-about__row-link:hover .mega-menu-about__row-chevron,
  .mega-menu-about__row-link:focus-visible .mega-menu-about__row-chevron {
    transform: none;
  }
}

/*
 * ---- About brand navigation: two coordinated group columns at wide desktop (V6E) ----
 * Below 1280px the two groups stay stacked (base rule above). At 1280px+ the nav becomes a single 3-row x
 * 2-column grid shared by BOTH groups, not two independently-sized columns: .mega-menu-about__group and
 * .mega-menu-about__group-list go display:contents so each group's label/row-1/row-2 become direct grid
 * children, and grid-auto-flow:column (with exactly 3 explicit rows) fills column 1 top-to-bottom with
 * "About Bowsers"'s [label, Our Story, Our Dogs], then column 2 with "The Bowsers Standard"'s [label,
 * Our Quality, Our Manufacturing] — landing each pair in the same grid row. CSS grid then sizes every row
 * track to its tallest cell and (via align-items:stretch) stretches both cells in that row to match, so a
 * shorter description in one column can no longer cause its row to start earlier than its counterpart's —
 * this was the structural cause of "Our Manufacturing begins lower than Our Dogs" at wide viewports, where
 * the two groups' descriptions wrap to a different number of lines. row-gap:0 avoids double-spacing on top
 * of the row-link's own padding (the base rule's "gap: 2.5rem" shorthand also sets row-gap, so it must be
 * reset explicitly rather than left to inherit). Padding is tuned so the About card lands ~20-30px taller
 * than the Shop card at this breakpoint, per the approved wide-desktop reference height.
 */
@media (min-width: 1280px) {
  .mega-menu-about__nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto auto;
    grid-auto-flow: column;
    column-gap: 2.5rem;
    row-gap: 0;
    align-items: stretch;
    height: auto;
    padding: 73px 0;
  }

  .mega-menu-about__group,
  .mega-menu-about__group-list {
    display: contents;
  }
}

/* ---- Shop editorial panel: full-image fabric card (V5D) ---- */

/*
 * One unified card: the fabric photo, a layered warm-neutral overlay, and the text all live inside a
 * single <a> (mega-menu-shop__fabric-card). Perspective lives on the stable panel wrapper, not the card
 * itself, per the standard CSS 3D-transform pattern — a transformed element can't also host the
 * perspective it's viewed through.
 */
.mega-menu-shop__panel {
  position: relative;
  /*
   * Nudges the panel's top edge down to align with the cap height of the row's category headings (e.g.
   * "Sleep") rather than their taller line box; align-items:stretch keeps the bottom flush with the grid.
   */
  margin-top: 3px;
}

.mega-menu-shop__fabric-card {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 6px;
  background-color: #ece6dc;
  color: #ffffff;
  text-decoration: none;
  transform: translateY(0);
  transition: transform 250ms ease;
}

.mega-menu-shop__fabric-card-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: var(--fabric-card-object-position, 50% 50%);
  transform: scale(1);
  transition: transform 250ms ease;
}

/*
 * Layered warm-neutral wash: a light unifying tint over the whole photo, deepening toward the bottom
 * so the heading/body/CTA always sit on a dark-enough ground, without ever reading as a flat opaque box.
 */
.mega-menu-shop__fabric-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top right,
    rgba(18, 13, 8, 0.82) 0%,
    rgba(18, 13, 8, 0.55) 22%,
    rgba(18, 13, 8, 0.18) 45%,
    rgba(18, 13, 8, 0) 65%
  );
  transition: background-color 250ms ease;
}

.mega-menu-shop__fabric-card-content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 40px 32px 36px;
  max-width: 280px;
}

.mega-menu-shop__fabric-card-heading {
  margin: 0;
  color: #ffffff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}

.mega-menu-shop__fabric-card-body {
  margin: 0.375rem 0 0;
  color: rgba(255, 255, 255, 0.88);
  max-width: 30ch;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}

.mega-menu-shop__fabric-card-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin-top: 0.625rem;
  width: fit-content;
  font-weight: 600;
  color: #ffffff;
}

.mega-menu-shop__fabric-card-cta-chevron {
  display: inline-flex;
  opacity: 0.75;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-shop__fabric-card:hover,
.mega-menu-shop__fabric-card:focus-visible {
  transform: translateY(-2px);
}

.mega-menu-shop__fabric-card:hover .mega-menu-shop__fabric-card-image,
.mega-menu-shop__fabric-card:focus-visible .mega-menu-shop__fabric-card-image {
  transform: scale(1.015);
}

.mega-menu-shop__fabric-card:hover .mega-menu-shop__fabric-card-cta-chevron,
.mega-menu-shop__fabric-card:focus-visible .mega-menu-shop__fabric-card-cta-chevron {
  transform: translateX(4px);
  opacity: 1;
}

.mega-menu-shop__fabric-card:focus-visible {
  outline: 2px solid #ffffff;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .mega-menu-shop__fabric-card,
  .mega-menu-shop__fabric-card-image,
  .mega-menu-shop__fabric-card-cta-chevron {
    transition: none;
  }

  .mega-menu-shop__fabric-card:hover,
  .mega-menu-shop__fabric-card:focus-visible {
    transform: none;
  }

  .mega-menu-shop__fabric-card:hover .mega-menu-shop__fabric-card-image,
  .mega-menu-shop__fabric-card:focus-visible .mega-menu-shop__fabric-card-image {
    transform: none;
  }

  .mega-menu-shop__fabric-card:hover .mega-menu-shop__fabric-card-cta-chevron,
  .mega-menu-shop__fabric-card:focus-visible .mega-menu-shop__fabric-card-cta-chevron {
    transform: none;
  }
}

/* ---- Mobile / tablet drawer: compact horizontal editorial card ---- */

.mega-menu-images__card {
  display: flex;
  align-items: stretch;
  text-decoration: none;
  color: rgb(var(--text-color));
  background-color: #F5F3F0;
  overflow: hidden;
  border-radius: 6px;
  min-height: 135px;
  max-height: 165px;
  margin-block: 0.75rem;
}

.mega-menu-images__card-media {
  flex: 0 0 40%;
  position: relative;
  overflow: hidden;
}

.mega-menu-images__card-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.mega-menu-images__card-content {
  flex: 1 1 60%;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.25rem;
  padding: 0.875rem 1rem;
  text-align: left;
}

.mega-menu-images__card-heading {
  margin: 0;
}

.mega-menu-images__card-body {
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/*
 * ---- V9B: fix horizontal-card overflow/alignment at 600-999px (Part 1) ----
 * The card previously carried its own margin-inline (1rem each side) on top of a flex
 * min-width:100% inherited from .header-sidebar__promo > *:only-child, so it was pushed
 * ~16px further right than the scroller's own 20px padding — crowding the right edge
 * (measured: 36px left inset vs 4px right inset). margin-block above already removed the
 * horizontal margin so the card now fills its container flush, matching the accordion
 * rows' inset exactly. This block tunes the image/text split and lets body copy wrap
 * instead of being clamped to 2 lines with an ellipsis-causing overflow:hidden.
 */
@media (min-width: 600px) and (max-width: 999px) {
  .mega-menu-images__card {
    max-height: none;
  }

  .mega-menu-images__card-media {
    flex-basis: 36%;
  }

  .mega-menu-images__card-content {
    flex-basis: 64%;
  }

  .mega-menu-images__card-body {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
  }
}

/*
 * ---- V9B: compact full-image card below 600px (Part 2) ----
 * Below 600px the horizontal split leaves too little room for both image and readable
 * text, so the card switches to a full-bleed image with an overlaid gradient and white
 * heading/CTA at the bottom-left, matching the desktop Shop/About editorial-card pattern
 * without reusing their frozen classes. Markup is unchanged — image, heading, CTA label,
 * and destination all still come from the same block settings; only presentation differs.
 */
@media (max-width: 599px) {
  .mega-menu-images__card {
    display: block;
    position: relative;
    min-height: 160px;
    max-height: 180px;
  }

  .mega-menu-images__card-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
  }

  .mega-menu-images__card::after {
    content: "";
    position: absolute;
    inset-inline: 0;
    inset-block-end: 0;
    height: 70%;
    background: linear-gradient(180deg, rgba(22, 15, 10, 0) 0%, rgba(22, 15, 10, 0.72) 100%);
    z-index: 1;
    pointer-events: none;
  }

  .mega-menu-images__card-content {
    position: absolute;
    inset-inline: 0;
    inset-block-end: 0;
    z-index: 2;
    padding: 20px 22px;
    justify-content: flex-end;
  }

  .mega-menu-images__card-heading {
    color: #ffffff;
  }

  .mega-menu-images__card-body {
    display: none;
  }

  .mega-menu-images__card-cta {
    color: #ffffff;
  }
}

.mega-menu-images__card-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  margin-top: 0.125rem;
  width: fit-content;
  text-decoration: none;
}

.mega-menu-images__card-cta-chevron {
  display: inline-flex;
  transition: transform 200ms ease;
}

.mega-menu-images__card:hover .mega-menu-images__card-cta,
.mega-menu-images__card:focus-visible .mega-menu-images__card-cta {
  text-decoration: underline;
}

.mega-menu-images__card:hover .mega-menu-images__card-cta-chevron,
.mega-menu-images__card:focus-visible .mega-menu-images__card-cta-chevron {
  transform: translateX(4px);
}

.mega-menu-images__card:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: 2px;
}

/* ---- Reduced motion: keep the state changes, drop the movement ---- */

@media (prefers-reduced-motion: reduce) {
  .mega-menu-shop__heading-row,
  .mega-menu-shop__icon,
  .mega-menu-shop__chevron,
  .mega-menu-images__card-cta-chevron {
    transition: none;
  }

  .mega-menu-shop__heading-row:hover .mega-menu-shop__chevron,
  .mega-menu-shop__heading-row:focus-visible .mega-menu-shop__chevron,
  .mega-menu-images__card:hover .mega-menu-images__card-cta-chevron,
  .mega-menu-images__card:focus-visible .mega-menu-images__card-cta-chevron {
    transform: none;
  }
}

/* ---- Responsive safety across desktop breakpoints ---- */

/*
 * Below 1100px the fabric card's column shrinks to ~310px: the heading wraps to three lines, the CTA wraps
 * to two, and object-fit: cover crops the image so tightly the subject is obscured. Stacking the card below
 * the grid isn't viable either — the panel already nearly fills a 768px-tall viewport at this width. Hiding
 * the card and letting the category grid take the full panel width is the least-bad option; the card is
 * fully unchanged at 1100px and above.
 */
@media (max-width: 1099px) {
  .mega-menu-shop__panel {
    display: none;
  }

  .mega-menu-shop__grid {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1000px) and (max-width: 1149px) {
  .mega-menu-shop__grid {
    column-gap: 1.25rem;
    row-gap: 1.5rem;
  }

  .mega-menu-shop__heading-row {
    gap: 0.5rem;
  }

  .mega-menu-shop__heading-group {
    gap: 8px;
  }

  .mega-menu-shop__icon {
    flex-basis: 34px;
    width: 34px;
  }

  .mega-menu-shop__icon svg {
    width: 34px !important;
    height: 34px !important;
  }

  .mega-menu-shop__heading-text {
    font-size: 1.0625rem;
    line-height: 1.25;
  }

  /* Panel is only ~265px wide at this breakpoint; tighten the fabric card's text inset to match. */
  .mega-menu-shop__fabric-card-content {
    padding: 0 20px 20px 22px;
    max-width: 200px;
  }

  .mega-menu-shop__browse-row {
    gap: 1.5rem;
  }
}

@media (min-width: 1150px) and (max-width: 1279px) {
  .mega-menu-shop__grid {
    column-gap: 2rem;
  }

  .mega-menu-shop__heading-group {
    gap: 8px;
  }

  .mega-menu-shop__browse-row {
    gap: 2rem;
  }
}

@media (min-width: 1280px) {
  .mega-menu-shop__heading-text {
    white-space: nowrap;
  }

  .mega-menu-shop__fabric-card-heading {
    white-space: nowrap;
  }

  /*
   * V7B: the shared .mega-menu base rule (theme.css) widens --mega-menu-gap to 6.25rem (100px) at its own
   * min-width:1400px breakpoint, which — combined with the 65:35 split leaving the category grid with most
   * of the growth room — made the gap between the category grid and the fabric card read as an unintentional
   * void once the category icons were removed. Overriding --mega-menu-gap here (scoped to .mega-menu-shop
   * only, so About/Support's gap is untouched) replaces that jump with a fixed, moderate gap, and widening
   * the card's share of the fr-space narrows that void further without touching the category grid itself.
   */
  .mega-menu-shop {
    grid-template-columns: 3fr 2fr;
    --mega-menu-gap: 64px;
  }
}

/* ===========================
   Bowsers Editorial Mega Menu — Support service columns (V8A)
   Compact, service-oriented desktop mega menu: two directory columns (Help & Policies,
   Customer Services) plus a neutral Customer Care panel. Deliberately does not reuse
   .mega-menu-shop*/.mega-menu-about* selectors so Shop/About remain fully independent.
   =========================== */

.mega-menu-support {
  display: grid;
  grid-template-columns: 60fr 40fr;
  gap: var(--mega-menu-gap, 2.5rem);
  align-items: stretch;
  width: 100%;
}

/* ---- Support directory: two labeled columns of descriptive rows ---- */

.mega-menu-support__directory {
  display: grid;
  grid-template-columns: 55fr 45fr;
  column-gap: 2rem;
}

.mega-menu-support__group-label {
  margin: 0 0 0.625rem;
  font-family: var(--heading-font-family);
  font-weight: var(--heading-font-weight);
  font-size: 0.75rem;
  letter-spacing: var(--heading-letter-spacing);
  text-transform: uppercase;
  color: rgb(var(--text-color));
  opacity: 0.7;
}

.mega-menu-support__group-list {
  display: flex;
  flex-direction: column;
}

.mega-menu-support__row + .mega-menu-support__row {
  border-top: 1px solid rgba(var(--text-color), 0.08);
}

.mega-menu-support__row-link {
  display: block;
  padding: 0.4375rem 0.375rem;
  text-decoration: none;
  color: rgb(var(--text-color));
}

.mega-menu-support__row-head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.mega-menu-support__row-title {
  font-family: var(--heading-font-family);
  font-weight: var(--heading-font-weight);
  font-size: 0.9375rem;
  line-height: 1.3;
  opacity: 0.88;
  transition: opacity 200ms ease;
}

.mega-menu-support__row-chevron {
  display: inline-flex;
  flex: 0 0 auto;
  opacity: 0.5;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-support__row-desc {
  display: block;
  margin-top: 0.1875rem;
  font-size: 0.8125rem;
  line-height: 1.4;
  max-width: 34ch;
  transition: color 200ms ease;
}

.mega-menu-support__row-link:hover .mega-menu-support__row-title,
.mega-menu-support__row-link:focus-visible .mega-menu-support__row-title {
  opacity: 1;
}

.mega-menu-support__row-link:hover .mega-menu-support__row-desc,
.mega-menu-support__row-link:focus-visible .mega-menu-support__row-desc {
  color: rgb(var(--text-color) / 0.85);
}

.mega-menu-support__row-link:hover .mega-menu-support__row-chevron,
.mega-menu-support__row-link:focus-visible .mega-menu-support__row-chevron {
  transform: translateX(4px);
  opacity: 0.85;
}

.mega-menu-support__row-link:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: -2px;
}

/* ---- Support Customer Care panel: neutral, no photograph ---- */

.mega-menu-support__care-wrap {
  height: 100%;
}

.mega-menu-support__care {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100%;
  border-radius: 6px;
  background-color: #F5F3F0;
  color: rgb(var(--text-color));
  text-decoration: none;
  padding: 28px 32px;
  transition: background-color 200ms ease;
}

.mega-menu-support__care-eyebrow {
  margin: 0 0 0.5rem;
  font-family: var(--heading-font-family);
  font-weight: var(--heading-font-weight);
  font-size: 0.6875rem;
  letter-spacing: var(--heading-letter-spacing);
  text-transform: uppercase;
  color: rgb(var(--text-color));
  opacity: 0.6;
}

.mega-menu-support__care-heading {
  margin: 0;
  color: rgb(var(--text-color));
}

.mega-menu-support__care-body {
  margin: 0.5rem 0 0;
  color: rgb(var(--text-color) / 0.75);
  max-width: 34ch;
}

.mega-menu-support__care-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin-top: 0.875rem;
  width: fit-content;
  font-weight: 600;
  color: rgb(var(--text-color));
}

.mega-menu-support__care-cta-chevron {
  display: inline-flex;
  opacity: 0.6;
  transition: transform 200ms ease, opacity 200ms ease;
}

.mega-menu-support__care:hover,
.mega-menu-support__care:focus-visible {
  background-color: #EFEAE2;
}

.mega-menu-support__care:hover .mega-menu-support__care-cta-chevron,
.mega-menu-support__care:focus-visible .mega-menu-support__care-cta-chevron {
  transform: translateX(4px);
  opacity: 1;
}

.mega-menu-support__care:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .mega-menu-support__row-chevron,
  .mega-menu-support__care-cta-chevron {
    transition: none;
  }

  .mega-menu-support__row-link:hover .mega-menu-support__row-chevron,
  .mega-menu-support__row-link:focus-visible .mega-menu-support__row-chevron,
  .mega-menu-support__care:hover .mega-menu-support__care-cta-chevron,
  .mega-menu-support__care:focus-visible .mega-menu-support__care-cta-chevron {
    transform: none;
  }
}

/* ---- Support responsive safety across desktop breakpoints ---- */

@media (min-width: 1000px) and (max-width: 1279px) {
  .mega-menu-support {
    grid-template-columns: 68fr 32fr;
  }

  .mega-menu-support__directory {
    grid-template-columns: 60fr 40fr;
    column-gap: 1.25rem;
  }

  .mega-menu-support__care {
    padding: 22px 22px;
  }
}

@media (min-width: 1280px) {
  /*
   * Scoped override, same reasoning as .mega-menu-shop above: the shared .mega-menu base rule widens
   * --mega-menu-gap to 6.25rem (100px) at 1400px+, which would read as an oversized void between three
   * compact columns. Keep a fixed, moderate gap instead so the composition stays "compact" per spec.
   */
  .mega-menu-support {
    --mega-menu-gap: 56px;
  }

  .mega-menu-support__care {
    padding: 32px 36px;
  }
}

/* ===========================
   Badge Styling
   Connor added
   =========================== */

/* Bowsers badge styling */
.badge-list {
  position: absolute;
  top: 10px;
  left: 10px;
  gap: 6px;
  display: flex;
  flex-direction: column;
  z-index: 2;
}

.product-card__figure {
  position: relative; /* ensures the absolute badge-list sits inside the card */
}

/* Base badge */
.badge {
  background-color: #4A4A48; /* Warm Graphite */
  color: #F5F3F0;            /* Classic Linen */
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  font-size: 12px;
  line-height: 1;
  padding: 6px 10px;
  border-radius: 999px;      /* pill shape */
}

/* Sold out variant */
.badge--sold-out {
  background-color: #343739; /* Charcoal */
  color: #EDEBE8;            /* Pale Stone */
  border: 1px solid #4A4A48; /* subtle edge */
}

/* Optional hover polish on product cards */
.product-card:hover .badge {
  transform: translateY(-1px);
  transition: transform 160ms ease, box-shadow 160ms ease;
  box-shadow: 0 2px 6px rgb(0 0 0 / 10%);
}

/* If badges stack too close on mobile, add spacing */
@media (max-width: 699px) {
  .badge-list { top: 8px; left: 8px; gap: 4px; }
  .badge { font-size: 11px; padding: 5px 9px; }
}
/* ===========================
   Product Title Styling
   Connor added
   =========================== */
   /* Bowsers Product Title Styling */
.shopify-section--main-product .product-title {
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;          /* stronger than normal, but not too heavy */
  /* font-size: 18px;  */          /* make it more pronounced */
  font-size: 40px;
  letter-spacing: 0.5px;     /* refined spacing */
  color: #343739;            /* Charcoal, ties to brand palette */
  text-transform: none;      /* keep clean case */
  line-height: 1.4;
  transition: color 160ms ease;
}

@media (max-width: 699px) {
  .product-title {font-size: 30px;}
}
/* ===========================
   Product card title styling (collections, related products, etc.)
   =========================== */

/* Keep PDP title styling as-is, but restore card titles */
.product-card .product-title,
.product-card__title,
.product-card__title a,
.product-item__title,
.product-item__title a {
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;
  font-size: 18px;
  letter-spacing: 0.5px;
  color: #343739;
  text-transform: none;
  line-height: 1.4;
}

/* Optional: tighten spacing if the title block got tall */
.product-card__info,
.product-card__content {
  row-gap: 6px;
}

/* Fix: scope the mobile title size change so it only affects the PDP */
@media (max-width: 699px) {
  .shopify-section--main-product .product-title {
    font-size: 30px;
  }

  .product-card .product-title,
  .product-card__title,
  .product-card__title a,
  .product-item__title,
  .product-item__title a {
    font-size: 16px;
  }
}


/* ===========================
   Bowsers Collection Pills:
   Page background: #F5F3F0
   =========================== */

/* Remove theme divider above the grid (but keep toolbar dividers) */
.template-collection .collection-filters,
.template-collection .section--collection::before {
  border-top: none !important;
  background: #F5F3F0 !important;
  box-shadow: none !important;
  content: none !important;
}
/* Restore the toolbar divider lines (view icons, product count, sort) */
.template-collection .collection-toolbar {
  border-top: 1px solid rgba(52,55,57,0.12) !important;
  border-bottom: 1px solid rgba(52,55,57,0.12) !important;
  box-shadow: none !important;
}



/* Tight vertical rhythm under the intro copy */
.collection-intro,
.section--collection .rte { margin-bottom: 8px; }

.pills-block { margin: 6px 0 12px; }

/* Layout */
.collection-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
}

/* Base pill: white chip on a linen page */
.pill {
  display: inline-block;
  padding: 12px 20px;                  /* generous */
  border-radius: 9999px;
  background: #FFFFFF;                 /* unselected pill is white */
  color: #343739;                      /* charcoal text */
  text-decoration: none;
  font-weight: 600;
  font-size: 16px;
  line-height: 1;
  border: 2px solid transparent;       /* allows press border without layout shift */
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

/* Hover: soft stone grey (still clear against linen background) */
.pill:hover {
  background: #E0DFDC;   /* slightly darker than #F5F3F0 */
  color: #343739;        /* keep charcoal text */
}


/* Press feedback: show a charcoal ring briefly before navigation */
.pill:active {
  border-color: #343739;
}

/* Selected after navigation: filled dark grey */
.pill.is-active {
  background: #343739;                 /* filled state */
  color: #FFFFFF;
  border-color: transparent;           /* no ring once active */
}



/* Mobile tweaks */
@media (max-width: 768px) {
  .collection-pills { gap: 10px; }
  .pill { padding: 9px 14px; font-size: 14px; }
  .pills-block { margin: 8px 0 10px; }
}

/* ===========================
   Collection Intro Styling
   Generic for collection rich text
   =========================== */

/* Title */
.template-collection .shopify-section--rich-text .prose.text-start .h1 {
  font-size: clamp(32px, 3.6vw, 44px) !important;
  line-height: 1.15 !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
  margin: 0 0 10px 0 !important;
  color: #343739 !important;
}

/* Body text (description) */
.template-collection .shopify-section--rich-text .prose.text-start > div > p,
.template-collection .shopify-section--rich-text .prose.text-start p:not(.h1) {
  font-size: 20px !important;
  line-height: 1.6 !important;
  color: #343739 !important;
  max-width: 100% !important;
  margin: 0 0 14px 0 !important;
}

/* Bold inside collection intro */
.template-collection .shopify-section--rich-text .prose.text-start :is(strong, b) {
  font-weight: 700 !important;
}

/* Allow synthetic bold if the loaded webfont doesn't include 700 */
.template-collection .shopify-section--rich-text .prose.text-start {
  font-synthesis: weight;
}

.template-collection .shopify-section--rich-text .prose.text-start strong,
.template-collection .shopify-section--rich-text .prose.text-start b {
  font-weight: 700;
}
.template-collection .shopify-section--rich-text .prose.text-start p strong,
.template-collection .shopify-section--rich-text .prose.text-start p b {
  font-weight: 600 !important;
}


/* Ensure block aligns nicely */
.template-collection .shopify-section--rich-text .prose.text-start {
  margin-left: 0 !important;
}


/* ===========================
   Tighten spacing between intro and pills
   =========================== */

/* Remove excess padding from the rich-text section wrapper */
.shopify-section--rich-text .container {
  padding-bottom: 0 !important;
}

/* Reduce spacing below the intro text */
.shopify-section--rich-text .prose p {
  margin-bottom: 4px !important;
}

/* Pull pills closer to text */
.collection-pills {
  margin-top: 6px !important;
  margin-bottom: 18px; /* leave some breathing room */
}
/* ===========================
   Squeeze gap between intro copy and pills
   =========================== */

/* Kill hidden bottom padding on the rich text section */
.template-collection .shopify-section--rich-text,
.template-collection .shopify-section--rich-text .color-scheme,
.template-collection .shopify-section--rich-text .container,
.template-collection .shopify-section--rich-text .container.container--sm {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}

/* Remove extra margins inside the prose wrapper */
.template-collection .shopify-section--rich-text .prose {
  margin-bottom: 0 !important;
}
.template-collection .shopify-section--rich-text .prose p {
  margin-bottom: 6px !important;   /* description bottom margin */
}

/* Pull the pills up tighter */
.pills-block { 
  margin-top: 0 !important;
}
.collection-pills {
  margin-top: 4px !important;      /* reduce the gap above pills */
  margin-bottom: 16px !important;  /* keep a little air before the toolbar */
}

/* If you still see a faint gap, uncomment the line below for a micro pull-up */
.pills-block { margin-top: -4px !important; }

/* Mobile: make pills a horizontal scroller */
@media (max-width: 768px) {
  .pills-block {
    margin-top: 0 !important;
    margin-bottom: 12px !important;
  }

  .collection-pills {
    display: flex;
    flex-wrap: nowrap;                 /* keep on one line */
    gap: 10px;
    overflow-x: auto;                  /* enable swipe */
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch; /* momentum scrolling */
    scroll-snap-type: x proximity;     /* gentle snap */
    padding-bottom: 6px;               /* prevents text clipping */
  }

  .collection-pills .pill {
    flex: 0 0 auto;                    /* prevent shrinking */
    scroll-snap-align: start;
    white-space: nowrap;               /* keep labels on one line */
  }

  /* Hide default scrollbar on WebKit */
  .collection-pills::-webkit-scrollbar {
    display: none;
  }
  }

/* Bowsers – remove the dark divider line under the collection banner on desktop */
.template-collection .shopify-section--collection-banner,
.template-collection .shopify-section--collection-banner .collection-banner,
.template-collection .shopify-section--collection-banner .content-over-media,
.template-collection .shopify-section--collection-banner .color-scheme {
  border-bottom: 0 !important;
  box-shadow: none !important;
}

/* Kill any pseudo-element dividers as well */
.template-collection .shopify-section--collection-banner::before,
.template-collection .shopify-section--collection-banner::after,
.template-collection .shopify-section--collection-banner .collection-banner::before,
.template-collection .shopify-section--collection-banner .collection-banner::after,
.template-collection .shopify-section--collection-banner .content-over-media::before,
.template-collection .shopify-section--collection-banner .content-over-media::after,
.template-collection .shopify-section--collection-banner .color-scheme::before,
.template-collection .shopify-section--collection-banner .color-scheme::after {
  content: none !important;
  border: 0 !important;
  box-shadow: none !important;
}
/* Bowsers – kill divider between collection intro (rich text) and pills (custom liquid) */

/* Remove any bottom border/shadow from the rich text section */
.template-collection .shopify-section--rich-text,
.template-collection .shopify-section--rich-text .section-spacing,
.template-collection .shopify-section--rich-text .color-scheme,
.template-collection .shopify-section--rich-text .container {
  border-bottom: 0 !important;
  box-shadow: none !important;
}

/* Remove any top border/shadow from the custom liquid section that holds the pills */
.template-collection .shopify-section--custom-liquid,
.template-collection .shopify-section--custom-liquid .section-spacing,
.template-collection .shopify-section--custom-liquid .color-scheme,
.template-collection .shopify-section--custom-liquid .container {
  border-top: 0 !important;
  box-shadow: none !important;
}

/* Also kill pseudo-element dividers, just in case */
.template-collection .shopify-section--rich-text::after,
.template-collection .shopify-section--custom-liquid::before,
.template-collection .shopify-section--custom-liquid::after,
.template-collection .shopify-section--custom-liquid .section-spacing::before,
.template-collection .shopify-section--custom-liquid .section-spacing::after,
.template-collection .shopify-section--custom-liquid .color-scheme::before,
.template-collection .shopify-section--custom-liquid .color-scheme::after,
.template-collection .shopify-section--custom-liquid .container::before,
.template-collection .shopify-section--custom-liquid .container::after {
  content: none !important;
  border: 0 !important;
  box-shadow: none !important;
}


/* ===========================
   Breadcrumbs, desktop only
   =========================== */

/* Support either wrapper: our custom section or Prestige's class */
.bowsers-breadcrumbs,
.shopify-section--breadcrumbs {
  background: #F5F3F0;
  padding: 16px 0;
  border-top: 1px solid rgba(52,55,57,0.08);
  border-bottom: 0;
}

/* Container widths stay theme-driven */

/* Typography and layout */
.bowsers-breadcrumbs .breadcrumb,
.shopify-section--breadcrumbs .breadcrumb {
  font-size: 13px;
  letter-spacing: 0;
  text-transform: none; /* not caps locked */
  line-height: 1.25;
}

.bowsers-breadcrumbs .breadcrumb__list,
.shopify-section--breadcrumbs .breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0; /* separators will handle spacing */
  margin: 0;
  padding: 0;
  list-style: none;
}

.bowsers-breadcrumbs .breadcrumb__list-item,
.shopify-section--breadcrumbs .breadcrumb__list-item {
  color: #343739;
  font-weight: 400;
}

/* Chevron separator */
.bowsers-breadcrumbs .breadcrumb__list-item + .breadcrumb__list-item::before,
.shopify-section--breadcrumbs .breadcrumb__list-item + .breadcrumb__list-item::before {
  content: "›";
  display: inline-block;
  margin: 0 8px;
  color: #343739;
  opacity: 0.45;
}

.bowsers-breadcrumbs .breadcrumb__list-item a,
.shopify-section--breadcrumbs .breadcrumb__list-item a {
  color: #343739;
  text-decoration: none;
  transition: color .2s ease;
}

.bowsers-breadcrumbs .breadcrumb__list-item a:hover,
.shopify-section--breadcrumbs .breadcrumb__list-item a:hover {
  text-decoration: underline;
}

.bowsers-breadcrumbs [aria-current="page"],
.shopify-section--breadcrumbs [aria-current="page"] {
  font-weight: 500;
}
/* On collection pages, remove the breadcrumb top divider (this is the line under the banner) */
.template-collection .bowsers-breadcrumbs,
.template-collection .shopify-section--breadcrumbs {
  border-top: 0 !important;
}
/* Tighten collection page vertical rhythm: banner -> breadcrumbs -> title */
.template-collection .bowsers-breadcrumbs,
.template-collection .shopify-section--breadcrumbs {
  padding: 8px 0 !important;   /* was 16px */
  margin: 0 !important;
}

/* Tighten the space between breadcrumbs and the collection header section */
.template-collection .bowsers-breadcrumbs + .shopify-section,
.template-collection .shopify-section--breadcrumbs + .shopify-section {
  margin-top: 0 !important;
  padding-top: 0 !important;
}


/* ===========================
   Mobile behavior and divider fix
   =========================== */
@media (max-width: 749px) {
  /* Hide breadcrumbs section on phones */
  .bowsers-breadcrumbs,
  .shopify-section--breadcrumbs {
    display: none !important;
  }

  /* Remove any divider between the banner and the next section */
  .shopify-section--collection-banner,
  .shopify-section--collection-banner .collection-banner,
  .shopify-section--collection-banner .content-over-media,
  .shopify-section--collection-banner .color-scheme {
    border-bottom: 0 !important;
    box-shadow: none !important;
  }
  .shopify-section--collection-banner::before,
  .shopify-section--collection-banner::after,
  .shopify-section--collection-banner .collection-banner::before,
  .shopify-section--collection-banner .collection-banner::after,
  .shopify-section--collection-banner .content-over-media::before,
  .shopify-section--collection-banner .content-over-media::after,
  .shopify-section--collection-banner .color-scheme::before,
  .shopify-section--collection-banner .color-scheme::after {
    content: none !important;
    display: none !important;
  }

  .shopify-section--collection-banner + .shopify-section,
  .shopify-section--collection-banner + .shopify-section .section-spacing,
  .shopify-section--collection-banner + .shopify-section .color-scheme,
  .shopify-section--collection-banner + .shopify-section .container {
    border-top: 0 !important;
    box-shadow: none !important;
  }

  /* Last resort: paint any remaining hairline to match the background */
  .shopify-section--collection-banner + .shopify-section {
    border-top-color: #F5F3F0 !important;
  }
}

/* Product swatch hover hide modal on mobile and display correct variant image */
@media (max-width: 999px) {
  .swatch-items--wrapper #variant-popup, .swatch-items--wrapper .show-hover-triangle {display: none!important}
}

/* Fix predictive search products title too big on mobile */
@media (max-width: 767px) {
  .predictive-search__products .product-title {
    font-size: 16px;
    font-weight: 700 !important;
  }
}
/* ===========================
   Bowsers Global Section Headings
   Keep PDP unchanged
   Refined heading styling without affecting Klaviyo forms
   =========================== */

.shopify-section:not(.shopify-section--main-product):not(.klaviyo-form):not([class*="klaviyo"]) 
:is(.h0, .h1, .h2, .h3, .h4) {
    font-family: 'BowsersPoppins', sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: 0.5px !important;
  text-transform: none !important;
  line-height: 1.2 !important;
}

.shopify-section:not(.shopify-section--main-product):not(.klaviyo-form):not([class*="klaviyo"]) 
:is(.smallcaps, .text-subdued, .section-header__subheading) {
  font-family: 'Inter', sans-serif !important;
}

.shopify-section:not(.shopify-section--main-product):not(.klaviyo-form):not([class*="klaviyo"]) 
.smallcaps {
  letter-spacing: 0.12em !important;
}
/* ===========================
   Homepage headings: size only (no alignment)
   =========================== */
.template-index :is(h1, h2, h3, h4).h2 {
  font-size: clamp(30px, 3vw, 46px) !important;
  line-height: 1.15 !important;
}
/* Increase product card title size only */
.product-card .product-title {
  font-size: 1.4rem;
  line-height: 1.25;
}
/* PDP spec table: reset any accidental global font sizing */
.product .product-attribute-specs-table,
.product .product-attribute-specs-table th,
.product .product-attribute-specs-table td,
.product .product-attribute-specs-table p {
  font-size: 14px !important;
  line-height: 1.4 !important;
}

.product .product-attribute-specs-table th {
  font-weight: 600 !important;
}

.product .product-attribute-specs-table td {
  font-weight: 400 !important;
}

/* If the richtext inside cells got oversized */
.product .product-attribute-specs-table .metafield-rich_text_field,
.product .product-attribute-specs-table .metafield-rich_text_field p {
  margin: 0 !important;
  font-size: 14px !important;
  line-height: 1.4 !important;
}

/* Optional: slightly smaller on mobile if it still feels big */
@media (max-width: 699px) {
  .product .product-attribute-specs-table,
  .product .product-attribute-specs-table th,
  .product .product-attribute-specs-table td,
  .product .product-attribute-specs-table p {
    font-size: 13px !important;
  }
}
/* Button sizing (keeps theme colors), excludes PDP */
body:not(.template-product) :where(a.button, button.button) {
  font-family: Inter, sans-serif;

  /* Typography rhythm */
  font-size: 18px;
  line-height: 27px;
  font-weight: 450;
  font-variation-settings: "wght" 450;
  letter-spacing: normal;
  text-transform: capitalize;

  /* Shape + sizing */
  height: 52px;
  padding: 0 24px;
  border-radius: 9999px;

  /* Center text perfectly (works for <a> and <button>) */
  display: inline-flex;
  align-items: center;
  justify-content: center;

  /* Keep borders controlled by theme, but ensure consistency */
  border-width: 1px;
  border-style: solid;
}
/* Cart drawer: make the second button (View cart) a white "ghost" until hover */
#cart-drawer .cart-drawer__footer .button-group > :last-child.button,
#cart-drawer .cart-drawer__footer .button-group > :last-child > .button {
  background: #ffffff !important;
  border-color: transparent !important;
  box-shadow: none !important;
  color: inherit !important;
}

#cart-drawer .cart-drawer__footer .button-group > :last-child.button:hover,
#cart-drawer .cart-drawer__footer .button-group > :last-child > .button:hover {
  background: #EDEBE8 !important; /* Pale Stone */
  border-color: transparent !important;
}
/* Cart drawer: make "Add order note" more visible */
#cart-drawer .cart-drawer__footer .link-faded-reverse {
  font-size: 0.95rem; /* slightly larger */
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  opacity: 0.9;
}

/* Optional: clearer hover affordance */
#cart-drawer .cart-drawer__footer .link-faded-reverse:hover {
  opacity: 1;
}
/* Cart drawer subtotal restyle */
#cart-drawer .cart-drawer__subtotal {
  padding: 0.75rem 0 0.5rem;
}

/* Use header typography for "Subtotal" */
#cart-drawer .cart-drawer__subtotal-label {
  font-family: var(--heading-font-family);
  font-size: var(--text-h6);
  font-weight: var(--heading-font-weight);
  letter-spacing: var(--heading-letter-spacing);
  text-transform: none;
}

/* Match subtotal price to line-item prices */
#cart-drawer .cart-drawer__subtotal-price {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--text-color);
}
/* Our Fabrics flow: Back to fabrics link */
#bowsers-back-to-fabrics {
  display: inline-flex;
  align-items: center;
  gap: 10px;

  background: transparent;
  border: 0;
  padding: 0;

  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;
  font-size: 14px;
  letter-spacing: 0.4px;

  color: #343739;
  text-decoration: none;
}

/* Double chevron */
#bowsers-back-to-fabrics::before {
  content: "‹‹";
  opacity: 0.6;
  font-size: 18px;
  line-height: 1;
  transform: translateY(-1px);
}

/* Hover */
#bowsers-back-to-fabrics:hover {
  text-decoration: underline;
}
/* Show Back to fabrics only on mobile + tablet */
#bowsers-back-to-fabrics {
  display: inline-flex;
}

@media (min-width: 1000px) {
  #bowsers-back-to-fabrics {
    display: none !important;
  }
}
/* Fabrics flow: remove the dead space where pills used to be */
.pills-block--fabrics-flow {
  margin: 0 !important;
  padding: 0 !important;
}

/* On desktop, hide the entire container, since breadcrumbs are the nav */
@media (min-width: 1000px) {
  .pills-block--fabrics-flow {
    display: none !important;
  }
}
/* Fabrics flow: collapse Prestige section-spacing around the fabrics nav block */
.section-spacing:has([data-bowsers-fabrics-nav]) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Desktop: since nav is hidden, remove the wrapper entirely to avoid dead space */
@media (min-width: 1000px) {
  .section-spacing:has([data-bowsers-fabrics-nav]) {
    display: none !important;
  }
}

/* Collection pills: collapse the wrapping section entirely when no pills render (no sibling pills to
   show, or a parts collection where pills are intentionally hidden) */
.template-collection .shopify-section--custom-liquid:not(:has(.pills-block)):not(:has([data-bowsers-fabrics-nav])) .section-spacing {
  padding-top: 0 !important;
  padding-bottom: 32px !important;
  border: none !important;
}

/* Tier 2 Breadcrumbs for Our Fabrics */
.bowsers-fabric-crumbs {
  background: #F5F3F0;
  padding: 10px 0;
}

.bowsers-fabric-crumbs__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bowsers-fabric-crumbs__item {
  font-family: Inter, sans-serif;
  font-size: 12px;
  line-height: 1.25;
  color: rgba(52,55,57,0.75);
}

.bowsers-fabric-crumbs__item + .bowsers-fabric-crumbs__item::before {
  content: "›";
  display: inline-block;
  margin: 0 8px;
  opacity: 0.35;
  color: #343739;
}

.bowsers-fabric-crumbs__link {
  color: rgba(52,55,57,0.75);
  text-decoration: none;
}

.bowsers-fabric-crumbs__link:hover {
  color: #343739;
  text-decoration: underline;
}

.bowsers-fabric-crumbs [aria-current="page"] {
  color: #343739;
  font-weight: 500;
}
/* Breadcrumb hierarchy polish – applies everywhere */
.breadcrumb__list-item {
  color: rgba(52,55,57,0.65);
  font-weight: 400;
}

.breadcrumb__list-item[aria-current="page"] {
  color: #343739;
  font-weight: 500;
}
/* Force Shop by Fabric to match other mega menu headers */
.mega-menu a.mega-menu__header-link[href*="/pages/our-fabrics"] {
  font-size: 14px !important;
  line-height: 1.4 !important;
}
/* Bowsers: remove Prestige-wide tracked headings/labels */
.h0, .h1, .h2, .h3, .h4, .h5, .h6,
.heading, .section__title, .section-header__title {
  letter-spacing: normal !important;
}
/* Make product card media flush with the card edge across all widths */
.product-card__media {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.product-card__figure {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.product-card__media img.product-card__image {
  width: 100% !important;
  max-width: none !important;
  display: block;
}
/* Bowsers cart: reference-style layout */

.shopify-section--main-cart .bowsers-cart-head,
.shopify-section--main-cart .bowsers-cart__table,
.shopify-section--main-cart .bowsers-cart__footer {
  max-width: 860px;
  margin-left: auto;
  margin-right: auto;
}

/* Header: left link + perfectly centered title */
.shopify-section--main-cart .bowsers-cart-head {
  position: relative;
  width: 100%;
  padding-top: 6px;
  padding-bottom: 16px;
}

.shopify-section--main-cart .bowsers-cart-head__back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
}

.shopify-section--main-cart .bowsers-cart-head__title {
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
  margin: 0;
  text-align: center;
  width: max-content;
  max-width: 70%;
}
/* Give the header enough height so the absolute title does not overlap */
.shopify-section--main-cart .bowsers-cart-head {
  min-height: 56px;
}

/* Remove underline/line from Continue shopping (covers theme link styles too) */
.shopify-section--main-cart .bowsers-cart-head__back,
.shopify-section--main-cart .bowsers-cart-head__back:hover,
.shopify-section--main-cart .bowsers-cart-head__back:focus,
.shopify-section--main-cart .bowsers-cart-head__back:active {
  text-decoration: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
  background-image: none !important;
}

/* If Prestige draws link underline using pseudo elements, kill those too */
.shopify-section--main-cart .bowsers-cart-head__back::before,
.shopify-section--main-cart .bowsers-cart-head__back::after {
  content: none !important;
}

/* Table tightening like reference */
.shopify-section--main-cart .bowsers-cart__table {
  table-layout: fixed;
  width: 100%;
}

/* Reduce the space below the table before the footer (this is the gap you still see) */
.shopify-section--main-cart .bowsers-cart__table {
  margin-bottom: 14px;
}

.shopify-section--main-cart .bowsers-cart__table th:nth-child(2),
.shopify-section--main-cart .bowsers-cart__table td:nth-child(2) {
  width: 120px;
}

.shopify-section--main-cart .bowsers-cart__table th:nth-child(3),
.shopify-section--main-cart .bowsers-cart__table td:nth-child(3) {
  width: 140px;
}

.shopify-section--main-cart .bowsers-cart__table th,
.shopify-section--main-cart .bowsers-cart__table td {
  padding-top: 18px;
  padding-bottom: 18px;
}

/* Bottom layout: note left, recap right */
.shopify-section--main-cart .bowsers-cart__footer {
  margin-top: 0px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: start;
}

@media (min-width: 900px) {
  .shopify-section--main-cart .bowsers-cart__footer {
    grid-template-columns: 360px 1fr;
    column-gap: 90px;
  }
}

/* Make “Add order note” label bold */
.shopify-section--main-cart .bowsers-cart__note label,
.shopify-section--main-cart .bowsers-cart__note .form__label {
  font-weight: 600;
}

/* Note field like reference */
.shopify-section--main-cart .bowsers-cart__note {
  max-width: 360px;
}

.shopify-section--main-cart .bowsers-cart__note textarea {
  min-height: 120px;
  border-radius: 0;
  resize: vertical;
}

/* Recap: clean, not boxed */
.shopify-section--main-cart .bowsers-cart__recap .cart-recap {
  padding: 0;
  border: 0;
  border-radius: 0;
}

.shopify-section--main-cart .bowsers-cart__recap .h-stack {
  justify-content: space-between;
  margin-bottom: 6px;
}

/* Checkout button sizing like reference, with tighter spacing */
.shopify-section--main-cart .bowsers-cart__recap .button {
  width: 320px;
  max-width: 100%;
  justify-content: center;
  margin-top: 10px;
}
.badge--custom {
  color: white;
}

/* if badge color is light, make text dark */
.badge--custom[style*="#f"],
.badge--custom[style*="#e"],
.badge--custom[style*="#d"],
.badge--custom[style*="#c"],
.badge--custom[style*="#b"] {
  color: #343739;
}
account-login.customer-account-box .dealer-portal-callout {
  margin: 0 0 24px !important;
  padding: 22px 24px !important;
  background: #EDEBE8 !important;
  border: 1px solid rgba(23, 23, 23, 0.10) !important;
  border-radius: 12px !important;
  text-align: center !important;
}

account-login.customer-account-box .dealer-portal-callout__eyebrow {
  margin: 0 0 8px !important;
  font-family: 'BowsersPoppins', sans-serif !important;
  font-size: 22px !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  color: #171717 !important;
}

account-login.customer-account-box .dealer-portal-callout__text {
  margin: 0 !important;
  font-family: Inter, sans-serif !important;
  font-size: 15px !important;
  line-height: 1.6 !important;
  color: #343739 !important;
}

account-login.customer-account-box .dealer-portal-callout__button {
  margin-top: 18px !important;
}

account-login.customer-account-box a.dealer-portal-btn,
account-login.customer-account-box a.dealer-portal-btn:visited {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 12px 28px !important;
  min-height: 46px !important;
  border-radius: 999px !important;
  background: #6D7175 !important;
  border: 1px solid #6D7175 !important;
  color: #ffffff !important;
  font-family: Inter, sans-serif !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  text-decoration: none !important;
  text-transform: none !important;
  letter-spacing: 0.2px !important;
  cursor: pointer !important;
  transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease !important;
}

account-login.customer-account-box a.dealer-portal-btn:hover,
account-login.customer-account-box a.dealer-portal-btn:focus {
  background: #5f6367 !important;
  border-color: #5f6367 !important;
  color: #ffffff !important;
  text-decoration: none !important;
}

account-login.customer-account-box a.dealer-portal-btn:focus-visible {
  outline: 2px solid rgba(109, 113, 117, 0.35) !important;
  outline-offset: 2px !important;
}

/* Remove "Continue Shopping" Button from mobile */
@media screen and (max-width: 699px) {
  .bowsers-cart-head__back {
    display: none !important;
  }

  .bowsers-cart-head {
    justify-content: center;
    text-align: center;
  }

  .bowsers-cart-head__title {
    margin: 0;
  }
}
/* Keep editorial two-up headings lighter */
.bowsers-editorial-two-up__heading-text {
  font-family: 'BowsersPoppinsSemi', sans-serif !important;
  font-weight: 600 !important;
}
/* Header: prevent secondary-nav wrap below ~1165px.
   Measured Aug 13 2026: cart icon dropped to a second row, header
   grew 117px vs 105px. All four declarations are required; partial
   combinations still wrap at 1024px. */
@media (max-width: 1200px) {
  .header {
    padding-inline: 32px;
    column-gap: 24px;
    --header-logo-width: 230px;
  }
  .header__secondary-nav {
    column-gap: 12px;
  }
}

/* ===========================
   Fabric journey — facet page header band (Phase 2A step 6, amended D-209)
   Replaces the header-band rules previously held in the PROVISIONAL style
   block in sections/fabric-facet-main.liquid, which were ID-scoped and could
   not be overridden from here.
   D-209 removed the media column from sections/fabric-facet-main.liquid for
   both the family and the colour branch, so the band is h1, lead and count in
   one column at every width. .fabric-facet-header__text is the container's
   only child, so the band needs no display, no columns and no gap: it carries
   separation from the grid and nothing else. The 530px column, the 360px and
   240px floors and the out-of-flow image went with the image.
   =========================== */

.fabric-facet-header {
  margin-bottom: 32px;
}

.fabric-facet-header__lead,
.fabric-facet-header__lead p {
  font-size: 1rem;
  line-height: 1.6;
}

.fabric-facet-header__count {
  color: rgb(138, 135, 129);
}

@media (min-width: 1000px) {
  .fabric-facet-header__text {
    max-width: 38rem;
  }
}

/* ===========================
   Fabric journey — grid, tiles, pattern chips, trust block (Phase 2A step 6)
   Merges the shared structural rules previously duplicated in the PROVISIONAL
   style blocks of sections/fabric-index-grid.liquid and
   sections/fabric-facet-main.liquid, which were ID-scoped and could not be
   overridden from here. Both blocks are deleted in the same push.
   Compared byte for byte before merging: the .fabric-grid, .fabric-tile* and
   .fabric-pattern-chips definitions were identical in both files.
   Structural values below are carried over unchanged so that any geometry
   change after this push is attributable to the three named fixes only.
   =========================== */

/* ---- Grid ---- */

.fabric-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem 1rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 700px) {
  .fabric-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/*
 * FIX 1, corrected Aug 21 after the first attempt lost the cascade. theme.css
 * carries :where(ol, ul):not(.unstyled-list) li { padding-inline-start: 0.25rem }.
 * :where() adds no specificity, but :not(.unstyled-list) contributes a class and
 * li an element, so that selector scores 0,1,1 and beats a bare
 * .fabric-grid__item at 0,1,0. Pairing each item class with its list class takes
 * these to 0,2,0. The logical longhand is zeroed alongside the shorthand because
 * logical and physical padding cascade as one property per box side, and naming
 * both keeps the intent readable.
 *
 * Same theme rule, same 4px, on all three lists in the journey. Measured on the
 * draft at 1920px before the fix: a 434px figure in a 438px column on the index
 * grid and both facet grids, a 239px chip in a 243px column on the colour row,
 * and a 434px tile in a 438px column on the family row. The colour row and family
 * row are otherwise still governed by their provisional blocks, which set no list
 * padding, so there is no collision.
 */
.fabric-grid > .fabric-grid__item,
.fabric-color-row > .fabric-color-row__item,
.fabric-family-row > .fabric-family-row__item {
  margin: 0;
  padding: 0;
  padding-inline-start: 0;
}

.fabric-grid__item[hidden] {
  display: none;
}

/* Defensive, same class of defect as the line above: the narrowing script sets
   .hidden on this paragraph and a display rule would defeat the attribute. */
.fabric-grid__empty[hidden] {
  display: none;
}

/* ---- Tiles ---- */

.fabric-tile {
  display: block;
  text-decoration: none;
  color: #343739;
}

.fabric-tile__figure {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  /* FIX 2. Was #EEEEEE, a raw grey. #EDEBE8 is Pale Stone, already the header
     band's placeholder fill. */
  background-color: #EDEBE8;
}

.fabric-tile__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 250ms ease;
}

.fabric-tile__name {
  display: block;
  margin-top: 0.75rem;
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0.4px;
  line-height: 1.35;
  color: #343739;
}

.fabric-tile:hover .fabric-tile__image {
  transform: scale(1.03);
}

.fabric-tile:focus-visible .fabric-tile__name,
.fabric-family-tile:focus-visible .fabric-family-tile__name {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.fabric-tile:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .fabric-tile__image {
    transition: none;
  }

  .fabric-tile:hover .fabric-tile__image {
    transform: none;
  }
}

/* ---- Pattern chips ---- */

/*
 * The buttons were never styled: no block targeted .fabric-pattern-chip, only
 * the wrapper, so they rendered as a run of plain 14px words in a 23px box.
 * Pill shape is deliberate and is not the D-149 colour-chip argument reversed:
 * these narrow the set in place and never navigate, so reading as a filter
 * token is correct. Follows the store's existing filter-pill language without
 * reusing .pill, which is collection-scoped and deferred to Phase 2B.
 * aria-pressed is the state hook; fabric-narrowing.js sets it alongside
 * .is-active on every chip on each click.
 */
.fabric-pattern-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  margin-block: 1.5rem 2rem;
}

/* One pill spec for colour, pattern and fabric type. Three sets of metrics
   previously diverged on height, padding, border colour, label weight, hover
   and row gap while sitting inside the same bar. */
.fabric-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  min-height: 40px;
  padding: 9px 18px;
  font-family: Inter, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: #343739;
  background-color: #FFFFFF;
  border: 1px solid rgba(52, 55, 57, 0.16);
  border-radius: 9999px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

.fabric-chip:hover {
  background-color: #EDEBE8;
  border-color: rgba(52, 55, 57, 0.28);
}

.fabric-chip:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

.fabric-chip[aria-pressed="true"] {
  background-color: #343739;
  border-color: #343739;
  color: #FFFFFF;
}

/* Colour chips only: room for the swatch on the left. */
.fabric-color-chip { padding-left: 9px; }
.fabric-color-chip--all { padding-left: 18px; }

/* Unselected: the tick slot is removed and its width is returned as equal
   padding on both sides, so the name and count sit centred while the pill's
   total width is unchanged. Selected: padding returns to 18px and the slot
   comes back, which is where the chip sits today.
   The two states are equal by construction - removed width equals returned
   width - not by measurement. Any change to the ::before width, the chip gap
   or the font-size breaks that equality and both numbers must be recomputed
   together. Debt 82. */
.fabric-chip:not(.is-active)::before {
  display: none;
}

.fabric-chip:not(.is-active) {
  padding-inline: calc(18px + 8.795px);
}

/* The three rules below re-establish the colour chip's asymmetric padding for
   the unselected state, which padding-inline above would otherwise flatten.
   They are equal-specificity to it (0,2,0), so they depend on coming after it.

   Colour chips carry a swatch, so their left padding is 9px rather than 18px;
   the compensation is the same 8.795px on each side, applied to whichever base
   that side actually has. Only padding-left is restated - the right side keeps
   the 26.795px set above, which is already correct. */
.fabric-color-chip:not(.is-active) {
  padding-left: calc(9px + 8.795px);
}

/* The All chip has no swatch and squares back up to the 18px base, so the rule
   above under-pads it by 9px. This restores it. It must come after the colour
   rule, not merely after padding-inline. */
.fabric-color-chip--all:not(.is-active) {
  padding-left: calc(18px + 8.795px);
}

/* All chips reach 44px where the pointer is coarse, matching the axis buttons
   above them. The chips are what actually gets tapped. The padding is what
   actually reaches that height: with baseline alignment the text group sits at
   the top of the flex line, so slack between content height and min-height
   would show as the label riding high. 11 + 19.6 + 11 + 2 leaves none.
   Horizontal padding is untouched, so no wrap point moves. */
@media (max-width: 999px), (pointer: coarse) {
  .fabric-chip {
    min-height: 44px;
    padding-block: 11px;
  }
}

.fabric-pattern-chip:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

.fabric-pattern-chip[aria-pressed="true"] {
  background-color: #343739;
  border-color: #343739;
  color: #FFFFFF;
}

.fabric-chip__count {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  opacity: 0.55;
}

.fabric-pattern-chip[aria-pressed="true"] .fabric-chip__count {
  opacity: 0.75;
}

/* ---- Trust block ---- */

/*
 * FIX 3. Was entirely unstyled: paragraphs with margin: 0 running the full
 * container, measured at 1789px per line on the draft Navy facet page, roughly
 * 250 characters. Capped to a reading measure and separated from the grid above
 * with a rule, since it is the last thing on all 24 facet pages.
 */
/* D-203. The cap moved from the block to its children so the border-top
   spans the full container and matches the header band's border-bottom.
   Previously the block was 704px, so the two separators on one page ran
   at different widths. Copy measure is unchanged at 44rem. */
.fabric-trust-block {
  margin-top: 3rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(52, 55, 57, 0.12);
}

.fabric-trust-block h2 {
  margin: 0 0 0.75rem;
  max-width: 44rem;
  font-family: 'BowsersPoppins', sans-serif;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.3;
  color: #343739;
}

.fabric-trust-block p {
  margin: 0 0 0.875rem;
  max-width: 44rem;
  font-family: Inter, sans-serif;
  font-size: 15px;
  line-height: 1.65;
  color: rgba(52, 55, 57, 0.85);
}

.fabric-trust-block p:last-child {
  margin-bottom: 0;
}

/* D-176: up-navigation on the fabric journey, below the width at which the
   site-wide rule hides the breadcrumb nav. Breakpoint moved 749 -> 999 by
   D-204W. Debt 65.

   D-218: inverted. The shown state is now the base declaration and the
   hidden state is a one-sided min-width: 1000px override. The previous form
   was display: none at base, shown inside max-width: 999px, which left a
   one-CSS-pixel band at 999 < w < 1000 where neither rule matched and the
   link disappeared -- reinstating the no-up-navigation gap D-204W exists to
   close, in a sliver. Reachable at physical 1499 on a 1.5 DPR display.

   Inverting rather than moving to a fractional bound also fails in the safer
   direction: if the override ever fails to match, the visitor gets a
   redundant up-link rather than no way back up. */
.fabric-up-link {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 44px;
  font-size: 0.875rem;
  line-height: 1.4;
  margin-bottom: 0;
  text-decoration: none;
}
.fabric-up-link::before { content: "\2039"; margin-right: 0.4em; }

@media (min-width: 1000px) {
  .fabric-up-link { display: none; }
}

/* ---- Phase 2A step 6: index colour row + family row ---- */

.fabric-color-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.fabric-color-row .fabric-color-row__item {
  padding-inline-start: 0;
  margin: 0;
}
.fabric-color-chip:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}
.fabric-color-chip__swatch {
  display: block;
  flex: none;
  width: 20px;
  height: 20px;
  aspect-ratio: auto;
  align-self: center;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .14);
}
.fabric-chip__name {
  display: inline;
  font-size: 14px;
  line-height: 1.4;
}
.fabric-chip__count {
  display: inline;
  font-size: 13px;
  line-height: 1.4;
  color: #8A8781;
}

.fabric-family-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem 1rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
@media (min-width: 700px) {
  .fabric-family-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.fabric-family-row .fabric-family-row__item { padding-inline-start: 0; }
.fabric-family-tile { display: block; text-decoration: none; }
.fabric-family-tile__figure {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background-color: #EDEBE8;
  margin-bottom: 12px;
}
.fabric-family-tile__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 250ms ease;
}

.fabric-family-tile:hover .fabric-family-tile__image {
  transform: scale(1.03);
}

@media (prefers-reduced-motion: reduce) {
  .fabric-family-tile__image {
    transition: none;
  }

  .fabric-family-tile:hover .fabric-family-tile__image {
    transform: none;
  }
}
.fabric-family-tile__name { display: block; }

/* ===========================
   Fabric index — page design pass (Phase 2A step 6)
   Index only. Facet pages are unaffected.
   =========================== */

/* One heading-to-content gap across the page, replacing 0 / 20 / 24.
   The fabric-family-row arm stays: on the colour-facet peer row the heading is still a
   direct child of .container. On the index the heading moved inside
   .fabric-family-row__title-row, so that arm no longer matches there and the title row
   below carries the same 20px. Removing the arm would silently drop the gap on all 12
   colour facet pages. */
.shopify-section--fabric-color-row .container > .h4,
.shopify-section--fabric-family-row .container > .h4,
.shopify-section--fabric-index-grid .container > .h4,
.fabric-index-copy > :is(h1, h2, h3) {
  margin-bottom: 20px;
}

/* Lead paragraph. Credibility body stays at the inherited size. */
.fabric-index-copy__body--lead p {
  font-size: 17px;
  line-height: 1.6;
}

/* Family tile name. The count that used to sit beside it is no longer rendered. */
.fabric-family-tile__name {
  display: block;
  font-family: 'BowsersPoppins', sans-serif;
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0.4px;
}

/* Family tiles crop square, matching the grid. */
.fabric-family-tile__figure { aspect-ratio: 1 / 1; }

/* Grid density. Equal specificity to the existing .fabric-grid rules; these win
   on source order as the last declarations in the file. */
@media (min-width: 1000px) {
  .fabric-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1200px) {
  .fabric-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
@media (min-width: 700px) and (max-width: 999px) {
  .fabric-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Fabric type row as a carousel, index only. Reuses the theme's <scroll-carousel>
   and the native scroll-snap pattern from the homepage lifestyle gallery. Cell width
   follows that section's formula: 100%/N minus gap*(N-1)/N, so a half cell is always
   visible as the affordance that more exists. */
.fabric-family-row--carousel {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x;
  list-style: none;
  padding-left: 0;
  margin: 0;

  /* REQUIRED BY ScrollCarousel, same defect documented at length in
     sections/editorial-lifestyle-gallery.liquid. calculateLeftScroll() and
     calculateClosestIndexToAlignment() in theme.js read cell.offsetLeft and treat it as
     an offset from the scroll container, but offsetLeft is measured from the offsetParent.
     Positioning the carousel itself makes those agree. This is now the only thing doing
     that: the .fabric-family-carousel wrapper was removed when the controls moved into
     the section's title row, so there is no positioned ancestor left to fall back on. */
  position: relative;
}
.fabric-family-row--carousel .fabric-family-row__item {
  flex: 0 0 calc(66.667% - 5.333px);
  scroll-snap-align: start;
}
@media (min-width: 700px) {
  .fabric-family-row--carousel .fabric-family-row__item { flex-basis: calc(40% - 9.6px); }
}
@media (min-width: 1000px) {
  .fabric-family-row--carousel .fabric-family-row__item { flex-basis: calc(28.571% - 11.429px); }
}
@media (min-width: 1200px) {
  .fabric-family-row--carousel .fabric-family-row__item { flex-basis: calc(22.222% - 12.444px); }
}

/* The trailing cells align to end, not start. With a fractional visible count the
   last start-aligned target always strands the final partial cell; ending them
   makes the true end the nearest target on release. Count per breakpoint is
   ceil(cells visible): 4.5 -> 5, 3.5 -> 4, 2.5 -> 3, 1.5 -> 2.

   Ending only the last cell is NOT enough and was the first attempt here: it adds a
   target at 2167 but leaves the competing start target at 2001, and nearest-target wins,
   so releases at 1900, 1990, 2020 and 2060 all still rested at 2001. Every trailing start
   target has to go, which is what the counts below do.

   Also tested and rejected: scroll-snap-type: x proximity (no change in Chrome), and
   end-aligning only the last four cells (cell 7's start at 2001 survives).

   Only drag is affected either way. The arrows call scrollTo() and set the position
   directly, which is why the row looked correct when driven by the controls. Safe against
   the arrow maths: ScrollCarousel's cellAlign getter reads cells[0] only (theme.js:993),
   so it still resolves to "start". */
.fabric-family-row--carousel .fabric-family-row__item:nth-last-child(-n+2) {
  scroll-snap-align: end;
}
@media (min-width: 700px) {
  .fabric-family-row--carousel .fabric-family-row__item:nth-last-child(-n+3) { scroll-snap-align: end; }
}
@media (min-width: 1000px) {
  .fabric-family-row--carousel .fabric-family-row__item:nth-last-child(-n+4) { scroll-snap-align: end; }
}
@media (min-width: 1200px) {
  .fabric-family-row--carousel .fabric-family-row__item:nth-last-child(-n+5) { scroll-snap-align: end; }
}

/* Title row: heading left, controls right, baselines aligned. */
.fabric-family-row__title-row {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}

/* Arrows above 1000px only, matching the homepage. Below that the half-cell peek
   and drag carry the affordance. Values follow sections/featured-collections.liquid except
   the control box and icon, scaled down for this row's smaller heading. */
.fabric-family-carousel__controls { display: none; }
@media (min-width: 1000px) {
  .fabric-family-carousel__controls {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid rgb(52 55 57 / 0.28);
    border-radius: 2.5rem;
    background-color: rgb(var(--background));
  }
}
.fabric-family-carousel__control {
  display: grid;
  place-items: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border: 0;
  background-color: transparent;
  color: rgb(var(--text-color));
  cursor: pointer;
  transition: background-color 200ms, color 200ms, opacity 200ms;
}
.fabric-family-carousel__control--prev { border-radius: 2.5rem 0 0 2.5rem; }
.fabric-family-carousel__control--next {
  border-radius: 0 2.5rem 2.5rem 0;
  border-left: 1px solid rgb(52 55 57 / 0.28);
}

/* Without this the arrow renders at icon.liquid's raw 16px default. Scaled with the box:
   featured-collections pairs 2.9375rem with 0.8125rem, and this row's control is 2.25rem
   because its h2 is much smaller than the homepage heading. */
.fabric-family-carousel__control svg {
  width: 0.6875rem;
  height: auto;
  stroke-width: 1.5;
}

/* theme.js toggles [disabled] on these at the track ends. Without a disabled style the
   arrows look live at both extremes. */
.fabric-family-carousel__control[disabled] {
  opacity: 0.32;
  cursor: default;
}
@media (hover: hover) {
  .fabric-family-carousel__control:not([disabled]):hover {
    background-color: rgb(var(--text-color));
    color: rgb(var(--background-without-opacity));
  }
}
.fabric-family-carousel__control:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: -4px;
}

/* Same defect featured-collections documents: .bleed is a negative inline margin AND
   padding, and .md\:unbleed only cancels it at >=1000px, so between the two the margin
   has no containing edge and inflates document scrollWidth at tablet widths. Clipping on
   this section's own container stops it without touching the shared bleed utilities or
   the carousel's internal scroll. */
@media (max-width: 999px) {
  .shopify-section--fabric-family-row .container { overflow-x: hidden; }
}

/* Colour chips: natural flex wrap, chips hugging their own content. The wrap-control
   max-widths that used to sit here went with the loose-row layout they were tuned for;
   the row now lives in a popover and wraps to that box. */
.fabric-color-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

/* Phase 2A typography pass: section headings on the two carousel sections.
   .fabric-trust-block h2 is amended in place above (was 1.375rem, same 22px). */
.shopify-section--fabric-product-grid h2.h2,
.shopify-section--fabric-related h2.h2 {
  font-size: 27px;
}

/* ===========================
   Phase 2A — colour becomes a filter (D-187, D-188)
   The colour chips stopped being links and became narrowing buttons in the same
   push. Everything below exists because of that change: a pressed state the
   chips never needed while they navigated, a disabled state for a chip whose
   count has gone to zero under another control, an All chip with no swatch, and
   an empty state the grid can now actually reach.
   The pressed treatment is deliberately identical to .fabric-pattern-chip's, not
   merely similar: two controls sitting one above the other, doing the same thing
   to the same grid, that read as different controls would be a defect.
   =========================== */

/* ---- Colour chip: pressed ---- */

/* aria-pressed is the state hook, matching the pattern chips; fabric-narrowing.js
   sets it alongside .is-active on every chip on each click. Keyed on the
   attribute rather than the class so the server-rendered All chip is styled
   correctly before the script runs. */
.fabric-color-chip[aria-pressed="true"] {
  background-color: #343739;
  border-color: #343739;
  color: #FFFFFF;
}

.fabric-color-chip[aria-pressed="true"]:hover {
  border-color: #343739;
}

.fabric-color-chip[aria-pressed="true"] .fabric-chip__count {
  color: rgba(255, 255, 255, 0.75);
}

/* The swatch needs its inset ring lightened against the dark pressed pill, or a
   pale colour reads as a hole punched in the chip. */
.fabric-color-chip[aria-pressed="true"] .fabric-color-chip__swatch {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.28);
}

/* ---- Grid empty state ---- */

/* Reachable for the first time in this push: with one control the user could
   always see why a set was empty, with three they can narrow into a genuinely
   empty intersection. The clear affordance is a text button rather than a pill
   so it cannot be mistaken for a fourth filter. */
.fabric-grid__empty {
  margin-block: 2.5rem;
  text-align: center;
  font-size: 15px;
  line-height: 1.6;
  color: #8A8781;
}

.fabric-grid__clear {
  appearance: none;
  -webkit-appearance: none;
  margin-inline-start: 0.35rem;
  padding: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
  color: #343739;
  background: none;
  border: 0;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.fabric-grid__clear:hover {
  color: #6B6862;
}

.fabric-grid__clear:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

/* ===========================
   Phase 2A — index re-sequence and combined filter panel
   The three narrowing axes stop being loose rows above the grid and become one
   bordered panel, rendered by sections/fabric-index-grid.liquid on the index and
   by sections/fabric-facet-main.liquid on family facet pages. Same component in
   both places on purpose: a visitor arriving from the index should meet the same
   control in the same shape, not a family resemblance.
   =========================== */

/* ---- Count class unification ----

   The count span was renamed from .fabric-color-chip__count and
   .fabric-pattern-chip__count to a single .fabric-chip__count, because
   fabric-narrowing.js now recomputes all three axes through one selector.
   Renaming in place left two competing base rules above — 12px with
   opacity .55 at the old pattern site, 13px with an explicit muted colour at the
   old colour site — and the later one silently won for both. That also left the
   pattern chip's pressed rule setting opacity alone, so its count stayed muted
   grey on the dark pressed pill. This settles both for all three axes rather
   than editing either earlier block.

   Explicit colour rather than opacity is deliberate: the chip itself now drops to
   opacity .35 when disabled, and a count carrying its own opacity would compound
   with that and disappear. tabular-nums matters more than it did, because every
   count is rewritten on each keystroke of the type-ahead and proportional digits
   make the whole row twitch. */
.fabric-chip__count {
  display: inline;
  font-size: 12px;
  line-height: 1.4;
  font-variant-numeric: tabular-nums;
  color: #8A8781;
  opacity: 1;
}

.fabric-chip[aria-pressed="true"] .fabric-chip__count {
  color: rgba(255, 255, 255, 0.75);
  opacity: 1;
}

/* ---- Disabled, all three axes ---- */

/* Supersedes the per-block disabled rule written for colour and pattern in the
   D-187 block above, now that every chip carries .fabric-chip. A chip whose count
   has reached zero under the other axes stays in place and greys out; it is never
   hidden, because chips vanishing and returning as the user narrows reflows the
   row under the pointer (debt 82). */
.fabric-chip[disabled] {
  opacity: 0.35;
  pointer-events: none;
  cursor: default;
}

/* ---- Fabric type chips ---- */

.fabric-type-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
}

.fabric-type-chip:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

.fabric-type-chip[aria-pressed="true"] {
  background-color: #343739;
  border-color: #343739;
  color: #FFFFFF;
}

/* ===========================
   Phase 2A — filter bar with popovers
   Third layout for the same three controls, replacing the sticky left rail from
   77a3e75, which is deleted rather than left dead. The rail was 260px wide with
   195px of usable width, narrower than a single pill like "Charcoal & Black 18",
   so two never fitted on a line and 34 options became 34 rows: 2070px of content
   in a 751px box. Pills need horizontal room. A popover has the full page width,
   so the chip rules from the previous batch are untouched and only the container
   changed. The grid returns to full width and its original column steps apply
   again, which is why the re-laddered .fabric-browse steps went with the rail.
   =========================== */

/* Same header reservation the rail used, which was correct: the announcement bar
   and header each contribute their height multiplied by their own is-sticky
   switch, copied from the theme's scroll-padding expression at theme.css:1556.
   Both terms collapse to 0 if either is turned off, so the bar follows the
   setting instead of the 105px this store happens to reserve today.
   --header-height is written at runtime by the x-header element, so it is read
   rather than duplicated. */
:root {
  --fabric-bar-offset: calc(
    var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px) +
    var(--header-is-sticky, 0) * var(--header-height, 0px)
  );
}

/* z-index 20 is deliberate and bounded on both sides: above the grid so the bar
   and an open popover paint over tiles scrolling under them, below the site
   header's 100 (sections/header.liquid:13) so the header always wins where the
   two meet. */
.fabric-filter-bar {
  /* Internal padding, not a bleed: the band's outer edges line up with the
     heading above it and the grid below. */
  --fabric-bar-pad: 16px;

  position: sticky;
  top: var(--fabric-bar-offset);
  z-index: 20;
  margin-bottom: 24px;
  padding-inline: var(--fabric-bar-pad);
  background-color: #F5F3F0;
  border: 1px solid #DDD8D0;
  /* Square, not rounded. The bar is sticky over a scrolling grid, so a radius cuts a
     notch out of its own background at each corner and swatches show through it as
     they pass underneath. Found on a phone after Publish 1. The bar's WIDTH is
     unchanged -- it is still a contained band and still lines up with the heading
     above and the grid below, so the contained-not-bleeding decision stands. */
  border-radius: 0;

  /* Off at rest, on while a popover is open or a filter is applied. Both states
     are already in the DOM: the popover drops [hidden] when it opens, and
     [data-fabric-clear] drops [hidden] exactly when a filter is active
     (fabric-narrowing.js, apply()). No script needed. Browsers without :has()
     get no shadow, which is the resting state, so nothing breaks. */
  box-shadow: 0 0 0 rgba(52, 55, 57, 0);
  transition: box-shadow 150ms ease;
}

.fabric-filter-bar:has(.fabric-filter-popover:not([hidden])),
.fabric-filter-bar:has([data-fabric-clear]:not([hidden])) {
  box-shadow: 0 1px 3px rgba(52, 55, 57, 0.06);
}

@media (prefers-reduced-motion: reduce) {
  .fabric-filter-bar { transition: none; }
}

.fabric-filter-bar__inner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 12px 0;
}

/* Wrapping is the whole mobile story. The bar takes two or three lines on a
   phone and the popovers go full width, which is short enough that the
   disclosure toggle the rail needed bought nothing and was removed with it. */
.fabric-filter-bar__search {
  flex: 0 1 220px;
  min-width: 140px;
}

/* Same field that shipped at step 6, declarations carried rather than reinvented. */
.fabric-filter-bar__search input {
  display: block;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #DDD8D0;
  border-radius: 4px;
  background: #FFFFFF;
  font-size: 14px;
}

.fabric-filter-bar__search input:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 1px;
}

/* ---- Axis buttons ---- */

.fabric-filter-bar__btn {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 9px 16px;
  font-family: Inter, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: #343739;
  background-color: #FFFFFF;
  border: 1px solid rgba(52, 55, 57, 0.16);
  border-radius: 9999px;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease;
}

.fabric-filter-bar__btn:hover {
  background-color: #EDEBE8;
  border-color: rgba(52, 55, 57, 0.28);
}

.fabric-filter-bar__btn:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

/* fabric-narrowing.js toggles .is-active on the button whenever that axis holds a
   selection, so a closed popover still shows which axes are doing something. */
.fabric-filter-bar__btn.is-active {
  border-color: #343739;
  background-color: #F5F3F0;
}

.fabric-filter-bar__sel {
  font-weight: 600;
  color: #343739;
}

/* Collapses the gap as well as the text, so an unselected button shrinks back to
   its label and caret instead of carrying a blank slot. */
.fabric-filter-bar__sel:empty {
  display: none;
}

/* Reads "Color: Navy". Attached to __sel rather than written into the markup
   so it collapses with the selection through the :empty rule above, and so
   neither section file has to carry it. The script sets __sel via textContent,
   which replaces child nodes and leaves this pseudo-element intact. */
.fabric-filter-bar__sel:not(:empty)::before {
  content: ':\00A0';
  font-weight: 500;
  color: #343739;
}

.fabric-filter-bar__caret {
  /* The button's flex gap was removed so the colon can sit tight against the
     axis name. The caret is the only child that still needs separating, so it
     carries that spacing itself. */
  margin-left: 0.4rem;
  font-size: 10px;
  line-height: 1;
  color: #8A8781;
}

/* ---- Spacer, clear, status ---- */

.fabric-filter-bar__spacer {
  flex: 1 1 auto;
}

.fabric-filter-bar__clear {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  appearance: none;
  -webkit-appearance: none;
  padding: 0;
  font-family: Inter, sans-serif;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  color: #343739;
  background: none;
  border: 0;
  cursor: pointer;
}

.fabric-filter-bar__clear::before {
  content: '\00D7';
  font-size: 15px;
  line-height: 1;
}

/* The underline lives on the label, not the button. An underline running
   beneath the cross reads as a rendering fault rather than as a link, so the
   cross is deliberately left undecorated and the flex gap - which carries no
   underline - now separates them harmlessly. */
.fabric-filter-bar__clear-label {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.fabric-filter-bar__clear:hover {
  color: #6B6862;
}

.fabric-filter-bar__clear:focus-visible {
  outline: 2px solid #343739;
  outline-offset: 2px;
}

/* Load-bearing: the script toggles the hidden attribute on this button and the
   display value above would otherwise defeat it. Same defect class as
   .fabric-grid__item[hidden] above. */
.fabric-filter-bar__clear[hidden] {
  display: none;
}

@media (max-width: 999px), (pointer: coarse) {
  .fabric-filter-bar__clear { min-height: 44px; }
}

.fabric-filter-bar__status {
  margin: 0;
  font-size: 13px;
  line-height: 1.4;
  color: #8A8781;
}

/* Below 700px the spacer would push the status onto a line of its own anyway, but
   only after stretching; collapsing it and giving the status the full row makes
   that deterministic rather than a wrap accident. */
@media (max-width: 699px) {
  .fabric-filter-bar__spacer {
    display: none;
  }

  .fabric-filter-bar__status {
    flex: 1 1 100%;
  }
}

/* ---- Popovers ---- */

/* In normal flow, not absolutely positioned: an open popover pushes the grid down
   instead of covering it, so the tiles it is about to filter stay visible. It
   sits inside the sticky bar, so bar and popover stick together as one block. */
.fabric-filter-popover {
  display: block;
  margin-inline: calc(-1 * var(--fabric-bar-pad));
  padding: 16px var(--fabric-bar-pad) 18px;
  border-top: 1px solid #DDD8D0;
}

/* Load-bearing, and the reason the popovers can be hidden in Liquid: the display
   value above would defeat the hidden attribute the markup ships with and the
   script toggles. */
.fabric-filter-popover[hidden] {
  display: none;
}

/* .fabric-pattern-chips carries margin-block from when it was a loose row above
   the grid. The rail neutralised that with a .fabric-filter-row descendant rule
   that no longer matches anything, so it is neutralised again here, where the
   popover's own padding owns the spacing. */
.fabric-filter-popover .fabric-pattern-chips {
  margin-block: 0;
}

/* ===========================
   Phase 2A — multi-select filtering
   OR within an axis, AND across axes. Single-select manufactured dead ends: of
   the 132 fabric type x colour pairs, 58 return nothing and 54 more return one
   or two fabrics. The chips, the bar and the popovers are unchanged markup; only
   the state model moved, so this block adds two things and touches nothing else.
   =========================== */

/* ---- (a) Touch tap target on the axis buttons ---- */

/* 44px wherever the pointer is coarse or the viewport is narrow enough that the
   bar is being used on a phone or tablet. Desktop keeps 40px, which reads better
   against the 40px chips in the popover below it. Debt 72 already records a 20px
   tap target on this journey and a second undersized one is not acceptable.
   Both conditions are needed: pointer: coarse catches a large tablet that is
   wider than the breakpoint, and the width query catches a narrow window on a
   device that reports a fine pointer. */
@media (max-width: 999px), (pointer: coarse) {
  .fabric-filter-bar__btn {
    min-height: 44px;
  }
}

/* ---- (b) Multi-select affordance on the chips ---- */

/*
 * A tick on every selected chip, so two dark pills in one row read as two
 * deliberate choices rather than as a rendering fault. .is-active is what
 * fabric-narrowing.js toggles, and it sets it on the All chip too whenever that
 * axis holds nothing, so All correctly reads as the current state.
 *
 * The slot is present only on the selected chip. It is not reserved on the
 * others: they drop it with display: none and take its width back as equal
 * padding on both sides instead, so the name and count sit centred while the
 * pill's total width is identical in both states. That equality is what debt
 * 82 needs - a pill that changed size on click would rewrap the row under the
 * cursor. The label shifting inside a fixed-width pill is accepted; the pill
 * changing size is not. The compensating padding is in the centring block
 * above and is derived from the width and font-size below, so the two must be
 * recomputed together.
 *
 * Width is in em so it tracks the 14px chip text, and the flex gap the chips
 * already declare supplies the spacing, so no margin is added here. Padding,
 * min-height and font-size are untouched: the pill metrics are the same, the
 * pill is simply one slot wider.
 */
.fabric-chip::before {
  content: '\2713';
  flex: none;
  align-self: center;
  width: 0.8em;
  font-size: 12px;
  line-height: 1;
  text-align: center;
  visibility: hidden;
}

.fabric-chip.is-active::before {
  visibility: visible;
}

/* The colour All chip squares up its left padding because it carries no swatch.
   It now carries the tick slot like every other chip, so the two are consistent
   and the override still only concerns the missing swatch. */

/* ---- (c) Longer selection labels ---- */

/* __sel can now read "Gray +2" rather than "Gray". The bar already wraps, so the
   failure mode to avoid is a button growing wide enough to overflow its line
   rather than wrap. Nothing needs to change for that: .fabric-filter-bar__inner
   is flex-wrap: wrap and every child is free to move to the next line. The label
   is capped by construction at first-label plus a count, so it cannot grow with
   the number of selections. Confirmed on the draft at 1280px with all three axes
   holding multiple selections: search field plus three buttons plus Clear all and
   the status line still occupy a single row. */

/* --------------------------------------------------------------------
   PHASE 2A - fabric type facet pages, styling pass. D-203, amended D-209.
   D-203 gave the band a 1px hairline and 32px separation above 700px and
   none below, because at those widths the band photo and the first swatch
   were the same kind of object on the same gutter. D-209 removed the photo,
   so that reason is gone and so is the asymmetry: the band takes a 32px
   margin only, at every width, set on the base rule above.
   -------------------------------------------------------------------- */

@media (max-width: 699px) {
  /* D-169 capped the lead at 38rem above 1000px and nothing capped it
     below. Measured 659px at CSS 699, about 82 characters against the
     65 to 75 D-169 argued for. Inactive below about 545px, where the
     container is already narrower than the cap. */
  .fabric-facet-header__lead {
    max-width: 34rem;
  }
}

/* The theme hides .breadcrumb below 1000px, and a separate site-wide rule
   hides the .bowsers-breadcrumbs wrapper below 750px. Between 750 and 999
   the wrapper therefore rendered 33px of empty padding with no trail in
   it, and the up-link did not appear until 749, so the journey had no
   up-navigation at all across that range. D-176 verified against the
   wrapper and never checked the nav inside it. Scoped to this section:
   the site-wide 749px rule on .shopify-section--breadcrumbs is left alone
   because it covers the Phase 2B collection pages. */
@media (max-width: 999px) {
  .shopify-section--fabric-facet-main .bowsers-breadcrumbs {
    display: none;
  }
}

/* ======================================================================
   Fabric page layer — hero two-column, spec list, related swatch strip
   (Phase 2A, fabric page design pass)

   Scope: sections/fabric-page-hero.liquid and sections/fabric-related.liquid.

   No product card rules appear in this block, deliberately. Every
   .product-card* rule in theme.css and custom.css is a bare class
   selector, none is bound to the <product-card> custom element, so
   snippets/fabric-product-card.liquid inherits the collection card
   presentation in full from <div class="product-card"> with nothing
   duplicated here. Adding overrides would only let the fabric card drift
   away from the collection card it is supposed to match.
   ====================================================================== */

/* ---- Hero: one column, then media + body from 1000px --------------- */

.fabric-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 32px;
  align-items: start;
  /* 520 media + 48 gap + 680 body measure = 1248, so the cap is the content
     width rather than an arbitrary round number. The previous 1100 cap was
     filled exactly by its own content and still left 385px dead to its right
     inside the 1484.7 container. Left aligned on purpose: the rest of the
     page is left aligned and centring this would break the gutter. */
  max-width: 1248px;
}

/* Stacked state, below the 1000px two-column breakpoint. Paired with the
   min-width block directly below; the two together are the whole hero
   layout, so keep them adjacent.

   Before this, the 520 media cap existed only inside the min-width rule, so
   while stacked the media had no width limit at all and filled the content
   column. At a 700px viewport that column is 600 (700 less the 50px gutters
   .container forces) and the Liquid's inline ceiling is also 600, so the
   image rendered at 600 -- wider than the 520 it gets on a 1585 desktop --
   and pushed the h1 and copy below the fold. The band affected is roughly
   999 down to ~650; below ~650 the column is narrower than the cap and
   constrains the image by itself, which is why 553 and 390 were already fine.

   Not an upscaling fault: the masters are real 700x700. A soft macro source
   shown at 600 reads soft; at 420 it downscales enough to read sharp.

   min(100%, 420px) rather than a plain max-width keeps the phone case
   explicit: at 390 the 290px column wins and the image goes full width.

   LEFT ALIGNED, no auto margin. This rule briefly carried margin-inline: auto
   to centre the stacked image; that was reversed deliberately. At the 420 it
   now renders, the image reads better sharing the left edge of the h1, copy
   and spec list beneath it than floating centred above them. Do not add a
   centring declaration back without reversing that decision on purpose.

   DECLARED UNCONDITIONALLY, not inside a max-width block. It was scoped to
   max-width: 999px until D-218. Paired with min-width: 1000px that left a
   one-CSS-pixel band, 999 < w < 1000, in which neither query matched and the
   cap vanished: the media fell back to the column width and the Liquid's 600
   inline ceiling, which is the exact fault the cap was added to remove. The
   band is reachable at a fractional device pixel ratio -- physical 1499 on a
   1.5 DPR display resolves to 999.33 CSS px.

   The min-width: 1000px block below overrides this on source order, so the
   two-column state is unaffected. Do not restore the max-width wrapper: a
   base declaration plus a one-sided override cannot have a gap, and a paired
   pair always can. See debt 106 for the sites that still carry the old form.

   The Liquid's inline max-width is the source-width ceiling and still beats
   this width, so a master smaller than 420 renders at its own size and never
   upscales. Do not fold that inline value in here. */
.fabric-hero__media {
  width: min(100%, 420px);
}

/* Flex, not grid, from 1000px. A fixed 440px grid TRACK would hold its width
   even when the media inside it is narrower, reinstating the dead space for
   any fabric whose master is smaller than 440. A flex item collapses to its
   own rendered width instead. */
@media screen and (min-width: 1000px) {
  .fabric-hero {
    display: flex;
    align-items: center;
    gap: 48px;
  }

  /* 440 is the displayed width. The Liquid still emits an inline
     max-width equal to the source width ceiling (600, or less for a small
     master), and max-width beats flex-basis: a 300px master renders 300 and
     never upscales. Both behaviours are load-bearing, do not merge them. */
  .fabric-hero__media {
    flex: 0 0 520px;
    width: 520px;
  }

  .fabric-hero__body {
    flex: 1 1 auto;
    min-width: 0;
  }
}

.fabric-hero__media img {
  display: block;
  width: 100%;
  height: auto;
}

/* 680 rather than the 38rem (608) the facet pages use for
   .fabric-facet-header__text: this column sits beside a 520px image inside a
   1248 row, so it is sized to close that row rather than to match a
   full-width lead. The cap sits on the body wrapper so it reaches the h1,
   the prose and the spec list alike, not just the copy. */
.fabric-hero__body {
  max-width: 680px;
}

/* .section-stack applies one uniform 48px row gap to its children. The
   hero body is a single child of that stack, so its internal rhythm is
   set here instead: 16px h1 to copy, 32px before the specs. */
.fabric-hero__body > * {
  margin-top: 0;
  margin-bottom: 0;
}

.fabric-hero__body > * + * {
  margin-top: 16px;
}

.fabric-hero__body > .fabric-specs {
  margin-top: 32px;
}

/* Inherited 14px / 23.1px is too tight for the lead. Matches the facet
   page lead at 1rem / 1.6. */
.fabric-hero__body .prose,
.fabric-hero__body .prose p,
.fabric-hero__body .prose li {
  font-size: 16px;
  line-height: 1.6;
}

/* ---- Spec list (replaces the old table--sm) ----------------------- */

.fabric-specs {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 24px;
  row-gap: 10px;
  align-items: baseline;
  margin: 0;
}

.fabric-specs dt {
  margin: 0;
  font-size: 15px;
  line-height: 1.4;
  color: #8A8781;
}

.fabric-specs dd {
  margin: 0;
  font-size: 15px;
  line-height: 1.4;
  color: #343739;
}

/* Durability: five dots rather than "5/5". The dd carries an aria-label
   with the numeric value, so the dots are presentational only. */
.fabric-specs__rating {
  display: flex;
  align-items: center;
  gap: 6px;
}

.fabric-specs__rating span {
  display: block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #D8D5D0;
}

.fabric-specs__rating span.is-on {
  background: #343739;
}

/* ---- Related: horizontal swatch strip ----------------------------- */

/* Plain overflow-x on purpose. <scroll-carousel> clips vertically, has
   known drag and snap faults on this store, and dispatches
   "carousel:change", which ShopTheLookProductListCarousel uses to find a
   ".product-card" by class and rewrite its link. */
.fabric-strip {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
  -webkit-overflow-scrolling: touch;
}

.fabric-strip::-webkit-scrollbar {
  display: none;
}

/* Drag-to-scroll affordance. The section script toggles .is-dragging once the
   5px threshold is crossed.

   Gated on a fine hover-capable pointer because the drag handler itself
   ignores pointerType 'touch': touch already scrolls natively with momentum,
   and a touch device would otherwise be shown a grab cursor it can never act
   on.

   Deliberately NOT set here: scroll-behavior (must stay 'auto' or direct
   scrollLeft writes would be smoothed and the drag would lag the pointer;
   the arrow handler passes behavior:'smooth' per scrollBy call instead) and
   touch-action (must stay 'auto' so native touch scrolling is untouched). */
@media (hover: hover) and (pointer: fine) {
  .fabric-strip {
    cursor: grab;
  }

  .fabric-strip.is-dragging {
    cursor: grabbing;
  }
}

/* 112 + 16 gap = 128 per tile. Twelve tiles come to ~1485, which fills the
   band almost exactly, so a family with more than twelve members now
   overflows and scrolls instead of trailing off as a stub. */
.fabric-strip__item {
  flex: 0 0 auto;
  width: 112px;
  display: block;
  text-decoration: none;
  /* Paired with draggable="false" on the anchor itself. Without both, a drag
     across the strip either lifts a link ghost or selects the fabric names
     instead of scrolling. */
  user-select: none;
  -webkit-user-select: none;
}

/* Fixed 1:1, same treatment as the index grid tiles. */
.fabric-strip__figure {
  display: block;
  width: 112px;
  aspect-ratio: 1 / 1;
  border-radius: 2px;
  background: #EDEBE8; /* Pale Stone */
  overflow: hidden;
}

/* D-185 hover. Values copied verbatim from .fabric-tile__image (index grid)
   and .fabric-family-tile__image (family tiles), which already carry
   transform 250ms ease and scale(1.03). All three surfaces animate
   identically. The img scales, not the figure: overflow:hidden on the figure
   is what crops the scale. */
.fabric-strip__figure img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 250ms ease;
}

.fabric-strip__item:hover .fabric-strip__figure img {
  transform: scale(1.03);
}

@media (prefers-reduced-motion: reduce) {
  .fabric-strip__figure img {
    transition: none;
  }

  .fabric-strip__item:hover .fabric-strip__figure img {
    transform: none;
  }
}

.fabric-strip__name {
  display: block;
  margin-top: 8px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  line-height: 1.3;
  color: #8A8781;
}

/* ---- Strip controls ------------------------------------------------

   Copied from .fabric-family-carousel__control (the Shop by Fabric Type row
   on the index), which in turn follows sections/featured-collections.liquid:
   joined pill, 1px rgb(52 55 57 / 0.28) border, 2.5rem radius, divider on
   next, [disabled] at 0.32 opacity, inverted hover behind (hover: hover),
   focus ring inset 4px, transition 200ms on background/colour/opacity.

   Two values are scaled down from that row: the control box is 2rem rather
   than 2.25rem, and the icon is 14px rather than 0.6875rem (11px), because
   this strip's cells are 112px against the index row's 349px.

   Shown from 1000px only, matching the index row. Below that, touch
   scrolling carries the affordance. */

.fabric-strip__title-row {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}

.fabric-strip__controls { display: none; }

@media (min-width: 1000px) {
  .fabric-strip__controls {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid rgb(52 55 57 / 0.28);
    border-radius: 2.5rem;
    background-color: rgb(var(--background));
  }
}

/* The section script sets [hidden] when the strip does not overflow. The
   media query above is a class selector and would otherwise outrank the UA
   stylesheet's [hidden] rule, leaving dead controls on screen. */
.fabric-strip__controls[hidden] { display: none !important; }

.fabric-strip__control {
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 0;
  background-color: transparent;
  color: rgb(var(--text-color));
  cursor: pointer;
  transition: background-color 200ms, color 200ms, opacity 200ms;
}

.fabric-strip__control--prev { border-radius: 2.5rem 0 0 2.5rem; }

.fabric-strip__control--next {
  border-radius: 0 2.5rem 2.5rem 0;
  border-left: 1px solid rgb(52 55 57 / 0.28);
}

/* Without this the arrow renders at icon.liquid's raw 16px default. */
.fabric-strip__control svg {
  width: 14px;
  height: auto;
  stroke-width: 1.5;
}

/* The section script toggles [disabled] at the two ends of the scroll.
   Without a disabled style the arrows look live at both extremes. */
.fabric-strip__control[disabled] {
  opacity: 0.32;
  cursor: default;
}

@media (hover: hover) {
  .fabric-strip__control:not([disabled]):hover {
    background-color: rgb(var(--text-color));
    color: rgb(var(--background-without-opacity));
  }
}

.fabric-strip__control:focus-visible {
  outline: 2px solid rgb(var(--text-color));
  outline-offset: -4px;
}
