/* Editorial labels stay separate from price, availability and customer reviews. */
.footer-legal { display:flex; flex-wrap:wrap; gap:4px 24px; padding-top:12px; border-top:1px solid #e5d6c6; margin-top:12px; }
.footer-legal a { display:inline-flex; align-items:center; min-height:44px; color:#7a1337; font-size:11px; text-decoration:underline; text-underline-offset:4px; }
.merch-badge {
  position: absolute;
  inset: 12px auto auto 12px;
  z-index: 2;
  display: inline-block;
  max-width: calc(100% - 24px);
  padding: 7px 10px;
  background: #faf8f4;
  color: #7a1337;
  border: 1px solid rgb(122 19 55 / 16%);
  font: 500 10px/1.35 Inter, Arial, sans-serif;
  letter-spacing: .055em;
  text-transform: uppercase;
  pointer-events: none;
}
.product-image .merch-badge { max-width: calc(100% - 70px); }
.product-runway-card > div { position: relative; }
.merch-badge-inline {
  position: static;
  max-width: 100%;
  margin: 2px 0 12px;
  background: #fae4ea;
}
.mobile-merch-badge { display: none; }
@media (max-width: 600px) {
  .merch-badge { inset: 8px auto auto 8px; padding: 5px 7px; letter-spacing: .025em; }
  .product-image .merch-badge { max-width: calc(100% - 60px); }
  .product-image > .merch-badge { display: none; }
  .product-card-content > .mobile-merch-badge { display: block; min-height: 18px; margin-bottom: 2px; }
  .mobile-merch-badge .merch-badge-inline {
    display: inline-block;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    font-size: 8px;
    line-height: 1.25;
    letter-spacing: .08em;
  }
}


.catalogue-footer .footer-legal a{color:var(--off)}
.catalogue-footer .page-shell{flex-wrap:wrap;gap:24px}.catalogue-footer .footer-legal{flex-basis:100%}

.price-stack {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px 8px;
  min-width: 0;
  color: #2b2b2d;
  font-variant-numeric: tabular-nums;
}
.sale-price { color: var(--signature-ink); font: 500 1em/1.2 Jost, sans-serif; white-space: nowrap; }
.listed-price { color: #6e6266; font: 400 9px/1.3 Inter, Arial, sans-serif; white-space: nowrap; text-decoration-thickness: 1px; }
.discount-label {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 3px 6px;
  border-radius: 999px;
  background: var(--signature-ink);
  color: #faf8f4;
  font: 500 8px/1 Inter, Arial, sans-serif;
  letter-spacing: .035em;
  text-transform: uppercase;
  white-space: nowrap;
}
.product-rating {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: fit-content;
  min-height: 30px;
  color: #7a1337;
  font: 400 10px/1.35 Inter, Arial, sans-serif;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
a.product-rating { text-decoration: underline; text-decoration-color: rgb(122 19 55 / 35%); text-underline-offset: 4px; }
a.product-rating:hover { text-decoration-color: currentColor; }
a.product-rating:focus-visible { outline: 2px solid #7a1337; outline-offset: 3px; }
.product-rating strong { color: #2b2b2d; font-weight: 600; }
.rating-stars {
  --rating-fill: 0%;
  position: relative;
  display: inline-block;
  width: 54px;
  overflow: hidden;
  color: #c7c8ca;
  font: 11px/1 Arial, sans-serif;
  letter-spacing: 1px;
  text-align: left;
}
.rating-stars::before { content: '★★★★★'; }
.rating-stars::after {
  content: '★★★★★';
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--rating-fill);
  overflow: hidden;
  /* Drawn with ★ characters, so it is text and WCAG asks 4.50 of it - not the
     3.00 an icon would get. The brand pink measures 4.20; the ink 5.21. */
  color: var(--signature-ink);
}
.product-card .product-price { min-width: 0; }
.product-card .product-meta { align-items: flex-start; }
.product-card .price-stack { line-height: 1; }
.product-card .sale-price { font-size: 14px; }
.product-card .product-rating { margin-top: 3px; }
.product-runway-price { margin-top: 3px; }
.product-runway-card .product-rating { min-height: 26px; font-size: 9px; }
.product-runway-card .rating-stars { width: 49px; font-size: 10px; }
.catalogue-card-copy .price-stack,
.catalogue-card-copy .price-stack span,
.catalogue-card-copy .product-rating,
.catalogue-card-copy .product-rating span {
  color: inherit;
  font-family: Inter, Arial, sans-serif;
  letter-spacing: 0;
  text-transform: none;
}
.catalogue-card-copy .sale-price { color: var(--signature-ink); font: 500 14px/1.2 Jost, sans-serif; }
.catalogue-card-copy .listed-price { color: #6e6266; font-size: 9px; }
.catalogue-card-copy .price-stack .discount-label { color: #faf8f4; font-size: 8px; }
.catalogue-card-copy .product-price { margin: 10px 0 2px; }
.catalogue-card-copy .product-rating { color: #7a1337; }
.product-copy .product-price { margin: 24px 0 4px; }
.product-copy .sale-price { font-size: 29px; }
.product-copy .listed-price { font-size: 11px; }
.product-copy .discount-label { min-height: 23px; padding-inline: 8px; font-size: 9px; }
.product-copy .product-rating { min-height: 38px; font-size: 11px; }
.quick-price .sale-price { font-size: 21px; }
.quick-price .listed-price { font-size: 10px; }
.bag-line .price-stack { margin-block: 4px 8px; }
.bag-line .sale-price { font-size: 13px; }
.saved-line .product-price { margin: 5px 0 0; }
.saved-line .sale-price { font-size: 13px; }
.saved-line .product-rating { min-height: 25px; font-size: 9px; }
.stage-bottom #stage-price { display: block; margin-top: 3px; }
.stage-bottom #stage-price .sale-price { font-size: 17px; }
.stage-bottom #stage-price .listed-price { font-size: 8px; }
.stage-bottom #stage-price .discount-label { min-height: 18px; font-size: 7px; }
.product-mini > strong { display: block; margin-bottom: 10px; font: 500 18px/1.3 Jost, sans-serif; }
.product-mini .price-stack { margin-bottom: 5px; }
.review-summary-card {
  max-width: 620px;
  padding: 30px;
  border-left: 2px solid #7a1337;
  background: #fae4ea;
}
.review-summary-card .product-rating { min-height: 24px; }
.review-summary-card .rating-stars { width: 76px; font-size: 15px; }
.review-summary-card h3 { margin: 12px 0 4px; color: #7a1337; font: 400 25px/1.3 Jost, sans-serif; }
.review-summary-card p { margin: 0 0 8px; font-size: 13px; }
.review-summary-card small { color: #6e6266; font-size: 11px; }
@media (max-width: 600px) {
  .product-card .product-meta { display: block; }
  .product-card .stone-dots { margin-top: 8px; }
  .product-card .sale-price { font-size: 13px; }
  .product-card .listed-price { font-size: 8px; }
  .product-card .discount-label { min-height: 18px; font-size: 7px; }
  .product-card .product-rating { gap: 3px; font-size: 8.5px; }
  .product-card .rating-stars { width: 44px; font-size: 9px; }
  .catalogue-card-copy .price-stack { gap: 4px 6px; }
  .catalogue-card-copy .sale-price { font-size: 13px; }
  .catalogue-card-copy .listed-price { font-size: 8px; }
  .catalogue-card-copy .price-stack .discount-label { min-height: 18px; font-size: 7px; }
  .catalogue-card-copy .product-rating { gap: 3px; font-size: 8px; }
  .catalogue-card-copy .rating-stars { width: 44px; font-size: 9px; }
  .review-summary-card { padding: 22px 20px; }
}

/* Whole-card discovery keeps the explicit links and controls independently usable. */
.product-card[data-product-url],
.saved-line[data-product-url] { cursor: pointer; }
.product-card[data-product-url]:focus-visible,
.saved-line[data-product-url]:focus-visible {
  /* Matches the React focus ring, which is the brand pink. A focus indicator
     is a graphical object: 3.00, and #e31c79 measures 4.20 on offwhite. */
  outline: 2px solid var(--signature);
  outline-offset: 5px;
}
.product-name { color: inherit; text-decoration: none; }
.product-card[data-product-url]:hover .product-name,
.product-card[data-product-url]:focus-visible .product-name { color: #7a1337; text-decoration: underline; text-underline-offset: 4px; }

/* Availability is driven only by a real product availability field. */
.sold-out-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 6px 10px;
  background: var(--signature-ink);
  color: #faf8f4;
  font: 500 9px/1 Inter, Arial, sans-serif;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.product-image > .sold-out-badge,
.product-runway-card > div > .sold-out-badge,
.catalogue-card-media > .sold-out-badge {
  position: absolute;
  inset: 12px 12px auto auto;
  z-index: 3;
}
.is-sold-out { cursor: not-allowed; }
.is-sold-out .product-image > img,
.is-sold-out .catalogue-card-media > img,
.product-runway-card.is-sold-out > div > img { filter: grayscale(1); opacity: .46; }
.is-sold-out:hover .catalogue-card-media img:first-child,
.product-runway-card.is-sold-out:hover img { transform: none; }
.sold-out-copy { display: block; margin-top: 8px; color: #7a1337; font: 500 10px/1.4 Inter, Arial, sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.sold-out-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  margin-top: 25px;
  padding: 14px 24px;
  border: 1px solid #c7c8ca;
  background: #c7c8ca;
  color: #2b2b2d;
  font-size: 12px;
  cursor: not-allowed;
}

/* Compact commerce information inside visual storytelling and utility surfaces. */
.story-pricing { display: block; margin-top: 8px; }
.story-pricing .price-stack { gap: 3px 6px; }
.story-pricing .sale-price { color: inherit; font-size: 13px; }
.story-pricing .listed-price { color: inherit; opacity: .72; font-size: 8px; }
.story-pricing .discount-label { min-height: 17px; padding: 2px 5px; background: #faf8f4; color: var(--signature-ink); font-size: 7px; }
.search-price { min-width: 155px; }
.search-price .price-stack { justify-content: flex-end; }
.search-price .sale-price { font-size: 13px; }
.search-price .listed-price { font-size: 8px; }
.search-price .discount-label { min-height: 18px; font-size: 7px; }
.bag-product-image { display: block; align-self: start; }
.bag-product-image img { width: 92px; height: 100px; object-fit: contain; background: var(--tile); }

/* Product colour selector: real same-SKU renders, not decorative swatches. */
.product-variants {
  margin: 22px 0 16px;
  padding: 16px 0 18px;
  border-block: 1px solid #e5d6c6;
}
.variant-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.variant-heading > span { color: #7a1337; font: 500 9px/1.4 Inter, Arial, sans-serif; letter-spacing: .14em; text-transform: uppercase; }
.variant-heading > strong { font: 400 16px/1.3 Jost, sans-serif; }
.variant-options { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 7px; }
.variant-option {
  min-width: 0;
  min-height: 94px;
  padding: 6px;
  border: 1px solid #e5d6c6;
  background: #faf8f4;
  color: #2b2b2d;
  cursor: pointer;
  transition: border-color .25s ease, background-color .25s ease, transform .25s ease;
}
.variant-option:hover { border-color: #7a1337; transform: translateY(-2px); }
.variant-option[aria-pressed="true"] { border-color: #7a1337; background: #fae4ea; box-shadow: inset 0 0 0 1px #7a1337; }
.variant-option:focus-visible { outline: 2px solid #7a1337; outline-offset: 3px; }
.variant-image { display: block; aspect-ratio: 1; margin-bottom: 5px; overflow: hidden; background: #fae4ea; }
.variant-image img { width: 100%; height: 100%; object-fit: contain; }
.variant-option > span:last-child { display: block; overflow: hidden; font: 500 8px/1.25 Inter, Arial, sans-serif; text-overflow: ellipsis; white-space: nowrap; }
.variant-detail { margin: 10px 0 0; color: #7a1337; font-size: 11px; }
.variant-status { margin: 9px 0 0; color: #6e6266; font-size: 9px; }
.coming-variant { display: block; margin: -4px 0 10px; color: #7a1337; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }

@media (max-width: 600px) {
  .product-image > .sold-out-badge,
  .product-runway-card > div > .sold-out-badge,
  .catalogue-card-media > .sold-out-badge { inset: 8px 8px auto auto; }
  .sold-out-badge { min-height: 24px; padding: 5px 7px; font-size: 8px; }
  .search-result { grid-template-columns: 54px minmax(0,1fr); }
  .search-price { grid-column: 2; min-width: 0; }
  .search-price .price-stack { justify-content: flex-start; }
  .bag-product-image img { width: 80px; height: 90px; }
  .variant-heading { gap: 12px; }
  .variant-heading > strong { font-size: 14px; }
  .variant-options { gap: 5px; }
  .variant-option { min-height: 80px; padding: 4px; }
  .variant-option > span:last-child { font-size: 7px; }
}

@media (prefers-reduced-motion: reduce) {
  .variant-option { transition: none; }
  .variant-option:hover { transform: none; }
}
