/* css/blocks/137-hc-pgrid.css */
/* =================== hc-pgrid.css =================== */
/* hc-pgrid - product grid container. Wraps .pcard children. Used on catalog,
 * search results, favorites, related-product rails, etc. Adapts column count
 * to viewport with sensible breakpoints. Strictly .hc-pgrid / .hc-pgrid__*. */

.hc-pgrid {
  display: grid;
  grid-auto-rows: 1fr;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(14px, 1.4vw, 22px);
  /* Uniform row heights — cards stretch to the row baseline. The hoverband
     is an absolute float, so only the hovered card visibly extends below
     the row (siblings stay at row height). */
  align-items: stretch;
}

/* Column count = divisors of PAGE_SIZE (24): 2 / 3 / 4 — never 5 or 7,
   so the last grid row is always full (24 % 5 = 4 left an empty cell). */
@media (min-width: 600px) { .hc-pgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 992px) { .hc-pgrid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* List view toggle. Single column → rows must be content-height; the base
   `grid-auto-rows: 1fr` otherwise stretches each row to an equal slice of the
   (tall) results column, blowing every card up into a huge empty panel. */
.hc-pgrid[data-view="list"] {
  grid-template-columns: 1fr;
  grid-auto-rows: auto;
  align-content: start;
}
.hc-pgrid[data-view="compact"] {
  grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
  gap: var(--hc-sp-2);
}

/* List view — every catalog card is forced to variant 'a' (editorial: a media
   row + 1fr body row, 468px min-height). Flip it to a horizontal media|body row.
   We MUST reset grid-template-rows AND min-height too: overriding only the
   columns leaves the editorial `auto 1fr` rows + 468px min in place, so the card
   grows a tall empty second row under the content. (The previous rules here
   targeted .pcard-shell / .pcard-stage, which variant 'a' does not emit, so the
   override never landed and the empty panel showed.) */
#cat-results .hc-pgrid[data-view="list"] {
  grid-template-columns: 1fr;
}

#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] {
  grid-template-columns: minmax(150px, 230px) minmax(0, 1fr);
  grid-template-rows: auto;
  min-height: 0;
}

/* Divider moves from under the image (vertical card) to its right edge. */
#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__media-wrap {
  border-bottom: 0;
  border-right: 1px solid rgba(141, 109, 71, 0.12);
}

/* Image fills the row height (dictated by the taller body column) instead of a
   fixed 16:10 ratio, so there is no gradient gap below a short image. */
#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__media {
  aspect-ratio: auto;
  height: 100%;
  min-height: 132px;
}

/* Body: vertically centre content; CTA reads as a button, not a full-width bar. */
#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__body {
  justify-content: center;
  gap: 5px;
  padding: 14px 20px;
}

/* List row stays compact: drop the long editorial caption (and its reserved
   3-line min-height) — the spec chips below carry the key info. */
#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__caption {
  display: none;
}

/* Grid view pins the footer to the bottom; in the centred list row that would
   fight justify-content, so let the footer sit in normal flow. */
#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__foot {
  margin-top: 0;
}

#cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__cta {
  margin-top: 12px;
  width: auto;
  min-width: 220px;
  max-width: 320px;
}

/* Compact view — hide only the long caption; KEEP the spec chips
   (.pcard-a__props) so the dense 6-up grid still shows decor / size / series. */
#cat-results .hc-pgrid[data-view="compact"] .pcard-a__caption {
  display: none;
}

#cat-results .hc-pgrid[data-view="compact"] .pcard-a__body {
  padding: 10px 12px 12px;
}

/* Inline marketing banner inside the grid spans the full row */
.hc-pgrid__banner {
  grid-column: 1 / -1;
  max-height: 260px;
  overflow: hidden;
  border-radius: 14px;
}

/* Inside PDP cross-sell rails, gaps are tighter */
.pdp-commerce-sections .hc-pgrid,
.hc-pdp .hc-pgrid {
  gap: clamp(12px, 1.2vw, 18px);
}

.hc-pgrid > .pcard {
  min-width: 0;
}

/* List view: lift the editorial a card price + cart into a right rail at the
   card edge (content stays left, footer centred vertically). Wide screens only;
   compact/mobile keep the stacked footer. Matches the existing list-a selector
   specificity so this grid override wins over the flex body above. */
@media (min-width: 760px) {
  #cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(190px, 228px);
    column-gap: 24px;
    row-gap: 5px;
    align-content: center;
  }
  #cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__body > * { grid-column: 1; min-width: 0; }
  #cat-results .hc-pgrid[data-view="list"] .pcard[data-pcard-variant="a"] .pcard-a__foot {
    grid-column: 2;
    grid-row: 1 / -1;
    align-self: center;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 10px;
    padding-left: 24px;
    border-left: 1px solid rgba(141, 109, 71, 0.14);
  }
}

/* css/blocks/138-hc-ph.css */
/* =================== hc-ph.css =================== */
.hc-ph {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1 / 1;
}

.hc-ph__orbit-out {
  transform-origin: 140px 140px;
  animation: hcPhSpin 22s linear infinite;
}

.hc-ph__orbit-in {
  transform-origin: 140px 140px;
  animation: hcPhSpinR 32s linear infinite;
}

.hc-ph__dot {
  animation: hcPhDot 2.6s ease-in-out infinite;
}

.hc-ph__schema {
  animation: hcPhSchema 4s ease-in-out infinite;
}

.hc-cat-illo__avntos-facade {
  transform-origin: 200px 180px;
  transform-box: fill-box;
}

.hc-ph text[font-family*="Mono"] {
  opacity: 0.4;
  font-size: 8px;
}

.hc-pcard__ph-wrap .hc-ph,
.pcard-a__ph .hc-ph,
.pcard-b__ph .hc-ph,
.pcard-c__ph .hc-ph,
.pcard-d__ph .hc-ph,
.pcard-media__placeholder .hc-ph {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
}

.hc-pcard__media .hc-ph,
.hc-pcard__ph-wrap .hc-ph,
.pcard-media__placeholder .hc-ph,
.pcard-c__ph .hc-ph {
  filter: drop-shadow(0 4px 8px rgba(122, 101, 72, 0.16));
  transition: filter 0.45s ease, transform 0.45s ease;
}

.hc-pdp-gallery__main .hc-ph {
  filter: drop-shadow(0 12px 24px rgba(122, 101, 72, 0.18));
  transition: filter 0.55s ease, transform 0.55s ease;
}

.hc-pdp-gallery__main:hover .hc-ph {
  filter: drop-shadow(0 22px 40px rgba(122, 101, 72, 0.28));
}

.hc-pcard:hover .hc-ph__orbit-in {
  animation-duration: 18s;
}

.hc-pcard:hover .hc-ph__orbit-out {
  animation-duration: 12s;
}

@media (max-width: 920px) {
  .hc-pcard__media .hc-ph,
  .hc-pcard__ph-wrap .hc-ph {
    position: absolute;
    inset: 0;
  }

  .pcard--c .pcard-c__media .hc-ph {
    aspect-ratio: 1;
  }
}

/* css/blocks/197-pcard.css */
/* =================== pcard.css =================== */
/* Shared product-card primitives + canonical variant C implementation.
 * Variants A/B/D/MINI live in 260/261/263/264 and do not get overridden here. */

.pcard {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: 100%;
  color: inherit;
  text-decoration: none;
  isolation: isolate;
}

.pcard a {
  color: inherit;
  text-decoration: none;
}

.pcard:hover,
.pcard:focus-within {
  z-index: 8;
}

.pcard-badge {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 4px 9px;
  border-radius: 999px;
  background: linear-gradient(135deg, #2a2018, #4a3d2a);
  color: #fff;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  box-shadow: 0 4px 10px -2px rgba(40, 30, 15, 0.25);
}

.pcard-badge--sale {
  background: linear-gradient(135deg, #8b3f32, #6f3329);
}

.pcard-badge--hot {
  background: linear-gradient(135deg, #e8c896 0%, #c9a878 55%, #b89a6f 100%);
  color: #2a2018;
}

.pcard-badge--new {
  background: linear-gradient(135deg, #3d6b4f, #2c5039);
}

.pcard-act {
  position: relative;
  z-index: 3;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0.5px solid rgba(141, 109, 71, 0.24);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.94);
  color: rgba(26, 23, 20, 0.78);
  box-shadow: 0 2px 8px -4px rgba(40, 30, 15, 0.22);
  cursor: pointer;
  transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}

.pcard-act svg {
  width: 14px;
  height: 14px;
}

.pcard-act:hover {
  background: #1a1714;
  border-color: #1a1714;
  color: #fff;
  transform: scale(1.08);
}

.pcard-act--fav.is-active,
.hc-atc-fav.is-active {
  background: #c0392b;
  border-color: #c0392b;
  color: #fff;
}

.pcard-c__pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: min(100%, 178px);
  min-height: 23px;
  padding: 4px 9px;
  border-radius: 999px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  background: rgba(252, 248, 240, 0.92);
  color: #5b4732;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.04em;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.72) inset;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}
/* chip tile-effect: warm-up on card hover, lift + gold accent on chip hover */
.pcard:hover .pcard-c__pill {
  border-color: rgba(141, 109, 71, 0.34);
  background: rgba(255, 253, 248, 0.97);
}
.pcard-c__pill:hover {
  transform: translateY(-1px);
  border-color: rgba(201, 169, 97, 0.62);
  background: linear-gradient(180deg, var(--hc-paper), #f5edde);
  color: #3a2c1c;
  box-shadow: 0 5px 12px -6px rgba(184, 154, 111, 0.55), 0 1px 0 rgba(255, 255, 255, 0.8) inset;
}

.pcard-c__pill:hover,
.pcard-c__pill:focus-visible {
  border-color: rgba(141, 109, 71, 0.42);
  background: rgba(255, 255, 255, 0.98);
  color: #2c241d;
  box-shadow: 0 8px 18px -14px rgba(26, 23, 20, 0.38);
  transform: translateY(-1px);
}

/* Variant C (default catalog card) */
.pcard[data-pcard-variant="c"] {
  --pc-c-min-h: 446px;
  min-height: var(--pc-c-min-h);
}

.pcard[data-pcard-variant="c"] .pcard-shell {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr;
  min-height: var(--pc-c-min-h);
  height: 100%;
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 14px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 8px 24px -20px rgba(24, 18, 12, 0.5);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.pcard[data-pcard-variant="c"]:hover .pcard-shell,
.pcard[data-pcard-variant="c"]:focus-within .pcard-shell {
  transform: translateY(-4px);
  border-color: rgba(141, 109, 71, 0.34);
  box-shadow: 0 24px 36px -26px rgba(24, 18, 12, 0.6);
}

.pcard[data-pcard-variant="c"] .pcard-stage {
  position: relative;
  aspect-ratio: 1 / 1;
  border-bottom: 1px solid rgba(141, 109, 71, 0.12);
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-bg-warm) 100%);
  overflow: hidden;
}

.pcard[data-pcard-variant="c"] .pcard-media {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  padding: 10%;
}

.pcard[data-pcard-variant="c"] .pcard-media__placeholder,
.pcard[data-pcard-variant="c"] .pcard-media picture,
.pcard[data-pcard-variant="c"] .pcard-media__img {
  position: absolute;
  inset: 0;
}

.pcard[data-pcard-variant="c"] .pcard-media__placeholder {
  display: grid;
  place-items: center;
  padding: 10%;
}

.pcard[data-pcard-variant="c"] .pcard-media__img,
.pcard[data-pcard-variant="c"] .pcard-media picture img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 10%;
  filter: grayscale(1) contrast(0.98) brightness(0.97);
  transition: transform 0.26s ease, filter 0.26s ease;
}

.pcard[data-pcard-variant="c"]:hover .pcard-media__img,
.pcard[data-pcard-variant="c"]:focus-within .pcard-media__img,
.pcard[data-pcard-variant="c"]:hover .pcard-media picture img,
.pcard[data-pcard-variant="c"]:focus-within .pcard-media picture img {
  transform: scale(1.03);
  filter: grayscale(0) saturate(1.06) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant="c"] .pcard-media--has-img .pcard-media__placeholder {
  display: none;
}

.pcard[data-pcard-variant="c"] .pcard-media--has-img.hc-media-fallback .pcard-media__placeholder {
  display: grid;
}

.pcard[data-pcard-variant="c"] .pcard-media__img.hc-img-broken {
  display: none;
}

.pcard[data-pcard-variant="c"] .pcard-overlay {
  position: absolute;
  inset: 10px;
  z-index: 4;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  pointer-events: none;
}

.pcard[data-pcard-variant="c"] .pcard-overlay__badges {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pcard[data-pcard-variant="c"] .pcard-overlay__actions {
  width: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  opacity: 0.86;
  transform: translateX(0);
  pointer-events: auto;
  transition: opacity 0.22s ease, transform 0.22s ease;
}

.pcard[data-pcard-variant="c"]:hover .pcard-overlay__actions,
.pcard[data-pcard-variant="c"]:focus-within .pcard-overlay__actions {
  opacity: 1;
  transform: translateX(-2px);
}

.pcard[data-pcard-variant="c"] .pcard-c__body {
  display: grid;
  grid-template-rows: auto auto auto auto 1fr auto;
  gap: 8px;
  padding: 13px 14px 14px;
  min-width: 0;
}

.pcard[data-pcard-variant="c"] .pcard-meta-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  min-height: 24px;
}

.pcard[data-pcard-variant="c"] .pcard-series,
.pcard[data-pcard-variant="c"] .pcard-sku {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="c"] .pcard-sku {
  flex-shrink: 0;
}

.pcard[data-pcard-variant="c"] .pcard-title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  min-width: 0;
  min-height: calc(19px * 1.16 * 2);
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 18px;
  line-height: 1.16;
  letter-spacing: 0;
  text-decoration: none;
  transition: color 0.18s ease;
}

.pcard[data-pcard-variant="c"]:hover .pcard-title,
.pcard[data-pcard-variant="c"]:focus-within .pcard-title {
  color: #6b563c;
}

.pcard[data-pcard-variant="c"] .pcard-caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  line-clamp: 1;
  overflow: hidden;
  min-height: calc(12px * 1.35);
  margin: 0;
  font-size: 12px;
  line-height: 1.35;
  color: rgba(26, 23, 20, 0.66);
}

.pcard[data-pcard-variant="c"] .pcard-props {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  min-height: 26px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
}

.pcard[data-pcard-variant="c"] .pcard-props::-webkit-scrollbar {
  display: none;
}

.pcard[data-pcard-variant="c"] .pcard-props .pcard-c__pill {
  flex: 0 0 auto;
  scroll-snap-align: start;
}

.pcard[data-pcard-variant="c"] .pcard-footer {
  margin-top: auto;
  display: grid;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px dashed rgba(141, 109, 71, 0.2);
}

.pcard[data-pcard-variant="c"] .pcard-pricebox {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
}

.pcard[data-pcard-variant="c"] .pcard-pricebox__old {
  color: rgba(26, 23, 20, 0.44);
  font-size: 12px;
  text-decoration: line-through;
}

.pcard[data-pcard-variant="c"] .pcard-pricebox__current {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(24px, 1.75vw, 30px);
  line-height: 0.98;
  font-variant-numeric: tabular-nums;
}

.pcard[data-pcard-variant="c"] .pcard-pricebox__current.is-sale {
  color: #8b3f32;
}

.pcard[data-pcard-variant="c"] .pcard-pricebox__current.is-request {
  font-size: 15px;
  color: rgba(26, 23, 20, 0.55);
  font-style: italic;
}

.pcard[data-pcard-variant="c"] .pcard-stock {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 22px;
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid rgba(61, 107, 79, 0.26);
  background: rgba(61, 107, 79, 0.09);
  color: #2f6f4c;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.04em;
}

.pcard[data-pcard-variant="c"] .pcard-stock::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}

.pcard[data-pcard-variant="c"] .pcard-c__cta {
  width: 100%;
  min-height: 44px;
  padding: 10px 14px;
  border: 1px solid #1a1714;
  border-radius: 10px;
  background: #1a1714;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease, color 0.18s ease;
}

.pcard[data-pcard-variant="c"] .pcard-c__cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 20px -12px rgba(40, 30, 15, 0.45);
}

.pcard[data-pcard-variant="c"] .pcard-c__cta--request {
  background: #fff;
  color: #1a1714;
}

.pcard[data-pcard-variant="c"] .pcard-c__cta--request:hover {
  background: #1a1714;
  color: #fff;
}

@media (max-width: 1200px) {
  .pcard[data-pcard-variant="c"] {
    --pc-c-min-h: 430px;
  }
}

@media (max-width: 920px) {
  .pcard[data-pcard-variant="c"] {
    --pc-c-min-h: 402px;
  }
  .pcard[data-pcard-variant="c"] .pcard-title {
    font-size: 17px;
  }
  .pcard[data-pcard-variant="c"] .pcard-overlay__actions {
    opacity: 1;
    transform: none;
  }
}

/* "Снято с производства" — non-buyable CTA label on the card for discontinued
   products (stock_status='discontinued'); keeps the CTA footprint but muted. */
.pcard-discont {
  background: rgba(150, 90, 60, 0.10);
  color: #8a4b2f;
  border: 1px solid rgba(150, 90, 60, 0.24);
  cursor: default;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.01em;
  pointer-events: none;
}
.pcard-discont:hover { background: rgba(150, 90, 60, 0.10); }

/* css/blocks/275-pcard-type-actions.css */
/* =================== pcard-type-actions.css =================== */
/* Secondary lead actions block for all product card variants. */

.pcard-type-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
}

.pcard-type-actions__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 6px 10px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.82);
  color: rgba(26, 23, 20, 0.72);
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.15;
  text-align: center;
  white-space: nowrap;
  cursor: pointer;
  transition: border-color 0.18s ease, background-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
}

.pcard-type-actions__btn:hover,
.pcard-type-actions__btn:focus-visible {
  border-color: #1a1714;
  background: #1a1714;
  color: #fff;
  transform: translateY(-1px);
}

/* css/blocks/276-pcard-type-modes.css */
/* =================== pcard-type-modes.css =================== */
/* Type badges and color accents only. No card media/swatch geometry here. */

.pcard-type-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.pcard-type-badge,
.pcard-mini__type {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 23px;
  padding: 4px 9px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 999px;
  background: rgba(246, 241, 232, 0.86);
  color: rgba(26, 23, 20, 0.64);
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 750;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Material / board / timber — calm green. (real types: sheet_material/material/lumber) */
:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber) .pcard-type-badge,
:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber) .pcard-mini__type {
  border-color: rgba(99, 126, 92, 0.24);
  background: rgba(232, 239, 226, 0.86);
  color: #4d6944;
}

/* Шпон и панели — warm wood/gold. */
.pcard--type-veneer_panel .pcard-type-badge,
.pcard--type-veneer_panel .pcard-mini__type {
  border-color: rgba(166, 116, 38, 0.26);
  background: rgba(248, 238, 220, 0.9);
  color: #8a5a1c;
}

/* ЛКМ — amber/lacquer. */
.pcard--type-wood_finish .pcard-type-badge,
.pcard--type-wood_finish .pcard-mini__type {
  border-color: rgba(189, 143, 51, 0.24);
  background: rgba(252, 244, 219, 0.9);
  color: #815f16;
}

/* Клеевые материалы — cool blue. */
.pcard--type-adhesive .pcard-type-badge,
.pcard--type-adhesive .pcard-mini__type {
  border-color: rgba(82, 105, 142, 0.22);
  background: rgba(230, 237, 246, 0.88);
  color: #455f86;
}

.pcard--type-furniture .pcard-type-badge,
.pcard--type-furniture .pcard-mini__type {
  border-color: rgba(137, 94, 126, 0.22);
  background: rgba(244, 232, 239, 0.88);
  color: #744c68;
}

.pcard--type-lighting .pcard-type-badge,
.pcard--type-lighting .pcard-mini__type {
  border-color: rgba(189, 143, 51, 0.24);
  background: rgba(252, 244, 219, 0.9);
  color: #815f16;
}

.pcard--type-service .pcard-type-badge,
.pcard--type-service .pcard-mini__type {
  border-color: rgba(82, 105, 142, 0.22);
  background: rgba(230, 237, 246, 0.88);
  color: #455f86;
}

/* css/blocks/252-pcard-type-material.css */
/* =================== pcard-type-material.css =================== */
/* Owns material card media/swatch treatment only.
 * Type badges stay in 276-pcard-type-modes.css.
 *
 * Material / board / timber cards (ЛДСП, пластики, плиты, кромка, пиломатериал)
 * use a full-bleed swatch media instead of a tiny centered preview — this kills
 * the "empty beige tile" look for flat-colour decor images and keeps the catalog
 * grid premium. Veneer keeps its own treatment (253). Product-photo families
 * (ЛКМ/клей/фурнитура/инструмент) intentionally stay on `contain`.
 *
 * The `.pcard[data-pcard-variant]` prefix is intentional: it raises specificity
 * above the per-variant base `object-fit:contain`/`padding` (260-264, which load
 * later in the bundle) so the cover swatch actually wins. Real product_type
 * values are sheet_material / material / lumber. */

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber)
  :is(.pcard-a__media, .pcard-b__media, .pcard-d__media, .pcard-media) {
  background:
    radial-gradient(120% 90% at 85% 10%, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0) 48%),
    linear-gradient(180deg, rgba(250, 246, 236, 0.72), rgba(239, 229, 211, 0.78));
}

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber)
  :is(.pcard-a__media picture img, .pcard-b__media picture img, .pcard-d__media picture img, .pcard-media__img) {
  object-fit: cover;
  object-position: center;
  padding: 0;
  filter: grayscale(1) contrast(1) brightness(0.97);
}

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber):hover
  :is(.pcard-a__media picture img, .pcard-b__media picture img, .pcard-d__media picture img, .pcard-media__img) {
  filter: grayscale(0) saturate(1.05) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber)
  :is(.pcard-a__media, .pcard-b__media, .pcard-d__media, .pcard-media)::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(24, 20, 16, 0.08), rgba(24, 20, 16, 0.38)),
    repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0 6px, rgba(255, 255, 255, 0) 6px 12px);
  opacity: 0.78;
  transition: opacity 0.25s ease;
}

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber):hover
  :is(.pcard-a__media, .pcard-b__media, .pcard-d__media, .pcard-media)::after {
  opacity: 0.55;
}

.pcard[data-pcard-variant]:is(.pcard--type-sheet_material, .pcard--type-material, .pcard--type-lumber)
  :is(.pcard-a__ph, .pcard-b__ph, .pcard-d__ph, .pcard-media__placeholder) {
  background: transparent;
}

/* css/blocks/253-pcard-type-veneer.css */
/* =================== 253-pcard-type-veneer.css =================== */
/* Premium card type for «Шпонированный МДФ» (natural wood veneer panels).
 * Material-led: species is the hero (serif), warm-paper photo mount blends the
 * white-bg studio shots, light-sweep gloss on hover simulates light over polished
 * veneer. Scoped strictly to .pcard--type-veneer_panel — no cascade leakage. */

/* ---- card surface: warm paper ---- */
.pcard--type-veneer_panel.pcard--a {
  background: linear-gradient(180deg, #fffdf9 0%, #fbf6ee 100%);
  border-color: rgba(var(--hc-accent-rgb), 0.18);
}

/* ---- media: warm mount so white-bg studio shots blend; cover the frame ---- */
.pcard--type-veneer_panel .pcard-a__media {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120% 90% at 80% 8%, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0) 46%),
    linear-gradient(180deg, #faf6ee 0%, #f0e6d5 100%);
}
.pcard--type-veneer_panel .pcard-a__media picture img {
  object-fit: cover;
  object-position: center;
  padding: 0;
  transition: transform 0.9s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.pcard--type-veneer_panel .pcard-a__media .pcard-a__ph { background: transparent; }

/* light-sweep gloss across the grain on hover */
.pcard--type-veneer_panel .pcard-a__media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(105deg,
    rgba(255, 255, 255, 0) 30%,
    rgba(255, 255, 255, 0.5) 47%,
    rgba(255, 255, 255, 0) 64%);
  transform: translateX(-120%);
  transition: transform 0.85s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.pcard--type-veneer_panel:hover .pcard-a__media::after { transform: translateX(120%); }
.pcard--type-veneer_panel:hover .pcard-a__media picture img { transform: scale(1.045); }

/* ---- body: eyebrow ---- */
.pcard--type-veneer_panel .pcard-vn__eyebrow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 7px;
}
.pcard--type-veneer_panel .pcard-vn__natural {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-accent, var(--hc-accent));
}
.pcard--type-veneer_panel .pcard-vn__natural::before {
  content: "";
  width: 12px;
  height: 12px;
  flex: 0 0 auto;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C7 7 4 11 4 15a8 8 0 0 0 16 0c0-4-3-8-8-13z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C7 7 4 11 4 15a8 8 0 0 0 16 0c0-4-3-8-8-13z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.pcard--type-veneer_panel .pcard-vn__rare {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: #7d6122;
  padding: 2px 8px;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(var(--hc-gold-rgb), 0.28), rgba(201, 169, 97, 0.18));
  border: 1px solid rgba(201, 169, 97, 0.5);
}

/* ---- species: the hero ---- */
.pcard--type-veneer_panel .pcard-vn__species {
  display: block;
  margin: 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 21px;
  line-height: 1.16;
  font-weight: 600;
  letter-spacing: 0.005em;
  color: var(--hc-ink, #1a1714);
  text-decoration: none;
  transition: color 0.2s ease;
}
.pcard--type-veneer_panel .pcard-vn__species:hover { color: var(--hc-accent, var(--hc-accent)); }

/* ---- spec chips ---- */
.pcard--type-veneer_panel .pcard-vn__spec {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 2px;
}
.pcard--type-veneer_panel .pcard-vn__chip {
  font-size: 11.5px;
  line-height: 1;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.7));
  padding: 4px 9px;
  border-radius: 7px;
  background: rgba(var(--hc-accent-rgb), 0.07);
  border: 1px solid rgba(var(--hc-accent-rgb), 0.16);
  white-space: nowrap;
}
.pcard--type-veneer_panel .pcard-vn__chip--grade {
  font-weight: 600;
  color: #7a5e22;
  background: linear-gradient(180deg, rgba(var(--hc-gold-rgb), 0.24), rgba(201, 169, 97, 0.16));
  border-color: rgba(201, 169, 97, 0.45);
}

/* ---- "each sheet is unique" narrative ---- */
.pcard--type-veneer_panel .pcard-vn__unique {
  margin: 9px 0 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-size: 12.5px;
  letter-spacing: 0.005em;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.52));
}

@media (max-width: 600px) {
  .pcard--type-veneer_panel .pcard-vn__species { font-size: 18px; }
  .pcard--type-veneer_panel .pcard-vn__chip { font-size: 11px; padding: 3px 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .pcard--type-veneer_panel .pcard-a__media::after,
  .pcard--type-veneer_panel .pcard-a__media picture img { transition: none; }
  .pcard--type-veneer_panel:hover .pcard-a__media::after { transform: translateX(-120%); }
  .pcard--type-veneer_panel:hover .pcard-a__media picture img { transform: none; }
}

/* css/blocks/260-pcard-variant-a.css */
/* =================== pcard-variant-a.css =================== */
/* Variant A: editorial premium card for hero-like products and featured SKUs. */

.pcard[data-pcard-variant="a"] {
  --pc-a-media-ratio: 16 / 10;
  --pc-a-min-h: 468px;
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr;
  min-height: var(--pc-a-min-h);
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 14px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 8px 24px -20px rgba(24, 18, 12, 0.5);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.pcard[data-pcard-variant="a"]:hover,
.pcard[data-pcard-variant="a"]:focus-within {
  transform: translateY(-4px);
  border-color: rgba(141, 109, 71, 0.34);
  box-shadow: 0 24px 38px -26px rgba(24, 18, 12, 0.62);
}

.pcard[data-pcard-variant="a"] .pcard-a__media-wrap {
  position: relative;
  border-bottom: 1px solid rgba(141, 109, 71, 0.12);
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-bg-warm) 100%);
}

.pcard[data-pcard-variant="a"] .pcard-a__media {
  position: relative;
  display: block;
  aspect-ratio: var(--pc-a-media-ratio);
  overflow: hidden;
}

.pcard[data-pcard-variant="a"] .pcard-a__ph,
.pcard[data-pcard-variant="a"] .pcard-a__media picture,
.pcard[data-pcard-variant="a"] .pcard-a__media img {
  position: absolute;
  inset: 0;
}

.pcard[data-pcard-variant="a"] .pcard-a__ph {
  display: grid;
  place-items: center;
  padding: 10%;
}

.pcard[data-pcard-variant="a"] .pcard-a__media picture img,
.pcard[data-pcard-variant="a"] .pcard-a__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 6%;
  filter: grayscale(1) contrast(0.98) brightness(0.97);
  transition: transform 0.26s ease, filter 0.26s ease;
}

.pcard[data-pcard-variant="a"]:hover .pcard-a__media img,
.pcard[data-pcard-variant="a"]:focus-within .pcard-a__media img {
  transform: scale(1.04);
  filter: grayscale(0) saturate(1.06) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant="a"] .pcard-a__media.is-has-img .pcard-a__ph {
  display: none;
}

.pcard[data-pcard-variant="a"] .pcard-a__media.is-has-img.hc-media-fallback .pcard-a__ph {
  display: grid;
}

.pcard[data-pcard-variant="a"] .pcard-a__chips {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.pcard[data-pcard-variant="a"] .pcard-a__chip {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 4px 9px;
  border-radius: 999px;
  background: #1a1714;
  color: #fff;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.pcard[data-pcard-variant="a"] .pcard-a__chip--sale {
  background: #8b3f32;
}

.pcard[data-pcard-variant="a"] .pcard-a__rail {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pcard[data-pcard-variant="a"] .pcard-a__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 12px 13px;
  min-width: 0;
  min-height: 0;
}

.pcard[data-pcard-variant="a"] .pcard-type-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 22px;
}

.pcard[data-pcard-variant="a"] .pcard-a__series,
.pcard[data-pcard-variant="a"] .pcard-a__sku {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="a"] .pcard-a__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
  min-height: calc(17px * 1.25 * 3);
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 17px;
  line-height: 1.25;
  letter-spacing: 0;
  text-decoration: none;
}

.pcard[data-pcard-variant="a"] .pcard-a__rule {
  height: 1px;
  background: linear-gradient(90deg, rgba(141, 109, 71, 0.2), transparent);
}

.pcard[data-pcard-variant="a"] .pcard-a__caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  line-clamp: 1;
  overflow: hidden;
  margin: 0;
  min-height: calc(12px * 1.35);
  font-size: 12px;
  line-height: 1.35;
  color: rgba(26, 23, 20, 0.66);
}

.pcard[data-pcard-variant="a"] .pcard-a__props {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 27px;
  overflow: hidden;
}

.pcard[data-pcard-variant="a"] .pcard-a__props::-webkit-scrollbar {
  display: none;
}

.pcard[data-pcard-variant="a"] .pcard-a__props .pcard-c__pill {
  flex: 0 1 auto;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  scroll-snap-align: start;
}

/* Footer (price + CTA + secondary action) pinned to the card bottom. This is
   what keeps prices aligned across a row: the variable-height props/chips block
   above absorbs the slack via this margin-top:auto, so every card's price+CTA
   sits at the same baseline regardless of how many chip rows it has. */
.pcard[data-pcard-variant="a"] .pcard-a__foot {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pcard[data-pcard-variant="a"] .pcard-a__row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  min-height: 24px;
  gap: 6px 8px;
}

.pcard[data-pcard-variant="a"] .pcard-a__price-old {
  font-size: 12px;
  color: rgba(26, 23, 20, 0.42);
  text-decoration: line-through;
}

.pcard[data-pcard-variant="a"] .pcard-a__stock {
  display: inline-flex;
  align-items: center;
  margin-left: auto;
  min-height: 21px;
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid rgba(61, 107, 79, 0.24);
  background: rgba(61, 107, 79, 0.08);
  color: #2f6f4c;
  font-size: 10px;
  font-weight: 650;
  white-space: nowrap;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="a"] .pcard-a__stock--low {
  border-color: rgba(166, 116, 38, 0.24);
  background: rgba(166, 116, 38, 0.1);
  color: #8d5d18;
}

.pcard[data-pcard-variant="a"] .pcard-a__stock--out {
  border-color: rgba(140, 57, 48, 0.24);
  background: rgba(140, 57, 48, 0.1);
  color: #8b3f32;
}

/* To-order: neutral (not alarming) — the common case for made-to-order stock. */
.pcard[data-pcard-variant="a"] .pcard-a__stock--order {
  border-color: rgba(26, 23, 20, 0.16);
  background: rgba(26, 23, 20, 0.04);
  color: rgba(26, 23, 20, 0.62);
}

.pcard[data-pcard-variant="a"] .pcard-a__price {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(22px, 1.35vw, 26px);
  line-height: 0.98;
  font-variant-numeric: tabular-nums;
}

.pcard[data-pcard-variant="a"] .pcard-a__price--sale {
  color: #8b3f32;
}

.pcard[data-pcard-variant="a"] .pcard-a__price--ask {
  font-size: 15px;
  color: rgba(26, 23, 20, 0.58);
  font-style: italic;
}

.pcard[data-pcard-variant="a"] .pcard-a__cta {
  width: 100%;
  min-height: 40px;
  padding: 9px 12px;
  border: 1px solid #1a1714;
  border-radius: 10px;
  background: #1a1714;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}

.pcard[data-pcard-variant="a"] .pcard-a__cta:hover {
  transform: translateY(-1px);
}

.pcard[data-pcard-variant="a"] .pcard-a__cta--ghost {
  background: #fff;
  color: #1a1714;
}

.pcard[data-pcard-variant="a"] .pcard-a__cta--ghost:hover {
  background: #1a1714;
  color: #fff;
}

@media (max-width: 920px) {
  .pcard[data-pcard-variant="a"] {
    --pc-a-min-h: 430px;
  }
  .pcard[data-pcard-variant="a"] .pcard-a__title {
    font-size: 16px;
  }
}

@media (hover: hover) and (pointer: fine) {
  .pcard[data-pcard-variant="a"] .pcard-type-actions {
    max-height: 0;
    margin-top: 0;
    opacity: 0;
    overflow: hidden;
    transform: translateY(-4px);
    transition: max-height 0.22s ease, margin-top 0.22s ease, opacity 0.18s ease, transform 0.22s ease;
  }

  .pcard[data-pcard-variant="a"]:hover .pcard-type-actions,
  .pcard[data-pcard-variant="a"]:focus-within .pcard-type-actions {
    max-height: 48px;
    margin-top: 2px;
    opacity: 1;
    transform: translateY(0);
  }
}

/* css/blocks/261-pcard-variant-b.css */
/* =================== pcard-variant-b.css =================== */
/* Variant B: compact premium rail card for tools/lighting/service positions. */

.pcard[data-pcard-variant="b"] {
  --pc-b-min-h: 432px;
  position: relative;
  display: grid;
  /* 6 content rows (media·series·title·caption·props·footer); the footer lands
     on the 1fr track so it pins to the card bottom and prices stay aligned. */
  grid-template-rows: auto auto auto auto auto 1fr auto;
  min-height: var(--pc-b-min-h);
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 14px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 8px 24px -20px rgba(24, 18, 12, 0.5);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.pcard[data-pcard-variant="b"]:hover,
.pcard[data-pcard-variant="b"]:focus-within {
  transform: translateY(-4px);
  border-color: rgba(141, 109, 71, 0.34);
  box-shadow: 0 24px 36px -26px rgba(24, 18, 12, 0.6);
}

.pcard[data-pcard-variant="b"] .pcard-b__media-wrap {
  position: relative;
  border-bottom: 1px solid rgba(141, 109, 71, 0.12);
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-bg-warm) 100%);
}

.pcard[data-pcard-variant="b"] .pcard-b__media {
  position: relative;
  display: block;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}

.pcard[data-pcard-variant="b"] .pcard-b__ph,
.pcard[data-pcard-variant="b"] .pcard-b__media picture,
.pcard[data-pcard-variant="b"] .pcard-b__media img {
  position: absolute;
  inset: 0;
}

.pcard[data-pcard-variant="b"] .pcard-b__ph {
  display: grid;
  place-items: center;
  padding: 10%;
}

.pcard[data-pcard-variant="b"] .pcard-b__media picture img,
.pcard[data-pcard-variant="b"] .pcard-b__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 10%;
  filter: grayscale(1) contrast(0.98) brightness(0.97);
  transition: transform 0.26s ease, filter 0.26s ease;
}

.pcard[data-pcard-variant="b"]:hover .pcard-b__media img,
.pcard[data-pcard-variant="b"]:focus-within .pcard-b__media img {
  transform: scale(1.03);
  filter: grayscale(0) saturate(1.06) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant="b"] .pcard-b__media.is-has-img .pcard-b__ph {
  display: none;
}

.pcard[data-pcard-variant="b"] .pcard-b__media.is-has-img.hc-media-fallback .pcard-b__ph {
  display: grid;
}

.pcard[data-pcard-variant="b"] .pcard-b__badges {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.pcard[data-pcard-variant="b"] .pcard-b__badge {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 4px 9px;
  border-radius: 999px;
  background: #1a1714;
  color: #fff;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.pcard[data-pcard-variant="b"] .pcard-b__badge--sale {
  background: #8b3f32;
}

.pcard[data-pcard-variant="b"] .pcard-b__badge--new {
  background: #2f6f4c;
}

.pcard[data-pcard-variant="b"] .pcard-b__rail {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pcard[data-pcard-variant="b"] .pcard-b__series,
.pcard[data-pcard-variant="b"] .pcard-b__title,
.pcard[data-pcard-variant="b"] .pcard-b__caption,
.pcard[data-pcard-variant="b"] .pcard-b__props,
.pcard[data-pcard-variant="b"] .pcard-type-actions,
.pcard[data-pcard-variant="b"] .pcard-b__bottom {
  margin-left: 13px;
  margin-right: 13px;
}

.pcard[data-pcard-variant="b"] .pcard-b__series {
  margin-top: 11px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 8px;
  min-height: 24px;
}

.pcard[data-pcard-variant="b"] .pcard-b__series > span:first-child,
.pcard[data-pcard-variant="b"] .pcard-b__sku {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="b"] .pcard-b__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  min-height: calc(18px * 1.16 * 2);
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 18px;
  line-height: 1.16;
  text-decoration: none;
}

.pcard[data-pcard-variant="b"] .pcard-b__caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  line-clamp: 1;
  overflow: hidden;
  margin-top: 2px;
  margin-bottom: 0;
  min-height: calc(12px * 1.35);
  font-size: 12px;
  line-height: 1.35;
  color: rgba(26, 23, 20, 0.66);
}

.pcard[data-pcard-variant="b"] .pcard-b__props {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  min-height: 26px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
}

.pcard[data-pcard-variant="b"] .pcard-b__props::-webkit-scrollbar {
  display: none;
}

.pcard[data-pcard-variant="b"] .pcard-b__prop {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 23px;
  padding: 4px 8px;
  border-radius: 999px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  background: rgba(252, 248, 240, 0.9);
  scroll-snap-align: start;
  transition: transform 0.18s ease, border-color 0.18s ease, background-color 0.18s ease, box-shadow 0.18s ease;
}

.pcard[data-pcard-variant="b"] .pcard-b__prop:hover {
  border-color: rgba(141, 109, 71, 0.42);
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 8px 18px -14px rgba(26, 23, 20, 0.38);
  transform: translateY(-1px);
}

.pcard[data-pcard-variant="b"] .pcard-b__prop span {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.52);
}

.pcard[data-pcard-variant="b"] .pcard-b__prop b {
  font-size: 11px;
  line-height: 1.2;
  color: #1a1714;
}

.pcard[data-pcard-variant="b"] .pcard-b__bottom {
  margin-top: auto;
  display: grid;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px dashed rgba(141, 109, 71, 0.2);
}

.pcard[data-pcard-variant="b"] .pcard-b__price-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.pcard[data-pcard-variant="b"] .pcard-b__price {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(24px, 1.7vw, 30px);
  line-height: 0.98;
  font-variant-numeric: tabular-nums;
}

.pcard[data-pcard-variant="b"] .pcard-b__rating {
  color: rgba(26, 23, 20, 0.62);
  font-size: 12px;
  white-space: nowrap;
}

.pcard[data-pcard-variant="b"] .pcard-b__cta {
  width: 100%;
  min-height: 44px;
  border: 1px solid #1a1714;
  border-radius: 10px;
  background: #1a1714;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}

@media (max-width: 920px) {
  .pcard[data-pcard-variant="b"] {
    --pc-b-min-h: 404px;
  }
  .pcard[data-pcard-variant="b"] .pcard-b__title {
    font-size: 17px;
  }
}

/* css/blocks/263-pcard-variant-d.css */
/* =================== pcard-variant-d.css =================== */
/* Variant D: dense tagbar card for LKM kits and compatibility-heavy positions. */

.pcard[data-pcard-variant="d"] {
  --pc-d-min-h: 440px;
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr;
  min-height: var(--pc-d-min-h);
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 14px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 8px 24px -20px rgba(24, 18, 12, 0.5);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.pcard[data-pcard-variant="d"]:hover,
.pcard[data-pcard-variant="d"]:focus-within {
  transform: translateY(-4px);
  border-color: rgba(141, 109, 71, 0.34);
  box-shadow: 0 24px 36px -26px rgba(24, 18, 12, 0.6);
}

.pcard[data-pcard-variant="d"] .pcard-d__media-wrap {
  position: relative;
  border-bottom: 1px solid rgba(141, 109, 71, 0.12);
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-bg-warm) 100%);
}

.pcard[data-pcard-variant="d"] .pcard-d__media {
  position: relative;
  display: block;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}

.pcard[data-pcard-variant="d"] .pcard-d__ph,
.pcard[data-pcard-variant="d"] .pcard-d__media picture,
.pcard[data-pcard-variant="d"] .pcard-d__media img {
  position: absolute;
  inset: 0;
}

.pcard[data-pcard-variant="d"] .pcard-d__ph {
  display: grid;
  place-items: center;
  padding: 10%;
}

.pcard[data-pcard-variant="d"] .pcard-d__media picture img,
.pcard[data-pcard-variant="d"] .pcard-d__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 10%;
  filter: grayscale(1) contrast(0.98) brightness(0.97);
  transition: transform 0.26s ease, filter 0.26s ease;
}

.pcard[data-pcard-variant="d"]:hover .pcard-d__media img,
.pcard[data-pcard-variant="d"]:focus-within .pcard-d__media img {
  transform: scale(1.03);
  filter: grayscale(0) saturate(1.06) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant="d"] .pcard-d__media.is-has-img .pcard-d__ph {
  display: none;
}

.pcard[data-pcard-variant="d"] .pcard-d__media.is-has-img.hc-media-fallback .pcard-d__ph {
  display: grid;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill-row {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
}

.pcard[data-pcard-variant="d"] .pcard-d__pills-l {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 4px 9px;
  border-radius: 999px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  background: rgba(252, 248, 240, 0.92);
  color: #5b4732;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* Availability pill. It sits beside the promo badge rather than instead of it:
   as an elif, a sale or bestseller label hid availability entirely, and so did
   simply being in stock. Colours follow stock_kind from _data.html — the same
   four states every other card variant uses. */
.pcard[data-pcard-variant="d"] .pcard-d__pill--stock {
  text-transform: none;
  letter-spacing: 0.02em;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill--stock-in {
  border-color: rgba(15, 122, 74, 0.28);
  background: rgba(232, 247, 239, 0.94);
  color: #0f7a4a;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill--stock-low {
  border-color: rgba(176, 118, 20, 0.3);
  background: rgba(253, 245, 228, 0.94);
  color: #8a5c10;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill--stock-out {
  border-color: rgba(176, 42, 42, 0.28);
  background: rgba(253, 236, 236, 0.94);
  color: #a12727;
}

.pcard[data-pcard-variant="d"] .pcard-d__pill--sale {
  border-color: rgba(139, 63, 50, 0.4);
  background: rgba(139, 63, 50, 0.9);
  color: #fff;
}

.pcard[data-pcard-variant="d"] .pcard-d__rail {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pcard[data-pcard-variant="d"] .pcard-d__body {
  display: grid;
  /* top·title·caption·tag-bar·footer — footer on the 1fr track so it pins to the
     bottom; the tag-bar above can wrap to 2 rows without shifting the price. */
  grid-template-rows: auto auto auto auto 1fr auto;
  gap: 8px;
  padding: 13px 14px 14px;
  min-width: 0;
}

.pcard[data-pcard-variant="d"] .pcard-d__top-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 8px;
  min-height: 24px;
}

.pcard[data-pcard-variant="d"] .pcard-d__series,
.pcard[data-pcard-variant="d"] .pcard-d__sku {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="d"] .pcard-d__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  min-height: calc(18px * 1.16 * 2);
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 18px;
  line-height: 1.16;
  text-decoration: none;
}

.pcard[data-pcard-variant="d"] .pcard-d__caption {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  line-clamp: 1;
  overflow: hidden;
  margin: 0;
  min-height: calc(12px * 1.35);
  font-size: 12px;
  line-height: 1.35;
  color: rgba(26, 23, 20, 0.66);
}

.pcard[data-pcard-variant="d"] .pcard-d__tag-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 26px;
  max-height: 62px;
  overflow: hidden;
}

.pcard[data-pcard-variant="d"] .pcard-d__tag {
  display: inline-flex;
  align-items: flex-start;
  gap: 6px;
  max-width: 100%;
  min-width: 0;
  min-height: 23px;
  padding: 4px 8px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 999px;
  background: rgba(252, 248, 240, 0.9);
}

.pcard[data-pcard-variant="d"] .pcard-d__tag-k {
  flex: 0 0 auto;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.52);
}

.pcard[data-pcard-variant="d"] .pcard-d__tag-v {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 11px;
  line-height: 1.2;
  color: #1a1714;
}

.pcard[data-pcard-variant="d"] .pcard-d__bottom {
  margin-top: auto;
  display: grid;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px dashed rgba(141, 109, 71, 0.2);
}

.pcard[data-pcard-variant="d"] .pcard-d__price {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(24px, 1.7vw, 30px);
  line-height: 0.98;
  font-variant-numeric: tabular-nums;
}

.pcard[data-pcard-variant="d"] .pcard-d__price--ask {
  font-size: 15px;
  color: rgba(26, 23, 20, 0.55);
  font-style: italic;
}

.pcard[data-pcard-variant="d"] .pcard-d__cta {
  width: 100%;
  min-height: 44px;
  border: 1px solid #1a1714;
  border-radius: 10px;
  background: #1a1714;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}

@media (max-width: 920px) {
  .pcard[data-pcard-variant="d"] {
    --pc-d-min-h: 408px;
  }
  .pcard[data-pcard-variant="d"] .pcard-d__title {
    font-size: 17px;
  }
}

/* css/blocks/264-pcard-variant-mini.css */
/* =================== pcard-variant-mini.css =================== */
/* Variant MINI: compact card for side rails and recommendation strips. */

.pcard[data-pcard-variant="mini"] {
  --pc-mini-min-h: 366px;
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr;
  min-width: 0;
  max-width: 100%;
  min-height: var(--pc-mini-min-h);
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 6px 20px -18px rgba(24, 18, 12, 0.5);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.pcard[data-pcard-variant="mini"]:hover,
.pcard[data-pcard-variant="mini"]:focus-within {
  transform: translateY(-3px);
  border-color: rgba(141, 109, 71, 0.3);
  box-shadow: 0 18px 28px -20px rgba(24, 18, 12, 0.56);
}

.pcard[data-pcard-variant="mini"] .pcard-mini__media {
  position: relative;
  min-width: 0;
  max-width: 100%;
  aspect-ratio: 1 / 1;
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-bg-warm) 100%);
  overflow: hidden;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__ph,
.pcard[data-pcard-variant="mini"] .pcard-mini__img {
  position: absolute;
  inset: 0;
  max-width: 100%;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__ph {
  display: grid;
  place-items: center;
  padding: 10%;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 10%;
  filter: grayscale(1) contrast(0.98) brightness(0.97);
  transition: transform 0.24s ease, filter 0.24s ease;
}

.pcard[data-pcard-variant="mini"]:hover .pcard-mini__img,
.pcard[data-pcard-variant="mini"]:focus-within .pcard-mini__img {
  transform: scale(1.03);
  filter: grayscale(0) saturate(1.06) contrast(1.02) brightness(1);
}

.pcard[data-pcard-variant="mini"] .pcard-mini__discount,
.pcard[data-pcard-variant="mini"] .pcard-mini__hit {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 4px 8px;
  border-radius: 999px;
  background: #1a1714;
  color: #fff;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__discount {
  background: #8b3f32;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__hit--new {
  background: #2f6f4c;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__body {
  display: grid;
  grid-template-rows: auto auto auto 1fr auto auto;
  gap: 7px;
  min-width: 0;
  max-width: 100%;
  padding: 11px;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  min-width: 0;
  max-width: 100%;
  min-height: calc(15px * 1.18 * 2);
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 15px;
  line-height: 1.18;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__type,
.pcard[data-pcard-variant="mini"] .pcard-mini__sku {
  min-width: 0;
  max-width: 100%;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.58);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__price-row {
  margin-top: auto;
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
  max-width: 100%;
  padding-top: 8px;
  border-top: 1px dashed rgba(141, 109, 71, 0.18);
}

.pcard[data-pcard-variant="mini"] .pcard-mini__old {
  font-size: 11px;
  color: rgba(26, 23, 20, 0.42);
  text-decoration: line-through;
}

.pcard[data-pcard-variant="mini"] .pcard-mini__price {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 22px;
  line-height: 0.98;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 920px) {
  .pcard[data-pcard-variant="mini"] {
    --pc-mini-min-h: 300px;
  }
}

/* v8.7 — mini card converted from <a> to <article> + stretched-link + quick-order button.
 * Title link covers the whole card via ::after; quick-order button sits above it. */
.pcard[data-pcard-variant="mini"] .pcard-mini__link {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  outline-offset: 3px;
}
.pcard[data-pcard-variant="mini"] .pcard-mini__link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Quick-view eye — top-right over media, reveals on hover (touch: always on). */
.pcard[data-pcard-variant="mini"] .pcard-mini__qv {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 4;
  display: inline-grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 999px;
  background: rgba(255, 253, 248, 0.92);
  color: #1a1714;
  cursor: pointer;
  opacity: 0;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, background 0.18s ease;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.pcard[data-pcard-variant="mini"]:hover .pcard-mini__qv,
.pcard[data-pcard-variant="mini"]:focus-within .pcard-mini__qv {
  opacity: 1;
  transform: translateY(0);
}
.pcard[data-pcard-variant="mini"] .pcard-mini__qv:hover {
  background: #fff;
  border-color: rgba(141, 109, 71, 0.4);
}

/* Primary cart / notify action — always visible, full width, pinned to bottom. */
.pcard[data-pcard-variant="mini"] .pcard-mini__cart {
  position: relative;
  z-index: 3;
  margin-top: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 40px;
  padding: 9px 12px;
  border: 0;
  border-radius: 10px;
  background: #15120f;
  color: #fff;
  font-family: var(--hc-sans, 'Inter', system-ui, sans-serif);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background 0.18s ease, transform 0.18s ease;
}
.pcard[data-pcard-variant="mini"] .pcard-mini__cart svg {
  flex: none;
}
.pcard[data-pcard-variant="mini"] .pcard-mini__cart:hover {
  background: #000;
  transform: translateY(-1px);
}
.pcard[data-pcard-variant="mini"] .pcard-mini__cart--notify {
  background: transparent;
  color: #1a1714;
  border: 1px solid rgba(141, 109, 71, 0.32);
}
.pcard[data-pcard-variant="mini"] .pcard-mini__cart--notify:hover {
  background: rgba(141, 109, 71, 0.08);
  color: #1a1714;
}
.pcard[data-pcard-variant="mini"] .pcard-mini__price--ask {
  font-size: 15px;
  font-style: italic;
  color: rgba(26, 23, 20, 0.6);
}

@media (max-width: 480px) {
  .pcard[data-pcard-variant="mini"],
  .pcard[data-pcard-variant="mini"] .pcard-mini__media,
  .pcard[data-pcard-variant="mini"] .pcard-mini__body,
  .pcard[data-pcard-variant="mini"] .pcard-mini__link,
  .pcard[data-pcard-variant="mini"] .pcard-mini__title,
  .pcard[data-pcard-variant="mini"] .pcard-mini__type,
  .pcard[data-pcard-variant="mini"] .pcard-mini__sku,
  .pcard[data-pcard-variant="mini"] .pcard-mini__price-row,
  .pcard[data-pcard-variant="mini"] .pcard-mini__cart {
    min-width: 0;
    max-width: 100%;
  }
}

/* css/blocks/297-pcard-ind.css */
/* ===== 297-pcard-ind.css — IND product card (industrial layout family) =====
   Fresh class namespace .pcard-ind → zero collisions with a/b/c/d/mini.
   Tokens-driven: on the industrial theme accents are green, corners sharp. */

.pcard-ind {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--hc-paper);
  border: 1px solid var(--hc-line-2);
  border-radius: var(--hc-r-xs);
  transition: border-color var(--hc-dur-base) var(--hc-ease), box-shadow var(--hc-dur-base) var(--hc-ease), transform var(--hc-dur-base) var(--hc-ease);
}
.pcard-ind:hover {
  border-color: var(--hc-accent);
  box-shadow: 0 14px 34px -22px rgba(var(--hc-accent-rgb), 0.55);
  transform: translateY(-2px);
}

/* top spec row */
.pcard-ind__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--hc-line);
}
.pcard-ind__sku {
  font-family: var(--hc-mono);
  font-size: var(--hc-fs-xs);
  letter-spacing: 0.04em;
  color: var(--hc-ink-mid);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pcard-ind__stock {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: var(--hc-fs-xxs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--hc-ink-soft);
  white-space: nowrap;
}
.pcard-ind__stock::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--hc-accent);
}
.pcard-ind__stock--out::before,
.pcard-ind__stock--none::before { background: var(--hc-ink-muted); }
.pcard-ind__stock--low::before { background: var(--hc-warning); }

/* media */
.pcard-ind__media {
  position: relative;
  aspect-ratio: 4 / 3;
  background: var(--hc-paper-3);
  overflow: hidden;
}
.pcard-ind__ph,
.pcard-ind__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.pcard-ind__ph { display: grid; place-items: center; }
.pcard-ind__img { object-fit: contain; padding: 10px; }
.pcard-ind__badge {
  position: absolute;
  top: 8px;
  left: 8px;
  padding: 3px 8px;
  font-family: var(--hc-mono);
  font-size: var(--hc-fs-xxs);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-paper);
  background: var(--hc-ink);
  border-radius: var(--hc-r-xs);
}
.pcard-ind__badge--sale { background: var(--hc-danger); }
.pcard-ind__badge--new { background: var(--hc-accent); }
.pcard-ind__qv {
  position: absolute;
  right: 8px;
  bottom: 8px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  color: var(--hc-ink-soft);
  background: var(--hc-paper);
  border: 1px solid var(--hc-line-2);
  border-radius: var(--hc-r-xs);
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--hc-dur-fast) var(--hc-ease), color var(--hc-dur-fast) var(--hc-ease), border-color var(--hc-dur-fast) var(--hc-ease);
}
.pcard-ind:hover .pcard-ind__qv,
.pcard-ind__qv:focus-visible { opacity: 1; }
.pcard-ind__qv:hover { color: var(--hc-accent); border-color: var(--hc-accent); }

/* body */
.pcard-ind__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 6px;
  padding: 12px;
}
.pcard-ind__link { text-decoration: none; color: inherit; }
.pcard-ind__link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.pcard-ind__title {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-family: var(--hc-serif);
  font-size: var(--hc-fs-md);
  font-weight: 600;
  line-height: var(--hc-lh-snug);
  color: var(--hc-ink);
  min-height: calc(2 * 1.25em);
}
.pcard-ind__type {
  font-size: var(--hc-fs-xs);
  color: var(--hc-ink-mid);
}

/* footer: price + square cta */
.pcard-ind__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid var(--hc-line);
}
.pcard-ind__price-w { display: flex; flex-direction: column; }
.pcard-ind__old {
  font-size: var(--hc-fs-xs);
  color: var(--hc-ink-muted);
  text-decoration: line-through;
}
.pcard-ind__price {
  font-family: var(--hc-mono);
  font-size: var(--hc-fs-lg);
  font-weight: 600;
  color: var(--hc-ink);
  white-space: nowrap;
}
.pcard-ind__price small { font-size: 0.72em; color: var(--hc-ink-soft); }
.pcard-ind__price--ask { font-size: var(--hc-fs-sm); font-weight: 500; color: var(--hc-ink-soft); }
.pcard-ind__cart {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  flex: 0 0 auto;
  color: var(--hc-paper);
  background: var(--hc-accent);
  border: 1px solid var(--hc-accent);
  border-radius: var(--hc-r-xs);
  cursor: pointer;
  transition: background var(--hc-dur-fast) var(--hc-ease), border-color var(--hc-dur-fast) var(--hc-ease), transform var(--hc-dur-fast) var(--hc-ease);
}
.pcard-ind__cart:hover { background: var(--hc-accent-dark); border-color: var(--hc-accent-dark); transform: translateY(-1px); }
.pcard-ind__cart--ask { color: var(--hc-ink-soft); background: var(--hc-paper); border-color: var(--hc-line-2); }
.pcard-ind__cart--ask:hover { color: var(--hc-accent); background: var(--hc-paper); border-color: var(--hc-accent); }

/* css/blocks/302-pcard-sc.css */
/* ===== 302-pcard-sc.css — SC borderless card (V5 · HAY reference) =====
   Image is the card; no chrome. Quick-add pill on hover. Tokens-driven. */

/* flex-колонка: инфо-блок тянется, ряд «цена+корзина» прижат к низу —
   карточки в гриде заканчиваются на одной линии */
.pcard-sc { position: relative; display: flex; flex-direction: column; height: 100%; }

.pcard-sc__media {
  position: relative;
  aspect-ratio: 4 / 4.4;
  border-radius: var(--hc-r-md);
  overflow: hidden;
  background: var(--hc-paper-3);
}
.pcard-sc__ph,
.pcard-sc__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1), filter 0.3s var(--hc-ease);
}
.pcard-sc__ph { display: grid; place-items: center; }
.pcard-sc__img { object-fit: cover; }
/* product photos (hardware, finishes, adhesives, tools) stay contained + padded
   so they are not cropped; texture swatches fill the tile edge-to-edge */
.pcard--type-hardware .pcard-sc__img,
.pcard--type-wood_finish .pcard-sc__img,
.pcard--type-finish .pcard-sc__img,
.pcard--type-adhesive .pcard-sc__img,
.pcard--type-lacquer_kit .pcard-sc__img,
.pcard--type-tooling .pcard-sc__img { object-fit: contain; padding: 12px; }
.pcard-sc:hover .pcard-sc__ph,
.pcard-sc:hover .pcard-sc__img { transform: scale(1.04); filter: brightness(1.03); }

.pcard-sc__badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  padding: 5px 11px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--hc-ink);
  background: var(--hc-paper);
  border-radius: 999px;
  box-shadow: 0 6px 18px -10px rgba(29, 29, 27, 0.4);
}
.pcard-sc__badge--sale { color: #fff; background: var(--hc-danger); }
.pcard-sc__badge--low { color: var(--hc-warning); }

.pcard-sc__quick {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 3; /* above the stretched .pcard-sc__info::after link */
  display: flex;
  justify-content: center;
  padding: 12px;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--hc-ink);
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(6px);
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.28s cubic-bezier(0.16, 1, 0.3, 1), transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), background 0.15s;
}
.pcard-sc:hover .pcard-sc__quick,
.pcard-sc__quick:focus-visible { opacity: 1; transform: none; outline: none; }
.pcard-sc__quick:hover { color: #fff; background: var(--hc-accent); }
.pcard-sc__quick--ask:hover { color: #fff; background: var(--hc-ink); }
/* touch devices: pill always visible */
@media (hover: none) {
  .pcard-sc__quick { opacity: 1; transform: none; }
}

.pcard-sc__info {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 10px;
  padding: 12px 2px 2px;
}
/* txt is the product link; ::after stretches it over the whole card, the
   bottom row (price + cart) floats above it via z-index */
.pcard-sc__txt {
  min-width: 0;
  text-decoration: none;
  color: inherit;
}
.pcard-sc__txt::after { content: ""; position: absolute; inset: 0; }
/* нижний ряд: цена слева, корзина справа, прижат к низу карточки */
.pcard-sc__side {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  margin-top: auto;
}
/* always-visible add-to-cart with a drawn cart icon; .is-added (set by the
   hx-on handler) morphs it into a checkmark for 1.6s */
.pcard-sc__cart {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 12px;
  background: var(--hc-accent);
  color: #fff;
  cursor: pointer;
  transition: background 0.16s var(--hc-ease), transform 0.16s var(--hc-ease);
}
.pcard-sc__cart:hover { background: var(--hc-accent-dark); transform: translateY(-1px); }
.pcard-sc__cart:active { transform: scale(0.94); }
.pcard-sc__cart .scCart { width: 19px; height: 19px; overflow: visible; }
.pcard-sc__cart .scCart__body { stroke-dasharray: 44; stroke-dashoffset: 0; }
.pcard-sc__cart:hover .scCart__body { animation: scCartDraw 0.6s var(--hc-ease); }
@keyframes scCartDraw { from { stroke-dashoffset: 44; } to { stroke-dashoffset: 0; } }
.pcard-sc__cart .scCart__check {
  stroke-dasharray: 12;
  stroke-dashoffset: 12;
  opacity: 0;
  transition: stroke-dashoffset 0.28s var(--hc-ease) 0.08s, opacity 0.1s ease 0.08s;
}
.pcard-sc__cart.is-added .scCart__check { opacity: 1; stroke-dashoffset: 0; }
.pcard-sc__cart.is-added .scCart__body,
.pcard-sc__cart.is-added .scCart__wheel { opacity: 0.28; transition: opacity 0.15s ease; }
.pcard-sc__cart.is-added { background: var(--hc-accent-dark); }
@media (prefers-reduced-motion: reduce) {
  .pcard-sc__cart:hover .scCart__body { animation: none; }
}
.pcard-sc__txt b {
  /* имя во всю ширину карточки, максимум 3 строки */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--hc-ink);
}
.pcard-sc__txt em {
  /* до 2 значений свойств через «·» — строго одной строкой, длинные
     значения обрезаются, чтобы низ карточек не расползался */
  display: block;
  margin-top: 2px;
  font-style: normal;
  font-size: 12.5px;
  color: var(--hc-ink-mid);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* .pcard-sc__pr / .pcard-sc__pr s defined once below («accent price») */

/* stock pill in meta row */
.sc-stock {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-radius: 999px;
  background: var(--hc-success-soft);
  color: var(--hc-accent-dark);
  vertical-align: 1px;
}
.sc-stock--low { background: var(--hc-warning-soft); color: var(--hc-warning); }
.sc-stock--order, .sc-stock--out, .sc-stock--none { background: var(--hc-paper-3); color: var(--hc-ink-mid); }

/* hover action cluster: quickview + one-click */
.pcard-sc__acts {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 8px;
  opacity: 1;
  transition: opacity 0.22s var(--hc-ease), transform 0.22s var(--hc-ease);
}
.pcard-sc__media:hover .pcard-sc__acts,
.pcard-sc__acts:focus-within { opacity: 1; transform: none; }
.pcard-sc__act {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  color: var(--hc-ink);
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(6px);
  border: 0;
  border-radius: 50%;
  box-shadow: 0 8px 22px -10px rgba(29, 29, 27, 0.4);
  cursor: pointer;
  transition: color 0.15s var(--hc-ease), transform 0.15s var(--hc-ease);
}
.pcard-sc__act:hover { color: var(--hc-accent); transform: scale(1.08); }
.pcard-sc__act:focus-visible { outline: 2px solid var(--hc-accent); outline-offset: 2px; }
@media (hover: none) { .pcard-sc__acts { opacity: 1; transform: none; } }

/* badge stack: stable top-left position */
.pcard-sc__badges {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
.pcard-sc__badges .pcard-sc__badge { position: static; }
.pcard-sc__badge--new { color: var(--hc-accent-dark); }
.pcard-sc__badge--st { background: rgba(255, 255, 255, 0.92); color: var(--hc-accent-dark); }
.pcard-sc__badge--st.sc-stock--low { color: var(--hc-warning); }
.pcard-sc__badge--st.sc-stock--order, .pcard-sc__badge--st.sc-stock--out { color: var(--hc-ink-mid); }
/* props panel on hover */
.pcard-sc__props {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 64px;
  z-index: 2;
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  font-size: 12px;
  color: var(--hc-ink-soft);
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(6px);
  border-radius: 10px;
  box-shadow: 0 14px 30px -18px rgba(29, 29, 27, 0.4);
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.22s var(--hc-ease), transform 0.22s var(--hc-ease);
  pointer-events: none;
}
.pcard-sc__media:hover .pcard-sc__props { opacity: 1; transform: none; }
.pcard-sc__props i {
  font-style: normal;
  display: flex;
  justify-content: space-between;
  gap: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pcard-sc__props i b { font-weight: 600; color: var(--hc-ink); font-variant-numeric: tabular-nums; }
/* accent price */
.pcard-sc__pr {
  font-size: 17px;
  font-weight: 800;
  color: var(--hc-ink);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.pcard-sc__pr s { display: inline-block; margin-right: 8px; font-size: 12px; font-weight: 500; color: var(--hc-ink-muted); }
.pcard-sc__info:hover .pcard-sc__pr { color: var(--hc-accent-dark); }

/* action cluster: always visible + toggle states (fav = red, compare = accent) */
.pcard-sc__act.hc-atc-fav.is-active { background: #c0392b; color: #fff; }
.pcard-sc__act.hc-atc-fav.is-active svg { fill: currentColor; }
.pcard-sc__act.hc-atc-cmp.is-active { background: var(--hc-accent); color: #fff; }

/* css/blocks/303-pcard-row.css */
/* ===== 303-pcard-row.css — ROW spec card + "pro" catalog view (V8 · McMaster) =====
   .pcard-row works standalone; .page-catalog--pro turns the results grid into
   a single-column spec table with warm row-hover. Tokens-driven, no !important. */

.pcard.pcard-row {
  position: relative;
  display: grid;
  /* Fixed buy column: with `auto` its width varied per row («305 ₽ +» vs
     «по запросу ?»), so the specs column started at a different x in every
     row and the table read as if columns "danced". */
  grid-template-columns: 96px minmax(0, 1.5fr) minmax(0, 1fr) 250px;
  gap: 18px;
  align-items: center;
  padding: 14px 18px;
  background: var(--hc-paper);
  border-bottom: 1px solid var(--hc-line);
  transition: background 0.12s var(--hc-ease);
}
.pcard.pcard-row:hover { background: #fbf7e8; }
.pcard-row__link { position: absolute; inset: 0; z-index: 1; }
.pcard-row__link:focus-visible { outline: 2px solid var(--hc-accent); outline-offset: -2px; }

.pcard-row__thumb {
  position: relative;
  width: 96px;
  height: 72px;
  border: 1px solid var(--hc-line);
  border-radius: var(--hc-r-sm);
  background: var(--hc-paper-2);
  overflow: hidden;
}
.pcard-row__ph,
.pcard-row__img { position: absolute; inset: 0; width: 100%; height: 100%; }
.pcard-row__ph { display: grid; place-items: center; transform: scale(0.62); }
.pcard-row__img { object-fit: contain; padding: 4px; }

.pcard-row__name b {
  /* Clamp to 2 lines: plain overflow/ellipsis never truncated wrapping text,
     so long names grew rows unevenly and pushed columns around. */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 14.5px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--hc-ink);
}
.pcard-row__name span {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 2px;
  font-size: 12.5px;
  color: var(--hc-ink-mid);
}

.pcard-row__specs {
  /* Aligned label/value columns (McMaster look). The old space-between flex
     pushed values to the far right edge, so mixed-length labels and values
     read as two disconnected ragged columns. display:contents lifts each
     <i><span>label</span><b>value</b></i> pair into this shared grid. */
  display: grid;
  /* Fixed label column so labels/values line up ACROSS rows, not only inside
     one card (max-content gave every card its own label width). 120px: long
     labels ellipsize, values get the freed width. */
  grid-template-columns: 120px minmax(0, 1fr);
  /* Every row reserves the same two spec lines.  Products with one fallback
     value (for example, a product type) must not vertically re-centre that
     value while products with dimensions use two lines. */
  grid-template-rows: repeat(2, 18px);
  min-height: 40px;
  column-gap: 16px;
  row-gap: 4px;
  align-content: start;
  font-size: 12.5px;
  color: var(--hc-ink-soft);
  min-width: 0;
}
.pcard-row__specs i {
  font-style: normal;
  display: contents;
}
.pcard-row__specs i span {
  max-width: 190px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pcard-row__specs i b {
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 600;
  color: var(--hc-ink);
  font-variant-numeric: tabular-nums;
}

.pcard-row__buy {
  position: relative;
  z-index: 2;
  /* Fixed inner columns keep price and action aligned across every product:
     «по запросу» previously moved the question button relative to «147 ₽». */
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr) 38px;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.pcard-row__st {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 4px 9px;
  border-radius: var(--hc-r-xs);
  background: var(--hc-success-soft);
  color: var(--hc-accent-dark);
  white-space: nowrap;
}
.pcard-row__st--w { background: var(--hc-warning-soft); color: var(--hc-warning); }
.pcard-row__pr {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  font-size: 16.5px;
  font-weight: 800;
  color: var(--hc-ink);
  font-variant-numeric: tabular-nums;
}
.pcard-row__pr-sale {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  font-size: 11px;
  font-weight: 650;
  line-height: 1;
  white-space: nowrap;
}
.pcard-row__pr-sale s {
  color: var(--hc-ink-mid);
  text-decoration-thickness: 1px;
}
.pcard-row__pr-sale em {
  padding: 2px 4px;
  border-radius: 4px;
  background: var(--hc-danger-soft, #f8e6e2);
  color: var(--hc-danger, #9e3d2f);
  font-style: normal;
  font-weight: 800;
}
.pcard-row__pr-now {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pcard-row__pr small { font-weight: 600; color: var(--hc-ink-mid); }
.pcard-row__add {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  font: inherit;
  font-size: 20px;
  font-weight: 800;
  color: #fff;
  background: var(--hc-accent);
  border: 0;
  border-radius: var(--hc-r-sm);
  cursor: pointer;
  transition: background 0.13s var(--hc-ease), transform 0.13s var(--hc-ease);
}
.pcard-row__add:hover { background: var(--hc-accent-dark); transform: scale(1.05); }
.pcard-row__add--ask { color: var(--hc-ink-soft); background: var(--hc-paper); box-shadow: inset 0 0 0 1.5px var(--hc-line-2); }
.pcard-row__add--ask:hover { color: var(--hc-accent); background: var(--hc-paper); box-shadow: inset 0 0 0 1.5px var(--hc-accent); transform: none; }

/* ── PRO catalog view: grid → spec table ── */
.page-catalog--pro .hc-pgrid:not(.hc-pgrid--cards) {
  display: block;
  border: 1px solid var(--hc-line-2);
  border-radius: var(--hc-r-md);
  overflow: hidden;
  background: var(--hc-paper);
}
.page-catalog--pro .hc-pgrid > .pcard-row:last-child { border-bottom: 0; }
/* card view (?view=grid): sc-cards in a responsive grid */
.page-catalog--pro .hc-pgrid--cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 20px;
}
/* search focus: warm highlight ring (McMaster signature) */
.page-catalog--pro .hc-cat-head__search:focus-within { box-shadow: 0 0 0 3px #ffe9a8; }

@media (max-width: 860px) {
  .pcard.pcard-row { grid-template-columns: 72px minmax(0, 1fr) auto; }
  .pcard-row__specs { display: none; }
  .pcard-row__thumb { width: 72px; height: 56px; }
}
@media (max-width: 560px) {
  .pcard.pcard-row { grid-template-columns: 56px minmax(0, 1fr); row-gap: 10px; }
  .pcard-row__thumb { width: 56px; height: 46px; }
  .pcard-row__buy { grid-column: 1 / -1; justify-content: flex-end; }
}

/* css/blocks/218-tile-badge.css */
/* =================== tile-badge.css =================== */
.hc-pcard:hover .tile-badge, .iconcard:hover .tile-badge, .delivery-stats__item:hover .tile-badge {transform: translateY(-3px) scale(1.05); box-shadow: 0 10px 18px rgba(27, 20, 13, 0.10); background: linear-gradient(180deg, rgba(var(--hc-gold-rgb), 0.32), rgba(var(--hc-gold-rgb), 0.16))}
.hc-pcard:hover .tile-badge {opacity: 1; transform: translateY(-3px) scale(1.06)}
.iconcard .tile-badge {display: none}
.delivery-stats__item .tile-badge {position: absolute; top: 50%; right: 16px; left: auto; transform: translateY(-50%); width: 36px; height: 36px; border-radius: 12px; background: rgba(255, 255, 255, 0.7); border: 0.5px solid var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.42)); display: flex; align-items: center; justify-content: center; pointer-events: none; box-shadow: 0 2px 8px rgba(var(--hc-accent-rgb), 0.10)}
.delivery-stats__item .tile-badge .tile-badge__ring {opacity: 0.25; stroke: currentColor}
.delivery-stats__item .tile-badge .tile-badge__shape {stroke: currentColor; opacity: 0.85; animation: none}

/* css/blocks/221-hc-qv.css */
/* =================== hc-qv.css =================== */
body.hc-modal-open {
  overflow: hidden;
}

.hc-qv {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: grid;
  place-items: center;
  padding: clamp(18px, 3vw, 44px);
  background: rgba(26, 23, 20, 0.48);
  backdrop-filter: blur(10px);
}

.hc-qv__panel {
  position: relative;
  width: min(1160px, 100%);
  max-height: calc(100dvh - 64px);
  overflow: hidden;
  border-radius: var(--sf-radius-xl, 24px);
  border: 1px solid rgba(224, 210, 190, 0.9);
  background: var(--hc-paper, #fffaf2);
  box-shadow: 0 34px 90px rgba(26, 23, 20, 0.28);
}

.hc-qv__close {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(54, 45, 34, 0.14);
  border-radius: 50%;
  background: rgba(255, 252, 247, 0.92);
  color: var(--sf-ink, #1a1714);
  cursor: pointer;
  box-shadow: 0 12px 28px rgba(26, 23, 20, 0.12);
}

.hc-qv__close:hover {
  background: #fff;
}

/* Три колонки: снимок, текст, покупка. Цена и кнопка стояли в конце текста,
   и у товара с длинным названием уезжали вниз — чтобы положить в корзину,
   приходилось сначала пролистать характеристики. Теперь они на своём месте
   независимо от того, сколько текста слева. */
.hc-qv__body {
  display: grid;
  grid-template-columns: minmax(280px, 0.72fr) minmax(350px, 1fr) 300px;
  gap: clamp(18px, 2vw, 28px);
  max-height: inherit;
  padding: clamp(22px, 2.8vw, 42px);
}

/* Рейл без коробки: рамка с заливкой давала внутри окна вторую карточку —
   тяжёлый прямоугольник рядом с лёгким текстом. У донора здесь просто
   колонка: цена, кнопка, дальше действия текстом. */
.hc-qv__rail {
  align-self: start;
  display: grid;
  gap: 16px;
  min-width: 0;
  padding: 22px 18px 18px;
  border: 1px solid rgba(47, 99, 214, 0.13);
  border-radius: 18px;
  background: #f7f9fd;
}

/* Полоса миниатюр под снимком. */
.hc-qv__thumbs {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}

.hc-qv__thumb {
  width: 62px;
  height: 62px;
  padding: 0;
  overflow: hidden;
  cursor: pointer;
  background: #fff;
  border: 1px solid rgba(54, 45, 34, 0.14);
  border-radius: 8px;
  transition: border-color .16s ease;
}

.hc-qv__thumb:hover,
.hc-qv__thumb:focus-visible { border-color: var(--hc-accent, #2f63d6); }

.hc-qv__thumb img { width: 100%; height: 100%; object-fit: cover; }

/* Снимок и полоса миниатюр — одна колонка окна. Без обёртки миниатюры
   становились отдельной ячейкой сетки и выталкивали текст с покупкой
   в чужие колонки. */
.hc-qv__figure {
  display: grid;
  align-content: start;
  min-width: 0;
}

.hc-qv__gallery {
  position: relative;
  display: grid;
  place-items: center;
  align-self: stretch;
  width: 100%;
  max-width: 100%;
  min-height: 0;
  aspect-ratio: 1 / 1;
  max-height: 570px;
  overflow: hidden;
  border-radius: 22px;
  background:
    radial-gradient(circle at 20% 80%, rgba(184, 154, 112, 0.14) 0 20%, transparent 21%),
    radial-gradient(circle at 86% 16%, rgba(120, 137, 115, 0.14) 0 19%, transparent 20%),
    linear-gradient(145deg, #fbf6ea 0%, #eadbc4 100%);
}

/* Снимок вписывается целиком, а не кадрируется: у донора в окне виден весь
   товар. Квадратная рамка с заливкой — фон под ним, поэтому у высокого
   флакона поля по бокам, а у плиты декора снимок занимает её почти целиком. */
.hc-qv__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

/* Снимок кладётся в рамку по её размеру, а не тянется процентами: у рамки
   высота задана пропорцией, а картинка внутри центрированной сетки считала
   свои 100% от самой себя и вырастала в полторы тысячи пикселей — видно было
   только середину, обрезанную рамкой. */
.hc-qv__gallery picture {
  position: absolute;
  inset: 0;
  display: block;
}

.hc-qv__placeholder {
  display: grid;
  place-items: center;
  width: min(74%, 280px);
  aspect-ratio: 1 / 1;
}

.hc-qv__placeholder .hc-ph {
  display: block;
  width: 100%;
  height: 100%;
  filter: drop-shadow(0 18px 30px rgba(26, 23, 20, 0.1));
}

.hc-qv__badge {
  position: absolute;
  top: 18px;
  left: 18px;
}

.hc-qv__info {
  display: grid;
  align-content: start;
  gap: 12px;
  min-width: 0;
  max-height: calc(100dvh - 148px);
  overflow: auto;
  padding-right: 10px;
}

.hc-qv__kicker {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--hc-accent, #2f63d6);
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.hc-qv__kicker b {
  padding-left: 9px;
  border-left: 1px solid rgba(47, 99, 214, 0.22);
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.58));
  font: inherit;
}

.hc-qv__title {
  margin: 0;
  color: var(--sf-ink, #1a1714);
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  /* Сорок пунктов — размер для половины окна; в средней колонке из трёх
     название «ЛДСП 25 мм 2800*2070 мм Текстиль бежевый F416 ST10 8 Egger»
     занимало ими четыре строки и вытесняло характеристики. */
  font-size: clamp(21px, 1.5vw, 27px);
  font-weight: 500;
  line-height: 1.02;
}

.hc-qv__price {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: baseline;
}

.hc-qv__old {
  color: rgba(26, 23, 20, 0.48);
  text-decoration: line-through;
  font-size: 16px;
}

/* Цена — то, ради чего окно открывают: она задаёт масштаб всей колонки. */
.hc-qv__cur {
  color: var(--sf-ink, #1a1714);
  font-family: inherit;
  font-size: clamp(30px, 2.6vw, 38px);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1;
}

.hc-qv__cur--ask {
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.62));
  font-size: 24px;
  font-style: italic;
  font-weight: 400;
}

.hc-qv__unit {
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.58));
  font-size: 14px;
  white-space: nowrap;
}

.hc-qv__desc {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.68));
  font-size: 15px;
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
}

.hc-qv__specs {
  display: grid;
  gap: 0;
  margin: 0;
}

.hc-qv__spec {
  display: grid;
  grid-template-columns: minmax(120px, 0.42fr) minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px dashed rgba(54, 45, 34, 0.14);
}

.hc-qv__spec dt {
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.58));
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.hc-qv__spec dd {
  margin: 0;
  color: var(--sf-ink, #1a1714);
  font-weight: 600;
}

.hc-qv__assurance {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
}

.hc-qv__buy {
  display: grid;
  gap: 10px;
}

/* Внутри рейла всё в столбик. Счётчик рядом с кнопкой и три кнопки в ряд —
   раскладка для широкой колонки; в 268 пикселях от «В корзину» оставалось
   восемьдесят, и надпись обрезалась до «корзин». */
.hc-qv__actions {
  display: grid;
  gap: 10px;
  align-items: stretch;
}

/* Счётчик и «В корзину» — крупные: это главное действие окна, и рядом с
   ценой в 38 пикселей кнопка в 44 читалась как второстепенная. */
.hc-qv__actions .hc-qty {
  display: flex;
  justify-content: space-between;
  height: 54px;
}

.hc-qv__actions .hc-qty__btn {
  height: 52px;
  font-size: 20px;
}

.hc-qv__actions .hc-qty__val {
  flex: 1 1 auto;
  height: 52px;
  font-size: 17px;
}

.hc-qv__actions .hc-btn {
  min-height: 54px;
  font-size: 16px;
}

/* Столбик второстепенных действий под кнопкой покупки. */
.hc-qv__secondary {
  display: grid;
  gap: 0;
  border-top: 1px solid rgba(54, 45, 34, 0.12);
}

/* Второстепенные действия — строками, а не кнопками. Три обведённые кнопки
   под синей спорили с ней за внимание; строкой они читаются как то, чем и
   являются: «ещё можно вот так». Подчёркивание выезжает на наведении, чтобы
   строку было видно как нажимаемую. */
.hc-qv__line {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 2px;
  border: 0;
  border-bottom: 1px solid rgba(54, 45, 34, 0.1);
  background: none;
  color: var(--sf-ink, #1a1714);
  font: inherit;
  font-size: 15px;
  line-height: 1.3;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.18s ease;
}

.hc-qv__line::after {
  content: "→";
  flex: 0 0 auto;
  color: var(--hc-accent, #2f63d6);
  font-size: 17px;
}

.hc-qv__line:hover {
  color: var(--hc-accent, #2f63d6);
}

/* артикул + статус наличия одной строкой под заголовком */
.hc-qv__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  margin-top: 2px;
}

.hc-qv__msg {
  min-height: 0;
}

/* От 861 до 1100 трём колонкам уже тесно: средняя сжималась до тридцати
   символов, «Герметики» обрезалось краем, а под характеристиками появлялась
   вторая полоса прокрутки. Снимок и текст уходят в одну колонку друг под
   друга, покупка остаётся сбоку — до неё по-прежнему не надо листать. */
@media (max-width: 1100px) {
  .hc-qv__body {
    grid-template-columns: minmax(0, 1fr) 272px;
    grid-template-areas:
      "figure rail"
      "info rail";
    align-items: start;
    overflow: auto;
  }

  .hc-qv__figure {
    grid-area: figure;
  }

  .hc-qv__info {
    grid-area: info;
    max-height: none;
    overflow: visible;
    padding-right: 0;
  }

  .hc-qv__rail {
    grid-area: rail;
  }

  /* Колонка стала широкой и низкой: квадратный снимок занял бы пол-экрана. */
  .hc-qv__gallery {
    aspect-ratio: 16 / 9;
  }
}

@media (max-width: 860px) {
  .hc-qv {
    align-items: end;
    padding: 10px;
  }

  .hc-qv__panel {
    width: 100%;
    max-height: calc(100dvh - 20px);
    border-radius: 22px 22px 12px 12px;
  }

  .hc-qv__body {
    grid-template-columns: 1fr;
    /* Раскладку по областям задаёт шаг выше — в одной колонке она не нужна,
       иначе снимок и покупка так и остались бы разложены по двум. */
    grid-template-areas: none;
    gap: 20px;
    padding: 18px;
    overflow: auto;
  }

  .hc-qv__gallery {
    min-height: 180px;
    max-height: none;
    aspect-ratio: 16 / 10;
  }

  .hc-qv__placeholder {
    width: min(54%, 170px);
  }

  .hc-qv__info {
    max-height: none;
    overflow: visible;
    padding-right: 0;
  }

  .hc-qv__title {
    font-size: clamp(25px, 8vw, 31px);
  }

  /* Покупка стоит сразу под снимком и названием: на телефоне до неё иначе
     нужно пролистать характеристики. Порядок задаётся колонкам окна, а не
     блокам внутри текста — покупка теперь отдельная колонка. */
  .hc-qv__figure { grid-area: auto; order: 1; }
  .hc-qv__rail {
    grid-area: auto;
    order: 2;
    padding: 14px;
    border-radius: 12px;
  }
  .hc-qv__info { grid-area: auto; order: 3; }

  .hc-qv__actions {
    grid-template-columns: 1fr;
  }

  .hc-qv__secondary {
    grid-template-columns: 1fr;
  }

  .hc-qv__spec {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* «В избранное» — строка того же роста, но со значком: сердце и есть её
   опознавательный знак. Контурное, а не залитое: заливка прилетала правилом
   на svg и делала из тихой строки чёрное пятно. */
.hc-qv__fav {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 2px;
  border: 0;
  background: none;
  color: var(--sf-ink, #1a1714);
  font: inherit;
  font-size: 15px;
  line-height: 1.3;
  cursor: pointer;
  transition: color 0.18s ease;
}

.hc-qv__fav::after {
  content: "+";
  margin-left: auto;
  color: var(--hc-accent, #2f63d6);
  font-size: 18px;
}

.hc-qv__fav svg {
  fill: none;
  stroke: currentColor;
}

.hc-qv__fav:hover {
  color: var(--hc-accent, #2f63d6);
}

/* css/blocks/055-hc-qty.css */
/* =================== hc-qty.css — shared quantity stepper (− / value / +) ===================
   Single source for .hc-qty, used by the cart page AND the global quick-view modal.
   Was previously buried in 054-hc-cart-table.css (cart-only set), so the modal's
   stepper was unstyled when opened from catalog/home. Registered in css_shop_cards
   (modal) + css_cart_checkout (cart). Native number spinners hidden — the −/+ buttons
   are the controls. */
.hc-qty {
  display: inline-flex;
  align-items: center;
  border: 0.5px solid rgba(180, 151, 115, 0.32);
  border-radius: 100px;
  overflow: hidden;
  background: #fff;
}
/* 44 on the stepper: it sits a few pixels from «Удалить», and on a phone a
   miss between them costs the line rather than a unit of it. */
.hc-qty__btn {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  background: transparent;
  border: 0;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  color: rgba(26, 23, 20, 0.65);
  transition: background 0.18s ease, color 0.18s ease;
}
.hc-qty__btn:hover {
  background: rgba(var(--hc-gold-rgb), 0.1);
  color: var(--hc-ink, #1a1714);
}
.hc-qty__btn[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}
.hc-qty__val {
  width: 42px;
  min-width: 42px;
  text-align: center;
  border: 0;
  background: transparent;
  font-variant-numeric: tabular-nums;
  -webkit-appearance: none;
  -moz-appearance: textfield;
  appearance: textfield;
}
.hc-qty__val::-webkit-outer-spin-button,
.hc-qty__val::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* css/blocks/054-hc-cart-table.css */
/* =================== hc-cart-table.css =================== */
.hc-cart-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}

.hc-cart-head__mode.is-active {
  background: var(--hc-paper, #ffffff);
  color: var(--hc-ink, #1a1714);
  box-shadow: 0 8px 18px -14px rgba(26, 23, 20, 0.82);
}

.hc-cart-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.hc-cart-table th,
.hc-cart-table td {
  padding: 12px;
  border-bottom: 1px solid rgba(26, 23, 20, 0.08);
  text-align: left;
  vertical-align: middle;
}

.hc-cart-table th {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(26, 23, 20, 0.6);
}

.hc-cart-table__remove {
  color: rgba(26, 23, 20, 0.66);
  border-bottom: 1px dashed rgba(26, 23, 20, 0.3);
}

/* ==========================================================
   v7.61.20 · Premium polish
   ========================================================== */

/* Premium total typography */
.hc-cart-summary__total{
  font:500 28px/1 'Playfair Display',Georgia,serif;
  letter-spacing:-0.02em;
  color:var(--hc-ink, #1a1714);
}

/* Trash icon for "Удалить" */
.hc-cart-line__trash{
  display:inline-flex;
  align-items:center;
  gap:5px;
  background:transparent;
  border:0;
  color:rgba(26,23,20,0.45);
  font-size:12px;
  cursor:pointer;
  transition:color 0.18s ease;
  padding:0;
}
.hc-cart-line__trash:hover{ color:#c0392b; }
.hc-cart-line__trash svg{ width:13px; height:13px; }

/* ── Summary sidebar: installment / note / CTAs / promo (were unstyled) ────── */
.hc-cart-sum__installment {
  margin: 12px 0;
  padding: 12px 14px;
  display: grid;
  gap: 4px;
}
.hc-cart-sum__installment-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-weight: 600;
}
.hc-cart-sum__installment-sub {
  font-size: 13px;
}
.hc-cart-sum__note {
  margin: 14px 0 12px;
  padding: 14px 16px;
  display: grid;
  gap: 4px;
}
.hc-cart-sum__note strong {
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 500;
  font-size: 15px;
}
.hc-cart-sum__note p {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
}
.hc-cart-sum__b2b {
  margin-bottom: 8px;
}
.hc-cart-sum__cta {
  margin-bottom: 12px;
}
.hc-cart-sum__promo {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.hc-cart-sum__promo-input {
  flex: 1 1 auto;
  min-width: 0;
}
.hc-cart-sum__promo .hc-btn {
  flex: 0 0 auto;
}

/* ── "Поделиться корзиной" — subtle ghost action under the summary ─────────── */
.hc-cart-sum__share {
  margin-top: 8px;
}

/* .hc-qty* moved to 055-hc-qty.css (shared by cart + quick-view modal) */

/* css/blocks/206-premium-empty.css */
/* =================== premium-empty.css =================== */
.premium-empty {
  position:relative;
  display:grid;
  grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
  gap: clamp(24px, 4vw, 56px);
  align-items:center;
  padding: clamp(28px, 4vw, 48px) clamp(24px, 3.5vw, 56px);
  margin: clamp(24px, 3vw, 40px) 0 clamp(40px, 5vw, 64px);
  background: linear-gradient(180deg, var(--hc-paper, #ffffff) 0%, #fbf8f1 100%);
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 24px;
  box-shadow: 0 18px 50px -32px rgba(27, 20, 13, 0.22), 0 1px 0 rgba(255,255,255,.9);
  overflow: hidden;
}
.premium-empty::before {
  content:"";
  position:absolute;
  inset:0;
  background: radial-gradient(80% 60% at 18% 30%, rgba(var(--hc-gold-rgb), 0.18), transparent 60%),
              radial-gradient(60% 50% at 88% 80%, rgba(141, 109, 71, 0.10), transparent 65%);
  pointer-events:none;
  z-index:0;
}
.premium-empty__visual {
  position:relative;
  width:100%;
  aspect-ratio: 1 / 1;
  max-width: 280px;
  margin-inline: auto;
  border-radius: 20px;
  background: radial-gradient(circle at 50% 50%, #fdfbf4 0%, #f3eadb 70%, #e9dec8 100%);
  border: 1px solid rgba(141, 109, 71, 0.16);
  display:grid;
  place-items:center;
  z-index:1;
  overflow:hidden;
}
.premium-empty__orb {
  position:relative;
  width: 56%;
  height: 56%;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--hc-paper, #ffffff) 0%, #efe3cb 60%, var(--hc-gold, var(--hc-gold)) 100%);
  box-shadow: inset 0 4px 16px rgba(255,255,255,.8), 0 8px 24px -8px rgba(141, 109, 71, .35);
}
.premium-empty__orb::after {
  content:"";
  position:absolute;
  inset: 22%;
  border-radius:50%;
  border: 1.5px solid rgba(26, 23, 20, 0.32);
}
.premium-empty__rail {
  position:absolute;
  border: 1px dashed rgba(141, 109, 71, 0.4);
  border-radius:50%;
  pointer-events:none;
}
.premium-empty__rail--a { inset: 12%; }
.premium-empty__rail--b { inset: 4%; opacity:.6; }
.premium-empty__dot {
  position:absolute;
  width:8px; height:8px; border-radius:50%;
  background: var(--hc-accent, var(--hc-accent));
  box-shadow: 0 0 0 4px rgba(var(--hc-gold-rgb),.25);
}
.premium-empty__dot--a { top: 8%; left: 50%; transform: translateX(-50%); }
.premium-empty__dot--b { bottom: 12%; right: 12%; }
.premium-empty__panel {
  position:absolute;
  width: 36%;
  height: 56%;
  border-radius: 12px;
  border: 1.5px solid rgba(141, 109, 71, 0.4);
  background: linear-gradient(180deg, var(--hc-paper, #ffffff), #f7efdc);
  box-shadow: 0 12px 28px -16px rgba(27, 20, 13, 0.2);
}
.premium-empty__panel--left {
  top: 22%; left: 14%;
  transform: rotate(-3deg);
}
.premium-empty__panel--right {
  top: 22%; right: 14%;
  transform: rotate(3deg);
}
.premium-empty__bridge {
  position:absolute;
  top: 50%; left: 30%; right: 30%;
  height: 2px;
  background: linear-gradient(90deg, var(--hc-accent, var(--hc-accent)), var(--hc-gold, var(--hc-gold)));
  border-radius: 2px;
  z-index: 2;
}
.premium-empty__bridge::before, .premium-empty__bridge::after {
  content:"";
  position:absolute;
  top: 50%;
  width: 10px; height: 10px;
  border-radius:50%;
  background: var(--hc-accent, var(--hc-accent));
  transform: translateY(-50%);
}
.premium-empty__bridge::before { left: -6px; }
.premium-empty__bridge::after { right: -6px; }
.premium-empty__content {
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  gap: clamp(12px, 1.5vw, 18px);
  min-width: 0;
}
.premium-empty__kicker {
  display:inline-block;
  font: 500 11px/1 var(--hc-mono, 'JetBrains Mono', monospace);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
  padding: 6px 12px;
  background: rgba(var(--hc-gold-rgb), 0.18);
  border-radius: 9999px;
  align-self: start;
}
.premium-empty__title {
  margin: 0;
  font: 500 clamp(28px, 3.4vw, 40px)/1.1 var(--hc-serif, 'Playfair Display', Georgia, serif);
  letter-spacing: -0.01em;
  color: var(--hc-ink, #1a1714);
}
.premium-empty__text {
  margin: 0;
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.6;
  color: var(--hc-ink-soft, rgba(26, 23, 20, .7));
  max-width: 56ch;
}
.premium-empty__actions {
  display:flex;
  flex-wrap:wrap;
  gap: 12px;
  margin-top: 8px;
}
/* Inline how-to-add steps (used on --compare, --favorites empty states) */
.premium-empty__steps {
  list-style: none;
  padding-left: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin: 6px 0 4px;
  padding: 14px 16px;
  background: rgba(var(--hc-gold-rgb), 0.10);
  border: 0.5px solid var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.42));
  border-radius: 12px;
}
.premium-empty__step::marker {
  content: "";
}
.premium-empty__step {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
  align-items: start;
}
.premium-empty__step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
  border-radius: 50%;
  font: 700 11.5px/1 var(--hc-mono, "JetBrains Mono", monospace);
  letter-spacing: 0.04em;
  box-shadow: 0 2px 6px -1px rgba(184, 154, 111, 0.42);
  flex-shrink: 0;
}
.premium-empty__step-body strong {
  display: block;
  margin-bottom: 2px;
  display: block;
  font: 600 13px/1.2 var(--hc-sans, "Outfit", sans-serif);
  color: var(--hc-ink, #1a1714);
}
.premium-empty__step-body span {
  display: block;
  margin-top: 3px;
  font: 500 11.5px/1.45 var(--hc-sans, "Outfit", sans-serif);
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
}
.premium-empty__notes {
  position:relative;
  z-index:2;
  grid-column: 1 / -1;
  display:flex;
  flex-wrap:wrap;
  gap: 8px;
  margin-top: clamp(16px, 2vw, 24px);
  padding-top: clamp(16px, 2vw, 24px);
  border-top: 1px dashed rgba(141, 109, 71, 0.22);
}
.premium-empty__notes span {
  display:inline-flex;
  align-items:center;
  gap:6px;
  font: 500 12px/1 var(--hc-mono, 'JetBrains Mono', monospace);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
  padding: 8px 14px;
  background: var(--hc-paper, #ffffff);
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 9999px;
}
.premium-empty__notes span::before {
  content:"";
  width: 14px;
  height: 14px;
  background-color: var(--hc-accent-dark, var(--hc-accent-dark));
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
}
@media (max-width: 768px) {
  .premium-empty {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .premium-empty__visual { max-width: 220px; }
  .premium-empty__content { align-items: center; }
  .premium-empty__kicker { align-self: center; }
  .premium-empty__text { margin-inline: auto; }
  .premium-empty__notes { justify-content: center; }
}

/* css/blocks/055-hc-cart.css */
/* =================== hc-cart.css =================== */
.hc-cart {display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: clamp(24px, 3vw, 44px); align-items: start}
.hc-cart__items {background: var(--hc-paper); border: 1px solid var(--hc-line); border-radius: var(--hc-r-lg); overflow: hidden; display: grid; gap: 12px}
.hc-cart__item {display: grid; grid-template-columns: 100px minmax(0, 1fr) auto; gap: 18px; padding: 14px; border-bottom: 1px solid var(--hc-line); align-items: center; background: var(--hc-bg, var(--hc-bg)); border: 1px solid rgba(26, 23, 20, 0.07); border-radius: 18px; transition: border-color 0.25s ease, box-shadow 0.25s ease}
.hc-cart__item:last-child {border-bottom: 0}
.hc-cart__item-img {width: 100px; aspect-ratio: 1; background: var(--hc-bg-2, var(--hc-paper-3, var(--hc-paper-3))); border-radius: 14px; padding: 0; overflow: hidden; height: 100px; flex: none; display: flex; align-items: center; justify-content: center; position: relative}
.hc-cart__item-name {font-size: 15px; font-weight: 500; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--hc-ink, #1a1714); text-decoration: none; margin-bottom: 8px; text-overflow: ellipsis; white-space: normal; word-break: break-word}
.hc-cart__item-series {font-size: 10px; color: var(--hc-muted, rgba(26, 23, 20, 0.55)); letter-spacing: 0.06em; font-family: 'JetBrains Mono', ui-monospace, monospace; margin-bottom: 4px; text-transform: uppercase; font-weight: 500}
.hc-cart__item-price {font-family: var(--hc-serif, "Playfair Display", Georgia, serif); font-size: 18px; font-weight: 500; text-align: right; color: var(--hc-ink, #1a1714)}
/* Removing a line is the one action here that cannot be undone, and it was a
   26px target beside a 44px stepper. Same ink, bigger area. */
.hc-cart__item-rm {display: inline-flex; align-items: center; min-height: 44px; font-size: 12px; color: var(--hc-muted, rgba(26, 23, 20, 0.5)); cursor: pointer; margin-top: -6px; background: transparent; border: none; padding: 4px 6px; transition: color 0.2s ease}
.hc-cart__item-rm:hover {color: var(--hc-red, #c0392b)}
.hc-cart__item-body {min-width: 0; display: flex; flex-direction: column; gap: 6px; overflow: hidden}
.hc-cart__item-controls {display: flex; gap: var(--hc-sp-3, 14px); align-items: center; flex-wrap: wrap; margin-top: 4px}
.hc-cart__item-right {text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; min-width: 70px}
.hc-cart__title {font-family: var(--hc-serif, "Playfair Display", Georgia, serif); font-weight: 400; font-size: clamp(28px, 3vw, 40px); line-height: 1.1; letter-spacing: -0.01em; margin: 0 0 var(--hc-sp-5, 28px); color: var(--hc-ink, #1a1714)}
.hc-cart__main {min-width: 0}
.hc-cart__side {position: relative}
.hc-cart__item:hover {border-color: rgba(var(--hc-accent-rgb), 0.22); box-shadow: 0 10px 28px rgba(26, 23, 20, 0.06)}
.hc-cart__item-img img {width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; display: block}
.hc-cart__item-img-ph {display: inline-flex; place-items: center; width: 24px; height: 24px; color: var(--hc-ink-mid, rgba(26, 23, 20, 0.4)); align-items: center; justify-content: center}
.hc-cart__item-series code {background: rgba(26, 23, 20, 0.04); padding: 1px 5px; border-radius: 4px}
.hc-cart__item-name:hover {color: var(--hc-accent-dark, #7a6548)}
.hc-cart-upsell__rail {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 320px));
  justify-content: start;
  align-items: stretch;
  gap: 14px;
}
.hc-cart-upsell__rail > * {
  min-width: 0;
}
.hc-cart-upsell__rail > .pcard {
  width: 100%;
  max-width: 320px;
}
@media (max-width: 760px) {
  .hc-cart-upsell__rail {
    grid-template-columns: 1fr;
  }
  .hc-cart-upsell__rail > .pcard {
    max-width: none;
  }
}

.hc-cart-progress {display: grid; gap: 8px; margin-top: 10px}
.hc-cart-progress__label {font-size: 12px; color: var(--hc-ink-soft, rgba(26, 23, 20, 0.72))}
.hc-progress {
  position: relative;
  height: 8px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(141, 109, 71, 0.14);
}
.hc-progress__bar {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  background: linear-gradient(90deg, var(--hc-accent), var(--hc-gold));
  border-radius: inherit;
  transition: width 0.28s ease;
}

/* Mobile: cart 2-col (items | summary) collapses to a single column — items first, summary below. */
@media (max-width: 860px) {
  .hc-cart { grid-template-columns: 1fr; } /* mobile cart 1-col */
}

/* css/blocks/115-hc-pay-card.css */
/* =================== hc-pay-card.css =================== */
.hc-pay-card, [data-pay-method] {position: relative; min-height: 80px; padding: 14px 16px; display: flex; flex-direction: column; gap: 4px}
.hc-pay-card__badge, [data-pay-card] .hc-badge, [data-pay-card] .hc-pay-card__badge {position: absolute; top: 8px; right: 8px; font-size: 9px; letter-spacing: 0.06em; padding: 2px 6px; background: rgba(var(--hc-gold-rgb), 0.20); color: var(--hc-accent-dark, #7a6548); border-radius: 4px}

/* css/blocks/120-hc-checkout.css */
/* ════════════════════════════════════════════════════════════════
   Оформление заказа (/checkout).

   Единственное описание классов .hc-ck__* / .hc-step* / .hc-rcard /
   .hc-cart-sum. Тема сюда не дописывает: цвета берутся токенами
   (--hc-accent и т.д.), которые тема переопределяет у себя один раз.

   Раскладка: слева карточка формы, справа липкая карточка заказа.
   Атомы поля и кнопки описаны своими модулями, здесь только раскладка
   и то, что относится к самой странице заказа.
   ════════════════════════════════════════════════════════════════ */

/* ── Заголовок и шаги ───────────────────────────────────────────── */
.hc-ck__title {
  font-family: var(--hc-serif);
  font-weight: 600;
  font-size: 30px;
  line-height: 1.15;
  color: var(--hc-ink, #1f2937);
}

/* Лента шагов не растягивается на всю ширину: у четырёх подписей,
   разнесённых на 1300px, теряется сама идея последовательности. */
.hc-steps {
  display: flex;
  align-items: center;
  max-width: 720px;
  margin: 18px 0 26px;
}

.hc-step {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--hc-ink-mid, #667085);
  white-space: nowrap;
}

.hc-step__mark {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1px solid var(--hc-line, #e2e8f0);
  background: #fff;
  color: #98a2b3;
  font: 600 12px / 1 var(--hc-sans);
}

.hc-step__label {
  font: 500 13px / 1 var(--hc-sans);
}

.hc-step__line {
  flex: 1 1 auto;
  min-width: 14px;
  height: 2px;
  margin: 0 10px;
  border-radius: 2px;
  background: var(--hc-line, #e2e8f0);
}

.hc-step__line--done { background: var(--hc-accent, #2f63d6); }

.hc-step--done .hc-step__mark {
  border-color: var(--hc-accent, #2f63d6);
  background: var(--hc-accent, #2f63d6);
  color: #fff;
}

/* Текущий шаг — тот же кружок, но с мягким кольцом: видно, где ты. */
.hc-step--active .hc-step__mark {
  border-color: var(--hc-accent, #2f63d6);
  background: var(--hc-accent, #2f63d6);
  color: #fff;
  box-shadow: 0 0 0 4px rgba(var(--hc-accent-rgb, 47, 99, 214), .14);
}

.hc-step--active .hc-step__label,
.hc-step--done .hc-step__label {
  color: var(--hc-ink, #1f2937);
}

/* ── Две колонки: форма и заказ ─────────────────────────────────── */
.hc-ck {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 372px;
  gap: 24px;
  align-items: start;
}

.hc-ck__panel {
  min-width: 0;
  padding: 26px 28px 28px;
  border: 1px solid var(--hc-line, #e2e8f0);
  border-radius: 10px;
  background: #fff;
}

.hc-ck__panel-title {
  font-family: var(--hc-serif);
  font-weight: 600;
  font-size: 18px;
  color: var(--hc-ink, #1f2937);
  margin-bottom: 4px;
}

.hc-ck__panel-sub {
  font-size: 13px;
  color: var(--hc-ink-mid, #667085);
  margin-bottom: 18px;
}

.hc-ck__login-link {
  color: var(--hc-accent, #2f63d6);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Разделы внутри формы отбиваются линией — «Контактные данные»,
   «Способ получения», «Оплата» читаются как три отдельных шага. */
.hc-ck__section-title {
  font-family: var(--hc-serif);
  font-weight: 600;
  font-size: 16px;
  color: var(--hc-ink, #1f2937);
  margin: 26px 0 14px;
  padding-top: 22px;
  border-top: 1px solid var(--hc-line, #e2e8f0);
}

.hc-ck__form > .hc-field { margin-bottom: 14px; }

.hc-ck__row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-bottom: 14px;
}

.hc-ck__field-spaced { margin-top: 14px; }

.hc-ck__b2b-toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  margin: 14px 0 0;
  border: 1px solid var(--hc-line, #e2e8f0);
  border-radius: 8px;
  background: #fff;
  color: var(--hc-ink-mid, #667085);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease;
}

.hc-ck__b2b-toggle:hover {
  border-color: #c7d6f5;
  background: #fbfcff;
}

.hc-ck__b2b-panel {
  margin-top: 12px;
  padding: 16px;
  border: 1px solid #dde6f8;
  border-radius: 8px;
  background: #f7faff;
}

/* ── Карточки выбора: получение и оплата ────────────────────────── */
.hc-rcard {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid var(--hc-line, #e2e8f0);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease;
}

.hc-rcard:hover { border-color: #c7d6f5; }

.hc-rcard.is-selected {
  border-color: var(--hc-accent, #2f63d6);
  background: #f2f6ff;
}

.hc-rcard:focus-within {
  border-color: var(--hc-accent, #2f63d6);
  box-shadow: 0 0 0 3px rgba(var(--hc-accent-rgb, 47, 99, 214), .12);
}

.hc-rcard__body { display: grid; gap: 3px; }

.hc-rcard__body b {
  color: var(--hc-ink, #1f2937);
  font-size: 14px;
  font-weight: 600;
}

.hc-rcard__body span {
  font-size: 13px;
  line-height: 1.45;
  color: var(--hc-ink-mid, #667085);
}

/* Три способа оплаты в столбик по 900px — пустая полоса справа.
   Две колонки держат блок компактным. */
.hc-ck__pay-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 10px;
}

.hc-ck__pickup-card {
  margin-top: 14px;
  padding: 14px 16px;
  border: 1px solid #dde6f8;
  border-radius: 8px;
  background: #f7faff;
  font-size: 13px;
}

.hc-ck__pickup-card b {
  display: block;
  margin-bottom: 3px;
  color: var(--hc-ink, #1f2937);
  font-size: 14px;
}

.hc-ck__agree {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 20px 0 14px;
}

.hc-ck__submit { margin-top: 0; }

/* ── Хвост доверия под кнопкой ──────────────────────────────────── */
.hc-ck-trust-tail {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
  margin-top: 14px;
  font-size: 13px;
  color: var(--hc-ink-mid, #667085);
}

.hc-ck-trust-tail > div {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.hc-ck-trust-tail > div::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--hc-accent, #2f63d6);
}

/* ── Правая колонка: состав заказа ──────────────────────────────── */
.hc-ck__side { position: sticky; top: calc(var(--hc-hdr-h, 68px) + 16px); }

.hc-cart-sum {
  padding: 20px 22px 22px;
  border: 1px solid var(--hc-line, #e2e8f0);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04);
}

.hc-cart-sum__title {
  font-family: var(--hc-serif);
  font-weight: 600;
  font-size: 16px;
  color: var(--hc-ink, #1f2937);
  margin-bottom: 4px;
}

.hc-ck__summary-count {
  display: block;
  margin-bottom: 12px;
  font-size: 12px;
  color: var(--hc-ink-mid, #667085);
}

.hc-ck-line {
  display: grid;
  grid-template-columns: 52px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--hc-line, #e2e8f0);
}

.hc-ck-line__thumb {
  position: relative;
  width: 52px;
  height: 52px;
  border-radius: 8px;
  overflow: hidden;
  background: #f4f6f9;
}

.hc-ck-line__thumb img { width: 100%; height: 100%; object-fit: cover; }

.hc-ck-line__thumb-ph {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  color: #98a2b3;
}

.hc-ck-line__info { min-width: 0; }

.hc-ck-line__name {
  font-size: 13px;
  line-height: 1.35;
  color: var(--hc-ink, #1f2937);
}

/* Количество — не чёрная плашка, а спокойная подпись рядом с ценой. */
.hc-ck-line__qty {
  display: inline-block;
  margin-top: 3px;
  font: 500 12px / 1.3 var(--hc-sans);
  color: var(--hc-ink-mid, #667085);
}

.hc-ck-line__price {
  white-space: nowrap;
  color: var(--hc-ink, #1f2937);
  font-size: 14px;
  font-weight: 600;
}

.hc-cart-sum__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 0;
  font-size: 13px;
  color: var(--hc-ink-mid, #667085);
}

.hc-cart-sum__row--discount,
.hc-cart-sum__row--discount strong { color: var(--hc-success, #2e7d32); }

.hc-cart-sum__row--tot {
  margin-top: 6px;
  padding-top: 14px;
  border-top: 1px solid var(--hc-line, #e2e8f0);
  font-size: 15px;
  color: var(--hc-ink, #1f2937);
}

.hc-cart-sum__row--tot strong {
  font-size: 22px;
  font-weight: 700;
  color: var(--hc-ink, #1f2937);
}

/* Что входит в сумму, а что менеджер посчитает отдельно. */
.hc-ck__summary-note {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--hc-line, #e2e8f0);
  font-size: 12px;
  line-height: 1.5;
  color: var(--hc-ink-mid, #667085);
}

/* ── Узкие экраны ───────────────────────────────────────────────── */
@media (max-width: 1080px) {
  .hc-ck { grid-template-columns: minmax(0, 1fr) 320px; }
}

@media (max-width: 980px) {
  /* Сумму читают до кнопки, а не после: кнопка лежит в форме выше
     итога, поэтому в одну колонку заказ поднимается наверх. */
  .hc-ck { grid-template-columns: 1fr; }
  .hc-ck__side { position: static; order: -1; }
  .hc-ck__panel { order: 0; padding: 20px; }
  .hc-ck__pay-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .hc-ck__row-2 { grid-template-columns: 1fr; }
  .hc-ck__title { font-size: 24px; }
  .hc-step__label { display: none; }
  .hc-steps { max-width: none; }
}

/* Ловушка для ботов — вне видимости, но в потоке документа. */
.hc-hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.hc-field-err {
  margin-top: 6px;
  font-size: 13px;
  color: var(--hc-danger, #c0392b);
}

/* css/blocks/212-share-cart-modal.css */
/* =================== share-cart-modal.css =================== */
/* Overlay + dialog for "Поделиться корзиной". The styles were previously trapped
 * entirely in @media(max-width:920px) — on desktop the modal rendered unstyled
 * in the page flow (no overlay, no centering, no close button). Now base-scoped
 * with a proper overlay, matching the lead-modal (hzlead) language. */

.share-cart-modal {
  position: fixed;
  inset: 0;
  z-index: var(--hc-z-modal, 1000);
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(26, 23, 20, 0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.share-cart-modal__panel {
  position: relative;
  width: 100%;
  max-width: 480px;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  padding: 28px 28px 24px;
  background: #fdf8ef;
  border-radius: 20px;
  box-shadow: 0 40px 120px rgba(28, 22, 16, 0.28);
}

.share-cart-modal__panel h3 {
  margin: 0 0 6px;
  padding-right: 40px;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 22px;
  font-weight: 500;
  color: var(--hc-ink, #1a1714);
}
.share-cart-modal__panel > .hc-muted {
  margin: 0 0 18px;
  font-size: 13px;
  line-height: 1.5;
}

.share-cart-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(26, 23, 20, 0.1);
  border-radius: 50%;
  background: var(--hc-paper, #ffffff);
  color: var(--hc-ink, #1a1714);
  font-size: 14px;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, transform 0.18s ease;
}
.share-cart-modal__close:hover {
  border-color: var(--hc-accent, var(--hc-accent));
  color: var(--hc-accent, var(--hc-accent));
  transform: scale(1.04);
}

.share-cart-modal__tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 14px;
  border-bottom: 0.5px solid rgba(180, 151, 115, 0.22);
}
.share-cart-modal__tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  margin-bottom: -1px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: rgba(26, 23, 20, 0.6);
  font-size: 13px;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.share-cart-modal__tab svg {
  flex: 0 0 auto;
}
.share-cart-modal__tab.is-active {
  color: var(--hc-ink, #1a1714);
  border-bottom-color: var(--hc-accent, var(--hc-accent));
}

.share-cart-modal__body {
  display: grid;
  gap: 16px;
}
.share-cart-modal__url {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.share-cart-modal__url input {
  flex: 1 1 auto;
  min-width: 0;
  padding: 11px 14px;
  border: 0.5px solid rgba(180, 151, 115, 0.35);
  border-radius: 10px;
  background: var(--hc-paper, #ffffff);
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 12px;
  color: var(--hc-ink, #1a1714);
}
.share-cart-modal__url .hc-btn {
  flex: 0 0 auto;
}
.share-cart-modal__qr {
  display: block;
  margin: 0 auto;
  width: 200px;
  height: 200px;
  padding: 12px;
  background: var(--hc-paper, #ffffff);
  border: 0.5px solid rgba(180, 151, 115, 0.18);
  border-radius: 12px;
}
.share-cart-modal__social {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

@media (max-width: 480px) {
  .share-cart-modal__social {
    grid-template-columns: 1fr;
  }
}
